Verilog-Perl-3.470/0000755000177100017500000000000013604734430014015 5ustar wsnyderwsnyderVerilog-Perl-3.470/Std.pm0000644000177100017500000000635613604734313015117 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.470'; ####################################################################### # It's a PITRA to have pure datafiles get installed properly, so we have # the std text here in this package. our $_Std_Text = <}) 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-2020 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.470/MANIFEST.SKIP0000644000177100017500000000111713234726611015714 0ustar wsnyderwsnyder^CVS/ /CVS/ ^.git/ ,v$ \.(bak|old|new)/ \.(bak|old|new)$ \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.470/.gitignore0000644000177100017500000000017413234726611016010 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.470/Language.pm0000644000177100017500000005170213604734313016103 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', '1800-2017' 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', '1800-2012' or '1800-2017'. =item Verilog::Language::language_maximum Returns the greatest language currently standardized, presently '1800-2017'. =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-2020 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.470'; ###################################################################### #### 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( )) { $Keywords{'1800-2017'}{$kwd} = '1800-2017'; } 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-2017"; } 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 '1800-2012') { $Standard = '1800-2012'; @subsets = ('1800-2012', '1800-2009', '1800-2005', '1364-2005', '1364-2001', '1364-1995'); } elsif ($standard eq 'latest' || $standard eq '1800-2017') { $Standard = '1800-2017'; @subsets = ('1800-2017', '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.470/Netlist.pm0000644000177100017500000004646713604734313016016 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.470'; ###################################################################### #### 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_pinselects => 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 between "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_pinselects => $true_or_false Indicates that bit selects should be parsed and interpreted. False for backward compatibility, but true recommended in new applications. =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-2020 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, L And the LVerilog-Mode package for Emacs. =cut Verilog-Perl-3.470/META.yml0000644000177100017500000000141513604734313015267 0ustar wsnyderwsnyder--- #YAML:1.0 name: Verilog-Perl version: 3.470 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/issues 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.470/Makefile.PL0000755000177100017500000001252013604734313015772 0ustar wsnyderwsnyder# DESCRIPTION: Perl ExtUtils: Type 'perl Makefile.PL' to create a Makefile for this package # # Copyright 2000-2020 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}); } elsif ($^V < 'v5.26.3') { $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 -Wno-sign-compare -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.470/Parser/0000755000177100017500000000000013604734430015251 5ustar wsnyderwsnyderVerilog-Perl-3.470/Parser/gen/0000755000177100017500000000000013604734430016022 5ustar wsnyderwsnyderVerilog-Perl-3.470/Parser/gen/flex-10000644000177100017500000062344613604734411017057 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_scan_buffer VParseLex_scan_buffer #define yy_scan_string VParseLex_scan_string #define yy_scan_bytes VParseLex_scan_bytes #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 yypush_buffer_state VParseLexpush_buffer_state #define yypop_buffer_state VParseLexpop_buffer_state #define yyensure_buffer_stack VParseLexensure_buffer_stack #define yy_flex_debug VParseLex_flex_debug #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 6 #define YY_FLEX_SUBMINOR_VERSION 4 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* %if-c++-only */ /* %endif */ /* %if-c-only */ #ifdef yy_create_buffer #define VParseLex_create_buffer_ALREADY_DEFINED #else #define yy_create_buffer VParseLex_create_buffer #endif #ifdef yy_delete_buffer #define VParseLex_delete_buffer_ALREADY_DEFINED #else #define yy_delete_buffer VParseLex_delete_buffer #endif #ifdef yy_scan_buffer #define VParseLex_scan_buffer_ALREADY_DEFINED #else #define yy_scan_buffer VParseLex_scan_buffer #endif #ifdef yy_scan_string #define VParseLex_scan_string_ALREADY_DEFINED #else #define yy_scan_string VParseLex_scan_string #endif #ifdef yy_scan_bytes #define VParseLex_scan_bytes_ALREADY_DEFINED #else #define yy_scan_bytes VParseLex_scan_bytes #endif #ifdef yy_init_buffer #define VParseLex_init_buffer_ALREADY_DEFINED #else #define yy_init_buffer VParseLex_init_buffer #endif #ifdef yy_flush_buffer #define VParseLex_flush_buffer_ALREADY_DEFINED #else #define yy_flush_buffer VParseLex_flush_buffer #endif #ifdef yy_load_buffer_state #define VParseLex_load_buffer_state_ALREADY_DEFINED #else #define yy_load_buffer_state VParseLex_load_buffer_state #endif #ifdef yy_switch_to_buffer #define VParseLex_switch_to_buffer_ALREADY_DEFINED #else #define yy_switch_to_buffer VParseLex_switch_to_buffer #endif #ifdef yypush_buffer_state #define VParseLexpush_buffer_state_ALREADY_DEFINED #else #define yypush_buffer_state VParseLexpush_buffer_state #endif #ifdef yypop_buffer_state #define VParseLexpop_buffer_state_ALREADY_DEFINED #else #define yypop_buffer_state VParseLexpop_buffer_state #endif #ifdef yyensure_buffer_stack #define VParseLexensure_buffer_stack_ALREADY_DEFINED #else #define yyensure_buffer_stack VParseLexensure_buffer_stack #endif #ifdef yylex #define VParseLexlex_ALREADY_DEFINED #else #define yylex VParseLexlex #endif #ifdef yyrestart #define VParseLexrestart_ALREADY_DEFINED #else #define yyrestart VParseLexrestart #endif #ifdef yylex_init #define VParseLexlex_init_ALREADY_DEFINED #else #define yylex_init VParseLexlex_init #endif #ifdef yylex_init_extra #define VParseLexlex_init_extra_ALREADY_DEFINED #else #define yylex_init_extra VParseLexlex_init_extra #endif #ifdef yylex_destroy #define VParseLexlex_destroy_ALREADY_DEFINED #else #define yylex_destroy VParseLexlex_destroy #endif #ifdef yyget_debug #define VParseLexget_debug_ALREADY_DEFINED #else #define yyget_debug VParseLexget_debug #endif #ifdef yyset_debug #define VParseLexset_debug_ALREADY_DEFINED #else #define yyset_debug VParseLexset_debug #endif #ifdef yyget_extra #define VParseLexget_extra_ALREADY_DEFINED #else #define yyget_extra VParseLexget_extra #endif #ifdef yyset_extra #define VParseLexset_extra_ALREADY_DEFINED #else #define yyset_extra VParseLexset_extra #endif #ifdef yyget_in #define VParseLexget_in_ALREADY_DEFINED #else #define yyget_in VParseLexget_in #endif #ifdef yyset_in #define VParseLexset_in_ALREADY_DEFINED #else #define yyset_in VParseLexset_in #endif #ifdef yyget_out #define VParseLexget_out_ALREADY_DEFINED #else #define yyget_out VParseLexget_out #endif #ifdef yyset_out #define VParseLexset_out_ALREADY_DEFINED #else #define yyset_out VParseLexset_out #endif #ifdef yyget_leng #define VParseLexget_leng_ALREADY_DEFINED #else #define yyget_leng VParseLexget_leng #endif #ifdef yyget_text #define VParseLexget_text_ALREADY_DEFINED #else #define yyget_text VParseLexget_text #endif #ifdef yyget_lineno #define VParseLexget_lineno_ALREADY_DEFINED #else #define yyget_lineno VParseLexget_lineno #endif #ifdef yyset_lineno #define VParseLexset_lineno_ALREADY_DEFINED #else #define yyset_lineno VParseLexset_lineno #endif #ifdef yywrap #define VParseLexwrap_ALREADY_DEFINED #else #define yywrap VParseLexwrap #endif /* %endif */ #ifdef yyalloc #define VParseLexalloc_ALREADY_DEFINED #else #define yyalloc VParseLexalloc #endif #ifdef yyrealloc #define VParseLexrealloc_ALREADY_DEFINED #else #define yyrealloc VParseLexrealloc #endif #ifdef yyfree #define VParseLexfree_ALREADY_DEFINED #else #define yyfree VParseLexfree #endif /* %if-c-only */ #ifdef yytext #define VParseLextext_ALREADY_DEFINED #else #define yytext VParseLextext #endif #ifdef yyleng #define VParseLexleng_ALREADY_DEFINED #else #define yyleng VParseLexleng #endif #ifdef yyin #define VParseLexin_ALREADY_DEFINED #else #define yyin VParseLexin #endif #ifdef yyout #define VParseLexout_ALREADY_DEFINED #else #define yyout VParseLexout #endif #ifdef yy_flex_debug #define VParseLex_flex_debug_ALREADY_DEFINED #else #define yy_flex_debug VParseLex_flex_debug #endif #ifdef yylineno #define VParseLexlineno_ALREADY_DEFINED #else #define yylineno VParseLexlineno #endif /* %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 #ifndef SIZE_MAX #define SIZE_MAX (~(size_t)0) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ /* %endif */ /* begin standard C++ headers. */ /* %if-c++-only */ /* %endif */ /* TODO: this is always defined, so inline it */ #define yyconst const #if defined(__GNUC__) && __GNUC__ >= 3 #define yynoreturn __attribute__((__noreturn__)) #else #define yynoreturn #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 * integer in range [0..255] for use as an array index. */ #define YY_SC_TO_UI(c) ((YY_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 yyrestart( yyin ) #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 #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif /* %if-not-reentrant */ extern int yyleng; /* %endif */ /* %if-c-only */ /* %if-not-reentrant */ extern FILE *yyin, *yyout; /* %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) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ 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 yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #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. */ int 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 yyrestart()), so that the user can continue scanning by * just pointing yyin 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 = NULL; /**< 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 yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = NULL; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; /* %ok-for-header */ /* %endif */ void yyrestart ( FILE *input_file ); void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); void yy_delete_buffer ( YY_BUFFER_STATE b ); void yy_flush_buffer ( YY_BUFFER_STATE b ); void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); void yypop_buffer_state ( void ); static void yyensure_buffer_stack ( void ); static void yy_load_buffer_state ( void ); static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); /* %endif */ void *yyalloc ( yy_size_t ); void *yyrealloc ( void *, yy_size_t ); void yyfree ( void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer( yyin, 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] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */ /* Begin user sect3 */ #define FLEX_DEBUG typedef flex_uint8_t YY_CHAR; FILE *yyin = NULL, *yyout = NULL; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #ifdef yytext_ptr #undef yytext_ptr #endif #define yytext_ptr yytext /* %% [1.5] DFA */ /* %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 yynoreturn yy_fatal_error ( const char* msg ); /* %endif */ /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\ (yytext_ptr) -= (yy_more_len); \ yyleng = (int) (yy_cp - (yytext_ptr)); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ /* %% [3.0] code to copy yytext_ptr to yytext[] 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 421 #define YY_END_OF_BUFFER 422 /* 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 const flex_int32_t yy_accept[2074] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 422, 1, 419, 2, 3, 2, 261, 345, 262, 263, 264, 265, 419, 266, 267, 268, 269, 270, 271, 272, 273, 347, 274, 275, 276, 277, 278, 279, 280, 343, 281, 419, 282, 283, 419, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 259, 284, 260, 285, 268, 269, 271, 272, 276, 278, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 261, 262, 263, 264, 265, 310, 268, 269, 271, 273, 274, 276, 277, 278, 280, 281, 283, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 284, 276, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 356, 351, 356, 354, 355, 356, 371, 368, 371, 371, 370, 361, 358, 357, 360, 366, 362, 366, 366, 366, 420, 2, 3, 2, 293, 0, 344, 258, 286, 346, 346, 0, 0, 302, 300, 418, 417, 0, 0, 0, 347, 0, 347, 0, 0, 0, 0, 350, 0, 290, 288, 292, 301, 289, 291, 343, 342, 296, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 32, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 44, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 287, 298, 297, 299, 306, 307, 308, 309, 290, 291, 343, 343, 343, 343, 343, 343, 32, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 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, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 159, 343, 343, 343, 343, 32, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 0, 322, 0, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 351, 0, 355, 353, 352, 353, 368, 0, 369, 370, 357, 357, 359, 360, 0, 367, 0, 0, 295, 258, 303, 346, 346, 0, 0, 0, 372, 0, 417, 417, 417, 0, 0, 346, 346, 346, 346, 348, 0, 349, 350, 0, 294, 341, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 343, 5, 343, 343, 8, 343, 343, 343, 343, 343, 343, 343, 18, 343, 27, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 42, 43, 343, 343, 343, 343, 343, 343, 343, 343, 51, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 62, 343, 343, 343, 343, 343, 343, 73, 343, 75, 304, 305, 343, 343, 343, 343, 18, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 126, 343, 313, 258, 258, 258, 258, 258, 258, 328, 333, 304, 324, 312, 325, 305, 0, 339, 338, 343, 343, 343, 343, 343, 144, 343, 343, 343, 343, 343, 343, 343, 343, 343, 18, 343, 343, 343, 343, 343, 27, 177, 343, 343, 343, 343, 182, 343, 343, 343, 343, 343, 343, 192, 343, 343, 343, 343, 343, 343, 205, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 224, 343, 343, 343, 343, 343, 334, 335, 340, 343, 343, 18, 343, 343, 343, 237, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 182, 343, 343, 0, 0, 0, 0, 0, 372, 372, 417, 346, 346, 346, 346, 346, 0, 0, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 343, 343, 343, 343, 9, 78, 343, 343, 343, 343, 16, 17, 343, 343, 343, 343, 343, 343, 343, 343, 343, 30, 343, 343, 343, 343, 343, 343, 37, 343, 343, 343, 343, 40, 343, 83, 343, 343, 343, 86, 343, 343, 343, 343, 49, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 60, 61, 100, 63, 64, 343, 343, 343, 343, 69, 70, 343, 343, 72, 74, 343, 117, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 258, 258, 258, 258, 258, 258, 326, 327, 343, 343, 343, 343, 343, 141, 142, 343, 146, 343, 343, 343, 343, 343, 343, 343, 158, 343, 343, 343, 343, 343, 168, 343, 343, 343, 343, 343, 343, 30, 343, 343, 343, 343, 343, 37, 343, 343, 343, 343, 343, 193, 343, 343, 343, 343, 343, 200, 201, 343, 343, 343, 343, 343, 343, 343, 343, 343, 216, 343, 61, 220, 343, 343, 343, 226, 69, 343, 229, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 253, 343, 343, 343, 257, 0, 0, 0, 417, 0, 348, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 343, 343, 7, 343, 10, 11, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 26, 28, 343, 343, 343, 343, 34, 35, 343, 81, 343, 343, 343, 343, 343, 343, 343, 343, 343, 87, 88, 343, 343, 91, 343, 343, 343, 92, 93, 94, 343, 97, 343, 343, 343, 343, 59, 343, 343, 66, 343, 343, 103, 104, 71, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 127, 258, 258, 130, 131, 132, 258, 134, 343, 343, 343, 343, 343, 145, 343, 148, 343, 150, 343, 343, 154, 157, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 173, 343, 343, 343, 343, 343, 343, 343, 343, 343, 187, 188, 343, 343, 343, 343, 343, 343, 343, 343, 343, 202, 343, 343, 343, 343, 210, 343, 343, 343, 214, 343, 343, 343, 343, 343, 222, 343, 343, 343, 343, 343, 343, 343, 343, 26, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 250, 343, 343, 343, 343, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 0, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 4, 6, 76, 77, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 79, 80, 343, 343, 343, 82, 39, 343, 84, 85, 45, 343, 343, 343, 343, 90, 343, 343, 53, 343, 343, 343, 343, 343, 343, 343, 65, 67, 343, 343, 118, 119, 343, 343, 343, 108, 109, 121, 343, 343, 343, 343, 343, 343, 343, 343, 115, 343, 128, 129, 258, 4, 138, 139, 140, 143, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 169, 170, 343, 172, 343, 343, 343, 343, 343, 180, 181, 343, 343, 343, 343, 343, 343, 343, 343, 195, 343, 343, 343, 343, 343, 343, 206, 343, 343, 343, 211, 212, 213, 215, 343, 343, 343, 343, 223, 343, 343, 343, 230, 343, 343, 343, 343, 235, 343, 343, 343, 343, 343, 343, 343, 343, 246, 343, 343, 223, 343, 343, 343, 343, 343, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 388, 0, 0, 389, 0, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 343, 13, 343, 15, 19, 343, 343, 343, 343, 343, 25, 29, 343, 33, 36, 343, 41, 343, 47, 343, 343, 343, 52, 343, 343, 55, 343, 98, 99, 57, 58, 101, 102, 343, 343, 343, 343, 343, 122, 343, 124, 125, 343, 343, 343, 343, 343, 258, 343, 147, 343, 343, 152, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 171, 343, 175, 343, 343, 343, 343, 343, 343, 343, 189, 190, 191, 194, 343, 197, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 221, 225, 343, 343, 343, 232, 343, 343, 236, 343, 343, 343, 343, 343, 343, 244, 343, 343, 249, 343, 252, 343, 343, 256, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 0, 415, 415, 415, 415, 415, 415, 398, 399, 415, 415, 415, 415, 12, 14, 343, 343, 343, 343, 24, 31, 343, 343, 343, 89, 50, 95, 96, 54, 343, 68, 343, 343, 343, 107, 123, 343, 343, 343, 343, 116, 133, 343, 343, 343, 149, 343, 153, 343, 343, 160, 343, 162, 343, 343, 343, 343, 343, 343, 176, 343, 343, 343, 343, 185, 343, 196, 198, 343, 203, 343, 207, 208, 343, 343, 343, 219, 343, 228, 343, 343, 343, 238, 343, 240, 241, 343, 343, 343, 343, 343, 343, 343, 343, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 398, 398, 398, 415, 415, 415, 403, 415, 415, 343, 21, 343, 343, 343, 46, 48, 56, 105, 120, 343, 343, 343, 343, 343, 343, 136, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, 183, 184, 186, 199, 343, 209, 343, 343, 343, 231, 343, 343, 239, 343, 343, 343, 343, 343, 343, 343, 343, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 398, 400, 415, 415, 415, 415, 343, 343, 23, 343, 343, 110, 343, 343, 343, 343, 343, 151, 155, 156, 343, 343, 164, 165, 343, 343, 343, 343, 343, 343, 217, 343, 227, 233, 234, 343, 243, 343, 343, 343, 251, 254, 343, 0, 0, 0, 417, 373, 415, 415, 375, 415, 415, 415, 415, 415, 415, 415, 415, 386, 415, 415, 415, 415, 415, 415, 415, 396, 398, 415, 415, 415, 405, 20, 343, 38, 106, 343, 343, 343, 135, 343, 161, 343, 166, 167, 174, 178, 343, 343, 343, 343, 343, 343, 343, 343, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 398, 415, 415, 415, 405, 405, 22, 343, 343, 343, 137, 163, 179, 204, 343, 242, 245, 343, 343, 255, 0, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 414, 415, 415, 390, 415, 415, 415, 415, 415, 398, 415, 415, 415, 343, 343, 114, 218, 343, 343, 0, 363, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 385, 415, 415, 415, 415, 415, 415, 398, 415, 415, 415, 343, 343, 343, 247, 248, 0, 0, 417, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 398, 415, 415, 415, 111, 343, 343, 0, 0, 417, 415, 0, 0, 415, 415, 415, 415, 380, 381, 382, 415, 415, 415, 415, 415, 415, 415, 415, 398, 0, 415, 402, 404, 343, 343, 0, 0, 417, 415, 0, 415, 377, 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, 398, 0, 401, 343, 343, 0, 0, 417, 415, 0, 0, 415, 377, 415, 415, 415, 384, 387, 415, 415, 393, 394, 415, 398, 0, 343, 113, 0, 0, 417, 415, 0, 0, 415, 415, 415, 383, 415, 392, 415, 398, 0, 112, 0, 0, 417, 415, 0, 0, 376, 415, 415, 391, 395, 398, 0, 0, 0, 417, 415, 0, 0, 376, 376, 415, 415, 398, 0, 0, 0, 417, 374, 0, 0, 0, 415, 415, 398, 0, 0, 0, 417, 0, 0, 0, 415, 379, 398, 0, 0, 0, 417, 0, 0, 0, 0, 415, 398, 0, 0, 0, 417, 0, 0, 0, 0, 0, 0, 0, 378, 398, 0, 0, 0, 417, 406, 407, 0, 409, 410, 411, 412, 413, 378, 378, 398, 0, 0, 0, 417, 0, 398, 0, 0, 0, 417, 0, 398, 0, 0, 0, 417, 0, 398, 0, 0, 364, 417, 0, 398, 0, 365, 417, 0, 397, 397, 416, 0, 0, 0, 408, 0 } ; static const YY_CHAR 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, 44, 42, 42, 42, 42, 45, 42, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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 const YY_CHAR yy_meta[82] = { 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, 11, 11, 10, 1, 12, 1, 1, 13, 1, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 11, 10, 1, 1, 1, 1 } ; static const flex_int32_t yy_base[2103] = { 0, 0, 0, 0, 0, 66, 0, 3220, 3219, 132, 0, 156, 175, 198, 217, 240, 259, 333, 0, 414, 0, 495, 0, 576, 0, 0, 0, 3290, 3293, 3293, 85, 3293, 90, 3254, 3280, 3293, 0, 3293, 3275, 636, 3270, 3293, 3249, 3293, 3293, 3248, 3293, 82, 712, 3293, 3293, 70, 71, 73, 3293, 3293, 0, 3293, 0, 3293, 3202, 694, 47, 41, 47, 28, 92, 53, 3222, 58, 3215, 3228, 94, 107, 58, 110, 606, 170, 131, 3223, 609, 69, 3293, 3199, 3293, 128, 116, 3245, 122, 3260, 183, 187, 183, 252, 138, 609, 3219, 104, 224, 632, 635, 721, 110, 192, 3239, 3264, 652, 3237, 102, 3193, 243, 668, 751, 267, 662, 230, 271, 285, 3232, 792, 204, 260, 743, 664, 700, 751, 729, 765, 3203, 626, 765, 780, 738, 783, 797, 806, 768, 789, 818, 739, 710, 818, 833, 838, 157, 851, 865, 854, 876, 702, 797, 886, 891, 901, 829, 3293, 3293, 292, 3293, 0, 296, 3293, 3293, 714, 3253, 0, 3293, 3293, 689, 0, 3293, 3293, 3246, 0, 820, 3293, 931, 3293, 956, 3231, 3257, 3293, 0, 3252, 3293, 664, 941, 966, 3293, 3293, 3293, 972, 921, 1038, 997, 0, 963, 1094, 3193, 3192, 3191, 3190, 3188, 3188, 3293, 3293, 3222, 3293, 3293, 3293, 0, 3250, 3293, 0, 771, 3199, 3198, 695, 829, 3188, 3192, 3185, 853, 3194, 3177, 3188, 3173, 3191, 3175, 3186, 3186, 3172, 3175, 715, 3170, 3181, 3168, 3182, 3180, 3166, 3169, 3175, 0, 931, 3172, 3162, 3176, 3174, 3173, 3162, 3168, 3159, 914, 0, 3153, 3154, 3156, 3151, 3160, 3156, 3154, 941, 3153, 3152, 3146, 3162, 3161, 3156, 3142, 3143, 190, 3145, 753, 3154, 826, 3155, 3146, 3136, 3135, 3137, 3133, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3167, 3164, 3128, 3135, 3132, 935, 3141, 3130, 3129, 982, 3140, 3138, 919, 3128, 3124, 3131, 3118, 3131, 3126, 966, 3293, 3116, 3132, 3118, 3116, 3116, 3128, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3293, 3143, 3293, 0, 3293, 3293, 292, 974, 824, 3293, 1068, 3293, 1028, 3142, 3293, 3293, 760, 3107, 882, 879, 3120, 3104, 3122, 846, 941, 3107, 3102, 0, 957, 908, 966, 3102, 980, 3105, 3106, 3101, 1072, 3107, 992, 984, 3111, 98, 3102, 47, 1020, 1033, 3099, 1077, 3095, 3096, 3098, 1002, 3093, 1075, 662, 3095, 3091, 1029, 3088, 3087, 3095, 950, 1043, 3118, 3117, 3116, 3097, 1049, 1055, 3094, 3083, 3081, 3076, 1072, 1097, 1085, 1084, 3081, 1091, 3093, 3077, 1105, 1108, 1106, 3293, 1053, 0, 3293, 3293, 1095, 3293, 1106, 3293, 0, 1157, 1164, 3293, 0, 1182, 0, 3078, 3073, 3293, 0, 3293, 1187, 1189, 1194, 1199, 1204, 0, 0, 0, 1209, 3072, 1177, 1212, 1216, 1221, 1223, 803, 1261, 1312, 1322, 3293, 3084, 3293, 3293, 3085, 3067, 3079, 3073, 1171, 3065, 1122, 3067, 3070, 3067, 1188, 3062, 1104, 1169, 3063, 3065, 3076, 0, 3067, 3066, 3065, 3068, 3053, 3052, 899, 3069, 3064, 3063, 1239, 3053, 1207, 3063, 3057, 3044, 3042, 3041, 3056, 3046, 3052, 3040, 3048, 3035, 3051, 3049, 3034, 0, 3043, 3035, 3049, 3030, 3043, 3034, 3034, 3030, 3032, 0, 3038, 3037, 3026, 3025, 3038, 3026, 3025, 3033, 3020, 3018, 3021, 3021, 3026, 3016, 1307, 3009, 3008, 3023, 3015, 3013, 3019, 0, 3005, 0, 3293, 3293, 3007, 3009, 3014, 3010, 1300, 1181, 3003, 988, 2997, 1179, 3015, 3007, 1175, 2991, 2999, 3003, 0, 2993, 3293, 2992, 2989, 3002, 2992, 2997, 2987, 3293, 3293, 3020, 3293, 3293, 3293, 3019, 1268, 3293, 3293, 3001, 3000, 1208, 2985, 1180, 0, 2998, 2993, 2983, 2977, 2992, 1224, 2989, 2974, 1227, 1320, 2979, 1241, 2986, 2989, 2970, 1258, 0, 2973, 2982, 2971, 1244, 2980, 2970, 2982, 2973, 2974, 2977, 1233, 0, 2967, 2967, 1211, 1298, 2972, 2972, 0, 2954, 2953, 1239, 2951, 2952, 1322, 1265, 2964, 2951, 2954, 2963, 2962, 1233, 0, 2946, 2961, 2944, 2959, 2954, 3293, 3293, 3293, 2956, 2957, 1335, 2945, 2956, 1196, 0, 2937, 2951, 2935, 2942, 2931, 2947, 2937, 1337, 2947, 1256, 1303, 2938, 1320, 2943, 2927, 2926, 1363, 1406, 2927, 2940, 2942, 0, 0, 2941, 0, 0, 1311, 1398, 1411, 1379, 2925, 2935, 2924, 2929, 2925, 2935, 2934, 2933, 2931, 1365, 2931, 2922, 2925, 2926, 2904, 2922, 2905, 2911, 2904, 2916, 2902, 2906, 2915, 2903, 2913, 2892, 2909, 2901, 2908, 1341, 0, 2894, 2891, 2910, 2908, 0, 0, 2908, 2887, 2892, 2888, 2889, 2903, 2883, 2897, 2879, 0, 2880, 2873, 2889, 2877, 2876, 2888, 0, 2889, 2878, 2871, 2879, 0, 2886, 0, 2883, 2867, 2874, 0, 2882, 2876, 1398, 2865, 2863, 2881, 2880, 2861, 2860, 2864, 2876, 2864, 1362, 2861, 2862, 2868, 0, 0, 2863, 0, 0, 2857, 2852, 2864, 2853, 0, 0, 1338, 2862, 0, 0, 2853, 0, 2856, 2857, 1371, 2858, 2844, 2860, 2846, 2850, 2837, 2856, 2847, 2854, 2842, 2828, 2825, 2822, 2818, 2815, 2816, 2804, 2806, 2779, 2757, 2756, 2761, 3293, 3293, 2755, 2745, 2751, 2752, 2746, 0, 2748, 2751, 0, 2746, 2730, 2737, 2725, 1156, 2724, 2721, 0, 1372, 1125, 2725, 1373, 1372, 0, 2727, 2705, 1254, 2710, 2701, 163, 2710, 2689, 2693, 2681, 2694, 1372, 2698, 2684, 2688, 2681, 2678, 2670, 0, 1375, 2666, 2665, 2674, 2671, 0, 1379, 2656, 2668, 2650, 2662, 2655, 2647, 2646, 2627, 2637, 0, 2605, 1373, 2619, 2606, 2596, 2585, 0, 2606, 2601, 2592, 2582, 2585, 1384, 2575, 2591, 2580, 2568, 2584, 2568, 2560, 2539, 2519, 2521, 2526, 2540, 2517, 2524, 2519, 1429, 1388, 1388, 2509, 0, 2532, 2516, 2524, 2523, 1436, 1452, 2517, 2523, 2513, 2522, 2504, 2499, 2521, 2509, 2509, 2514, 2500, 2502, 2501, 1483, 2510, 2496, 2498, 2494, 2506, 2505, 2494, 2501, 2483, 2484, 2485, 2483, 2482, 2486, 0, 1432, 0, 0, 68, 218, 594, 630, 701, 726, 745, 780, 824, 1431, 0, 0, 851, 869, 1446, 965, 0, 0, 1003, 0, 1067, 1088, 1197, 1269, 1449, 1304, 1329, 1349, 1355, 0, 0, 1368, 1389, 0, 1430, 1421, 1421, 0, 0, 1433, 1425, 0, 1438, 1444, 1439, 1422, 0, 1442, 1445, 0, 1445, 1435, 0, 0, 0, 1453, 1448, 1442, 1443, 1444, 1458, 1442, 1456, 1444, 1459, 1450, 1446, 1448, 1451, 1445, 1450, 1469, 1467, 1458, 0, 1455, 1462, 0, 0, 0, 1466, 0, 1457, 1457, 1473, 1474, 1474, 0, 1469, 0, 1473, 1465, 1460, 1471, 1479, 0, 1486, 1473, 1469, 1487, 1482, 1475, 1473, 1474, 1492, 1484, 0, 1500, 1497, 1487, 1498, 1503, 1485, 1501, 1501, 1507, 1493, 0, 1496, 1506, 1494, 1506, 1510, 1506, 1515, 1499, 1515, 1518, 1517, 1509, 1510, 1516, 0, 1523, 1520, 1508, 0, 1525, 1523, 1513, 1518, 1528, 0, 1530, 1535, 1522, 1537, 1525, 1520, 1536, 1537, 1522, 1532, 1540, 1537, 1527, 1539, 1548, 1536, 1531, 1543, 1546, 1553, 1550, 1557, 1552, 1545, 1556, 1544, 1554, 1545, 1551, 1552, 1561, 1543, 1569, 1564, 1558, 1573, 1561, 1569, 1571, 1565, 1563, 1575, 1575, 1630, 1581, 1586, 1573, 1573, 1575, 1576, 1591, 1590, 1589, 1594, 1591, 1594, 0, 0, 0, 0, 1591, 1579, 1599, 1596, 1597, 1600, 1583, 1592, 1603, 1595, 1597, 1591, 1595, 0, 0, 1599, 1594, 1598, 0, 0, 1609, 0, 0, 0, 1595, 1611, 1608, 1595, 0, 1606, 1615, 0, 1615, 1617, 1598, 1606, 1654, 1656, 1658, 0, 0, 1626, 1612, 0, 0, 1627, 1629, 1615, 0, 0, 0, 1631, 1634, 1618, 1614, 1639, 1638, 1622, 1629, 0, 1639, 0, 0, 1631, 1647, 0, 0, 0, 0, 1642, 1634, 1648, 1630, 1630, 1634, 1638, 1635, 1652, 1635, 1652, 1647, 1652, 1639, 0, 0, 1642, 0, 1649, 1655, 1655, 1666, 1654, 0, 0, 1666, 1664, 1656, 1656, 1652, 1654, 1654, 1670, 0, 1656, 1664, 1658, 1659, 1661, 1664, 0, 1679, 1669, 1679, 0, 0, 0, 0, 1677, 1681, 1678, 1682, 0, 1677, 1672, 1673, 0, 1693, 1675, 1691, 1694, 0, 1677, 1684, 1699, 1696, 1675, 1681, 1682, 1691, 1733, 1703, 1702, 1737, 1686, 1706, 1706, 1697, 1708, 1701, 1700, 1715, 1716, 1700, 1703, 1709, 1715, 1702, 1710, 1719, 1726, 1701, 1715, 1708, 1730, 0, 1778, 1782, 3293, 1787, 1719, 1729, 1722, 1727, 1732, 1742, 1797, 1729, 1754, 1742, 1736, 1755, 1743, 0, 1745, 0, 0, 1739, 1748, 1752, 1753, 1758, 0, 0, 1750, 0, 0, 1761, 0, 1761, 0, 1745, 1754, 1764, 0, 1799, 1768, 0, 1772, 0, 0, 0, 0, 0, 0, 1770, 1766, 1767, 1759, 1773, 0, 1774, 0, 0, 1762, 1780, 1757, 1780, 1780, 1778, 1783, 0, 1780, 1779, 0, 1785, 1776, 1783, 1774, 1783, 1780, 1779, 1797, 1781, 1795, 1796, 0, 1801, 0, 1789, 1802, 1806, 1803, 1804, 1783, 1795, 0, 0, 0, 0, 1785, 0, 1786, 1807, 1808, 1793, 1810, 1796, 1816, 1803, 1816, 1800, 0, 0, 1817, 1818, 1808, 0, 1813, 1813, 0, 1821, 1812, 1808, 1810, 1809, 1822, 1833, 1830, 1824, 0, 1826, 0, 1822, 1823, 0, 1837, 1819, 1889, 1894, 1840, 1845, 1845, 1842, 1853, 1838, 1855, 1839, 1833, 1853, 1853, 1837, 1908, 1856, 1859, 1859, 1860, 1852, 1849, 1917, 1864, 1866, 1862, 1856, 1864, 0, 0, 1868, 1873, 1859, 1875, 0, 0, 1861, 1865, 1879, 0, 0, 0, 0, 0, 1872, 0, 1883, 1880, 1887, 0, 0, 1888, 1876, 1879, 1887, 0, 0, 1878, 1888, 1894, 0, 1882, 0, 1876, 1884, 0, 1890, 0, 1894, 1894, 1901, 1885, 1890, 1885, 0, 1897, 1905, 1903, 1889, 0, 1905, 0, 0, 1907, 0, 1907, 0, 0, 1901, 1893, 1906, 0, 1911, 0, 1903, 1913, 1907, 0, 1906, 0, 0, 1920, 1909, 1900, 1919, 1920, 1906, 1907, 1914, 1981, 1924, 1986, 1991, 1910, 1917, 1913, 1929, 1943, 1944, 1933, 1935, 1936, 1947, 1950, 1949, 1937, 1957, 1959, 1940, 1955, 1958, 2008, 2013, 2015, 1961, 1969, 1966, 0, 1973, 1968, 1959, 0, 1966, 1951, 1965, 0, 0, 0, 0, 0, 1958, 1966, 1977, 1976, 1970, 1970, 0, 1964, 1965, 1970, 1967, 1974, 1988, 1985, 1978, 1972, 1990, 1991, 1981, 1987, 0, 0, 0, 0, 1983, 0, 1978, 1980, 1982, 0, 1983, 1978, 0, 1992, 2000, 1997, 1992, 2006, 2002, 1992, 2007, 2062, 2011, 2000, 2001, 2015, 2017, 1999, 2018, 2019, 2020, 2008, 2022, 2013, 2012, 2013, 2026, 2014, 2032, 2035, 2015, 2031, 2020, 2037, 2036, 2088, 0, 2023, 2024, 2040, 2096, 2034, 2030, 0, 2048, 2049, 0, 2050, 2057, 2045, 2056, 2056, 0, 0, 0, 2053, 2058, 0, 0, 2037, 2058, 2056, 2046, 2052, 2064, 0, 2059, 0, 0, 0, 2057, 0, 2050, 2051, 2052, 0, 0, 2070, 2056, 2055, 2061, 2062, 0, 2080, 2065, 0, 2078, 2062, 2074, 2085, 2067, 2066, 2083, 2079, 0, 2069, 2070, 2086, 2091, 2088, 2095, 2075, 0, 2142, 2092, 2084, 2098, 2151, 0, 2095, 0, 0, 2089, 2092, 2103, 0, 2101, 0, 2105, 0, 0, 0, 0, 2092, 2107, 2098, 2089, 2107, 2117, 2118, 2098, 2104, 2115, 2101, 2102, 2101, 2106, 2124, 2106, 2109, 2124, 2109, 2124, 2112, 2118, 2118, 2129, 2132, 2116, 2117, 2132, 2134, 2187, 2128, 2142, 2123, 2192, 2198, 0, 2135, 2134, 2150, 0, 0, 0, 0, 2141, 0, 0, 2141, 2142, 0, 2138, 2155, 2155, 2156, 2158, 2160, 2140, 2141, 2162, 2159, 2168, 2156, 2166, 2166, 2172, 0, 2169, 2157, 0, 2156, 2172, 2164, 2178, 2176, 2227, 2181, 2170, 2172, 2180, 2182, 0, 0, 2174, 2175, 2185, 3293, 2188, 2190, 2191, 2176, 2197, 2181, 2191, 2180, 2180, 2192, 2184, 2202, 2183, 0, 2191, 2191, 2193, 2207, 2188, 2211, 2257, 2199, 2208, 2194, 2211, 2211, 2195, 0, 0, 2215, 2199, 2200, 2201, 2271, 2203, 2219, 2226, 2207, 2221, 2211, 2217, 2212, 2222, 2230, 2218, 2236, 2225, 2227, 2236, 2290, 2237, 2227, 2228, 0, 2228, 2244, 2230, 2300, 2305, 2237, 2306, 2290, 2255, 2314, 2247, 2252, 0, 0, 0, 2259, 2252, 2253, 2260, 2262, 2271, 2258, 2261, 2329, 2334, 2262, 0, 0, 2281, 2276, 2340, 2345, 2350, 2274, 2323, 2293, 2356, 2288, 2303, 2293, 2295, 2296, 2311, 2312, 2299, 2300, 2311, 2367, 2317, 0, 2320, 2304, 2374, 2312, 2325, 2318, 2356, 2363, 2330, 2386, 2320, 2340, 2324, 0, 0, 2324, 2326, 0, 0, 2324, 2393, 2341, 2329, 0, 2337, 2349, 2347, 2350, 2381, 2386, 2407, 2354, 2342, 0, 2345, 0, 2360, 2412, 2358, 0, 2364, 2370, 2361, 2351, 2405, 2406, 2427, 2361, 2356, 0, 0, 2423, 2369, 2385, 2369, 2372, 2368, 2416, 2417, 2437, 2441, 2386, 2392, 2444, 2400, 2385, 2384, 2404, 0, 2424, 2434, 2435, 2387, 2404, 2455, 2394, 2393, 2397, 2397, 2434, 2444, 2445, 2410, 0, 2465, 2402, 2407, 2403, 2406, 2449, 2454, 2451, 2455, 2481, 2475, 2423, 2419, 2435, 2426, 2485, 2487, 2488, 2489, 2490, 2491, 2492, 2499, 2497, 2436, 2452, 2455, 2439, 3293, 3293, 2446, 3293, 3293, 3293, 3293, 3293, 2507, 2511, 2509, 2462, 2465, 2449, 2465, 2457, 2519, 2471, 2455, 2471, 2474, 2475, 2525, 2460, 2476, 2478, 2464, 2470, 2532, 2482, 2484, 3293, 2484, 2477, 2538, 2489, 3293, 2490, 2489, 2542, 3293, 0, 2488, 2491, 2542, 3293, 3293, 2596, 2609, 2622, 2631, 2640, 2653, 2659, 2665, 2678, 2684, 2697, 2703, 2709, 2718, 2730, 2742, 2755, 2762, 2775, 2784, 2797, 2809, 2816, 2829, 2842, 2855, 2867, 2878, 2891 } ; static const flex_int32_t yy_def[2103] = { 0, 2074, 2074, 2073, 3, 3, 5, 5, 5, 5, 9, 9, 9, 9, 9, 9, 9, 2073, 17, 2073, 19, 2073, 21, 2073, 23, 2075, 2075, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2076, 2073, 2077, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2073, 2079, 2073, 2073, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2077, 2073, 2073, 39, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 134, 2078, 2078, 2078, 2078, 134, 2073, 2073, 2073, 2073, 2081, 2082, 2073, 2073, 2073, 2073, 2083, 2073, 2073, 2084, 2085, 2073, 2073, 2073, 2086, 2073, 2073, 2073, 2073, 2073, 2073, 2076, 2073, 2087, 2073, 2073, 2088, 2073, 2089, 2073, 2073, 2073, 2090, 2073, 2073, 2073, 48, 2091, 48, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2079, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2087, 2087, 2087, 2087, 2087, 2087, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2092, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2081, 2073, 2073, 2073, 2073, 2073, 2073, 2083, 2084, 2084, 2073, 2085, 2073, 2086, 2073, 2073, 2073, 2087, 2073, 2088, 2088, 2089, 2089, 2089, 2093, 2094, 2090, 2090, 2090, 193, 193, 439, 2095, 2095, 193, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2087, 2087, 2087, 2087, 2087, 2087, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2073, 2073, 2093, 2094, 2090, 439, 439, 438, 2095, 2095, 2096, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2087, 2087, 2087, 2087, 2087, 2087, 2073, 2073, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2073, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2087, 2087, 2087, 2087, 2087, 2087, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2097, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2087, 2087, 2087, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2097, 2097, 2073, 2097, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2087, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2087, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2098, 2098, 2080, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2099, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2099, 2099, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2078, 2078, 2078, 2078, 2078, 2073, 2073, 2090, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2080, 2080, 2080, 2078, 2078, 2078, 2073, 2073, 2090, 2080, 2073, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2073, 2080, 2080, 2080, 2078, 2078, 2073, 2073, 2090, 2080, 2073, 2080, 2100, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2073, 2080, 2078, 2078, 2073, 2073, 2090, 2080, 2073, 2073, 2080, 2100, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2073, 2078, 2078, 2073, 2073, 2090, 2080, 2073, 2073, 2080, 2080, 2080, 2080, 2080, 2080, 2080, 2098, 2073, 2078, 2073, 2073, 2090, 2080, 2073, 2073, 2101, 2080, 2080, 2080, 2080, 2098, 2073, 2073, 2073, 2090, 2080, 2073, 2073, 2101, 2101, 2080, 2080, 2098, 2073, 2073, 2073, 2090, 2080, 2073, 2073, 2073, 2080, 2080, 2098, 2073, 2073, 2073, 2090, 2073, 2073, 2073, 2080, 2080, 2098, 2073, 2073, 2073, 2090, 2073, 2073, 2073, 2073, 2080, 2098, 2073, 2073, 2073, 2090, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2102, 2098, 2073, 2073, 2073, 2090, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2102, 2102, 2098, 2073, 2073, 2073, 2090, 2073, 2098, 2073, 2073, 2073, 2090, 2073, 2098, 2073, 2073, 2073, 2090, 2073, 2098, 2073, 2073, 2073, 2090, 2073, 2098, 2073, 2073, 2090, 2073, 2098, 2073, 2090, 2073, 2073, 2073, 2073, 0, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073 } ; static const flex_int32_t yy_nxt[3375] = { 0, 29, 30, 31, 30, 32, 30, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, 56, 56, 57, 58, 59, 60, 56, 61, 62, 63, 64, 65, 66, 67, 56, 68, 69, 70, 56, 71, 72, 73, 74, 75, 56, 76, 77, 78, 56, 79, 80, 81, 56, 56, 82, 83, 84, 85, 86, 87, 233, 88, 89, 176, 234, 176, 176, 176, 176, 177, 176, 178, 176, 229, 190, 231, 90, 604, 91, 191, 204, 205, 206, 207, 208, 209, 226, 232, 227, 230, 183, 242, 499, 228, 92, 239, 93, 94, 95, 243, 96, 240, 97, 253, 1127, 98, 254, 99, 285, 100, 279, 280, 101, 317, 102, 104, 282, 105, 106, 107, 108, 109, 246, 235, 110, 111, 247, 112, 188, 113, 287, 236, 494, 237, 189, 249, 248, 297, 255, 250, 114, 238, 115, 116, 117, 298, 118, 251, 602, 252, 256, 305, 257, 283, 119, 258, 306, 120, 259, 270, 121, 122, 123, 124, 125, 126, 140, 271, 127, 128, 294, 129, 130, 131, 234, 132, 272, 133, 134, 135, 136, 137, 138, 284, 141, 140, 142, 139, 143, 296, 144, 1032, 145, 289, 205, 146, 393, 147, 208, 290, 265, 148, 149, 141, 150, 142, 151, 143, 140, 144, 266, 145, 936, 267, 146, 338, 147, 268, 269, 517, 148, 149, 226, 150, 227, 151, 141, 140, 142, 228, 143, 291, 144, 305, 152, 285, 518, 146, 306, 153, 329, 205, 307, 148, 154, 141, 150, 142, 151, 143, 140, 144, 245, 152, 319, 188, 146, 1128, 153, 190, 299, 212, 148, 154, 191, 150, 300, 151, 141, 140, 142, 407, 143, 408, 144, 411, 152, 412, 325, 146, 231, 153, 330, 207, 292, 148, 154, 141, 150, 142, 151, 143, 232, 144, 293, 152, 208, 331, 146, 339, 153, 227, 560, 561, 148, 154, 340, 150, 291, 151, 155, 155, 156, 155, 157, 155, 155, 158, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 155, 155, 155, 155, 155, 155, 155, 159, 159, 159, 159, 159, 159, 159, 155, 160, 155, 155, 159, 155, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 155, 155, 155, 155, 161, 161, 162, 161, 163, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 164, 161, 161, 161, 161, 161, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 161, 161, 161, 161, 161, 161, 161, 165, 165, 165, 165, 165, 165, 165, 161, 161, 161, 161, 165, 161, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 161, 161, 161, 161, 166, 166, 167, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 168, 166, 166, 166, 166, 166, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 166, 166, 166, 166, 166, 166, 166, 169, 169, 169, 169, 169, 169, 169, 166, 166, 166, 166, 169, 166, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 166, 166, 166, 166, 170, 170, 171, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 172, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 170, 170, 170, 170, 170, 170, 170, 173, 173, 173, 173, 173, 173, 173, 170, 170, 170, 170, 173, 174, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 170, 170, 170, 170, 184, 184, 260, 274, 261, 1129, 235, 275, 428, 428, 276, 277, 428, 262, 236, 263, 295, 278, 185, 264, 245, 185, 186, 184, 238, 326, 249, 320, 299, 255, 250, 185, 185, 185, 361, 1130, 327, 185, 251, 328, 301, 256, 286, 257, 185, 321, 258, 418, 186, 302, 310, 311, 419, 184, 312, 184, 192, 192, 231, 413, 192, 414, 292, 313, 618, 345, 314, 193, 315, 346, 232, 388, 347, 619, 194, 348, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 329, 205, 214, 215, 216, 217, 218, 455, 398, 196, 219, 456, 294, 220, 386, 221, 349, 222, 197, 223, 224, 225, 350, 474, 196, 198, 322, 1131, 475, 399, 387, 265, 199, 200, 400, 201, 303, 304, 202, 287, 203, 266, 323, 324, 267, 353, 366, 1132, 268, 269, 333, 354, 333, 333, 333, 341, 1133, 240, 256, 342, 257, 520, 235, 367, 334, 335, 368, 336, 343, 521, 236, 230, 351, 362, 281, 344, 568, 247, 355, 356, 238, 451, 352, 337, 357, 358, 359, 363, 249, 380, 569, 369, 364, 260, 306, 370, 1134, 381, 307, 452, 251, 273, 301, 2073, 262, 382, 263, 265, 365, 371, 264, 383, 372, 304, 376, 563, 564, 266, 401, 373, 267, 377, 378, 306, 374, 375, 384, 307, 389, 2073, 275, 272, 423, 276, 385, 398, 1135, 339, 379, 227, 278, 231, 523, 424, 340, 292, 291, 524, 390, 235, 457, 406, 346, 232, 577, 347, 399, 236, 348, 391, 458, 400, 249, 1138, 355, 356, 396, 392, 578, 352, 357, 394, 359, 245, 251, 462, 301, 395, 463, 192, 192, 299, 365, 192, 369, 1139, 260, 361, 397, 176, 438, 176, 176, 176, 384, 571, 470, 262, 402, 263, 572, 276, 385, 264, 355, 356, 573, 701, 278, 249, 357, 403, 404, 405, 176, 177, 176, 178, 176, 184, 184, 251, 702, 301, 430, 431, 430, 432, 430, 365, 436, 585, 436, 436, 436, 586, 445, 185, 445, 496, 185, 497, 184, 474, 496, 544, 497, 484, 475, 505, 185, 185, 185, 485, 486, 506, 185, 425, 487, 551, 507, 536, 579, 185, 508, 449, 626, 562, 583, 434, 580, 524, 184, 1142, 184, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 584, 565, 587, 565, 565, 565, 588, 540, 590, 490, 437, 439, 439, 484, 774, 439, 539, 597, 444, 485, 486, 598, 775, 541, 487, 614, 600, 407, 599, 408, 1143, 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, 333, 615, 333, 333, 333, 440, 566, 440, 441, 440, 605, 442, 443, 440, 334, 335, 606, 336, 440, 622, 440, 441, 441, 441, 440, 440, 545, 442, 411, 548, 655, 576, 607, 337, 442, 633, 627, 438, 443, 413, 634, 414, 527, 440, 628, 440, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 540, 584, 517, 505, 494, 1144, 484, 617, 609, 506, 614, 642, 485, 486, 507, 643, 594, 595, 508, 518, 602, 639, 610, 505, 644, 648, 1145, 646, 609, 506, 688, 645, 640, 540, 507, 548, 649, 654, 508, 484, 494, 641, 610, 613, 689, 485, 486, 2073, 677, 594, 652, 678, 2073, 653, 418, 983, 602, 639, 656, 419, 656, 656, 656, 428, 428, 2073, 2073, 428, 1021, 2073, 430, 431, 430, 432, 430, 430, 431, 430, 432, 430, 430, 431, 430, 432, 430, 436, 1016, 436, 436, 436, 1017, 663, 2073, 2073, 664, 665, 2073, 666, 666, 666, 666, 666, 674, 666, 663, 663, 663, 690, 675, 799, 664, 771, 736, 691, 682, 434, 777, 664, 683, 781, 434, 665, 778, 657, 800, 434, 440, 1146, 772, 2073, 2073, 684, 685, 868, 686, 713, 826, 714, 796, 440, 440, 440, 695, 715, 565, 2073, 565, 565, 565, 735, 437, 837, 2073, 703, 797, 767, 2073, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 706, 806, 807, 707, 817, 810, 856, 834, 857, 668, 708, 827, 726, 709, 818, 845, 710, 711, 444, 713, 782, 822, 776, 566, 668, 198, 1028, 823, 850, 856, 1029, 878, 199, 200, 1147, 201, 753, 754, 202, 748, 203, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 769, 2073, 838, 707, 770, 755, 976, 977, 446, 879, 708, 839, 411, 709, 655, 840, 710, 711, 446, 756, 811, 1150, 757, 707, 812, 880, 813, 2073, 848, 882, 708, 1151, 826, 814, 747, 865, 815, 711, 707, 812, 849, 813, 890, 848, 890, 708, 666, 666, 814, 876, 666, 815, 711, 1152, 656, 849, 656, 656, 656, 2073, 2073, 900, 922, 2073, 923, 901, 953, 954, 966, 928, 928, 1023, 1153, 1045, 1025, 967, 942, 1046, 902, 1051, 1154, 1020, 928, 982, 982, 932, 1063, 1038, 1024, 1074, 1090, 1064, 942, 1020, 1077, 1052, 982, 976, 977, 955, 1125, 1126, 1155, 1091, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 1140, 1141, 956, 1148, 1149, 657, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 1136, 1110, 891, 1110, 1110, 1110, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1137, 891, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1203, 1205, 1206, 1207, 1134, 1209, 1210, 1211, 1202, 1212, 1208, 1213, 1214, 1215, 1204, 1216, 1217, 1218, 1219, 1220, 1221, 1223, 1182, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1222, 1224, 1235, 1236, 1237, 1238, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1239, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1221, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1268, 1284, 1285, 1286, 1222, 1287, 1288, 1289, 1290, 1291, 1293, 1294, 1293, 1295, 1293, 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, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378, 1370, 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, 1412, 1413, 1335, 1336, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1294, 1439, 1438, 1293, 1294, 1293, 1295, 1293, 1293, 1294, 1293, 1295, 1293, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1445, 1445, 1445, 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, 1483, 1484, 1481, 1485, 1486, 1487, 1488, 1489, 1482, 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, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1536, 1534, 1534, 1534, 1535, 1537, 1535, 1535, 1535, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1294, 1548, 1438, 1549, 1550, 1551, 1552, 1553, 1555, 1557, 1555, 1445, 1555, 1558, 1560, 1561, 1562, 1563, 1564, 1565, 1559, 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, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1615, 1618, 1619, 1614, 1556, 1614, 1614, 1614, 1534, 1620, 1534, 1534, 1534, 1535, 1621, 1535, 1535, 1535, 1622, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1623, 1634, 1635, 1636, 1637, 2073, 1624, 1555, 1639, 1555, 1445, 1555, 2073, 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, 1616, 1672, 1673, 1674, 1675, 1617, 1676, 1677, 1678, 1679, 1680, 1614, 1682, 1614, 1614, 1614, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1556, 1694, 1695, 1696, 1638, 1697, 1698, 1699, 1700, 1701, 1703, 1704, 1705, 2073, 1707, 1708, 1702, 1709, 1710, 1711, 1710, 1710, 1710, 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, 1681, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 2073, 1756, 1757, 1758, 1761, 1762, 1760, 1706, 1760, 1710, 1760, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1785, 2073, 1800, 1801, 1802, 1786, 2073, 1803, 1804, 1760, 1787, 1760, 1710, 1760, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1755, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, 1828, 1829, 1830, 2073, 1832, 1833, 1834, 1835, 1836, 1837, 1838, 1839, 1840, 1841, 1799, 1842, 1843, 1844, 1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 2073, 1861, 1862, 1863, 1864, 1865, 1866, 1867, 1868, 1869, 1870, 1871, 1873, 1874, 1875, 1871, 1876, 1872, 1877, 1831, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, 1888, 1890, 1888, 1889, 1888, 1891, 1892, 1893, 1894, 1895, 1896, 1898, 1896, 1896, 1896, 1897, 1871, 1897, 1897, 1897, 1871, 1899, 1872, 1900, 1901, 1902, 1901, 1901, 1901, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1860, 1910, 1911, 1888, 1914, 1888, 1889, 1888, 1889, 1915, 1889, 1889, 1889, 1916, 1917, 1920, 1917, 1917, 1917, 1896, 1921, 1896, 1896, 1896, 1897, 1922, 1897, 1897, 1897, 1923, 1901, 1925, 1901, 1901, 1901, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 2073, 1936, 1937, 1938, 1917, 1940, 1917, 1917, 1917, 1941, 1912, 1942, 1943, 1944, 1945, 1913, 2073, 1946, 2073, 2073, 2073, 1947, 1948, 1949, 1950, 1951, 2073, 1953, 1954, 1918, 1955, 1919, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1961, 1961, 1961, 1963, 1964, 1965, 2073, 1967, 1968, 1969, 1970, 1971, 1935, 1972, 1973, 1976, 1977, 2073, 1975, 1939, 1975, 1961, 1975, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 2073, 1975, 1987, 1975, 1961, 1975, 1988, 2073, 1990, 1952, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2073, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2073, 2010, 1966, 2011, 2012, 2013, 2014, 2015, 2017, 2019, 2073, 2016, 2018, 2021, 2020, 2021, 2021, 2021, 1978, 2023, 2024, 2025, 2026, 2027, 1989, 2028, 2030, 2031, 2032, 2033, 2034, 2036, 2073, 2036, 2021, 2036, 2029, 2038, 2039, 2040, 2041, 2042, 2073, 2036, 2073, 2036, 2021, 2036, 2044, 2045, 2046, 2047, 1999, 2048, 2073, 2050, 2051, 2052, 2053, 2054, 2073, 2056, 2057, 2058, 2009, 2059, 2060, 2073, 2062, 2063, 2064, 2022, 2065, 2073, 2067, 2068, 2069, 2073, 2070, 2071, 2072, 1124, 1123, 1122, 1121, 1120, 1119, 1118, 1117, 1116, 1115, 1114, 1113, 1112, 1111, 2043, 1109, 1108, 2037, 1107, 1106, 1105, 1104, 2049, 1103, 1102, 1101, 1100, 1099, 1098, 1097, 1096, 1095, 1094, 1093, 1092, 1089, 1088, 2061, 1087, 1086, 1085, 1084, 2066, 1083, 1082, 2055, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 1081, 180, 182, 1080, 1079, 1078, 1077, 182, 182, 1076, 182, 210, 1075, 1073, 210, 1072, 210, 210, 1071, 210, 211, 1070, 1069, 1068, 211, 211, 211, 211, 211, 211, 211, 211, 211, 213, 1067, 213, 213, 1066, 213, 409, 1065, 409, 409, 1062, 409, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 410, 416, 1061, 416, 416, 1060, 416, 417, 417, 1059, 417, 417, 417, 417, 417, 417, 417, 417, 417, 417, 420, 1058, 420, 420, 1057, 420, 422, 1056, 422, 422, 1055, 422, 426, 1054, 1053, 426, 1050, 426, 426, 1049, 426, 429, 429, 1048, 1047, 1044, 1043, 429, 429, 429, 1042, 1041, 429, 433, 433, 433, 1040, 1039, 1037, 1036, 1035, 433, 433, 433, 433, 435, 435, 1034, 435, 435, 435, 435, 435, 435, 435, 435, 435, 435, 446, 446, 1033, 1031, 1030, 1027, 446, 559, 559, 559, 559, 559, 1026, 559, 559, 559, 559, 559, 559, 559, 660, 1022, 1019, 660, 1018, 660, 660, 1015, 660, 661, 1014, 1013, 1012, 661, 661, 661, 661, 661, 661, 661, 661, 661, 667, 667, 1011, 1010, 1009, 1008, 667, 667, 667, 1007, 1006, 667, 891, 891, 1005, 1004, 1003, 1002, 891, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1292, 1554, 1554, 1001, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1554, 1759, 1759, 1000, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1759, 1924, 999, 1924, 998, 997, 996, 1924, 995, 1924, 1924, 1974, 1974, 994, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 1974, 2035, 2035, 993, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 2035, 992, 991, 990, 989, 988, 987, 986, 985, 984, 983, 981, 980, 979, 978, 975, 974, 973, 972, 971, 970, 969, 968, 965, 964, 963, 962, 961, 960, 959, 958, 957, 952, 951, 950, 949, 948, 947, 946, 945, 944, 943, 942, 941, 940, 939, 938, 937, 936, 935, 934, 933, 932, 931, 930, 929, 928, 927, 926, 925, 924, 921, 920, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 905, 904, 903, 899, 898, 897, 896, 895, 894, 893, 892, 447, 889, 888, 887, 886, 885, 884, 883, 881, 877, 875, 874, 873, 872, 871, 870, 869, 867, 866, 864, 863, 862, 861, 860, 859, 858, 855, 854, 853, 852, 851, 847, 846, 844, 843, 842, 841, 836, 835, 833, 832, 831, 830, 829, 828, 826, 825, 824, 821, 820, 819, 816, 809, 808, 805, 804, 803, 802, 801, 798, 795, 794, 793, 792, 791, 790, 789, 788, 787, 786, 785, 784, 783, 782, 780, 779, 776, 773, 768, 767, 766, 765, 764, 763, 762, 761, 760, 759, 758, 752, 751, 750, 749, 748, 747, 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, 712, 705, 704, 703, 700, 699, 698, 697, 696, 695, 694, 693, 692, 687, 681, 680, 679, 676, 673, 672, 671, 670, 669, 662, 659, 658, 651, 650, 647, 638, 637, 636, 635, 632, 631, 630, 629, 625, 624, 623, 621, 620, 616, 613, 612, 611, 608, 603, 601, 596, 593, 592, 591, 589, 582, 581, 576, 575, 574, 570, 567, 558, 557, 556, 555, 554, 553, 552, 550, 549, 548, 547, 546, 545, 543, 542, 539, 538, 537, 535, 534, 533, 532, 531, 530, 529, 528, 527, 526, 525, 522, 519, 516, 515, 514, 513, 512, 511, 510, 509, 504, 503, 502, 501, 500, 499, 498, 495, 494, 493, 492, 491, 490, 489, 488, 483, 482, 481, 480, 479, 478, 477, 476, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 461, 460, 459, 454, 453, 450, 449, 447, 448, 447, 447, 447, 447, 427, 181, 425, 421, 415, 360, 332, 318, 316, 309, 308, 296, 288, 286, 281, 273, 245, 244, 241, 212, 189, 188, 187, 183, 181, 179, 2073, 103, 103, 27, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073 } ; static const flex_int32_t yy_chk[3375] = { 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, 3, 5, 5, 65, 5, 5, 30, 65, 30, 30, 30, 32, 32, 32, 32, 32, 63, 47, 64, 5, 366, 5, 47, 51, 51, 52, 52, 53, 53, 62, 64, 62, 63, 108, 69, 366, 62, 5, 67, 5, 5, 5, 69, 5, 67, 5, 74, 924, 5, 74, 5, 86, 5, 81, 81, 5, 108, 5, 9, 85, 9, 9, 9, 9, 9, 72, 66, 9, 9, 72, 9, 86, 9, 88, 66, 364, 66, 88, 73, 72, 97, 75, 73, 9, 66, 9, 9, 9, 97, 9, 73, 364, 73, 75, 102, 75, 85, 9, 75, 102, 9, 75, 78, 9, 9, 9, 9, 9, 9, 11, 78, 9, 9, 94, 9, 9, 9, 94, 9, 78, 9, 9, 9, 9, 9, 9, 85, 11, 12, 11, 9, 11, 144, 11, 822, 11, 90, 90, 11, 144, 11, 91, 91, 77, 11, 11, 12, 11, 12, 11, 12, 13, 12, 77, 12, 822, 77, 12, 120, 12, 77, 77, 270, 12, 12, 92, 12, 92, 12, 13, 14, 13, 92, 13, 92, 13, 103, 13, 110, 270, 13, 103, 13, 115, 115, 103, 13, 13, 14, 13, 14, 13, 14, 15, 14, 98, 14, 110, 110, 14, 925, 14, 113, 98, 120, 14, 14, 113, 14, 98, 14, 15, 16, 15, 157, 15, 157, 15, 160, 15, 160, 113, 15, 93, 15, 116, 116, 93, 15, 15, 16, 15, 16, 15, 16, 93, 16, 93, 16, 117, 117, 16, 121, 16, 121, 329, 329, 16, 16, 121, 16, 121, 16, 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, 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, 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, 21, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 39, 39, 76, 80, 76, 926, 95, 80, 185, 185, 80, 80, 185, 76, 95, 76, 95, 80, 39, 76, 129, 39, 39, 39, 95, 114, 99, 111, 129, 100, 99, 39, 39, 39, 129, 927, 114, 39, 99, 114, 99, 100, 111, 100, 39, 111, 100, 168, 39, 100, 106, 106, 168, 39, 106, 39, 48, 48, 123, 163, 48, 163, 123, 106, 377, 123, 106, 48, 106, 123, 123, 140, 123, 377, 48, 123, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 140, 140, 61, 61, 61, 61, 61, 217, 149, 48, 61, 217, 124, 61, 139, 61, 124, 61, 48, 61, 61, 61, 124, 233, 48, 48, 112, 928, 233, 149, 139, 101, 48, 48, 149, 48, 101, 101, 48, 112, 48, 101, 112, 112, 101, 126, 132, 929, 101, 101, 119, 126, 119, 119, 119, 122, 930, 126, 132, 122, 132, 272, 125, 132, 119, 119, 132, 119, 122, 272, 125, 122, 125, 130, 139, 122, 339, 130, 127, 127, 125, 214, 125, 119, 127, 127, 127, 130, 131, 136, 339, 133, 131, 133, 136, 133, 931, 137, 136, 214, 131, 137, 131, 443, 133, 137, 133, 134, 131, 134, 133, 137, 134, 134, 135, 331, 331, 134, 150, 134, 134, 135, 135, 150, 134, 134, 138, 150, 141, 443, 138, 135, 174, 138, 138, 154, 932, 141, 135, 141, 138, 142, 274, 174, 141, 142, 141, 274, 142, 143, 218, 154, 142, 142, 346, 142, 154, 143, 142, 143, 218, 154, 147, 936, 145, 145, 147, 143, 346, 143, 145, 145, 145, 146, 147, 222, 147, 146, 222, 192, 192, 146, 147, 192, 148, 937, 148, 146, 148, 176, 192, 176, 176, 176, 151, 341, 341, 148, 151, 148, 342, 151, 151, 148, 152, 152, 342, 475, 151, 153, 152, 152, 152, 153, 178, 178, 178, 178, 178, 186, 186, 153, 475, 153, 187, 187, 187, 187, 187, 153, 191, 352, 191, 191, 191, 352, 196, 186, 196, 252, 186, 252, 186, 294, 301, 301, 301, 243, 294, 261, 186, 186, 186, 243, 243, 261, 186, 308, 243, 308, 261, 294, 347, 186, 261, 330, 384, 330, 351, 187, 347, 384, 186, 939, 186, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 351, 335, 353, 335, 335, 335, 353, 298, 355, 362, 191, 193, 193, 298, 540, 193, 355, 361, 194, 298, 298, 361, 540, 298, 298, 374, 362, 408, 361, 408, 942, 193, 193, 193, 193, 193, 193, 193, 193, 193, 193, 333, 374, 333, 333, 333, 193, 335, 193, 193, 193, 367, 193, 193, 193, 333, 333, 367, 333, 193, 380, 193, 193, 193, 193, 193, 193, 368, 193, 412, 380, 412, 390, 368, 333, 193, 390, 385, 197, 193, 414, 391, 414, 385, 193, 385, 193, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 359, 391, 376, 370, 396, 944, 359, 376, 370, 370, 399, 398, 359, 359, 370, 398, 359, 359, 370, 376, 396, 396, 370, 397, 398, 401, 945, 399, 397, 397, 463, 398, 397, 404, 397, 401, 401, 406, 397, 404, 405, 397, 397, 406, 463, 404, 404, 417, 457, 404, 404, 457, 417, 405, 418, 812, 405, 405, 421, 418, 421, 421, 421, 428, 428, 429, 429, 428, 812, 429, 430, 430, 430, 430, 430, 431, 431, 431, 431, 431, 432, 432, 432, 432, 432, 436, 807, 436, 436, 436, 807, 438, 440, 440, 438, 438, 440, 441, 441, 442, 442, 441, 455, 442, 438, 438, 438, 464, 455, 572, 438, 538, 545, 464, 461, 430, 542, 438, 461, 545, 431, 438, 542, 421, 572, 432, 439, 946, 538, 439, 439, 461, 461, 637, 461, 481, 637, 481, 570, 439, 439, 439, 570, 481, 565, 439, 565, 565, 565, 605, 436, 605, 439, 582, 570, 579, 439, 444, 444, 444, 444, 444, 444, 444, 444, 444, 444, 479, 579, 579, 479, 585, 582, 622, 601, 622, 444, 479, 594, 601, 479, 585, 612, 479, 479, 444, 589, 612, 589, 594, 565, 444, 444, 819, 589, 616, 648, 819, 648, 444, 444, 947, 444, 521, 521, 444, 616, 444, 445, 445, 445, 445, 445, 445, 445, 445, 445, 445, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 537, 665, 606, 537, 537, 521, 761, 761, 445, 649, 537, 606, 655, 537, 655, 606, 537, 537, 446, 521, 583, 949, 521, 583, 583, 649, 583, 665, 615, 651, 583, 950, 651, 583, 615, 634, 583, 583, 634, 634, 615, 634, 668, 646, 668, 634, 666, 666, 634, 646, 666, 634, 634, 951, 656, 646, 656, 656, 656, 667, 667, 678, 698, 667, 698, 678, 736, 736, 746, 769, 811, 814, 952, 836, 815, 746, 828, 836, 678, 842, 955, 811, 865, 769, 811, 815, 854, 828, 814, 865, 882, 854, 883, 865, 882, 842, 865, 881, 881, 736, 921, 921, 956, 883, 890, 890, 890, 890, 890, 890, 890, 890, 890, 890, 938, 938, 736, 948, 948, 656, 891, 891, 891, 891, 891, 891, 891, 891, 891, 891, 933, 905, 890, 905, 905, 905, 958, 959, 960, 963, 964, 966, 967, 968, 969, 971, 972, 933, 891, 974, 975, 979, 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, 999, 1000, 1004, 1006, 1007, 1008, 1009, 1010, 1012, 1014, 1015, 1016, 1017, 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1018, 1028, 1024, 1029, 1031, 1032, 1020, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1038, 1039, 1052, 1053, 1054, 1055, 1057, 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1055, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1091, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1086, 1102, 1103, 1104, 1091, 1105, 1106, 1107, 1108, 1109, 1110, 1110, 1110, 1110, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1142, 1143, 1144, 1147, 1151, 1152, 1153, 1154, 1156, 1157, 1159, 1160, 1161, 1162, 1163, 1163, 1164, 1164, 1165, 1165, 1168, 1169, 1172, 1173, 1174, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1187, 1190, 1191, 1196, 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1212, 1214, 1215, 1216, 1217, 1218, 1221, 1208, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1230, 1231, 1232, 1233, 1234, 1235, 1237, 1238, 1239, 1244, 1245, 1246, 1247, 1249, 1250, 1251, 1253, 1254, 1255, 1256, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1292, 1296, 1292, 1293, 1293, 1293, 1293, 1293, 1295, 1295, 1295, 1295, 1295, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1302, 1302, 1302, 1304, 1305, 1306, 1307, 1308, 1310, 1313, 1314, 1315, 1316, 1317, 1320, 1323, 1325, 1327, 1328, 1329, 1331, 1331, 1332, 1334, 1341, 1342, 1343, 1344, 1345, 1347, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1358, 1359, 1356, 1361, 1362, 1363, 1364, 1365, 1356, 1366, 1367, 1368, 1369, 1370, 1371, 1373, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1386, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1400, 1401, 1402, 1404, 1405, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1417, 1419, 1420, 1422, 1423, 1424, 1426, 1424, 1424, 1424, 1425, 1427, 1425, 1425, 1425, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1438, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1445, 1445, 1445, 1447, 1448, 1449, 1450, 1453, 1454, 1455, 1447, 1456, 1459, 1460, 1461, 1467, 1469, 1470, 1471, 1474, 1475, 1476, 1477, 1480, 1481, 1482, 1484, 1486, 1487, 1489, 1491, 1492, 1493, 1494, 1495, 1496, 1498, 1499, 1500, 1501, 1503, 1506, 1508, 1511, 1512, 1513, 1515, 1517, 1518, 1519, 1521, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, 1533, 1536, 1537, 1532, 1445, 1532, 1532, 1532, 1534, 1538, 1534, 1534, 1534, 1535, 1539, 1535, 1535, 1535, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548, 1549, 1540, 1550, 1551, 1552, 1553, 1554, 1540, 1555, 1557, 1555, 1555, 1555, 1556, 1558, 1559, 1561, 1562, 1563, 1565, 1566, 1567, 1573, 1574, 1575, 1576, 1577, 1578, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1597, 1599, 1600, 1601, 1603, 1534, 1604, 1606, 1607, 1608, 1535, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1614, 1614, 1614, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1555, 1627, 1628, 1629, 1556, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1640, 1641, 1634, 1642, 1643, 1644, 1643, 1643, 1643, 1645, 1647, 1648, 1650, 1651, 1652, 1653, 1654, 1658, 1659, 1662, 1663, 1664, 1665, 1666, 1667, 1669, 1673, 1675, 1676, 1677, 1680, 1681, 1682, 1683, 1684, 1614, 1686, 1687, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1706, 1707, 1708, 1709, 1712, 1715, 1710, 1638, 1710, 1710, 1710, 1716, 1717, 1719, 1721, 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1743, 1755, 1756, 1757, 1758, 1743, 1759, 1762, 1763, 1760, 1743, 1760, 1760, 1760, 1764, 1769, 1772, 1773, 1775, 1776, 1777, 1778, 1706, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, 1788, 1789, 1791, 1792, 1794, 1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1804, 1807, 1808, 1809, 1811, 1755, 1812, 1813, 1814, 1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, 1844, 1848, 1844, 1849, 1799, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, 1858, 1859, 1860, 1861, 1860, 1860, 1860, 1862, 1863, 1865, 1866, 1867, 1868, 1870, 1868, 1868, 1868, 1869, 1871, 1869, 1869, 1869, 1871, 1872, 1871, 1873, 1874, 1875, 1874, 1874, 1874, 1876, 1880, 1881, 1882, 1883, 1884, 1885, 1831, 1886, 1887, 1888, 1890, 1888, 1888, 1888, 1889, 1893, 1889, 1889, 1889, 1894, 1895, 1898, 1895, 1895, 1895, 1896, 1899, 1896, 1896, 1896, 1897, 1899, 1897, 1897, 1897, 1900, 1901, 1902, 1901, 1901, 1901, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1915, 1916, 1917, 1918, 1917, 1917, 1917, 1919, 1888, 1920, 1921, 1922, 1923, 1889, 1924, 1925, 1924, 1924, 1924, 1926, 1927, 1930, 1931, 1934, 1935, 1936, 1937, 1896, 1939, 1897, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1945, 1945, 1945, 1947, 1949, 1951, 1952, 1953, 1955, 1956, 1957, 1958, 1912, 1959, 1960, 1962, 1963, 1966, 1961, 1917, 1961, 1961, 1961, 1967, 1968, 1969, 1970, 1971, 1972, 1972, 1973, 1974, 1975, 1976, 1975, 1975, 1975, 1977, 1978, 1979, 1935, 1980, 1981, 1982, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1996, 1997, 1999, 2000, 1952, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 2005, 2006, 2008, 2007, 2008, 2008, 2008, 1966, 2010, 2011, 2012, 2013, 2014, 1978, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2021, 2021, 2021, 2015, 2023, 2024, 2025, 2026, 2029, 2035, 2036, 2037, 2036, 2036, 2036, 2038, 2039, 2040, 2041, 1989, 2042, 2043, 2044, 2045, 2046, 2047, 2048, 2049, 2050, 2051, 2052, 1999, 2053, 2054, 2055, 2056, 2057, 2059, 2009, 2060, 2061, 2062, 2064, 2065, 2066, 2069, 2070, 2071, 919, 918, 917, 916, 915, 914, 913, 912, 911, 910, 909, 908, 907, 906, 2037, 904, 903, 2022, 902, 901, 900, 899, 2043, 898, 897, 896, 895, 894, 893, 892, 889, 888, 887, 886, 884, 880, 879, 2055, 878, 877, 876, 875, 2061, 874, 873, 2049, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2074, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2075, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 2076, 872, 2076, 2077, 871, 870, 869, 868, 2077, 2077, 867, 2077, 2078, 866, 864, 2078, 863, 2078, 2078, 862, 2078, 2079, 861, 860, 858, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2080, 857, 2080, 2080, 856, 2080, 2081, 855, 2081, 2081, 853, 2081, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2082, 2083, 851, 2083, 2083, 850, 2083, 2084, 2084, 849, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2084, 2085, 848, 2085, 2085, 847, 2085, 2086, 846, 2086, 2086, 845, 2086, 2087, 844, 843, 2087, 840, 2087, 2087, 839, 2087, 2088, 2088, 838, 837, 834, 833, 2088, 2088, 2088, 832, 831, 2088, 2089, 2089, 2089, 830, 829, 827, 826, 825, 2089, 2089, 2089, 2089, 2090, 2090, 824, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2090, 2091, 2091, 823, 821, 820, 818, 2091, 2092, 2092, 2092, 2092, 2092, 817, 2092, 2092, 2092, 2092, 2092, 2092, 2092, 2093, 813, 809, 2093, 808, 2093, 2093, 806, 2093, 2094, 805, 804, 803, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2094, 2095, 2095, 801, 800, 798, 797, 2095, 2095, 2095, 796, 795, 2095, 2096, 2096, 794, 791, 790, 789, 2096, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2098, 2098, 788, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2099, 2099, 787, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2099, 2100, 786, 2100, 785, 784, 783, 2100, 782, 2100, 2100, 2101, 2101, 781, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2101, 2102, 2102, 780, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 2102, 779, 778, 777, 776, 775, 774, 773, 772, 771, 770, 768, 767, 765, 762, 758, 757, 756, 755, 752, 749, 748, 747, 745, 744, 743, 742, 741, 740, 739, 738, 737, 735, 734, 732, 731, 730, 728, 726, 725, 724, 723, 721, 720, 719, 718, 717, 716, 714, 713, 712, 711, 710, 709, 708, 707, 706, 703, 702, 701, 700, 697, 696, 695, 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, 681, 680, 679, 677, 676, 675, 674, 673, 672, 671, 670, 669, 662, 659, 658, 657, 654, 653, 652, 650, 647, 645, 644, 643, 642, 641, 640, 639, 636, 635, 633, 632, 628, 627, 626, 625, 624, 621, 620, 619, 618, 617, 614, 613, 611, 610, 608, 607, 604, 603, 600, 599, 598, 597, 596, 595, 593, 592, 591, 588, 587, 586, 584, 581, 580, 578, 577, 576, 575, 574, 571, 569, 568, 564, 560, 557, 556, 555, 554, 553, 552, 550, 548, 547, 546, 544, 543, 541, 539, 536, 535, 534, 533, 529, 527, 526, 525, 524, 523, 522, 520, 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, 508, 507, 505, 504, 503, 502, 501, 500, 499, 498, 497, 495, 494, 493, 492, 491, 490, 489, 488, 487, 486, 485, 484, 483, 482, 480, 478, 477, 476, 474, 473, 472, 471, 470, 469, 467, 466, 465, 462, 460, 459, 458, 456, 454, 453, 452, 451, 448, 437, 424, 423, 403, 402, 400, 395, 394, 393, 392, 389, 388, 387, 386, 383, 382, 381, 379, 378, 375, 373, 372, 371, 369, 365, 363, 360, 358, 357, 356, 354, 349, 348, 345, 344, 343, 340, 336, 324, 315, 314, 313, 312, 311, 310, 307, 306, 305, 304, 303, 302, 300, 299, 297, 296, 295, 293, 292, 291, 290, 289, 280, 279, 278, 277, 276, 275, 273, 271, 269, 268, 267, 266, 265, 264, 263, 262, 260, 259, 258, 257, 256, 255, 254, 251, 250, 249, 248, 247, 246, 245, 244, 241, 240, 239, 238, 237, 236, 235, 234, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 221, 220, 219, 216, 215, 211, 206, 203, 202, 201, 200, 199, 198, 183, 180, 179, 172, 164, 128, 118, 109, 107, 105, 104, 96, 89, 87, 83, 79, 71, 70, 68, 60, 45, 42, 40, 38, 34, 33, 27, 8, 7, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073, 2073 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 1; static const flex_int32_t yy_rule_linenum[421] = { 0, 115, 119, 120, 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, 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, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 258, 264, 265, 266, 267, 268, 269, 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, 367, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 401, 402, 403, 404, 412, 419, 420, 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, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 477, 478, 479, 480, 481, 482, 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, 514, 515, 516, 517, 522, 528, 536, 544, 545, 547, 549, 564, 567, 570, 573, 581, 582, 583, 584, 586, 587, 591, 592, 593, 594, 595, 601, 602, 603, 604, 606, 607, 613, 614, 615, 616, 624, 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, 657, 658, 659, 660, 661, 662, 665, 666, 667, 668, 669, 670, 671, 672, 673, 680, 683, 685, 686, 687, 691 } ; /* 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 *yytext; #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-2020 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 S17 // 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); } /**********************************************************************/ #line 2352 "VParseLex_pretmp.cpp" #line 100 "VParseLex.l" /* identifier */ /* escaped identifier */ /* verilog numbers, constructed to not match the ' that begins a '( or '{ */ #line 2358 "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 S17 7 #define STRING 8 #define ATTRMODE 9 #define CMTMODE 10 #define PROTMODE 11 #define DUMMY_TO_AVOID_WARNING 12 #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 yylex_destroy ( void ); int yyget_debug ( void ); void yyset_debug ( int debug_flag ); YY_EXTRA_TYPE yyget_extra ( void ); void yyset_extra ( YY_EXTRA_TYPE user_defined ); FILE *yyget_in ( void ); void yyset_in ( FILE * _in_str ); FILE *yyget_out ( void ); void yyset_out ( FILE * _out_str ); int yyget_leng ( void ); char *yyget_text ( void ); int yyget_lineno ( void ); void yyset_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 yywrap ( void ); #else extern int yywrap ( void ); #endif #endif /* %not-for-header */ #ifndef YY_NO_UNPUT static void yyunput ( int c, char *buf_ptr ); #endif /* %ok-for-header */ /* %endif */ #ifndef yytext_ptr static void yy_flex_strncpy ( char *, const char *, int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen ( const 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( yytext, (size_t) yyleng, 1, yyout )) {} } 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 = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ /* %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 yylex (void); #define YY_DECL int yylex (void) /* %endif */ /* %if-c++-only C++ definition */ /* %endif */ #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * 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 /*LINTED*/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 { yy_state_type yy_current_state; char *yy_cp, *yy_bp; int yy_act; if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) /* %if-c-only */ yyin = stdin; /* %endif */ /* %if-c++-only */ /* %endif */ if ( ! yyout ) /* %if-c-only */ yyout = stdout; /* %endif */ /* %if-c++-only */ /* %endif */ if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_load_buffer_state( ); } { /* %% [7.0] user's declarations go here */ #line 113 "VParseLex.l" #line 2663 "VParseLex_pretmp.cpp" while ( /*CONSTCOND*/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) = (int) ((yy_c_buf_p) - (yytext_ptr)); (yy_more_flag) = 0; } yy_cp = (yy_c_buf_p); /* Support of yytext. */ *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 { 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 >= 2074 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 3293 ); 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 yylineno update goes here */ do_action: /* This label is used only to access EOF actions. */ /* %% [12.0] debug code goes here */ if ( yy_flex_debug ) { if ( yy_act == 0 ) fprintf( stderr, "--scanner backing up\n" ); else if ( yy_act < 421 ) fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n", (long)yy_rule_linenum[yy_act], yytext ); else if ( yy_act == 421 ) fprintf( stderr, "--accepting default rule (\"%s\")\n", yytext ); else if ( yy_act == 422 ) 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 115 "VParseLex.l" {BEGIN STATE_VERILOG_RECENT; yyless(0); } YY_BREAK /* Verilog 1995 */ case 2: YY_RULE_SETUP #line 119 "VParseLex.l" { StashPrefix; } /* otherwise ignore white-space */ YY_BREAK case 3: /* rule 3 can match eol */ YY_RULE_SETUP #line 120 "VParseLex.l" { StashPrefix; NEXTLINE(); } /* Count line numbers */ YY_BREAK /* Keywords */ case 4: YY_RULE_SETUP #line 122 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 5: YY_RULE_SETUP #line 123 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yAND; } YY_BREAK case 6: YY_RULE_SETUP #line 124 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yASSIGN; } YY_BREAK case 7: YY_RULE_SETUP #line 125 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBEGIN; } YY_BREAK case 8: YY_RULE_SETUP #line 126 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBUF; } YY_BREAK case 9: YY_RULE_SETUP #line 127 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCASE; } YY_BREAK case 10: YY_RULE_SETUP #line 128 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCASEX; } YY_BREAK case 11: YY_RULE_SETUP #line 129 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCASEZ; } YY_BREAK case 12: YY_RULE_SETUP #line 130 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDEASSIGN; } YY_BREAK case 13: YY_RULE_SETUP #line 131 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDEFAULT; } YY_BREAK case 14: YY_RULE_SETUP #line 132 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDEFPARAM; } YY_BREAK case 15: YY_RULE_SETUP #line 133 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDISABLE; } YY_BREAK case 16: YY_RULE_SETUP #line 134 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEDGE; } YY_BREAK case 17: YY_RULE_SETUP #line 135 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yELSE; } YY_BREAK case 18: YY_RULE_SETUP #line 136 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEND; } YY_BREAK case 19: YY_RULE_SETUP #line 137 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCASE; } YY_BREAK case 20: YY_RULE_SETUP #line 138 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDFUNCTION; } YY_BREAK case 21: YY_RULE_SETUP #line 139 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDMODULE; } YY_BREAK case 22: YY_RULE_SETUP #line 140 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDMODULE; } YY_BREAK case 23: YY_RULE_SETUP #line 141 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSPECIFY; } YY_BREAK case 24: YY_RULE_SETUP #line 142 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDTABLE; } YY_BREAK case 25: YY_RULE_SETUP #line 143 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDTASK; } YY_BREAK case 26: YY_RULE_SETUP #line 144 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEVENT; } YY_BREAK case 27: YY_RULE_SETUP #line 145 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFOR; } YY_BREAK case 28: YY_RULE_SETUP #line 146 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFORCE; } YY_BREAK case 29: YY_RULE_SETUP #line 147 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREVER; } YY_BREAK case 30: YY_RULE_SETUP #line 148 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFORK; } YY_BREAK case 31: YY_RULE_SETUP #line 149 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFUNCTION__LEX; } YY_BREAK case 32: YY_RULE_SETUP #line 150 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIF; } YY_BREAK case 33: YY_RULE_SETUP #line 151 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINITIAL; } YY_BREAK case 34: YY_RULE_SETUP #line 152 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINOUT; } YY_BREAK case 35: YY_RULE_SETUP #line 153 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINPUT; } YY_BREAK case 36: YY_RULE_SETUP #line 154 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTEGER; } YY_BREAK case 37: YY_RULE_SETUP #line 155 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } YY_BREAK case 38: YY_RULE_SETUP #line 156 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } YY_BREAK case 39: YY_RULE_SETUP #line 157 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } YY_BREAK case 40: YY_RULE_SETUP #line 158 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNAND; } YY_BREAK case 41: YY_RULE_SETUP #line 159 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNEGEDGE; } YY_BREAK case 42: YY_RULE_SETUP #line 160 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNOR; } YY_BREAK case 43: YY_RULE_SETUP #line 161 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNOT; } YY_BREAK case 44: YY_RULE_SETUP #line 162 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yOR; } YY_BREAK case 45: YY_RULE_SETUP #line 163 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yOUTPUT; } YY_BREAK case 46: YY_RULE_SETUP #line 164 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPARAMETER; } YY_BREAK case 47: YY_RULE_SETUP #line 165 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPOSEDGE; } YY_BREAK case 48: YY_RULE_SETUP #line 166 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODULE; } YY_BREAK case 49: YY_RULE_SETUP #line 167 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREAL; } YY_BREAK case 50: YY_RULE_SETUP #line 168 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREALTIME; } YY_BREAK case 51: YY_RULE_SETUP #line 169 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREG; } YY_BREAK case 52: YY_RULE_SETUP #line 170 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRELEASE; } YY_BREAK case 53: YY_RULE_SETUP #line 171 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREPEAT; } YY_BREAK case 54: YY_RULE_SETUP #line 172 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySCALARED; } YY_BREAK case 55: YY_RULE_SETUP #line 173 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySPECIFY; } YY_BREAK case 56: YY_RULE_SETUP #line 174 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySPECPARAM; } YY_BREAK case 57: YY_RULE_SETUP #line 175 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPPLY0; } YY_BREAK case 58: YY_RULE_SETUP #line 176 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPPLY1; } YY_BREAK case 59: YY_RULE_SETUP #line 177 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTABLE; } YY_BREAK case 60: YY_RULE_SETUP #line 178 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTASK__LEX; } YY_BREAK case 61: YY_RULE_SETUP #line 179 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTIME; } YY_BREAK case 62: YY_RULE_SETUP #line 180 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI; } YY_BREAK case 63: YY_RULE_SETUP #line 181 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI0; } YY_BREAK case 64: YY_RULE_SETUP #line 182 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRI1; } YY_BREAK case 65: YY_RULE_SETUP #line 183 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIAND; } YY_BREAK case 66: YY_RULE_SETUP #line 184 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIOR; } YY_BREAK case 67: YY_RULE_SETUP #line 185 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTRIREG; } YY_BREAK case 68: YY_RULE_SETUP #line 186 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVECTORED; } YY_BREAK case 69: YY_RULE_SETUP #line 187 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT; } YY_BREAK case 70: YY_RULE_SETUP #line 188 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWAND; } YY_BREAK case 71: YY_RULE_SETUP #line 189 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWHILE; } YY_BREAK case 72: YY_RULE_SETUP #line 190 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; } YY_BREAK case 73: YY_RULE_SETUP #line 191 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWOR; } YY_BREAK case 74: YY_RULE_SETUP #line 192 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yXNOR; } YY_BREAK case 75: YY_RULE_SETUP #line 193 "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 195 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 77: YY_RULE_SETUP #line 196 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 78: YY_RULE_SETUP #line 197 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 79: YY_RULE_SETUP #line 198 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 80: YY_RULE_SETUP #line 199 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 81: YY_RULE_SETUP #line 200 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 82: YY_RULE_SETUP #line 201 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 83: YY_RULE_SETUP #line 202 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 84: YY_RULE_SETUP #line 203 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 85: YY_RULE_SETUP #line 204 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 86: YY_RULE_SETUP #line 205 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 87: YY_RULE_SETUP #line 206 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 88: YY_RULE_SETUP #line 207 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 89: YY_RULE_SETUP #line 208 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 90: YY_RULE_SETUP #line 209 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 91: YY_RULE_SETUP #line 210 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 92: YY_RULE_SETUP #line 211 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 93: YY_RULE_SETUP #line 212 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 94: YY_RULE_SETUP #line 213 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 95: YY_RULE_SETUP #line 214 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 96: YY_RULE_SETUP #line 215 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 97: YY_RULE_SETUP #line 216 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 98: YY_RULE_SETUP #line 217 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 99: YY_RULE_SETUP #line 218 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 100: YY_RULE_SETUP #line 219 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 101: YY_RULE_SETUP #line 220 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 102: YY_RULE_SETUP #line 221 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenGATE; } YY_BREAK case 103: YY_RULE_SETUP #line 222 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK case 104: YY_RULE_SETUP #line 223 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenSTRENGTH; } YY_BREAK /* Generic unsupported warnings */ /* Verilog 2001 */ /* Keywords*/ case 105: YY_RULE_SETUP #line 230 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yAUTOMATIC; } YY_BREAK case 106: YY_RULE_SETUP #line 231 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGENERATE; } YY_BREAK case 107: YY_RULE_SETUP #line 232 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yGENERATE; } YY_BREAK case 108: YY_RULE_SETUP #line 233 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yGENVAR; } YY_BREAK case 109: YY_RULE_SETUP #line 234 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 110: YY_RULE_SETUP #line 235 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCALPARAM; } YY_BREAK case 111: YY_RULE_SETUP #line 236 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 112: YY_RULE_SETUP #line 237 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 113: YY_RULE_SETUP #line 238 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 114: YY_RULE_SETUP #line 239 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yaTIMINGSPEC; } YY_BREAK case 115: YY_RULE_SETUP #line 240 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySIGNED; } YY_BREAK case 116: YY_RULE_SETUP #line 241 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNSIGNED; } YY_BREAK /* Generic unsupported keywords */ case 117: YY_RULE_SETUP #line 243 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 118: YY_RULE_SETUP #line 244 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 119: YY_RULE_SETUP #line 245 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 120: YY_RULE_SETUP #line 246 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 121: YY_RULE_SETUP #line 247 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 122: YY_RULE_SETUP #line 248 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 123: YY_RULE_SETUP #line 249 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 124: YY_RULE_SETUP #line 250 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 125: YY_RULE_SETUP #line 251 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK case 126: YY_RULE_SETUP #line 252 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ygenCONFIGKEYWORD; } YY_BREAK /* Verilog 2005 */ /* Keywords */ case 127: YY_RULE_SETUP #line 258 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWIRE; } YY_BREAK /* System Verilog 2005 */ /* System Tasks */ case 128: YY_RULE_SETUP #line 264 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ERROR; } YY_BREAK case 129: YY_RULE_SETUP #line 265 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_FATAL; } YY_BREAK case 130: YY_RULE_SETUP #line 266 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_INFO; } YY_BREAK case 131: YY_RULE_SETUP #line 267 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_ROOT; } YY_BREAK case 132: YY_RULE_SETUP #line 268 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_UNIT; } YY_BREAK case 133: YY_RULE_SETUP #line 269 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yD_WARNING; } YY_BREAK /* Keywords */ case 134: YY_RULE_SETUP #line 271 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALIAS; } YY_BREAK case 135: YY_RULE_SETUP #line 272 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 136: YY_RULE_SETUP #line 273 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 137: YY_RULE_SETUP #line 274 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yALWAYS; } YY_BREAK case 138: YY_RULE_SETUP #line 275 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yASSERT; } YY_BREAK case 139: YY_RULE_SETUP #line 276 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yASSUME; } YY_BREAK case 140: YY_RULE_SETUP #line 277 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBEFORE; } YY_BREAK case 141: YY_RULE_SETUP #line 278 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBIND; } YY_BREAK case 142: YY_RULE_SETUP #line 279 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBINS; } YY_BREAK case 143: YY_RULE_SETUP #line 280 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBINSOF; } YY_BREAK case 144: YY_RULE_SETUP #line 281 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBIT; } YY_BREAK case 145: YY_RULE_SETUP #line 282 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBREAK; } YY_BREAK case 146: YY_RULE_SETUP #line 283 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yBYTE; } YY_BREAK case 147: YY_RULE_SETUP #line 284 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCHANDLE; } YY_BREAK case 148: YY_RULE_SETUP #line 285 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCLASS; } YY_BREAK case 149: YY_RULE_SETUP #line 286 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCLOCKING; } YY_BREAK case 150: YY_RULE_SETUP #line 287 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONST__LEX; } YY_BREAK case 151: YY_RULE_SETUP #line 288 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONSTRAINT; } YY_BREAK case 152: YY_RULE_SETUP #line 289 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTEXT; } YY_BREAK case 153: YY_RULE_SETUP #line 290 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCONTINUE; } YY_BREAK case 154: YY_RULE_SETUP #line 291 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVER; } YY_BREAK case 155: YY_RULE_SETUP #line 292 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERGROUP; } YY_BREAK case 156: YY_RULE_SETUP #line 293 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCOVERPOINT; } YY_BREAK case 157: YY_RULE_SETUP #line 294 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCROSS; } YY_BREAK case 158: YY_RULE_SETUP #line 295 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDIST; } YY_BREAK case 159: YY_RULE_SETUP #line 296 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yDO; } YY_BREAK case 160: YY_RULE_SETUP #line 297 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLASS; } YY_BREAK case 161: YY_RULE_SETUP #line 298 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCLOCKING; } YY_BREAK case 162: YY_RULE_SETUP #line 299 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDGROUP; } YY_BREAK case 163: YY_RULE_SETUP #line 300 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDINTERFACE; } YY_BREAK case 164: YY_RULE_SETUP #line 301 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPACKAGE; } YY_BREAK case 165: YY_RULE_SETUP #line 302 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROGRAM; } YY_BREAK case 166: YY_RULE_SETUP #line 303 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDPROPERTY; } YY_BREAK case 167: YY_RULE_SETUP #line 304 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDSEQUENCE; } YY_BREAK case 168: YY_RULE_SETUP #line 305 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENUM; } YY_BREAK case 169: YY_RULE_SETUP #line 306 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPECT; } YY_BREAK case 170: YY_RULE_SETUP #line 307 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXPORT; } YY_BREAK case 171: YY_RULE_SETUP #line 308 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTENDS; } YY_BREAK case 172: YY_RULE_SETUP #line 309 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEXTERN; } YY_BREAK case 173: YY_RULE_SETUP #line 310 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFINAL; } YY_BREAK case 174: YY_RULE_SETUP #line 311 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFIRST_MATCH; } YY_BREAK case 175: YY_RULE_SETUP #line 312 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFOREACH; } YY_BREAK case 176: YY_RULE_SETUP #line 313 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yFORKJOIN; } YY_BREAK case 177: YY_RULE_SETUP #line 314 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIFF; } YY_BREAK case 178: YY_RULE_SETUP #line 315 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIGNORE_BINS; } YY_BREAK case 179: YY_RULE_SETUP #line 316 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yILLEGAL_BINS; } YY_BREAK case 180: YY_RULE_SETUP #line 317 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPORT; } YY_BREAK case 181: YY_RULE_SETUP #line 318 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINSIDE; } YY_BREAK case 182: YY_RULE_SETUP #line 319 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINT; } YY_BREAK case 183: YY_RULE_SETUP #line 320 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERFACE; } YY_BREAK case 184: YY_RULE_SETUP #line 321 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERSECT; } YY_BREAK case 185: YY_RULE_SETUP #line 322 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } YY_BREAK case 186: YY_RULE_SETUP #line 323 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yJOIN; } YY_BREAK case 187: YY_RULE_SETUP #line 324 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLOCAL__LEX; } YY_BREAK case 188: YY_RULE_SETUP #line 325 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLOGIC; } YY_BREAK case 189: YY_RULE_SETUP #line 326 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLONGINT; } YY_BREAK case 190: YY_RULE_SETUP #line 327 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMATCHES; } YY_BREAK case 191: YY_RULE_SETUP #line 328 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yMODPORT; } YY_BREAK case 192: YY_RULE_SETUP #line 329 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNEW__LEX; } YY_BREAK case 193: YY_RULE_SETUP #line 330 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNULL; } YY_BREAK case 194: YY_RULE_SETUP #line 331 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKAGE; } YY_BREAK case 195: YY_RULE_SETUP #line 332 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPACKED; } YY_BREAK case 196: YY_RULE_SETUP #line 333 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPRIORITY; } YY_BREAK case 197: YY_RULE_SETUP #line 334 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPROGRAM; } YY_BREAK case 198: YY_RULE_SETUP #line 335 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPROPERTY; } YY_BREAK case 199: YY_RULE_SETUP #line 336 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPROTECTED; } YY_BREAK case 200: YY_RULE_SETUP #line 337 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yPURE; } YY_BREAK case 201: YY_RULE_SETUP #line 338 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRAND; } YY_BREAK case 202: YY_RULE_SETUP #line 339 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDC; } YY_BREAK case 203: YY_RULE_SETUP #line 340 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDCASE; } YY_BREAK case 204: YY_RULE_SETUP #line 341 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRANDSEQUENCE; } YY_BREAK case 205: YY_RULE_SETUP #line 342 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREF; } YY_BREAK case 206: YY_RULE_SETUP #line 343 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRETURN; } YY_BREAK case 207: YY_RULE_SETUP #line 344 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySEQUENCE; } YY_BREAK case 208: YY_RULE_SETUP #line 345 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTINT; } YY_BREAK case 209: YY_RULE_SETUP #line 346 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySHORTREAL; } YY_BREAK case 210: YY_RULE_SETUP #line 347 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySOLVE; } YY_BREAK case 211: YY_RULE_SETUP #line 348 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTATIC__LEX; } YY_BREAK case 212: YY_RULE_SETUP #line 349 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRING; } YY_BREAK case 213: YY_RULE_SETUP #line 350 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRUCT; } YY_BREAK case 214: YY_RULE_SETUP #line 351 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySUPER; } YY_BREAK case 215: YY_RULE_SETUP #line 352 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTAGGED; } YY_BREAK case 216: YY_RULE_SETUP #line 353 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTHIS; } YY_BREAK case 217: YY_RULE_SETUP #line 354 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTHROUGHOUT; } YY_BREAK case 218: YY_RULE_SETUP #line 355 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEPRECISION; } YY_BREAK case 219: YY_RULE_SETUP #line 356 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTIMEUNIT; } YY_BREAK case 220: YY_RULE_SETUP #line 357 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPE; } YY_BREAK case 221: YY_RULE_SETUP #line 358 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yTYPEDEF; } YY_BREAK case 222: YY_RULE_SETUP #line 359 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNION; } YY_BREAK case 223: YY_RULE_SETUP #line 360 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE; } YY_BREAK case 224: YY_RULE_SETUP #line 361 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVAR; } YY_BREAK case 225: YY_RULE_SETUP #line 362 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVIRTUAL__LEX; } YY_BREAK case 226: YY_RULE_SETUP #line 363 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yVOID; } YY_BREAK case 227: YY_RULE_SETUP #line 364 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWAIT_ORDER; } YY_BREAK case 228: YY_RULE_SETUP #line 365 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWILDCARD; } YY_BREAK case 229: YY_RULE_SETUP #line 366 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWITH__LEX; } YY_BREAK case 230: YY_RULE_SETUP #line 367 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWITHIN; } YY_BREAK /* System Verilog 2009 */ /* Keywords */ case 231: YY_RULE_SETUP #line 373 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yACCEPT_ON; } YY_BREAK case 232: YY_RULE_SETUP #line 374 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yCHECKER; } YY_BREAK case 233: YY_RULE_SETUP #line 375 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yENDCHECKER; } YY_BREAK case 234: YY_RULE_SETUP #line 376 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yEVENTUALLY; } YY_BREAK case 235: YY_RULE_SETUP #line 377 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yGLOBAL__LEX; } YY_BREAK case 236: YY_RULE_SETUP #line 378 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPLIES; } YY_BREAK case 237: YY_RULE_SETUP #line 379 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yLET; } YY_BREAK case 238: YY_RULE_SETUP #line 380 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNEXTTIME; } YY_BREAK case 239: YY_RULE_SETUP #line 381 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yREJECT_ON; } YY_BREAK case 240: YY_RULE_SETUP #line 382 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yRESTRICT; } YY_BREAK case 241: YY_RULE_SETUP #line 383 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_ALWAYS; } YY_BREAK case 242: YY_RULE_SETUP #line 384 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_EVENTUALLY; } YY_BREAK case 243: YY_RULE_SETUP #line 385 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_NEXTTIME; } YY_BREAK case 244: YY_RULE_SETUP #line 386 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_UNTIL; } YY_BREAK case 245: YY_RULE_SETUP #line 387 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yS_UNTIL_WITH; } YY_BREAK case 246: YY_RULE_SETUP #line 388 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySTRONG; } YY_BREAK case 247: YY_RULE_SETUP #line 389 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySYNC_ACCEPT_ON; } YY_BREAK case 248: YY_RULE_SETUP #line 390 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySYNC_REJECT_ON; } YY_BREAK case 249: YY_RULE_SETUP #line 391 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNIQUE0; } YY_BREAK case 250: YY_RULE_SETUP #line 392 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTIL; } YY_BREAK case 251: YY_RULE_SETUP #line 393 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTIL_WITH; } YY_BREAK case 252: YY_RULE_SETUP #line 394 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yUNTYPED; } YY_BREAK case 253: YY_RULE_SETUP #line 395 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yWEAK; } YY_BREAK /* System Verilog 2012 */ /* Keywords */ case 254: YY_RULE_SETUP #line 401 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yIMPLEMENTS; } YY_BREAK case 255: YY_RULE_SETUP #line 402 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yINTERCONNECT; } YY_BREAK case 256: YY_RULE_SETUP #line 403 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return yNETTYPE; } YY_BREAK case 257: YY_RULE_SETUP #line 404 "VParseLex.l" { FL; VALTEXT; CALLBACK(keywordCb); return ySOFT; } YY_BREAK /* System Verilog 2017 */ /* No new keywords */ /* Default PLI rule */ case 258: YY_RULE_SETUP #line 412 "VParseLex.l" { FL; VALTEXT; CALLBACK(sysfuncCb); return ygenSYSCALL; } YY_BREAK /************************************************************************/ /* Single character operator thingies */ case 259: YY_RULE_SETUP #line 419 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 260: YY_RULE_SETUP #line 420 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 261: YY_RULE_SETUP #line 423 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 262: YY_RULE_SETUP #line 424 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 263: YY_RULE_SETUP #line 425 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 264: YY_RULE_SETUP #line 426 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 265: YY_RULE_SETUP #line 427 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 266: YY_RULE_SETUP #line 428 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 267: YY_RULE_SETUP #line 429 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 268: YY_RULE_SETUP #line 430 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 269: YY_RULE_SETUP #line 431 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 270: YY_RULE_SETUP #line 432 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 271: YY_RULE_SETUP #line 433 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 272: YY_RULE_SETUP #line 434 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 273: YY_RULE_SETUP #line 435 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 274: YY_RULE_SETUP #line 436 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 275: YY_RULE_SETUP #line 437 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 276: YY_RULE_SETUP #line 438 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 277: YY_RULE_SETUP #line 439 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 278: YY_RULE_SETUP #line 440 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 279: YY_RULE_SETUP #line 441 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 280: YY_RULE_SETUP #line 442 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 281: YY_RULE_SETUP #line 443 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 282: YY_RULE_SETUP #line 444 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 283: YY_RULE_SETUP #line 445 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 284: YY_RULE_SETUP #line 446 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK case 285: YY_RULE_SETUP #line 447 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yytext[0]; } YY_BREAK /************************************************************************/ /* Operators and multi-character symbols */ /* Verilog 1995 Operators */ case 286: YY_RULE_SETUP #line 455 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDAND; } YY_BREAK case 287: YY_RULE_SETUP #line 456 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OROR; } YY_BREAK case 288: YY_RULE_SETUP #line 457 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_LTE; } YY_BREAK case 289: YY_RULE_SETUP #line 458 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_GTE; } YY_BREAK case 290: YY_RULE_SETUP #line 459 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } YY_BREAK case 291: YY_RULE_SETUP #line 460 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHT; } YY_BREAK case 292: YY_RULE_SETUP #line 461 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQUAL; } YY_BREAK case 293: YY_RULE_SETUP #line 462 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOTEQUAL; } YY_BREAK case 294: YY_RULE_SETUP #line 463 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASEEQUAL; } YY_BREAK case 295: YY_RULE_SETUP #line 464 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_CASENOTEQUAL; } YY_BREAK case 296: YY_RULE_SETUP #line 465 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } YY_BREAK case 297: YY_RULE_SETUP #line 466 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XNOR; } YY_BREAK case 298: YY_RULE_SETUP #line 467 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NAND; } YY_BREAK case 299: YY_RULE_SETUP #line 468 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_NOR; } YY_BREAK case 300: YY_RULE_SETUP #line 469 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGT; } YY_BREAK case 301: YY_RULE_SETUP #line 470 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_EQGT; } YY_BREAK case 302: YY_RULE_SETUP #line 471 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ASTGT; } YY_BREAK case 303: YY_RULE_SETUP #line 472 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDANDAND; } YY_BREAK /* Verilog 2001 Operators */ case 304: YY_RULE_SETUP #line 477 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFT; } YY_BREAK case 305: YY_RULE_SETUP #line 478 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHT; } YY_BREAK case 306: YY_RULE_SETUP #line 479 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POW; } YY_BREAK case 307: YY_RULE_SETUP #line 480 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSCOLON; } YY_BREAK case 308: YY_RULE_SETUP #line 481 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSCOLON; } YY_BREAK case 309: YY_RULE_SETUP #line 482 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DOTSTAR; } YY_BREAK /* SystemVerilog 2005 Operators */ case 310: YY_RULE_SETUP #line 487 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICK; } YY_BREAK case 311: YY_RULE_SETUP #line 488 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TICKBRA; } YY_BREAK case 312: YY_RULE_SETUP #line 489 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDEQUAL; } YY_BREAK case 313: YY_RULE_SETUP #line 490 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_WILDNOTEQUAL; } YY_BREAK case 314: YY_RULE_SETUP #line 491 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSPLUS; } YY_BREAK case 315: YY_RULE_SETUP #line 492 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSMINUS; } YY_BREAK case 316: YY_RULE_SETUP #line 493 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_PLUSEQ; } YY_BREAK case 317: YY_RULE_SETUP #line 494 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSEQ; } YY_BREAK case 318: YY_RULE_SETUP #line 495 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_TIMESEQ; } YY_BREAK case 319: YY_RULE_SETUP #line 496 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_DIVEQ; } YY_BREAK case 320: YY_RULE_SETUP #line 497 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MODEQ; } YY_BREAK case 321: YY_RULE_SETUP #line 498 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ANDEQ; } YY_BREAK case 322: YY_RULE_SETUP #line 499 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQ; } YY_BREAK case 323: YY_RULE_SETUP #line 500 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_XOREQ; } YY_BREAK case 324: YY_RULE_SETUP #line 501 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } YY_BREAK case 325: YY_RULE_SETUP #line 502 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SRIGHTEQ; } YY_BREAK case 326: YY_RULE_SETUP #line 503 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SLEFTEQ; } YY_BREAK case 327: YY_RULE_SETUP #line 504 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_SSRIGHTEQ; } YY_BREAK case 328: YY_RULE_SETUP #line 505 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_MINUSGTGT; } YY_BREAK case 329: YY_RULE_SETUP #line 506 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_POUNDPOUND; } YY_BREAK case 330: YY_RULE_SETUP #line 507 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ATAT; } YY_BREAK case 331: YY_RULE_SETUP #line 508 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONCOLON; } YY_BREAK case 332: YY_RULE_SETUP #line 509 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONEQ; } YY_BREAK case 333: /* rule 333 can match eol */ YY_RULE_SETUP #line 510 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_COLONDIV; } /* : then comment is not ":/" */ YY_BREAK case 334: YY_RULE_SETUP #line 511 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_ORMINUSGT; } YY_BREAK case 335: YY_RULE_SETUP #line 512 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_OREQGT; } YY_BREAK /* Some simulators allow whitespace here. Grr */ case 336: YY_RULE_SETUP #line 514 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRASTAR; } YY_BREAK case 337: YY_RULE_SETUP #line 515 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAEQ; } YY_BREAK case 338: YY_RULE_SETUP #line 516 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAMINUSGT; } YY_BREAK case 339: YY_RULE_SETUP #line 517 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return yP_BRAPLUSKET; } YY_BREAK /* SystemVerilog 2009 Operators */ case 340: YY_RULE_SETUP #line 522 "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 341: YY_RULE_SETUP #line 528 "VParseLex.l" { 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; } YY_BREAK case 342: YY_RULE_SETUP #line 536 "VParseLex.l" { 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; } YY_BREAK case 343: YY_RULE_SETUP #line 544 "VParseLex.l" { FL; VALTEXT; CALLBACK(symbolCb); return yaID__LEX; } YY_BREAK case 344: /* rule 344 can match eol */ YY_RULE_SETUP #line 545 "VParseLex.l" { FL; VALTEXT; CALLBACK(stringCb); return yaSTRING; } YY_BREAK case 345: YY_RULE_SETUP #line 547 "VParseLex.l" { yy_push_state(STRING); yymore(); } YY_BREAK case 346: /* rule 346 can match eol */ YY_RULE_SETUP #line 549 "VParseLex.l" { /* "# 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; } YY_BREAK case 347: YY_RULE_SETUP #line 564 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaINTNUM; } YY_BREAK case 348: YY_RULE_SETUP #line 567 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaFLOATNUM; } YY_BREAK case 349: YY_RULE_SETUP #line 570 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaFLOATNUM; } YY_BREAK case 350: YY_RULE_SETUP #line 573 "VParseLex.l" { FL; VALTEXT; CALLBACK(numberCb); return yaTIMENUM; } YY_BREAK /************************************************************************/ /* STRINGS */ case YY_STATE_EOF(STRING): #line 580 "VParseLex.l" { yyerrorf("EOF in unterminated string"); yyleng = 0; yy_pop_state(); } YY_BREAK case 351: /* rule 351 can match eol */ YY_RULE_SETUP #line 581 "VParseLex.l" { yyerrorf("Unterminated string"); NEXTLINE(); } YY_BREAK case 352: /* rule 352 can match eol */ YY_RULE_SETUP #line 582 "VParseLex.l" { yymore(); NEXTLINE(); } YY_BREAK case 353: YY_RULE_SETUP #line 583 "VParseLex.l" { yymore(); } YY_BREAK case 354: YY_RULE_SETUP #line 584 "VParseLex.l" { yy_pop_state(); FL; VALTEXT; CALLBACK(stringCb); return yaSTRING; } YY_BREAK case 355: YY_RULE_SETUP #line 586 "VParseLex.l" { yymore(); } YY_BREAK case 356: YY_RULE_SETUP #line 587 "VParseLex.l" { yymore(); } YY_BREAK /************************************************************************/ /* Multi-line COMMENTS */ case 357: YY_RULE_SETUP #line 591 "VParseLex.l" { yymore(); } YY_BREAK case 358: /* rule 358 can match eol */ YY_RULE_SETUP #line 592 "VParseLex.l" { yymore(); NEXTLINE(); } YY_BREAK case 359: YY_RULE_SETUP #line 593 "VParseLex.l" { VALTEXT; CALLBACK(commentCb); yy_pop_state(); } /* No FL; it's at comment begin */ YY_BREAK case 360: YY_RULE_SETUP #line 594 "VParseLex.l" { yymore(); } YY_BREAK case 361: YY_RULE_SETUP #line 595 "VParseLex.l" { yymore(); } YY_BREAK case YY_STATE_EOF(CMTMODE): #line 596 "VParseLex.l" { yyerrorf("EOF in '/* ... */' block comment"); yyleng = 0; yy_pop_state(); } YY_BREAK /************************************************************************/ /* Protected */ case 362: /* rule 362 can match eol */ YY_RULE_SETUP #line 601 "VParseLex.l" { if (LPARSEP->useProtected()) yymore(); NEXTLINE(); } YY_BREAK case 363: YY_RULE_SETUP #line 602 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_pop_state(); } YY_BREAK case 364: YY_RULE_SETUP #line 603 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_pop_state(); } YY_BREAK case 365: YY_RULE_SETUP #line 604 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_pop_state(); } YY_BREAK case 366: YY_RULE_SETUP #line 606 "VParseLex.l" { if (LPARSEP->useProtected()) yymore(); } YY_BREAK case 367: YY_RULE_SETUP #line 607 "VParseLex.l" { if (LPARSEP->useProtected()) yymore(); } YY_BREAK case YY_STATE_EOF(PROTMODE): #line 608 "VParseLex.l" { yyerrorf("EOF in `protected"); yyleng = 0; yy_pop_state(); } YY_BREAK /************************************************************************/ /* Attributes */ case 368: /* rule 368 can match eol */ YY_RULE_SETUP #line 613 "VParseLex.l" { yymore(); NEXTLINE(); } YY_BREAK case 369: YY_RULE_SETUP #line 614 "VParseLex.l" { FL; VALTEXT; CALLBACK(attributeCb); yy_pop_state(); } YY_BREAK case 370: YY_RULE_SETUP #line 615 "VParseLex.l" { yymore(); } YY_BREAK case 371: YY_RULE_SETUP #line 616 "VParseLex.l" { yymore(); } YY_BREAK case YY_STATE_EOF(ATTRMODE): #line 617 "VParseLex.l" { yyerrorf("EOF in (*"); yyleng = 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 624 "VParseLex.l" { yymore(); yy_push_state(ATTRMODE); } /* Doesn't match (*), but (* attr_spec */ YY_BREAK /************************************************************************/ /* Preprocessor */ case 373: YY_RULE_SETUP #line 630 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 374: YY_RULE_SETUP #line 631 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 375: YY_RULE_SETUP #line 632 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); LEXP->m_inCellDefine=true; } YY_BREAK case 376: YY_RULE_SETUP #line 633 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 377: YY_RULE_SETUP #line 634 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2001 YY_BREAK case 378: YY_RULE_SETUP #line 635 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2009 YY_BREAK case 379: YY_RULE_SETUP #line 636 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 380: YY_RULE_SETUP #line 637 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 381: YY_RULE_SETUP #line 638 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 382: YY_RULE_SETUP #line 639 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog spec - delays only YY_BREAK case 383: YY_RULE_SETUP #line 640 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 384: YY_RULE_SETUP #line 641 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 385: YY_RULE_SETUP #line 642 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); LEXP->m_inCellDefine=false; } YY_BREAK case 386: YY_RULE_SETUP #line 643 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 387: YY_RULE_SETUP #line 644 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 388: YY_RULE_SETUP #line 645 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 389: /* rule 389 can match eol */ YY_RULE_SETUP #line 646 "VParseLex.l" { LPARSEP->inLineDirective(yytext); FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 390: YY_RULE_SETUP #line 647 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 391: YY_RULE_SETUP #line 648 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 392: YY_RULE_SETUP #line 649 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 393: YY_RULE_SETUP #line 650 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 394: YY_RULE_SETUP #line 651 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 395: YY_RULE_SETUP #line 652 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 396: YY_RULE_SETUP #line 653 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 397: YY_RULE_SETUP #line 654 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_push_state(PROTMODE); } YY_BREAK case 398: YY_RULE_SETUP #line 655 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog 2005 YY_BREAK case 399: YY_RULE_SETUP #line 656 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 400: YY_RULE_SETUP #line 657 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); yy_push_state(PROTMODE); } YY_BREAK case 401: YY_RULE_SETUP #line 658 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 402: YY_RULE_SETUP #line 659 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 403: YY_RULE_SETUP #line 660 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK case 404: YY_RULE_SETUP #line 661 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } // Verilog-XL compatibility YY_BREAK case 405: YY_RULE_SETUP #line 662 "VParseLex.l" { FL; VALTEXT; CALLBACK(preprocCb); } YY_BREAK /* See also setLanguage below */ case 406: YY_RULE_SETUP #line 665 "VParseLex.l" { yy_push_state(V95); CALLBACK(preprocCb); } YY_BREAK case 407: YY_RULE_SETUP #line 666 "VParseLex.l" { yy_push_state(V01); CALLBACK(preprocCb); } YY_BREAK case 408: YY_RULE_SETUP #line 667 "VParseLex.l" { yy_push_state(V01); CALLBACK(preprocCb); } YY_BREAK case 409: YY_RULE_SETUP #line 668 "VParseLex.l" { yy_push_state(V05); CALLBACK(preprocCb); } YY_BREAK case 410: YY_RULE_SETUP #line 669 "VParseLex.l" { yy_push_state(S05); CALLBACK(preprocCb); } YY_BREAK case 411: YY_RULE_SETUP #line 670 "VParseLex.l" { yy_push_state(S09); CALLBACK(preprocCb); } YY_BREAK case 412: YY_RULE_SETUP #line 671 "VParseLex.l" { yy_push_state(S12); CALLBACK(preprocCb); } YY_BREAK case 413: YY_RULE_SETUP #line 672 "VParseLex.l" { yy_push_state(S17); CALLBACK(preprocCb); } YY_BREAK case 414: YY_RULE_SETUP #line 673 "VParseLex.l" { yy_pop_state(); CALLBACK(preprocCb); } YY_BREAK /************************************************************************/ /* Default rules - leave last */ case 415: YY_RULE_SETUP #line 680 "VParseLex.l" { FL; VALTEXT; if (LPARSEP->sigParser()) { yyerrorf("Define or directive not defined: %s",yytext); } else { CALLBACK(preprocCb); } } YY_BREAK case 416: YY_RULE_SETUP #line 683 "VParseLex.l" { FL; CALLBACK(preprocCb); yy_push_state(PROTMODE); } YY_BREAK case 417: YY_RULE_SETUP #line 685 "VParseLex.l" { FL; VALTEXT; CALLBACK(commentCb); } /* throw away single line comments */ YY_BREAK case 418: YY_RULE_SETUP #line 686 "VParseLex.l" { FL; yy_push_state(CMTMODE); yymore(); } /* FL; marks start for COMMENT callback */ YY_BREAK case 419: YY_RULE_SETUP #line 687 "VParseLex.l" { FL; VALTEXT; CALLBACK(operatorCb); return ygenOPERATOR; } /* return single char ops. */ YY_BREAK /* Catch all - absolutely last */ case 420: /* rule 420 can match eol */ YY_RULE_SETUP #line 691 "VParseLex.l" { yyerrorf("Missing VParseLex.l rule: Default rule invoked in state %d: %s", YY_START, yytext); } YY_BREAK case 421: YY_RULE_SETUP #line 692 "VParseLex.l" ECHO; YY_BREAK #line 5009 "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(S17): 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 yyin at a new source and called * yylex(). 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; /* %if-c-only */ YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; /* %endif */ /* %if-c++-only */ /* %endif */ 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 ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, 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 user's declarations */ } /* end of yylex */ /* %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 */ { char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; char *source = (yytext_ptr); 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_LVALUE; 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. */ yyrealloc( (void *) b->yy_ch_buf, (yy_size_t) (b->yy_buf_size + 2) ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = NULL; 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), 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; yyrestart( yyin ); } 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_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); /* "- 2" to take care of EOB's */ YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); } (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 */ { yy_state_type yy_current_state; 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 */ 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 >= 2074 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + 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 */ { int yy_is_jam; /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */ char *yy_cp = (yy_c_buf_p); 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 >= 2074 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; yy_is_jam = (yy_current_state == 2073); return yy_is_jam ? 0 : yy_current_state; } #ifndef YY_NO_UNPUT /* %if-c-only */ static void yyunput (int c, char * yy_bp ) /* %endif */ /* %if-c++-only */ /* %endif */ { char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *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. */ int number_to_move = (yy_n_chars) + 2; char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 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) = (int) 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 yylineno here */ (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } /* %if-c-only */ /* %endif */ #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 = (int) ((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. */ yyrestart( yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return 0; 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 yytext */ (yy_hold_char) = *++(yy_c_buf_p); /* %% [19.0] update BOL and yylineno */ 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 yyrestart (FILE * input_file ) /* %endif */ /* %if-c++-only */ /* %endif */ { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer( yyin, YY_BUF_SIZE ); } yy_init_buffer( YY_CURRENT_BUFFER, input_file ); yy_load_buffer_state( ); } /* %if-c++-only */ /* %endif */ /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ /* %if-c-only */ void yy_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 * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_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; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() 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 yy_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; /* %if-c-only */ yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; /* %endif */ /* %if-c++-only */ /* %endif */ (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 yy_create_buffer (FILE * file, int size ) /* %endif */ /* %if-c++-only */ /* %endif */ { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_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 *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer( b, file ); return b; } /* %if-c++-only */ /* %endif */ /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ /* %if-c-only */ void yy_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 ) yyfree( (void *) b->yy_ch_buf ); yyfree( (void *) b ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ /* %if-c-only */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) /* %endif */ /* %if-c++-only */ /* %endif */ { int oerrno = errno; yy_flush_buffer( b ); /* %if-c-only */ b->yy_input_file = file; /* %endif */ /* %if-c++-only */ /* %endif */ b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() 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 yy_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 ) yy_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 yypush_buffer_state (YY_BUFFER_STATE new_buffer ) /* %endif */ /* %if-c++-only */ /* %endif */ { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_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 yy_switch_to_buffer. */ yy_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 yypop_buffer_state (void) /* %endif */ /* %if-c++-only */ /* %endif */ { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_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 yyensure_buffer_stack (void) /* %endif */ /* %if-c++-only */ /* %endif */ { yy_size_t 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; /* After all that talk, this was set to 1 anyways... */ (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_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. */ yy_size_t grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_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 yy_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 NULL; b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = (int) (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 = NULL; 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; yy_switch_to_buffer( b ); return b; } /* %endif */ /* %if-c-only */ /** Setup the input buffer state to scan a string. The next call to yylex() 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 * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (const char * yystr ) { return yy_scan_bytes( yystr, (int) strlen(yystr) ); } /* %endif */ /* %if-c-only */ /** Setup the input buffer state to scan the given bytes. The next call to yylex() 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 yy_scan_bytes (const 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 = (yy_size_t) (_yybytes_len + 2); buf = (char *) yyalloc( n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_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 = yy_scan_buffer( buf, n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_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_size_t) (yy_start_stack_depth) * sizeof( int ); if ( ! (yy_start_stack) ) (yy_start_stack) = (int *) yyalloc( new_size ); else (yy_start_stack) = (int *) yyrealloc( (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 yynoreturn yy_fatal_error (const char* msg ) { 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 yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = 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 yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /* %if-reentrant */ /* %endif */ /** Set the current line number. * @param _line_number line number * */ void yyset_lineno (int _line_number ) { yylineno = _line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param _in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * _in_str ) { yyin = _in_str ; } void yyset_out (FILE * _out_str ) { yyout = _out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int _bdebug ) { yy_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 yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = NULL; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = NULL; (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 yyin = stdin; yyout = stdout; #else yyin = NULL; yyout = NULL; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* %endif */ /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */ /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer( YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Destroy the start condition stack. */ yyfree( (yy_start_stack) ); (yy_start_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() 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, const char * s2, int n ) { int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (const char * s ) { int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return malloc(size); } void *yyrealloc (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 realloc(ptr, size); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() 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 692 "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 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<. */ /* 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. */ #ifndef YY_VPARSEBISON_VPARSEBISON_PRETMP_H_INCLUDED # define YY_VPARSEBISON_VPARSEBISON_PRETMP_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif #if YYDEBUG extern int VParseBisondebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { yaFLOATNUM = 258, yaID__ETC = 259, yaID__LEX = 260, yaID__aPACKAGE = 261, yaID__aTYPE = 262, yaINTNUM = 263, yaTIMENUM = 264, yaSTRING = 265, yaSTRING__IGNORE = 266, yaTIMINGSPEC = 267, ygenGATE = 268, ygenCONFIGKEYWORD = 269, ygenOPERATOR = 270, ygenSTRENGTH = 271, ygenSYSCALL = 272, yACCEPT_ON = 273, yALIAS = 274, yALWAYS = 275, yAND = 276, yASSERT = 277, yASSIGN = 278, yASSUME = 279, yAUTOMATIC = 280, yBEFORE = 281, yBEGIN = 282, yBIND = 283, yBINS = 284, yBINSOF = 285, yBIT = 286, yBREAK = 287, yBUF = 288, yBYTE = 289, yCASE = 290, yCASEX = 291, yCASEZ = 292, yCHANDLE = 293, yCHECKER = 294, yCLASS = 295, yCLOCK = 296, yCLOCKING = 297, yCONSTRAINT = 298, yCONST__ETC = 299, yCONST__LEX = 300, yCONST__LOCAL = 301, yCONST__REF = 302, yCONTEXT = 303, yCONTINUE = 304, yCOVER = 305, yCOVERGROUP = 306, yCOVERPOINT = 307, yCROSS = 308, yDEASSIGN = 309, yDEFAULT = 310, yDEFPARAM = 311, yDISABLE = 312, yDIST = 313, yDO = 314, yEDGE = 315, yELSE = 316, yEND = 317, yENDCASE = 318, yENDCHECKER = 319, yENDCLASS = 320, yENDCLOCKING = 321, yENDFUNCTION = 322, yENDGENERATE = 323, yENDGROUP = 324, yENDINTERFACE = 325, yENDMODULE = 326, yENDPACKAGE = 327, yENDPROGRAM = 328, yENDPROPERTY = 329, yENDSEQUENCE = 330, yENDSPECIFY = 331, yENDTABLE = 332, yENDTASK = 333, yENUM = 334, yEVENT = 335, yEVENTUALLY = 336, yEXPECT = 337, yEXPORT = 338, yEXTENDS = 339, yEXTERN = 340, yFINAL = 341, yFIRST_MATCH = 342, yFOR = 343, yFORCE = 344, yFOREACH = 345, yFOREVER = 346, yFORK = 347, yFORKJOIN = 348, yFUNCTION__ETC = 349, yFUNCTION__LEX = 350, yFUNCTION__aPUREV = 351, yGENERATE = 352, yGENVAR = 353, yGLOBAL__CLOCKING = 354, yGLOBAL__LEX = 355, yIF = 356, yIFF = 357, yIGNORE_BINS = 358, yILLEGAL_BINS = 359, yIMPLEMENTS = 360, yIMPLIES = 361, yIMPORT = 362, yINITIAL = 363, yINOUT = 364, yINPUT = 365, yINSIDE = 366, yINT = 367, yINTEGER = 368, yINTERCONNECT = 369, yINTERFACE = 370, yINTERSECT = 371, yJOIN = 372, yLET = 373, yLOCALPARAM = 374, yLOCAL__COLONCOLON = 375, yLOCAL__ETC = 376, yLOCAL__LEX = 377, yLOGIC = 378, yLONGINT = 379, yMATCHES = 380, yMODPORT = 381, yMODULE = 382, yNAND = 383, yNEGEDGE = 384, yNETTYPE = 385, yNEW__ETC = 386, yNEW__LEX = 387, yNEW__PAREN = 388, yNEXTTIME = 389, yNOR = 390, yNOT = 391, yNULL = 392, yOR = 393, yOUTPUT = 394, yPACKAGE = 395, yPACKED = 396, yPARAMETER = 397, yPOSEDGE = 398, yPRIORITY = 399, yPROGRAM = 400, yPROPERTY = 401, yPROTECTED = 402, yPURE = 403, yRAND = 404, yRANDC = 405, yRANDCASE = 406, yRANDSEQUENCE = 407, yREAL = 408, yREALTIME = 409, yREF = 410, yREG = 411, yREJECT_ON = 412, yRELEASE = 413, yREPEAT = 414, yRESTRICT = 415, yRETURN = 416, ySCALARED = 417, ySEQUENCE = 418, ySHORTINT = 419, ySHORTREAL = 420, ySIGNED = 421, ySOFT = 422, ySOLVE = 423, ySPECIFY = 424, ySPECPARAM = 425, ySTATIC__CONSTRAINT = 426, ySTATIC__ETC = 427, ySTATIC__LEX = 428, ySTRING = 429, ySTRONG = 430, ySTRUCT = 431, ySUPER = 432, ySUPPLY0 = 433, ySUPPLY1 = 434, ySYNC_ACCEPT_ON = 435, ySYNC_REJECT_ON = 436, yS_ALWAYS = 437, yS_EVENTUALLY = 438, yS_NEXTTIME = 439, yS_UNTIL = 440, yS_UNTIL_WITH = 441, yTABLE = 442, yTAGGED = 443, yTASK__ETC = 444, yTASK__LEX = 445, yTASK__aPUREV = 446, yTHIS = 447, yTHROUGHOUT = 448, yTIME = 449, yTIMEPRECISION = 450, yTIMEUNIT = 451, yTRI = 452, yTRI0 = 453, yTRI1 = 454, yTRIAND = 455, yTRIOR = 456, yTRIREG = 457, yTYPE = 458, yTYPEDEF = 459, yUNION = 460, yUNIQUE = 461, yUNIQUE0 = 462, yUNSIGNED = 463, yUNTIL = 464, yUNTIL_WITH = 465, yUNTYPED = 466, yVAR = 467, yVECTORED = 468, yVIRTUAL__CLASS = 469, yVIRTUAL__ETC = 470, yVIRTUAL__INTERFACE = 471, yVIRTUAL__LEX = 472, yVIRTUAL__anyID = 473, yVOID = 474, yWAIT = 475, yWAIT_ORDER = 476, yWAND = 477, yWEAK = 478, yWHILE = 479, yWILDCARD = 480, yWIRE = 481, yWITHIN = 482, yWITH__BRA = 483, yWITH__CUR = 484, yWITH__ETC = 485, yWITH__LEX = 486, yWITH__PAREN = 487, yWOR = 488, yXNOR = 489, yXOR = 490, yD_ERROR = 491, yD_FATAL = 492, yD_INFO = 493, yD_ROOT = 494, yD_UNIT = 495, yD_WARNING = 496, yP_TICK = 497, yP_TICKBRA = 498, yP_OROR = 499, yP_ANDAND = 500, yP_NOR = 501, yP_XNOR = 502, yP_NAND = 503, yP_EQUAL = 504, yP_NOTEQUAL = 505, yP_CASEEQUAL = 506, yP_CASENOTEQUAL = 507, yP_WILDEQUAL = 508, yP_WILDNOTEQUAL = 509, yP_GTE = 510, yP_LTE = 511, yP_LTE__IGNORE = 512, yP_SLEFT = 513, yP_SRIGHT = 514, yP_SSRIGHT = 515, yP_POW = 516, yP_PAR__IGNORE = 517, yP_PAR__STRENGTH = 518, yP_LTMINUSGT = 519, yP_PLUSCOLON = 520, yP_MINUSCOLON = 521, yP_MINUSGT = 522, yP_MINUSGTGT = 523, yP_EQGT = 524, yP_ASTGT = 525, yP_ANDANDAND = 526, yP_POUNDPOUND = 527, yP_POUNDMINUSPD = 528, yP_POUNDEQPD = 529, yP_DOTSTAR = 530, yP_ATAT = 531, yP_COLONCOLON = 532, yP_COLONEQ = 533, yP_COLONDIV = 534, yP_ORMINUSGT = 535, yP_OREQGT = 536, yP_BRASTAR = 537, yP_BRAEQ = 538, yP_BRAMINUSGT = 539, yP_BRAPLUSKET = 540, yP_PLUSPLUS = 541, yP_MINUSMINUS = 542, yP_PLUSEQ = 543, yP_MINUSEQ = 544, yP_TIMESEQ = 545, yP_DIVEQ = 546, yP_MODEQ = 547, yP_ANDEQ = 548, yP_OREQ = 549, yP_XOREQ = 550, yP_SLEFTEQ = 551, yP_SRIGHTEQ = 552, yP_SSRIGHTEQ = 553, prUNARYARITH = 554, prREDUCTION = 555, prNEGATION = 556, prEVENTBEGIN = 557, prTAGGED = 558, prSEQ_CLOCKING = 559, prPOUNDPOUND_MULTI = 560, prLOWER_THAN_ELSE = 561 }; #endif /* Value type. */ int VParseBisonparse (void); #endif /* !YY_VPARSEBISON_VPARSEBISON_PRETMP_H_INCLUDED */ Verilog-Perl-3.470/Parser/gen/bisonpre-00000644000177100017500000000003313604734330017716 0ustar wsnyderwsnyder31jPAgM8zucAd27eR4GPdua8U+EVerilog-Perl-3.470/Parser/gen/bisonpre-s0000644000177100017500000000047413604734330020032 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.470/Parser/gen/bisonpre-10000644000177100017500000727365713604734330017756 0ustar wsnyderwsnyder/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2015 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 "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Substitute the variable and function names. */ #define yyparse VParseBisonparse #define yylex VParseBisonlex #define yyerror VParseBisonerror #define yydebug VParseBisondebug #define yynerrs VParseBisonnerrs /* Copy the first part of user declarations. */ #line 24 "VParseBison.y" /* yacc.c:339 */ #include #include #include #include #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,withinInst) { GRAMMARP->pinNum(1); GRAMMARP->m_cellMod=(cellmod); GRAMMARP->m_cellParam=(cellparam); GRAMMARP->m_withinInst = 1; } #define INSTDONE() { GRAMMARP->m_withinInst = 0; } enum net_idx {NI_NETNAME = 0, NI_MSB, NI_LSB}; 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 parse_net_constants(VFileLine* fl, VParseHashElem nets[][3]) { VParseHashElem (*net)[3] = &nets[0]; VParseHashElem* nhp = net[0]; std::deque::iterator it = GRAMMARP->m_portStack.begin(); while (it != GRAMMARP->m_portStack.end()) { // Default net name is simply the complete token const char* netnamep = it->m_name.c_str(); size_t delim = it->m_name.find_first_of("'"); if (it->m_name[0] != '\\' && it->m_msb.empty() && delim != string::npos && it->m_name[delim] == '\'') { // Handle sized integer constants (e.g., 7'b0) specifically but ignore replications (e.g., {4{w}}) if (delim != 0 && netnamep[0] != '{') { // Handle the first part that indicates the width for sized constants (guaranteed to be a decimal) char* endp; errno = 0; long l = strtol(netnamep, &endp, 10); if ((errno == ERANGE && l == LONG_MAX) || l > INT_MAX || l <= 0) { fl->error((string)"Unexpected length in size of integer constant: \""+netnamep+"\"."); return; } // Skip whitespace while (endp < netnamep + delim && isspace(*endp)) { endp++; } if (endp != netnamep + delim) { fl->error((string)"Could not convert size of integer constant: \""+netnamep+"\"."); return; } int count = l; // Skip characters up to the delimiter ' to determine new netnamep netnamep += delim; // Test for legal base specifiers: // d, D, h, H, o, O , b, or B for the decimal, hexadecimal, octal, and binary bases, respectively char base = netnamep[1]; // 's' indicates a signed constant, is followed by the actual base; currently ignored if (base == 's' || base == 'S') { base = netnamep[2]; } if (strchr("dDhHoObB", base) == NULL) { fl->error((string)"Base specifier \""+base+"\" is not valid in integer constant \""+it->m_name.c_str()+"\"."); return; } // These assignments could be prettified with C++11 nhp[NI_MSB].keyp = "msb"; nhp[NI_MSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_MSB].val_int = count - 1; nhp[NI_LSB].keyp = "lsb"; nhp[NI_LSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_LSB].val_int = 0; } else { // fl->error increases the error count which would create regressions for no good reasons. // There is no ->warn or similar though but we could print, e.g., to stderr in these cases //fl->error((string)"Neither unsized integer constant nor replications are not fully supported in nets (\""+netnamep+"\")."); //fprintf(stderr, "Neither unsized integer constant nor replications are not fully supported in nets (\"%s\").\n", netnamep); } } else { // Ordinary net names might have a range attached or not. // If it does then parse its bounds into proper integers. const char *msbstr = it->m_msb.c_str(); if (msbstr[0] != '\0') { { // Parse NI_MSB char* endp; errno = 0; long l = strtol(msbstr, &endp, 10); // Test for range within int, and proper parsing if ((errno == ERANGE && l == LONG_MAX) || l > INT_MAX || l < 0 || (endp && l == 0 && errno == ERANGE)) { fl->error((string)"Unexpected length in msb specification of \""+netnamep+"\" (endp="+endp+", errno="+strerror(errno)+")."); return; } nhp[NI_MSB].keyp = "msb"; nhp[NI_MSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_MSB].val_int = (int)l; } { // Parse NI_LSB char* endp; errno = 0; long l = strtol(it->m_lsb.c_str(), &endp, 10); if ((errno == ERANGE && l == LONG_MAX) || l > INT_MAX || l < 0 || (endp && l == 0 && errno == ERANGE)) { fl->error((string)"Unexpected length in lsb specification of \""+netnamep+"\"."); return; } nhp[NI_LSB].keyp = "lsb"; nhp[NI_LSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_LSB].val_int = (int)l; } } else { nhp[NI_MSB].keyp = NULL; nhp[NI_LSB].keyp = NULL; } } nhp[NI_NETNAME].keyp = "netname"; nhp[NI_NETNAME].val_type = VParseHashElem::ELEM_STR; nhp[NI_NETNAME].val_str = netnamep; *it++; nhp += 3; // We operate on three elements in each iteration } } 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()); if (PARSEP->usePinSelects()) { if (GRAMMARP->m_portStack.empty()) { string netname; if (GRAMMARP->m_portNextNetName.empty()) { netname = expr; } else { netname = GRAMMARP->m_portNextNetName; } size_t elem_cnt = GRAMMARP->m_portNextNetMsb.empty() ? 1 : 3; VParseHashElem nets[elem_cnt]; // These assignments could be prettified with C++11 nets[NI_NETNAME].keyp = "netname"; nets[NI_NETNAME].val_type = VParseHashElem::ELEM_STR; nets[NI_NETNAME].val_str = netname; if (elem_cnt > 1) { nets[NI_MSB].keyp = "msb"; nets[NI_MSB].val_type = VParseHashElem::ELEM_STR; nets[NI_MSB].val_str = GRAMMARP->m_portNextNetMsb; nets[NI_LSB].keyp = "lsb"; nets[NI_LSB].val_type = VParseHashElem::ELEM_STR; nets[NI_LSB].val_str = GRAMMARP->m_portNextNetLsb; } PARSEP->pinselectsCb(fl, name, 1, elem_cnt, &nets[0], GRAMMARP->pinNum()); } else { // Connection with multiple pins was parsed completely. // There might be one net left in the pipe... if (GRAMMARP->m_portNextNetValid) { GRAMMARP->m_portStack.push_front(VParseNet(GRAMMARP->m_portNextNetName, GRAMMARP->m_portNextNetMsb, GRAMMARP->m_portNextNetLsb)); } unsigned int arraycnt = GRAMMARP->m_portStack.size(); VParseHashElem nets[arraycnt][3]; parse_net_constants(fl, nets); PARSEP->pinselectsCb(fl, name, arraycnt, 3, &nets[0][0], GRAMMARP->pinNum()); } // Clear all pin-related fields GRAMMARP->m_portNextNetValid = false; GRAMMARP->m_portNextNetName.clear(); GRAMMARP->m_portStack.clear(); GRAMMARP->m_portNextNetMsb.clear(); GRAMMARP->m_portNextNetLsb.clear(); } } } 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(); } GRAMMARP->m_withinPin = true; } static void PORTNET(VFileLine* fl, const string& name) { if (!GRAMMARP->m_withinInst) { return; } GRAMMARP->m_portNextNetValid = true; GRAMMARP->m_portNextNetName = name; GRAMMARP->m_portNextNetMsb.clear(); GRAMMARP->m_portNextNetLsb.clear(); } static void PORTRANGE(const string& msb, const string& lsb) { if (!GRAMMARP->m_withinInst) { return; } GRAMMARP->m_portNextNetMsb = msb; GRAMMARP->m_portNextNetLsb = lsb; } static void PIN_CONCAT_APPEND(const string& expr) { if (!GRAMMARP->m_withinPin) { return; } if (!GRAMMARP->m_portNextNetValid) { // Only while not within a valid net term the expression is part // of a replication constant. If that's detected ignore the // previous expression (that is actually just the contained // concatenation) in favor of the full replication expression. if (expr[0] == '{') { if (expr.find_first_of("{", 1) != string::npos) { // fprintf(stderr, "%d: ignoring \"%s\" in favor of \"%s\".\n", __LINE__, GRAMMARP->m_portStack.front().m_name.c_str(), expr.c_str()); GRAMMARP->m_portStack.pop_front(); GRAMMARP->m_portStack.push_front(VParseNet(expr)); } } else { GRAMMARP->m_portStack.push_front(VParseNet(expr)); } } else { GRAMMARP->m_portStack.push_front(VParseNet(GRAMMARP->m_portNextNetName, GRAMMARP->m_portNextNetMsb, GRAMMARP->m_portNextNetLsb)); } GRAMMARP->m_portNextNetValid = false; } /* 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 --language 1800-2005 or earlier."); } #line 370 "VParseBison.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* In a future release of Bison, this section will be replaced by #include "VParseBison.h". */ #ifndef YY_VPARSEBISON_VPARSEBISON_PRETMP_H_INCLUDED # define YY_VPARSEBISON_VPARSEBISON_PRETMP_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif #if YYDEBUG extern int VParseBisondebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { yaFLOATNUM = 258, yaID__ETC = 259, yaID__LEX = 260, yaID__aPACKAGE = 261, yaID__aTYPE = 262, yaINTNUM = 263, yaTIMENUM = 264, yaSTRING = 265, yaSTRING__IGNORE = 266, yaTIMINGSPEC = 267, ygenGATE = 268, ygenCONFIGKEYWORD = 269, ygenOPERATOR = 270, ygenSTRENGTH = 271, ygenSYSCALL = 272, yACCEPT_ON = 273, yALIAS = 274, yALWAYS = 275, yAND = 276, yASSERT = 277, yASSIGN = 278, yASSUME = 279, yAUTOMATIC = 280, yBEFORE = 281, yBEGIN = 282, yBIND = 283, yBINS = 284, yBINSOF = 285, yBIT = 286, yBREAK = 287, yBUF = 288, yBYTE = 289, yCASE = 290, yCASEX = 291, yCASEZ = 292, yCHANDLE = 293, yCHECKER = 294, yCLASS = 295, yCLOCK = 296, yCLOCKING = 297, yCONSTRAINT = 298, yCONST__ETC = 299, yCONST__LEX = 300, yCONST__LOCAL = 301, yCONST__REF = 302, yCONTEXT = 303, yCONTINUE = 304, yCOVER = 305, yCOVERGROUP = 306, yCOVERPOINT = 307, yCROSS = 308, yDEASSIGN = 309, yDEFAULT = 310, yDEFPARAM = 311, yDISABLE = 312, yDIST = 313, yDO = 314, yEDGE = 315, yELSE = 316, yEND = 317, yENDCASE = 318, yENDCHECKER = 319, yENDCLASS = 320, yENDCLOCKING = 321, yENDFUNCTION = 322, yENDGENERATE = 323, yENDGROUP = 324, yENDINTERFACE = 325, yENDMODULE = 326, yENDPACKAGE = 327, yENDPROGRAM = 328, yENDPROPERTY = 329, yENDSEQUENCE = 330, yENDSPECIFY = 331, yENDTABLE = 332, yENDTASK = 333, yENUM = 334, yEVENT = 335, yEVENTUALLY = 336, yEXPECT = 337, yEXPORT = 338, yEXTENDS = 339, yEXTERN = 340, yFINAL = 341, yFIRST_MATCH = 342, yFOR = 343, yFORCE = 344, yFOREACH = 345, yFOREVER = 346, yFORK = 347, yFORKJOIN = 348, yFUNCTION__ETC = 349, yFUNCTION__LEX = 350, yFUNCTION__aPUREV = 351, yGENERATE = 352, yGENVAR = 353, yGLOBAL__CLOCKING = 354, yGLOBAL__LEX = 355, yIF = 356, yIFF = 357, yIGNORE_BINS = 358, yILLEGAL_BINS = 359, yIMPLEMENTS = 360, yIMPLIES = 361, yIMPORT = 362, yINITIAL = 363, yINOUT = 364, yINPUT = 365, yINSIDE = 366, yINT = 367, yINTEGER = 368, yINTERCONNECT = 369, yINTERFACE = 370, yINTERSECT = 371, yJOIN = 372, yLET = 373, yLOCALPARAM = 374, yLOCAL__COLONCOLON = 375, yLOCAL__ETC = 376, yLOCAL__LEX = 377, yLOGIC = 378, yLONGINT = 379, yMATCHES = 380, yMODPORT = 381, yMODULE = 382, yNAND = 383, yNEGEDGE = 384, yNETTYPE = 385, yNEW__ETC = 386, yNEW__LEX = 387, yNEW__PAREN = 388, yNEXTTIME = 389, yNOR = 390, yNOT = 391, yNULL = 392, yOR = 393, yOUTPUT = 394, yPACKAGE = 395, yPACKED = 396, yPARAMETER = 397, yPOSEDGE = 398, yPRIORITY = 399, yPROGRAM = 400, yPROPERTY = 401, yPROTECTED = 402, yPURE = 403, yRAND = 404, yRANDC = 405, yRANDCASE = 406, yRANDSEQUENCE = 407, yREAL = 408, yREALTIME = 409, yREF = 410, yREG = 411, yREJECT_ON = 412, yRELEASE = 413, yREPEAT = 414, yRESTRICT = 415, yRETURN = 416, ySCALARED = 417, ySEQUENCE = 418, ySHORTINT = 419, ySHORTREAL = 420, ySIGNED = 421, ySOFT = 422, ySOLVE = 423, ySPECIFY = 424, ySPECPARAM = 425, ySTATIC__CONSTRAINT = 426, ySTATIC__ETC = 427, ySTATIC__LEX = 428, ySTRING = 429, ySTRONG = 430, ySTRUCT = 431, ySUPER = 432, ySUPPLY0 = 433, ySUPPLY1 = 434, ySYNC_ACCEPT_ON = 435, ySYNC_REJECT_ON = 436, yS_ALWAYS = 437, yS_EVENTUALLY = 438, yS_NEXTTIME = 439, yS_UNTIL = 440, yS_UNTIL_WITH = 441, yTABLE = 442, yTAGGED = 443, yTASK__ETC = 444, yTASK__LEX = 445, yTASK__aPUREV = 446, yTHIS = 447, yTHROUGHOUT = 448, yTIME = 449, yTIMEPRECISION = 450, yTIMEUNIT = 451, yTRI = 452, yTRI0 = 453, yTRI1 = 454, yTRIAND = 455, yTRIOR = 456, yTRIREG = 457, yTYPE = 458, yTYPEDEF = 459, yUNION = 460, yUNIQUE = 461, yUNIQUE0 = 462, yUNSIGNED = 463, yUNTIL = 464, yUNTIL_WITH = 465, yUNTYPED = 466, yVAR = 467, yVECTORED = 468, yVIRTUAL__CLASS = 469, yVIRTUAL__ETC = 470, yVIRTUAL__INTERFACE = 471, yVIRTUAL__LEX = 472, yVIRTUAL__anyID = 473, yVOID = 474, yWAIT = 475, yWAIT_ORDER = 476, yWAND = 477, yWEAK = 478, yWHILE = 479, yWILDCARD = 480, yWIRE = 481, yWITHIN = 482, yWITH__BRA = 483, yWITH__CUR = 484, yWITH__ETC = 485, yWITH__LEX = 486, yWITH__PAREN = 487, yWOR = 488, yXNOR = 489, yXOR = 490, yD_ERROR = 491, yD_FATAL = 492, yD_INFO = 493, yD_ROOT = 494, yD_UNIT = 495, yD_WARNING = 496, yP_TICK = 497, yP_TICKBRA = 498, yP_OROR = 499, yP_ANDAND = 500, yP_NOR = 501, yP_XNOR = 502, yP_NAND = 503, yP_EQUAL = 504, yP_NOTEQUAL = 505, yP_CASEEQUAL = 506, yP_CASENOTEQUAL = 507, yP_WILDEQUAL = 508, yP_WILDNOTEQUAL = 509, yP_GTE = 510, yP_LTE = 511, yP_LTE__IGNORE = 512, yP_SLEFT = 513, yP_SRIGHT = 514, yP_SSRIGHT = 515, yP_POW = 516, yP_PAR__IGNORE = 517, yP_PAR__STRENGTH = 518, yP_LTMINUSGT = 519, yP_PLUSCOLON = 520, yP_MINUSCOLON = 521, yP_MINUSGT = 522, yP_MINUSGTGT = 523, yP_EQGT = 524, yP_ASTGT = 525, yP_ANDANDAND = 526, yP_POUNDPOUND = 527, yP_POUNDMINUSPD = 528, yP_POUNDEQPD = 529, yP_DOTSTAR = 530, yP_ATAT = 531, yP_COLONCOLON = 532, yP_COLONEQ = 533, yP_COLONDIV = 534, yP_ORMINUSGT = 535, yP_OREQGT = 536, yP_BRASTAR = 537, yP_BRAEQ = 538, yP_BRAMINUSGT = 539, yP_BRAPLUSKET = 540, yP_PLUSPLUS = 541, yP_MINUSMINUS = 542, yP_PLUSEQ = 543, yP_MINUSEQ = 544, yP_TIMESEQ = 545, yP_DIVEQ = 546, yP_MODEQ = 547, yP_ANDEQ = 548, yP_OREQ = 549, yP_XOREQ = 550, yP_SLEFTEQ = 551, yP_SRIGHTEQ = 552, yP_SSRIGHTEQ = 553, prUNARYARITH = 554, prREDUCTION = 555, prNEGATION = 556, prEVENTBEGIN = 557, prTAGGED = 558, prSEQ_CLOCKING = 559, prPOUNDPOUND_MULTI = 560, prLOWER_THAN_ELSE = 561 }; #endif /* Value type. */ int VParseBisonparse (void); #endif /* !YY_VPARSEBISON_VPARSEBISON_PRETMP_H_INCLUDED */ /* Copy the second part of user declarations. */ #line 722 "VParseBison.c" /* yacc.c:358 */ #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; #else typedef signed char 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 # 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 #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif #if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # 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 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #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 # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # 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 (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 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS 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 (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 211 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 79468 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 343 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 542 /* YYNRULES -- Number of rules. */ #define YYNRULES 3131 /* YYNSTATES -- Number of states. */ #define YYNSTATES 5448 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 569 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ 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, 18, 2, 19, 342, 20, 21, 2, 22, 23, 24, 25, 26, 27, 28, 29, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 30, 31, 32, 33, 34, 35, 36, 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, 37, 2, 38, 39, 341, 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, 40, 41, 42, 43, 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, 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, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 787, 787, 790, 797, 799, 803, 804, 808, 810, 811, 812, 813, 814, 816, 820, 821, 822, 829, 836, 842, 843, 847, 848, 852, 853, 854, 855, 859, 860, 861, 862, 863, 864, 865, 866, 868, 869, 870, 871, 872, 873, 877, 878, 882, 886, 887, 891, 897, 898, 902, 903, 912, 917, 924, 931, 932, 936, 937, 939, 943, 944, 949, 949, 954, 955, 960, 961, 965, 968, 969, 969, 973, 974, 984, 985, 988, 990, 993, 1023, 1025, 1027, 1029, 1031, 1034, 1036, 1038, 1040, 1042, 1045, 1047, 1049, 1051, 1053, 1056, 1060, 1063, 1064, 1065, 1069, 1070, 1074, 1075, 1079, 1080, 1088, 1092, 1096, 1102, 1103, 1107, 1108, 1112, 1114, 1115, 1116, 1119, 1120, 1122, 1130, 1131, 1139, 1143, 1144, 1148, 1149, 1153, 1154, 1155, 1156, 1158, 1163, 1167, 1172, 1179, 1180, 1184, 1185, 1189, 1190, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1204, 1205, 1206, 1207, 1211, 1212, 1213, 1217, 1221, 1222, 1226, 1226, 1233, 1239, 1240, 1249, 1251, 1252, 1253, 1256, 1261, 1262, 1263, 1267, 1268, 1275, 1279, 1280, 1284, 1289, 1297, 1301, 1302, 1303, 1307, 1308, 1309, 1314, 1315, 1317, 1318, 1322, 1326, 1327, 1331, 1335, 1336, 1337, 1344, 1345, 1346, 1347, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1365, 1369, 1374, 1375, 1376, 1377, 1378, 1383, 1384, 1385, 1386, 1387, 1398, 1398, 1399, 1399, 1400, 1400, 1401, 1401, 1411, 1411, 1412, 1412, 1416, 1417, 1418, 1419, 1420, 1421, 1425, 1426, 1427, 1431, 1432, 1433, 1437, 1438, 1442, 1443, 1450, 1455, 1456, 1457, 1458, 1463, 1464, 1465, 1468, 1474, 1477, 1479, 1484, 1485, 1486, 1487, 1487, 1490, 1490, 1493, 1494, 1495, 1501, 1503, 1510, 1511, 1520, 1526, 1527, 1531, 1532, 1533, 1537, 1541, 1542, 1546, 1546, 1551, 1552, 1556, 1558, 1560, 1570, 1574, 1575, 1579, 1581, 1586, 1587, 1588, 1592, 1593, 1597, 1598, 1603, 1605, 1606, 1608, 1609, 1610, 1617, 1618, 1622, 1623, 1627, 1628, 1632, 1633, 1641, 1645, 1648, 1649, 1651, 1652, 1655, 1659, 1660, 1664, 1668, 1669, 1670, 1674, 1675, 1679, 1687, 1688, 1689, 1695, 1699, 1700, 1701, 1709, 1714, 1719, 1720, 1721, 1724, 1725, 1726, 1737, 1738, 1739, 1742, 1749, 1752, 1754, 1759, 1760, 1765, 1766, 1767, 1772, 1777, 1779, 1782, 1783, 1784, 1785, 1786, 1787, 1794, 1795, 1799, 1800, 1804, 1805, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1821, 1825, 1827, 1831, 1835, 1836, 1837, 1838, 1840, 1841, 1842, 1844, 1845, 1846, 1847, 1849, 1853, 1857, 1861, 1865, 1866, 1867, 1868, 1869, 1873, 1874, 1880, 1881, 1885, 1886, 1890, 1897, 1909, 1910, 1914, 1914, 1919, 1920, 1924, 1924, 1928, 1929, 1930, 1931, 1932, 1933, 1937, 1937, 1937, 1937, 1937, 1937, 1941, 1942, 1946, 1946, 1950, 1951, 1955, 1955, 1960, 1962, 1969, 1974, 1975, 1977, 1978, 1982, 1982, 1982, 1982, 1986, 1991, 1995, 1996, 1999, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2014, 2015, 2016, 2017, 2021, 2022, 2026, 2026, 2030, 2031, 2032, 2036, 2036, 2036, 2043, 2044, 2048, 2052, 2053, 2054, 2055, 2059, 2060, 2064, 2065, 2066, 2067, 2072, 2073, 2074, 2075, 2079, 2083, 2084, 2088, 2089, 2093, 2094, 2095, 2099, 2100, 2104, 2108, 2109, 2113, 2114, 2118, 2119, 2123, 2124, 2131, 2135, 2136, 2140, 2141, 2145, 2146, 2155, 2158, 2163, 2164, 2168, 2169, 2173, 2186, 2186, 2186, 2189, 2189, 2189, 2194, 2199, 2203, 2204, 2208, 2213, 2217, 2218, 2222, 2230, 2231, 2235, 2236, 2240, 2241, 2245, 2246, 2250, 2250, 2254, 2254, 2255, 2259, 2260, 2261, 2262, 2263, 2266, 2267, 2268, 2270, 2272, 2274, 2275, 2276, 2283, 2284, 2285, 2287, 2300, 2301, 2306, 2307, 2308, 2309, 2310, 2311, 2318, 2323, 2324, 2328, 2329, 2333, 2334, 2338, 2339, 2344, 2345, 2346, 2350, 2351, 2355, 2356, 2357, 2358, 2359, 2363, 2364, 2368, 2370, 2372, 2377, 2382, 2383, 2386, 2389, 2390, 2391, 2392, 2395, 2396, 2397, 2400, 2401, 2403, 2408, 2409, 2412, 2413, 2414, 2415, 2420, 2423, 2424, 2426, 2427, 2429, 2430, 2431, 2433, 2435, 2437, 2439, 2442, 2443, 2444, 2445, 2447, 2449, 2450, 2451, 2453, 2456, 2457, 2458, 2461, 2466, 2468, 2471, 2473, 2475, 2479, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2494, 2499, 2500, 2502, 2503, 2507, 2507, 2507, 2507, 2511, 2511, 2511, 2511, 2515, 2515, 2515, 2515, 2519, 2519, 2519, 2519, 2523, 2523, 2523, 2523, 2528, 2529, 2531, 2535, 2536, 2543, 2544, 2545, 2546, 2550, 2551, 2552, 2556, 2557, 2558, 2562, 2567, 2571, 2572, 2576, 2577, 2581, 2582, 2583, 2584, 2585, 2586, 2590, 2591, 2592, 2593, 2594, 2595, 2599, 2600, 2604, 2608, 2609, 2613, 2614, 2618, 2619, 2623, 2624, 2627, 2632, 2633, 2637, 2638, 2639, 2643, 2644, 2645, 2646, 2652, 2654, 2655, 2666, 2670, 2672, 2678, 2680, 2684, 2685, 2690, 2692, 2694, 2698, 2699, 2703, 2704, 2708, 2710, 2712, 2714, 2715, 2719, 2720, 2736, 2737, 2738, 2743, 2744, 2745, 2751, 2756, 2757, 2758, 2764, 2768, 2772, 2774, 2777, 2778, 2779, 2780, 2781, 2782, 2783, 2784, 2789, 2790, 2791, 2792, 2793, 2794, 2795, 2796, 2802, 2808, 2809, 2813, 2816, 2824, 2825, 2829, 2830, 2834, 2837, 2840, 2843, 2851, 2852, 2856, 2857, 2861, 2862, 2866, 2867, 2872, 2873, 2877, 2885, 2888, 2891, 2894, 2897, 2903, 2906, 2909, 2916, 2917, 2918, 2922, 2923, 2927, 2928, 2932, 2933, 2934, 2935, 2939, 2940, 2944, 2945, 2949, 2950, 2955, 2955, 2960, 2961, 2966, 2967, 2968, 2972, 2973, 2974, 2975, 2976, 2978, 2979, 2980, 2981, 2982, 2983, 2987, 2991, 2993, 2998, 2999, 3012, 3013, 3019, 3020, 3024, 3025, 3026, 3027, 3031, 3032, 3033, 3034, 3038, 3039, 3043, 3044, 3045, 3050, 3055, 3056, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 3067, 3068, 3069, 3073, 3074, 3089, 3096, 3097, 3098, 3099, 3100, 3101, 3102, 3103, 3104, 3105, 3108, 3112, 3113, 3114, 3115, 3116, 3117, 3118, 3119, 3120, 3121, 3122, 3123, 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, 3158, 3162, 3165, 3168, 3171, 3172, 3177, 3178, 3179, 3180, 3185, 3191, 3193, 3195, 3197, 3199, 3202, 3204, 3206, 3212, 3213, 3215, 3218, 3221, 3230, 3231, 3238, 3244, 3249, 3250, 3254, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3266, 3267, 3273, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3279, 3284, 3287, 3294, 3296, 3298, 3299, 3300, 3301, 3305, 3306, 3307, 3309, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3313, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3317, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3325, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3329, 3333, 3337, 3348, 3349, 3350, 3351, 3352, 3354, 3356, 3360, 3360, 3360, 3360, 3360, 3360, 3360, 3364, 3364, 3364, 3364, 3364, 3364, 3364, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3372, 3372, 3372, 3372, 3372, 3372, 3372, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3381, 3383, 3385, 3389, 3390, 3392, 3394, 3400, 3401, 3405, 3406, 3407, 3412, 3413, 3414, 3419, 3420, 3421, 3425, 3426, 3430, 3431, 3435, 3436, 3440, 3441, 3445, 3446, 3450, 3451, 3455, 3456, 3460, 3461, 3465, 3466, 3477, 3478, 3479, 3480, 3484, 3485, 3492, 3496, 3497, 3502, 3503, 3504, 3505, 3506, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3527, 3528, 3533, 3534, 3535, 3539, 3540, 3544, 3545, 3552, 3556, 3557, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3561, 3562, 3563, 3570, 3571, 3575, 3576, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3580, 3581, 3582, 3586, 3590, 3591, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3595, 3596, 3603, 3607, 3608, 3609, 3614, 3615, 3620, 3621, 3624, 3625, 3626, 3627, 3631, 3632, 3636, 3637, 3641, 3643, 3644, 3645, 3647, 3648, 3654, 3656, 3657, 3658, 3660, 3661, 3665, 3666, 3671, 3677, 3681, 3682, 3686, 3687, 3691, 3692, 3696, 3697, 3706, 3708, 3709, 3711, 3712, 3717, 3719, 3720, 3722, 3723, 3725, 3729, 3733, 3734, 3735, 3742, 3748, 3749, 3750, 3751, 3752, 3753, 3757, 3758, 3762, 3763, 3767, 3768, 3772, 3773, 3774, 3778, 3779, 3780, 3784, 3785, 3786, 3787, 3791, 3792, 3796, 3797, 3801, 3802, 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3816, 3817, 3818, 3825, 3826, 3827, 3831, 3832, 3836, 3837, 3841, 3842, 3845, 3849, 3850, 3855, 3857, 3859, 3863, 3865, 3870, 3872, 3874, 3878, 3882, 3883, 3890, 3892, 3894, 3896, 3899, 3900, 3902, 3906, 3912, 3917, 3918, 3918, 3923, 3924, 3934, 3939, 3941, 3942, 3943, 3944, 3945, 3949, 3950, 3955, 3956, 3957, 3961, 3964, 3968, 3969, 3973, 3979, 3990, 3994, 3995, 4001, 4004, 4009, 4010, 4011, 4012, 4018, 4019, 4024, 4025, 4030, 4031, 4036, 4039, 4043, 4044, 4045, 4046, 4050, 4051, 4058, 4059, 4060, 4061, 4078, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4081, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4084, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4087, 4098, 4099, 4100, 4107, 4108, 4112, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 4125, 4126, 4127, 4128, 4129, 4130, 4132, 4133, 4134, 4135, 4136, 4144, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4147, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4150, 4161, 4162, 4167, 4178, 4179, 4182, 4183, 4185, 4187, 4188, 4189, 4192, 4194, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4197, 4202, 4203, 4204, 4210, 4211, 4212, 4216, 4217, 4225, 4230, 4231, 4232, 4234, 4236, 4240, 4241, 4246, 4251, 4258, 4263, 4267, 4271, 4279, 4283, 4290, 4296, 4300, 4301, 4305, 4306, 4311, 4312, 4313, 4314, 4319, 4323, 4325, 4326, 4327, 4328, 4329, 4331, 4335, 4336, 4340, 4341, 4342, 4346, 4347, 4352, 4354, 4355, 4356, 4357, 4361, 4362, 4364, 4366, 4370, 4371, 4372, 4376, 4377, 4378, 4382, 4383, 4387, 4388, 4392, 4394, 4398, 4399, 4400, 4401, 4405, 4409, 4410, 4414, 4415, 4419, 4420, 4424, 4425, 4429, 4433, 4435, 4436, 4440, 4441, 4446, 4447, 4451, 4452, 4456, 4461, 4462, 4463, 4466, 4467, 4468, 4471, 4472, 4473, 4482, 4483, 4487, 4488, 4489, 4490, 4494, 4495, 4499, 4500, 4505, 4507, 4508, 4515, 4516, 4520, 4521, 4525, 4529, 4530, 4531, 4532, 4536, 4537, 4541, 4542, 4543, 4547, 4548, 4549, 4553, 4554, 4555, 4559, 4560, 4564, 4565, 4569, 4570, 4574, 4575, 4579, 4580, 4582, 4583, 4585, 4587, 4591, 4592, 4596, 4597, 4601, 4602, 4606, 4607, 4608, 4615, 4621, 4628, 4632, 4633, 4637, 4638, 4642, 4643, 4645, 4646, 4647, 4648, 4649, 4653, 4654, 4655, 4656, 4657, 4658, 4659, 4660, 4661, 4662, 4663, 4664, 4669, 4670, 4671, 4673, 4680, 4690, 4697, 4701, 4707, 4708, 4714, 4715, 4716, 4721, 4722, 4727, 4728, 4737, 4741, 4748, 4753, 4760, 4764, 4770, 4771, 4777, 4783, 4784, 4791, 4791, 4793, 4793, 4795, 4795, 4802, 4803, 4807, 4808, 4812, 4813, 4814, 4816, 4817, 4818, 4819, 4820, 4821, 4823, 4827, 4828, 4830, 4833, 4841, 4842, 4843, 4849, 4850, 4854, 4855, 4860, 4862, 4864, 4866, 4868, 4870, 4878, 4880, 4881, 4882, 4886, 4890, 4891, 4895, 4896, 4900, 4901, 4906, 4910, 4911, 4915, 4917, 4920, 4924, 4925, 4927, 4929, 4933, 4934, 4938, 4939, 4943, 4944, 4945, 4949, 4953, 4954 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 1 /* 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\"", "\"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", "instRangeListE", "instRangeList", "instRange", "cellpinList", "$@17", "cellpinItList", "$@18", "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", "$@19", "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", "final_zero", "deferred_immediate_assertion_statement", "expect_property_statement", "concurrent_assertion_item", "concurrent_assertion_statement", "property_declaration", "property_declarationFront", "property_port_listE", "$@20", "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", "$@21", "$@22", "$@23", "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", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 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, 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, 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, 95, 36 }; # endif #define YYPACT_NINF -4523 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-4523))) #define YYTABLE_NINF -3131 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const int yypact[] = { 74570, -4523, -4523, -4523, -4523, 2138, -4523, -4523, -4523, 1837, 527, 1837, 3020, -4523, 1061, 815, 338, 338, 1519, -4523, -4523, 692, 1837, -4523, -4523, -4523, -4523, 338, 28792, 338, -4523, 618, 1837, -4523, -4523, -4523, 1837, -4523, -4523, -4523, -4523, -4523, 85, 338, 338, -4523, 478, 549, 586, 9618, 135, -4523, 512, 699, -4523, 696, 74819, -4523, -4523, -4523, 78552, -4523, -4523, -4523, -4523, -4523, 283, -4523, 283, -4523, -4523, 283, 724, 797, 699, 699, -4523, 746, 2153, 19987, 33465, 119, 119, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 1387, -4523, 710, -4523, -4523, -4523, -4523, 29369, -4523, -4523, -4523, -4523, 915, -4523, 915, -4523, 949, -4523, 198, -4523, 915, -4523, 965, 930, 1012, -4523, -4523, 974, 792, -4523, 1122, 1141, 1172, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 2186, 155, -4523, -4523, -4523, -4523, 1273, 1303, 242, 1012, 242, -4523, -4523, -4523, -4523, 29369, -4523, -4523, -4523, -4523, 119, 119, 1327, 1334, 1347, 1327, 1131, 1837, 1143, 404, -4523, 338, 338, 283, 283, 283, 30287, 30287, 483, 995, 338, 1837, -4523, 1166, 1837, 1349, 699, 1837, 727, 1837, 2212, 1837, -4523, -4523, 119, 1461, 837, 837, 1476, 849, 46955, 1837, 3020, 1462, 1054, 395, 1837, 1267, -4523, 85, 699, 1527, 1256, -4523, -4523, 1732, 1514, 1552, 1500, 78755, -4523, 1589, 1612, 283, -4523, 1604, -4523, 1604, 1604, -4523, -4523, -4523, 1626, 168, 1626, -4523, -4523, 1313, -4523, 168, -4523, -4523, 119, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 1371, 586, 1327, 1637, -4523, -4523, 586, -4523, -4523, -4523, -4523, 1327, 850, 1421, -4523, 168, -4523, 338, -4523, -4523, 1646, -4523, 1661, -4523, 1650, -4523, 1034, 155, 1688, -4523, 1691, -4523, 1701, 1666, 338, 1527, 1012, 212, -4523, 262, -4523, 242, 247, 699, -4523, 1014, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 1778, -4523, -4523, -4523, -4523, 28792, 699, 50225, -4523, 1012, 1513, -4523, -4523, -4523, 1327, 50225, 1327, -4523, 1837, -4523, -4523, 1773, 969, 1801, 1855, 1612, -4523, 1604, 1604, 1604, -4523, -4523, 837, 1327, 658, 837, 783, 783, -4523, 1888, -4523, 1784, 699, 1012, 834, 834, -4523, -4523, 1837, -4523, 1837, -4523, -4523, -4523, 699, 1527, 163, 1837, 1936, -4523, 1900, 2212, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 783, -4523, 699, 834, -4523, 2028, -4523, -4523, -4523, -4523, -4523, 2027, 50225, 50225, 50225, 50225, 50225, 1823, 50225, 41011, 50225, 50225, -4523, -4523, -4523, 1774, -4523, 699, -4523, -4523, 2042, 2074, 2084, 2103, 26575, 50225, 50225, 50225, 50225, 50225, 2192, -4523, 1124, 1536, 733, 1818, -4523, 1878, -4523, -4523, -4523, 1108, -4523, -4523, 70497, -4523, 794, 2024, -4523, 2193, 1303, -4523, 2195, 699, 2172, 699, 2127, 1392, 1837, 2166, 2188, 168, -4523, 50225, 2164, 2187, 1527, 936, 2200, -4523, 2199, -4523, 2208, -4523, -4523, 1934, 2205, 2206, 2210, 699, 43249, 2204, -4523, 168, -4523, -4523, 746, -4523, 168, 2213, 1327, 381, 392, -4523, 1327, -4523, 1327, 47173, 2227, -4523, 1387, -4523, -4523, 79202, 2109, 27781, 10576, 2234, 30836, 50225, 2252, 40461, -4523, 1837, 288, 1431, 77915, 262, 2145, 1837, -4523, -4523, 47391, -4523, -4523, -4523, 2240, -4523, 2239, -4523, 2255, -4523, 1273, 2444, -4523, 1371, 2257, 1837, 1303, 1878, 2250, 54296, -4523, 2256, 70497, -4523, 245, -4523, 2253, -4523, -4523, -4523, -4523, -4523, 1837, 1837, -4523, 2260, -4523, 2263, 2264, 2265, -4523, 975, -4523, -4523, -4523, 12744, 2194, 2209, 699, -4523, -4523, -4523, -4523, -4523, -4523, 969, -4523, 1527, -4523, -4523, 262, 2266, -4523, -4523, -4523, 948, 2197, -4523, 2267, 43467, -4523, 183, 183, 26191, 1469, 183, 183, 39693, -4523, -4523, 183, -4523, 50225, 50225, 2268, 29678, 962, -4523, 183, 183, 47173, 43467, -4523, 43467, -4523, 43467, -4523, 43467, -4523, 699, -4523, -4523, 699, -4523, 2273, -4523, 1005, -4523, 1068, 2275, -4523, 34384, 183, 183, 183, 183, 183, -4523, 2285, -4523, 2239, 2287, 50225, 50225, 50225, 50225, 50225, 2942, 50225, 50225, 50225, 50225, 50225, 50225, 2290, 2291, 43685, 2303, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 39968, 50225, -4523, -4523, -4523, -4523, 9873, 9873, 2305, 1303, 1062, 2311, 1303, -4523, -4523, 2282, -4523, -4523, 2304, 2299, 1837, -4523, 2310, -4523, -4523, -4523, -4523, -4523, -4523, 699, 699, 287, -4523, -4523, 26821, 2319, 9723, 70889, 71417, 75415, -4523, 2306, -4523, 275, 1169, -4523, 2312, -4523, -4523, -4523, 50225, -4523, -4523, -4523, -4523, 1892, -4523, -4523, 79038, 70497, 43903, -4523, 2313, 1327, -4523, 1020, 2002, -4523, 746, 78876, -4523, -4523, -4523, 50225, 50225, 39418, 50225, 50225, 50225, 41229, 50225, 50225, 2321, 32056, 2327, 2223, 2315, 2333, 2337, 35969, 39418, -4523, 2338, 2339, -4523, 2344, 2345, 2331, 36252, 36592, 699, -4523, 79202, 2348, 50225, 50225, 50225, 2351, 402, 50225, 50225, 2353, -4523, 2114, 1878, 1387, -4523, -4523, -4523, -4523, -4523, 994, -4523, 1303, -4523, 36903, 2289, 27781, -4523, -4523, 2292, 16095, 40736, 699, 699, -4523, -4523, -4523, 50225, 50225, 40736, 50225, 50225, 50225, 41447, 50225, 50225, 2372, -4523, -4523, 699, -4523, 50225, 50225, 50225, 2376, 50225, 50225, 2377, -4523, 2132, 1878, -4523, -4523, -4523, -4523, 1073, -4523, 1303, -4523, 40736, 10576, 2307, 33312, 40736, 699, 699, -4523, 2228, -4523, -4523, -4523, -4523, 33803, -4523, 1327, 2406, -4523, 2389, -4523, 699, 24058, -4523, 168, 54706, 202, -4523, -4523, -4523, 40461, 40461, 40461, 40461, 40461, 40461, 41665, 40461, 40461, 50225, 50225, -4523, 50225, -4523, 699, -4523, 40461, 40461, 40461, 2394, 50225, 50225, 2395, -4523, 2150, 1878, 2008, -4523, -4523, -4523, -4523, 39782, -4523, 1207, -4523, 1303, -4523, 699, 699, 2400, 1014, 1014, 234, -4523, -4523, -4523, 863, 50225, 1837, 864, 2328, 2160, -4523, 2422, -4523, -4523, -4523, 785, -4523, 35377, 713, 1371, 763, 2402, 1837, 582, 399, 35377, 2409, 76091, 699, 2386, 2433, 35377, 78983, 2284, 2436, 2437, 2438, 2440, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 2434, -4523, 2427, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 2375, 78143, -4523, -4523, -4523, 2447, 1012, 262, 2449, -4523, -4523, -4523, 34003, -4523, 242, 1014, -4523, 1527, 699, 2462, 50225, -4523, 50225, 50225, 50225, 1837, 1327, 2479, 2455, 2458, 2459, -4523, -4523, -4523, -4523, -4523, 2469, 2464, -4523, -4523, -4523, 50443, 1275, 50443, 50225, 50443, 50443, -4523, 50443, 41883, 50443, 50443, 1173, 50225, 1196, 2463, 2465, 413, 2317, 2475, 1148, 13987, 1422, 35377, 2485, 2486, 50225, 2489, 35377, 2482, -4523, -4523, -4523, -4523, -4523, 47609, 2491, -4523, 13987, 2492, 47827, -4523, 699, -4523, -4523, -4523, 2247, 575, 2495, 2496, 50443, 50443, 50443, 1014, 723, 1127, 50225, 50225, 2498, -4523, 2490, 2493, 25850, -4523, 2254, 1878, -4523, 35377, 35377, -4523, -4523, -4523, 17267, 20914, -4523, 13834, -4523, -4523, 2499, 2500, 1206, -4523, 336, 2501, -4523, -4523, 2502, -4523, 16614, -4523, -4523, 70543, 928, 2000, 320, -4523, 978, 1303, -4523, 35377, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 699, 699, 2199, 2199, -4523, 2504, 837, 2505, 32327, 2506, -4523, 699, -4523, -4523, -4523, 501, -4523, 15782, -4523, 2199, -4523, -4523, -4523, 2013, -4523, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 2512, 2020, 2272, 54778, 2497, 1026, 1435, 50225, 2507, 50225, 2510, 5968, 2025, 2030, 2031, 2032, -4523, 42101, 43685, -4523, 48045, -4523, 43685, 50225, 50225, 50225, -4523, 50225, 296, 2594, 296, 216, 216, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 203, 1303, 699, 296, 986, 986, 54810, 2728, 5452, 48263, 48263, -4523, 5968, 50225, 8698, 8367, 5452, 2728, 2594, 1966, 1966, 1966, 1966, 1966, 1966, 986, 986, 970, 970, 970, 183, 5968, 9147, 2349, 2519, 2521, 50225, 2508, 54857, -4523, -4523, 10651, -4523, -4523, -4523, 50225, 50225, 33022, 50225, 50225, 1837, 50225, 42319, 50225, 50225, 2527, 37309, 2513, 2530, 37682, 39418, -4523, 2531, 2533, -4523, 2534, 2535, 2522, 38025, 38318, 699, -4523, 2538, 50225, 50225, 50225, 2539, 50225, 50225, 2540, -4523, 2295, 1878, -4523, -4523, -4523, -4523, -4523, 1223, 2541, 2542, -4523, 2543, -4523, -4523, 1303, -4523, 17615, -4523, 24445, 40736, 699, 699, 2544, 9873, -4523, -4523, -4523, 1837, 948, 699, 2548, -4523, -4523, -4523, -4523, -4523, 586, 2036, -4523, -4523, -4523, 699, -4523, -4523, -4523, 7690, 2037, -4523, 25427, -4523, 2813, 2545, 13987, 35377, 2550, 780, 1014, 2555, 2551, 72209, 2553, 50785, 52759, 51772, -4523, -4523, -4523, -4523, -4523, -4523, 2813, 2546, 2484, 71153, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 2434, -4523, -4523, 2363, 699, -4523, -4523, 2483, 71681, -4523, -4523, -4523, -4523, -4523, 2556, -4523, -4523, 2410, 2419, 472, -4523, 2494, 75635, -4523, -4523, -4523, 2561, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 2565, -4523, -4523, -4523, -4523, 46955, 70497, -4523, 381, -4523, 1327, 1111, -4523, -4523, -4523, -4523, 1837, 70497, 2573, 2571, -4523, 2574, -4523, 44121, 1327, -4523, -4523, 2109, 168, -4523, -4523, -4523, -4523, -4523, -4523, 79202, 1327, -4523, -4523, -4523, 183, 183, 1878, 1611, 38593, -4523, 7686, 183, 183, 183, -4523, 2559, 1119, 183, 183, 50225, 50225, 11908, 50225, 2581, 50225, 40736, 50225, 50225, 10207, 258, 50225, 40736, 50225, 50225, 50225, 50225, 11908, 50225, 10207, 47173, -4523, -4523, 40736, 183, 183, 183, 50225, -4523, 50225, 50225, 2569, -4523, -4523, 183, 183, -4523, 2587, -4523, 1534, -4523, -4523, -4523, 2516, 2511, 11908, 2199, -4523, -4523, 50225, 50225, 50225, 50225, 50225, 3078, 50225, -4523, 50225, 50225, 50225, 50225, 50225, 39418, 2570, 39418, 39418, 2577, 40736, 43685, 39418, 39418, 39418, 40736, 39418, 39418, 40736, 2598, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 39968, 50225, 39418, 39418, 39418, 39418, 48481, 50225, 50225, -4523, 40736, -4523, 1878, 5906, 1303, 1303, 183, 183, 1632, 8728, 183, 183, 183, -4523, 2584, 1261, 183, 183, 40736, 47173, 183, 183, 183, 50225, 183, 183, -4523, 2603, -4523, -4523, -4523, -4523, 19001, 34414, 2199, 50225, 50225, 50225, 50225, 50225, 3803, 50225, -4523, 50225, 50225, 50225, 50225, 50225, 40736, 2589, 2590, 40736, 43685, 40736, 40736, 40736, 2605, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 39968, 50225, 40736, -4523, 5906, 1303, 1303, -4523, -4523, -4523, 1327, 30836, -4523, 33803, 1327, 2629, -4523, -4523, -4523, 2607, 269, 269, 1884, 1761, 269, 269, 269, -4523, 2596, 1286, 269, 269, 5968, 5968, 5968, 47173, 269, 269, 269, 50225, 183, 183, -4523, 2612, -4523, -4523, 40461, 40461, 40461, 40461, 40461, 40461, 3869, 40461, 40461, 40461, 40461, 40461, 40461, 2601, 50225, 2608, 29374, 40461, 2623, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 40461, 39968, 40461, -4523, -4523, -4523, 1303, 1303, -4523, -4523, 658, -4523, -4523, -4523, 288, -4523, -4523, -4523, -4523, 557, 2624, -4523, 1074, 2627, 699, 54885, -4523, 2525, 2634, 1837, 1326, 2625, 2199, -4523, -4523, 2586, 28566, 1878, -4523, 2654, -4523, 2643, 2644, 2648, 2646, 2647, 50225, -4523, 2649, 2651, 2652, 2011, 2547, -4523, 356, 75863, -4523, -4523, -4523, 76319, -4523, 2640, -4523, 1562, -4523, -4523, 1837, 50225, -4523, -4523, 2655, 43467, 2645, 43467, 2650, 43467, 2653, 43467, 2656, 836, 2657, 2199, -4523, 43903, 1513, 2659, -4523, 75024, 50225, 9469, -4523, -4523, -4523, -4523, -4523, -4523, 28792, 2641, 2658, 2660, 2661, -4523, -4523, -4523, 1189, 50225, -4523, -4523, -4523, 2662, -4523, -4523, 295, -4523, 1262, 50225, -4523, 295, 40550, 1949, 295, 295, 295, -4523, 2642, 1333, 295, 295, 50225, 55156, 50225, 1837, -4523, -4523, -4523, 50225, 6723, 13987, 2414, -4523, 2663, 2421, 2664, 2666, 2441, 38868, 15218, 55184, 1159, -4523, 1837, 30557, 44339, 1645, 70497, 830, 2669, 50225, -4523, 55214, 47173, 2680, 50225, 2672, 1014, 50225, 295, 295, 295, 2676, 2686, 1014, -4523, -4523, -4523, 50225, -4523, 368, 368, -4523, -4523, -4523, -4523, -4523, 2687, -4523, -4523, -4523, 2199, 2628, 16940, -4523, 17960, 2199, 2567, -4523, -4523, -4523, 2690, 2691, 2693, 2698, -4523, 2239, 2699, -4523, 25697, -4523, 50443, 50443, 50443, 50443, 50443, 2322, 50443, 50443, 50443, 50443, 50443, 50443, 2682, 2684, 44557, 2703, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 50443, 39968, 50443, 1077, 375, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, -4523, -4523, -4523, -4523, 35690, 2704, -4523, 1303, 1303, -4523, -4523, 2696, 2707, -4523, 2708, -4523, 2701, 2240, -4523, -4523, -4523, -4523, -4523, -4523, 44775, 55242, 55288, 55513, 55559, 55587, 55617, 55645, 55691, 55916, 55962, 55990, 56020, 56048, -4523, -4523, 50225, -4523, 2692, -4523, 2695, 1438, 50225, -4523, 50225, -4523, -4523, -4523, -4523, -4523, -4523, 56094, 2705, -4523, 70497, 70497, 1455, 70497, 56319, 56365, 43903, 2711, -4523, 2311, 50225, 50225, 1136, 70497, 1480, -4523, 1512, -4523, -4523, 56393, 24811, 12333, -4523, 50225, 1159, 50225, 56423, 48263, -4523, 183, 183, 2121, 11290, 183, 183, 2716, 183, -4523, 2700, 1563, 183, 183, 50225, 50225, 11908, 50225, 40736, 50225, 10207, 258, 50225, 40736, 50225, 50225, 50225, 50225, 11908, 50225, 10207, 47173, 40736, 183, 183, 183, 50225, 183, 183, -4523, 2717, -4523, -4523, -4523, -4523, -4523, 9873, 2714, 2615, 22031, 50225, 50225, 50225, 50225, 50225, 4700, 50225, 50225, 50225, 50225, 50225, 50225, 33022, 2718, 33022, 39418, 2721, 40736, 43685, 33022, 39418, 39418, 40736, 39418, 39418, 40736, 2722, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 39968, 50225, 39418, 39418, 39418, 39418, 40736, -4523, 5906, 1303, 1303, -4523, 2724, 2720, 778, -4523, -4523, 2719, 42537, -4523, 26821, -4523, 1620, -4523, 9492, 746, 119, 1557, 168, 168, 875, 1427, 1651, -4523, -4523, 2730, -4523, 50225, 1837, 2626, 1586, -4523, 2731, 356, 71945, -4523, 1488, -4523, -4523, -4523, -4523, 72473, -4523, 2736, 50225, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 52101, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 51114, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 52430, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 51772, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 51443, -4523, 79055, -4523, -4523, 2199, -4523, 1675, 2738, 2739, 1623, -4523, 2749, -4523, 2199, -4523, -4523, 2199, -4523, -4523, 1406, 1878, -4523, 56451, -4523, 2752, 1125, -4523, 2756, -4523, 43903, 2751, 44993, -4523, -4523, -4523, 70497, -4523, 2747, -4523, -4523, 1327, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 2667, -4523, 50225, 50225, 2745, 56497, 2753, 2746, 56722, 50225, 2755, 2750, 13341, 56768, 56796, 56826, 53069, 56854, 56900, 2758, 2760, 57125, 5968, 53115, 54324, 2764, 2761, -4523, 50225, 50225, -4523, 2767, -4523, 296, 2594, 296, 216, 216, -4523, -4523, -4523, 1303, 296, 986, 986, 57171, 2728, 5452, 10207, 48263, 53885, 8402, 48263, 13164, -4523, 5968, 11085, 8402, 8402, 14295, 8402, 8402, 14295, 50225, 8698, 8367, 5452, 2728, 2594, 1966, 1966, 1966, 1966, 1966, 1966, 986, 986, 970, 970, 970, 183, 5968, -4523, 10651, 11908, 11908, 11908, 11908, -4523, 2753, 2766, -4523, 2768, 2781, 8041, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, -4523, 50225, 50225, 2754, 15500, 5968, 54375, 50225, 50225, -4523, -4523, 296, 2594, 296, 216, 216, -4523, -4523, -4523, 1303, 296, 986, 986, 57199, 2728, 5452, 30911, 48263, 48263, 13164, -4523, 5968, 19789, 14295, 14295, 50225, 8698, 8367, 5452, 2728, 2594, 1966, 1966, 1966, 1966, 1966, 1966, 986, 986, 970, 970, 970, 183, 5968, -4523, 10651, 8041, -4523, -4523, -4523, 1327, 2757, 1431, -4523, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 2804, 50225, 50225, 50225, 5968, 54407, 50225, 50225, 39782, 334, 9036, 334, 691, 691, -4523, -4523, -4523, 1303, 334, 1383, 1383, 7232, 3490, 6872, 48263, 5968, 48263, 699, -4523, 2622, 11213, 50225, 13007, 16172, 6872, 3490, 9036, 2894, 2894, 2894, 2894, 2894, 2894, 1383, 1383, 1008, 1008, 1008, 269, 11213, -4523, 14269, 2820, -4523, -4523, -4523, 699, -4523, 2814, -4523, 2807, 2824, 900, 1106, 1837, 2815, 50225, 1837, 2769, -4523, 50225, 699, 2821, -4523, 38868, 50225, 13987, 38868, 50225, 57229, 38868, 20393, 50225, 2817, 2819, -4523, 50225, 699, 2823, 2822, 1837, -4523, 76547, -4523, -4523, 1271, 699, -4523, -4523, -4523, 57257, 38868, 2064, -4523, 2120, -4523, 2125, -4523, 2129, -4523, -4523, -4523, 1582, -4523, 2833, 262, 2826, -4523, -4523, -4523, 2189, -4523, -4523, 552, -4523, -4523, -4523, 2827, 2828, -4523, -4523, -4523, -4523, 2770, 75212, -4523, -4523, -4523, 31110, 1533, -4523, -4523, 2791, 70497, 440, 843, -4523, -4523, -4523, 409, 699, -4523, 2130, -4523, -4523, -4523, -4523, 2479, -4523, -4523, 12744, 4808, 2834, 2134, 70497, -4523, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 2829, 57303, 723, 57528, -4523, 57574, -4523, 1640, -4523, 1647, 13987, -4523, 13987, -4523, -4523, 2841, 2740, 2844, 27356, -4523, 28792, 263, 48699, 1725, -4523, 2849, 50225, 2855, 2856, 2857, -4523, 2854, -4523, 2858, 2851, 252, 252, -4523, 35377, -4523, 31435, -4523, 1787, 50225, 35377, 28069, 2866, -4523, 57602, -4523, 5968, 50225, 57632, -4523, 2136, -4523, 57660, -4523, 50225, 2860, 57706, 50225, 699, 699, 50225, -4523, 2199, -4523, 27052, -4523, 2199, 50225, 50225, 50225, 50225, 28413, 2879, 50225, 351, 6293, 351, 946, 946, -4523, 2882, 2885, -4523, 2886, 1303, 351, 1459, 1459, 28077, 6372, 11693, 48263, 48263, 699, -4523, 5274, 50225, 18266, 18380, 11693, 6372, 6293, 2963, 2963, 2963, 2963, 2963, 2963, 1459, 1459, 1114, 1114, 1114, 295, 5274, -4523, 15293, 50225, 2889, 2893, 50225, 50225, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, -4523, 1331, -4523, -4523, -4523, -4523, -4523, -4523, 1387, -4523, 50225, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 1652, -4523, -4523, -4523, 2883, 8813, 10138, 43685, 50225, -4523, 2906, -4523, -4523, 2907, 50225, 7049, 57931, 50225, 50225, 48263, -4523, 48263, -4523, -4523, -4523, -4523, 57977, 2908, 58005, -4523, 1659, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, -4523, 50225, 18565, 50225, 2896, 58035, 2900, 2901, 32338, 58063, 58109, 53162, 58334, 58380, 2902, 2903, 58408, 5968, 53454, 54507, 50225, 50225, -4523, 2543, -4523, 2912, 296, 2594, 296, 216, 216, -4523, -4523, -4523, 1303, 296, 986, 986, 58438, 2728, 5452, 54004, 48263, 53932, 8402, 48263, 13164, -4523, 5968, 29976, 8402, 8402, 14295, 8402, 8402, 14295, 50225, 8698, 8367, 5452, 2728, 2594, 1966, 1966, 1966, 1966, 1966, 1966, 986, 986, 970, 970, 970, 183, 5968, -4523, 10651, 11908, 11908, 11908, 11908, 8041, -4523, -4523, 2240, 42537, 1538, -4523, 1878, -4523, 58466, -4523, -4523, -4523, 2920, 168, 1837, 168, -4523, 514, 746, 168, 746, 168, 1837, 168, 13987, 1875, 58512, 2913, 50225, 1014, -4523, 50225, 2914, 1837, -4523, 72737, -4523, -4523, 1415, 58737, 2845, -4523, -4523, -4523, -4523, 2840, -4523, -4523, 1387, 1327, 1637, -4523, -4523, 2918, -4523, -4523, 699, -4523, -4523, -4523, -4523, 50225, -4523, -4523, 48917, -4523, 2574, -4523, 50225, 33022, 58783, 58811, 58841, 58869, 58915, 59140, 59186, 59214, 59244, 59272, 59318, 59543, 2928, -4523, 2142, -4523, 2146, 70571, 1315, 1889, 209, 2147, -4523, 1660, 50225, 39418, 50225, 39418, 45211, 59589, 50225, 39418, -4523, 50225, 39418, 39418, 39418, -4523, 39418, 39418, 39418, 39418, 39418, -4523, -4523, 50225, -4523, -4523, 70497, 59617, 50225, 50225, 1670, 1674, 59647, -4523, -4523, -4523, 59675, 59721, 59946, 59992, 60020, 60050, 60078, 60124, 60349, 60395, 60423, 60453, 2151, 1687, 50225, -4523, 50225, -4523, 50225, 70497, 60481, 50225, 1708, 1713, 60527, 50225, 2859, 60752, 60798, 60826, 60856, 60884, 60930, 61155, 61201, 61229, 61259, 61287, 61333, 61558, 1716, 50225, 5968, 5968, 5968, -4523, 50225, 70497, 61604, 40461, 1727, 1736, 42101, 61632, -4523, 2807, -4523, 49135, 2919, 50225, -4523, -4523, 1710, -4523, 2925, 50225, 54885, 2525, 50225, 54885, 2923, 2880, 2934, 61662, 1735, -4523, 2929, 2941, 61690, 45429, 2943, 2837, 40186, 53500, 61736, -4523, 61961, 2935, 50225, 50225, 76775, -4523, 77003, -4523, 78371, 2946, 2939, 2940, 2944, 2945, 430, -4523, 1245, 1245, 2881, 1582, -4523, 1837, -4523, -4523, -4523, -4523, 2733, 969, 2911, -4523, 2916, -4523, -4523, 2199, -4523, 338, -4523, -4523, -4523, 1387, -4523, -4523, -4523, -4523, 1837, 50225, 50225, 50225, 1781, -4523, -4523, 2950, 2949, -4523, 2949, 1831, -4523, -4523, 2949, 2951, 28792, 2956, -4523, -4523, 50225, -4523, 50225, 62007, 62035, 62065, 62093, 62139, 62364, 62410, 62438, 62468, 62496, 62542, 62767, 62813, 1776, 50225, 31763, 50225, 31763, 35377, 13987, -4523, 13987, -4523, 1779, 1782, 50225, 2955, 31763, 1837, 2948, 47173, 62841, 23563, -4523, 50225, 62871, 252, 303, 699, 35377, 699, 50225, -4523, -4523, -4523, 35377, -4523, 35377, 70497, -4523, -4523, -4523, 699, 2976, 18246, -4523, 2969, 28069, 35377, 2978, 70601, 35377, 31763, 1014, 35377, 62899, -4523, -4523, 70497, 1844, -4523, 168, 1886, 62945, -4523, -4523, 63170, 63216, 63244, 63274, 42755, 45647, 2922, 45865, 63302, -4523, -4523, -4523, 50443, 1800, 1811, 42101, 63348, 70497, -4523, -4523, 63573, 63619, 2993, 2996, 2997, 1910, 63647, 50225, -4523, 2984, 50225, -4523, 50225, 50225, 50225, -4523, 50225, 50225, -4523, 70497, 70497, -4523, 2765, 63677, 50225, 70497, 70497, -4523, -4523, -4523, 39968, 39968, -4523, 63705, 63751, 63976, 64022, 64050, 64080, 64108, 64154, 64379, 64425, 64453, 64483, 2152, -4523, 18820, 1812, 50225, 39418, 39418, 39418, -4523, 50225, 39418, 39418, -4523, 39418, 39418, 39418, 39418, 39418, -4523, -4523, 50225, 70497, 64511, 50225, 50225, 1830, 1832, 64557, -4523, -4523, 3000, -4523, 50225, 47173, 3001, 292, 1837, -4523, 2992, 746, 168, 3006, -4523, 3008, -4523, 1837, -4523, -4523, -4523, 13987, 46083, -4523, 64782, -4523, 70497, 50225, 73001, -4523, 73265, 74321, -4523, -4523, 3007, 1327, 1387, 1387, -4523, -4523, 2393, 64828, -4523, 64856, 64886, -4523, 24445, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 50225, 2942, 723, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, -4523, 50225, 2990, 11609, 11908, -4523, 11908, 39143, -4523, 1805, 379, -4523, 39418, -4523, 11908, 2157, 2957, 10207, 11908, 11908, 11908, 11908, 11908, 10207, 64914, 3019, -4523, 64960, 7049, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 3003, 22716, 2161, 65185, 3023, -4523, 7049, -4523, -4523, -4523, 70497, 2199, 50225, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 3009, 25112, 65231, 3025, -4523, 15465, -4523, -4523, -4523, 3010, -4523, 70497, 3011, 1093, 65259, -4523, -4523, -4523, 1837, 1791, 3026, -4523, -4523, 1837, 70497, 900, 1106, 54885, 900, 2972, 50225, 31763, 31763, 13987, -4523, 50225, 31763, 31763, 77231, -4523, 46301, -4523, 1942, 35377, 3032, 2930, 35377, 35377, -4523, 50225, 65289, -4523, 2199, 77459, 2199, 77687, 2975, -4523, -4523, 3028, -4523, -4523, -4523, -4523, 1245, 1245, 3033, 2648, 2648, 2648, -4523, 2898, -4523, -4523, 2199, -4523, 3034, 1911, -4523, -4523, 30287, -4523, -4523, 3035, 1837, 1837, -4523, 79202, 1932, 1165, -4523, 1940, 1201, 409, -4523, 3045, -4523, -4523, 3047, 699, -4523, -4523, -4523, -4523, -4523, 3040, 2162, 50225, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 3029, 27422, 35377, 2987, -4523, 65317, -4523, -4523, -4523, -4523, -4523, -4523, 65363, 50225, -4523, 3042, 50225, 3055, 3053, -4523, 47173, -4523, 70497, -4523, -4523, 3057, -4523, 2858, -4523, 2851, 3056, 21673, -4523, -4523, 3061, -4523, -4523, -4523, 924, 28408, -4523, 3059, 2942, -4523, -4523, -4523, -4523, 3058, 3068, 699, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 35377, 32661, 3004, 42973, 1947, 3012, -4523, -4523, 3065, 14423, -4523, -4523, -4523, -4523, -4523, 3066, -4523, -4523, -4523, -4523, -4523, 50225, 65588, 65642, 65670, 65703, 65739, 66010, -4523, -4523, 66038, -4523, 3005, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 3062, 28894, 11908, 11908, 11908, 2163, 10207, 11908, 11908, 11908, 11908, 11908, 10207, 66068, 3076, -4523, 66096, 7049, -4523, -4523, -4523, 23203, 66142, 3080, 70497, 746, 168, 168, -4523, 50225, 3086, -4523, 47173, 3077, 47173, 3083, 168, -4523, -4523, 73529, -4523, 46519, -4523, 1950, -4523, 66367, 2199, 73793, 2199, 74057, 3022, -4523, -4523, 1387, 3007, 3007, 1837, 1837, 942, 942, 2170, -4523, -4523, 656, -4523, 50225, -4523, 3089, 66413, 2175, 50225, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, -4523, 3082, 50225, -4523, 50225, 50225, 39418, 27356, 39418, 49353, -4523, -4523, -4523, 39418, 50225, -4523, 39418, 3084, 50225, -4523, 50225, 50225, -4523, 50225, -4523, -4523, 66441, 3085, 50225, -4523, 50225, 50225, 50225, -4523, 1253, -4523, 49571, 48263, 500, 224, -4523, 3087, -4523, 3092, -4523, 3091, -4523, -4523, -4523, 900, -4523, 50225, 54885, -4523, -4523, -4523, 70497, -4523, -4523, 78371, -4523, -4523, -4523, 78371, -4523, 50225, 3102, -4523, -4523, -4523, 196, -4523, 2199, -4523, 2199, 78371, -4523, 2961, -4523, -4523, -4523, -4523, -4523, 1245, -4523, 50225, 1837, -4523, 1569, -4523, 3096, 3098, 1327, -4523, -4523, -4523, -4523, -4523, 50225, -4523, -4523, -4523, -4523, -4523, 50225, -4523, 50225, 66471, 3093, 50225, -4523, 50225, 50225, -4523, 35377, -4523, 3100, 66499, 50225, 70497, 35377, 50225, 3109, 252, 50225, 699, -4523, 50225, 50225, -4523, 3110, 21227, 3112, 3113, 2995, 3114, 3119, 921, -4523, 2838, -4523, 1147, -4523, -4523, -4523, -4523, 3120, -4523, -4523, -4523, 3116, 3060, 35377, -4523, -4523, 35064, 1959, 35377, -4523, -4523, 36059, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 39968, 3115, 50225, -4523, 50225, 50225, -4523, 50225, -4523, 39418, -4523, 220, 14701, 50225, -4523, 3124, -4523, -4523, -4523, 47173, 3117, 3128, 50225, 3130, 50225, -4523, 74321, -4523, -4523, -4523, 74321, 196, -4523, 2199, -4523, 2199, 74321, 3007, 3134, -4523, -4523, -4523, -4523, -4523, -4523, 2393, -4523, 70497, 50225, 39418, 70497, 50225, 66770, 66798, 66828, 19569, 22370, -4523, -4523, 66856, 3063, 11908, 50225, 67127, 67155, 67185, 67213, -4523, 50225, 67484, 67512, 67542, 67570, 48263, 224, 50225, -4523, -4523, 3135, 199, -4523, 1912, 1839, 2525, -4523, 3138, -4523, 396, -4523, 1837, -4523, 54885, 900, -4523, -4523, 67616, 50225, 699, 699, 3142, 1815, -4523, -4523, -4523, 1245, -4523, 70497, -4523, -4523, -4523, -4523, -4523, 1327, 3129, -4523, 3150, -4523, 50225, 67841, 67895, 67923, -4523, -4523, 39418, 70497, -4523, -4523, 35377, -4523, 3139, 878, -4523, 3144, 3145, 3161, -4523, -4523, -4523, -4523, 21540, -4523, 50225, 50225, 1332, 50225, 43903, -4523, 924, 1545, -4523, 3154, 50225, 35377, -4523, 35377, -4523, 35377, -4523, 50225, -4523, 50225, 50225, -4523, 50225, 67956, 67992, 68263, 68291, 11908, -4523, -4523, 50225, 70497, -4523, 47173, 3153, -4523, 3165, 50225, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 3167, -4523, -4523, -4523, 49789, -4523, 68321, 36950, -4523, -4523, -4523, -4523, -4523, -4523, 41035, -4523, -4523, -4523, -4523, 43060, -4523, -4523, -4523, -4523, 1840, -4523, 3163, 49571, -4523, 49571, 50225, 50225, 50225, 154, -4523, 49571, 277, 396, 3169, 3174, 103, -4523, 900, -4523, 40736, 68349, -4523, -4523, 78371, 50225, -4523, -4523, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, 50225, -4523, 3176, -4523, -4523, 50490, -4523, -4523, -4523, 27356, -4523, -4523, 699, -4523, -4523, -4523, -4523, -4523, -4523, 68395, 68620, 50225, 699, 68666, 3184, -4523, -4523, 50225, -4523, 3171, -4523, 70497, -4523, -4523, -4523, 68694, 68724, 68752, 54224, -4523, -4523, -4523, -4523, 54678, 3190, 50225, -4523, -4523, -4523, -4523, 74321, -4523, 68798, -4523, 50225, -4523, 50225, 50225, 50225, -4523, 50225, 50225, 50225, -4523, 50225, 50225, 186, 50225, -4523, -4523, 3185, 3179, 3180, 3181, 3182, -4523, 206, 3192, 3198, 345, 699, 50225, 396, 396, -4523, -4523, 53547, 40736, -4523, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 70497, 3194, 50225, -4523, 50225, 50225, -4523, 50007, 699, 69023, 699, -4523, 699, -4523, 69069, -4523, -4523, -4523, -4523, 50225, -4523, 50225, 50225, -4523, 50225, -4523, -4523, -4523, -4523, -4523, 69097, 69127, 69155, 69426, 69454, 69484, 69512, 69783, 69811, 3183, -4523, 3188, 50225, -4523, -4523, -4523, 50225, -4523, 699, 50225, -4523, 3193, 3205, 3206, 2959, -4523, 35377, 53839, -4523, 69841, 69869, 70140, 872, 1971, 46737, -4523, 3146, 699, -4523, -4523, -4523, 70168, 70198, 70226, 70272, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 50225, -4523, -4523, 3209, 3211, 3212, 1837, 3095, -4523, -4523, 35377, -4523, -4523, -4523, 699, 3208, 699, -4523, -4523, 699, 699, -4523, -4523, -4523, -4523, 3218, 2525, 3101, -4523, -4523, 3216, -4523, 3214, -4523, 3220, -4523, 699, 2525, -4523, 3219, 49571, -4523, -4523, -4523, 49571, 1841, 1862, -4523, -4523 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint16 yydefact[] = { 0, 14, 3066, 41, 841, 3062, 240, 234, 271, 0, 838, 0, 246, 274, 0, 0, 838, 838, 0, 236, 238, 838, 0, 211, 3068, 241, 237, 838, 3062, 838, 210, 838, 0, 244, 245, 242, 0, 235, 243, 3131, 840, 270, 316, 838, 838, 239, 0, 0, 0, 3062, 314, 3045, 0, 0, 3064, 0, 0, 6, 27, 11, 191, 12, 24, 336, 26, 8, 60, 9, 60, 25, 10, 60, 0, 0, 0, 0, 28, 0, 0, 246, 246, 246, 246, 264, 346, 259, 275, 269, 29, 334, 0, 337, 0, 335, 13, 30, 31, 3062, 33, 39, 40, 2428, 2460, 2429, 2460, 2430, 2871, 38, 2956, 32, 2460, 35, 60, 0, 0, 3063, 34, 0, 0, 2334, 0, 0, 0, 917, 918, 922, 920, 914, 910, 912, 909, 911, 913, 915, 916, 919, 921, 923, 0, 0, 2374, 2364, 414, 2350, 2367, 2370, 0, 0, 3063, 2337, 2335, 2336, 3011, 3062, 839, 2875, 248, 249, 246, 246, 0, 247, 0, 518, 0, 903, 0, 0, 45, 838, 838, 60, 60, 60, 246, 246, 905, 0, 838, 0, 2870, 0, 0, 0, 0, 0, 0, 0, 122, 0, 2459, 2482, 246, 0, 3062, 3062, 0, 0, 3062, 0, 246, 0, 316, 314, 0, 520, 315, 316, 0, 57, 0, 1, 7, 0, 0, 0, 0, 191, 22, 0, 0, 60, 42, 68, 55, 68, 68, 36, 37, 531, 176, 300, 177, 2338, 2339, 0, 506, 513, 511, 512, 246, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 1341, 183, 0, 360, 182, 181, 180, 179, 178, 263, 247, 514, 0, 0, 287, 300, 291, 838, 347, 2461, 0, 2483, 0, 868, 0, 868, 0, 0, 0, 2957, 0, 3012, 0, 3046, 838, 57, 0, 523, 3059, 3062, 3067, 0, 0, 0, 1329, 3062, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 410, 415, 536, 542, 543, 826, 827, 3062, 0, 3062, 2354, 3057, 0, 2355, 348, 322, 518, 3062, 320, 516, 0, 324, 519, 0, 0, 0, 0, 0, 51, 68, 68, 68, 848, 849, 3062, 0, 247, 3062, 0, 0, 843, 851, 853, 0, 3056, 0, 0, 0, 906, 907, 903, 44, 0, 107, 3069, 54, 0, 57, 0, 0, 0, 130, 0, 123, 124, 126, 127, 129, 128, 133, 317, 265, 0, 842, 0, 0, 17, 0, 15, 984, 983, 985, 2385, 889, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 254, 1002, 251, 270, 1243, 0, 1237, 252, 889, 889, 889, 889, 3062, 3062, 3062, 3062, 3062, 3062, 0, 1001, 246, 246, 264, 0, 250, 1280, 1281, 937, 1183, 796, 993, 798, 1279, 1003, 1175, 0, 1184, 2374, 1238, 986, 0, 0, 0, 3063, 0, 518, 0, 0, 0, 300, 364, 3062, 0, 0, 57, 3062, 273, 3065, 2386, 23, 62, 43, 56, 70, 0, 0, 0, 0, 3062, 0, 513, 301, 302, 305, 0, 188, 513, 508, 514, 0, 192, 1342, 359, 262, 515, 711, 0, 292, 0, 341, 513, 344, 2474, 3062, 3062, 0, 872, 3062, 0, 3062, 2396, 0, 0, 0, 356, 3062, 3049, 0, 3061, 3060, 3062, 3058, 527, 276, 524, 525, 0, 2352, 0, 2351, 2366, 0, 412, 1341, 0, 0, 2371, 0, 0, 926, 323, 0, 926, 517, 0, 325, 328, 49, 47, 48, 820, 821, 0, 0, 904, 0, 46, 0, 0, 0, 846, 3062, 845, 847, 868, 0, 0, 0, 0, 850, 3054, 868, 857, 830, 831, 0, 3043, 57, 273, 353, 3062, 0, 19, 121, 125, 310, 0, 823, 0, 3062, 801, 929, 930, 0, 1175, 927, 928, 3062, 578, 580, 933, 987, 3062, 3062, 0, 1324, 0, 1286, 932, 931, 981, 3062, 805, 3062, 803, 3062, 809, 3062, 807, 0, 770, 766, 0, 754, 250, 760, 0, 756, 0, 0, 765, 758, 935, 936, 934, 689, 690, 2, 0, 1182, 0, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 0, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 687, 688, 1181, 282, 1305, 1305, 2374, 1240, 57, 2374, 1239, 368, 365, 0, 366, 367, 0, 0, 0, 267, 272, 501, 500, 502, 559, 59, 499, 0, 0, 0, 18, 61, 3062, 0, 95, 0, 0, 191, 532, 0, 304, 0, 0, 308, 530, 303, 507, 510, 3062, 190, 1338, 1339, 1340, 0, 193, 194, 493, 712, 1303, 288, 289, 0, 343, 2475, 0, 2463, 0, 2471, 2733, 2732, 2734, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 3062, 0, 0, 0, 0, 0, 3062, 3062, 2751, 0, 0, 1264, 0, 0, 0, 3062, 3062, 0, 1258, 358, 0, 3062, 3062, 3062, 0, 0, 3062, 3062, 0, 2750, 0, 279, 0, 2479, 2686, 1213, 2742, 2752, 1205, 1214, 1259, 2735, 3062, 0, 3062, 2478, 2494, 2639, 0, 3062, 0, 3063, 2827, 2826, 2828, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 2845, 1257, 0, 1251, 3062, 3062, 3062, 0, 3062, 3062, 0, 2844, 0, 279, 2780, 1203, 2836, 2846, 1195, 1204, 1252, 2829, 3062, 3062, 0, 2490, 3062, 0, 3063, 2872, 0, 214, 212, 213, 215, 246, 886, 0, 247, 875, 869, 870, 0, 246, 874, 300, 0, 2956, 1149, 1148, 1150, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 1167, 3062, 1271, 0, 1265, 3062, 3062, 3062, 0, 3062, 3062, 0, 1166, 0, 0, 0, 1089, 1102, 1223, 1158, 581, 1168, 1215, 1224, 1266, 1151, 0, 3063, 0, 3062, 3062, 0, 2960, 2884, 2897, 0, 3062, 0, 0, 0, 0, 2879, 0, 2881, 2892, 2882, 0, 3035, 0, 0, 1341, 0, 0, 2390, 0, 0, 0, 0, 356, 0, 0, 0, 0, 356, 0, 889, 889, 889, 889, 3031, 3024, 3022, 3018, 3020, 3038, 3037, 3036, 3039, 3026, 3030, 0, 3032, 0, 3028, 3021, 2432, 2433, 2431, 2449, 3029, 3027, 0, 356, 3015, 3017, 3023, 3047, 0, 3062, 0, 3042, 528, 526, 3062, 3129, 0, 3062, 411, 57, 0, 0, 3062, 2375, 3062, 3062, 3062, 0, 514, 0, 331, 0, 0, 50, 53, 106, 132, 844, 0, 0, 1065, 1064, 1066, 3062, 3062, 3062, 3062, 3062, 3062, 612, 3062, 3062, 3062, 3062, 0, 3062, 0, 594, 0, 838, 0, 0, 0, 3062, 3062, 0, 0, 0, 3062, 0, 0, 596, 219, 217, 1083, 218, 717, 3062, 0, 220, 3062, 0, 3062, 1250, 0, 1244, 718, 719, 0, 0, 0, 0, 3062, 3062, 3062, 3062, 489, 0, 3062, 3062, 0, 1082, 0, 0, 246, 867, 0, 259, 603, 0, 0, 608, 653, 649, 0, 0, 866, 0, 589, 610, 0, 1018, 0, 1193, 796, 0, 1074, 794, 798, 855, 0, 864, 606, 0, 1084, 0, 1185, 1194, 2374, 1245, 1067, 0, 657, 2436, 2438, 2439, 661, 2435, 607, 659, 2437, 0, 3063, 2386, 2386, 852, 0, 3062, 0, 246, 0, 272, 0, 355, 312, 313, 310, 283, 3062, 311, 2386, 16, 890, 1288, 0, 996, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 0, 1320, 1324, 1319, 0, 0, 3062, 0, 3062, 1176, 982, 0, 0, 0, 0, 753, 981, 3062, 768, 3062, 769, 3062, 3062, 3062, 3062, 799, 3062, 954, 967, 952, 950, 951, 896, 897, 1242, 895, 898, 994, 995, 893, 1241, 3063, 953, 964, 965, 0, 969, 968, 3062, 3062, 1005, 1006, 3062, 962, 961, 971, 970, 972, 955, 956, 957, 958, 959, 960, 966, 978, 973, 974, 975, 963, 976, 3062, 0, 0, 0, 3062, 0, 0, 3122, 977, 1004, 2610, 2609, 2611, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 3062, 3062, 0, 3062, 0, 0, 3062, 3062, 2628, 0, 0, 1278, 0, 0, 0, 3062, 3062, 0, 1272, 0, 3062, 3062, 3062, 0, 3062, 3062, 0, 2627, 0, 0, 2510, 2563, 1233, 2619, 2629, 1225, 0, 1295, 1301, 1294, 1309, 1234, 1273, 2612, 3062, 2516, 1306, 3062, 0, 3063, 0, 1305, 369, 362, 521, 0, 310, 0, 0, 561, 3053, 261, 2388, 2387, 187, 0, 64, 185, 184, 0, 186, 66, 69, 95, 0, 72, 246, 98, 96, 0, 3062, 0, 0, 0, 3062, 0, 0, 0, 0, 0, 0, 0, 383, 403, 381, 382, 380, 404, 99, 0, 0, 0, 372, 375, 377, 386, 391, 393, 394, 387, 390, 376, 397, 396, 388, 398, 385, 378, 379, 543, 405, 389, 0, 0, 117, 116, 0, 0, 110, 114, 115, 120, 119, 0, 118, 113, 0, 0, 0, 145, 0, 191, 136, 139, 146, 0, 140, 142, 143, 141, 149, 148, 147, 150, 0, 144, 309, 307, 306, 3062, 509, 1343, 0, 189, 0, 493, 279, 195, 198, 494, 0, 1304, 0, 1292, 1299, 1291, 1307, 3062, 345, 2476, 2462, 2474, 300, 103, 104, 2465, 2485, 2486, 2487, 358, 0, 2467, 2466, 2484, 2678, 2679, 0, 1205, 3062, 2639, 0, 2676, 2677, 2682, 2736, 0, 0, 2681, 2680, 3062, 3062, 2646, 3062, 0, 3062, 3062, 3062, 3062, 2642, 2634, 3062, 3062, 3062, 3062, 3062, 3062, 2649, 3062, 2643, 2730, 280, 281, 3062, 2684, 2685, 2683, 3062, 2851, 3062, 3062, 0, 2856, 2852, 701, 702, 2, 0, 1212, 0, 699, 700, 1211, 0, 2639, 2675, 2386, 2480, 2477, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2498, 3062, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2862, 3062, 2665, 0, 2663, 1261, 1260, 2772, 2773, 1195, 0, 2770, 2771, 2776, 2830, 0, 0, 2775, 2774, 3062, 2824, 2778, 2779, 2777, 3062, 697, 698, 2, 0, 1202, 695, 696, 1201, 2769, 2488, 2386, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2491, 3062, 3062, 3062, 3062, 3062, 3062, 0, 0, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2759, 2757, 1254, 1253, 216, 878, 879, 876, 872, 873, 246, 0, 247, 881, 513, 2869, 0, 1094, 1095, 0, 1215, 1092, 1093, 1098, 1152, 0, 0, 1097, 1096, 587, 585, 583, 1146, 1100, 1101, 1099, 3062, 705, 706, 2, 0, 1222, 2397, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 3062, 0, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 703, 704, 1221, 1268, 1267, 868, 2365, 2964, 2962, 2963, 2959, 0, 2896, 2912, 2914, 2913, 0, 0, 2900, 0, 0, 0, 2893, 2934, 2893, 0, 0, 0, 0, 2386, 2880, 2883, 0, 3062, 0, 3019, 0, 2444, 0, 0, 493, 0, 0, 3062, 2391, 0, 0, 0, 2392, 0, 402, 0, 356, 419, 439, 442, 356, 438, 0, 446, 0, 173, 513, 2394, 3062, 401, 3025, 0, 3062, 0, 3062, 0, 3062, 0, 3062, 0, 0, 0, 2386, 3016, 1303, 3055, 3050, 3051, 0, 3062, 3062, 3106, 3109, 2353, 413, 537, 540, 3062, 0, 0, 0, 0, 326, 318, 333, 0, 3062, 327, 902, 901, 0, 662, 1018, 1010, 1084, 1185, 3062, 495, 1011, 0, 1175, 1008, 1009, 1014, 1068, 0, 0, 1013, 1012, 3062, 0, 3062, 0, 647, 221, 648, 3062, 3062, 3062, 0, 2345, 0, 2340, 0, 0, 0, 3062, 3062, 0, 3062, 638, 0, 0, 3062, 0, 751, 0, 0, 3062, 645, 0, 1062, 0, 3062, 0, 3062, 3062, 1016, 1017, 1015, 0, 0, 3062, 490, 491, 2425, 3062, 2426, 693, 694, 2, 604, 605, 230, 232, 0, 1192, 650, 651, 2386, 0, 0, 601, 0, 2386, 0, 609, 613, 626, 0, 0, 0, 0, 726, 0, 0, 629, 0, 865, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 0, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 489, 489, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 632, 691, 692, 1191, 0, 0, 652, 1247, 1246, 828, 829, 0, 825, 900, 833, 899, 0, 523, 284, 278, 277, 285, 822, 802, 1290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 579, 577, 3062, 1315, 0, 1316, 0, 0, 3062, 1287, 3062, 806, 804, 810, 808, 755, 757, 758, 0, 762, 761, 1297, 0, 3, 0, 0, 1303, 0, 891, 0, 3062, 3062, 3126, 747, 0, 3124, 0, 744, 746, 0, 1324, 3062, 3113, 3062, 3062, 3062, 0, 3062, 3115, 2555, 2556, 1225, 0, 2553, 2554, 0, 2559, 2613, 0, 0, 2558, 2557, 3062, 3062, 2523, 3062, 3062, 3062, 2519, 2511, 3062, 3062, 3062, 3062, 3062, 3062, 2526, 3062, 2520, 2607, 3062, 2561, 2562, 2560, 3062, 709, 710, 2, 0, 1232, 707, 708, 1231, 789, 1305, 0, 0, 2552, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2542, 2540, 1275, 1274, 791, 0, 0, 310, 260, 58, 560, 564, 63, 3062, 67, 0, 71, 95, 0, 246, 0, 300, 0, 247, 0, 103, 97, 399, 0, 395, 3062, 2392, 0, 0, 533, 0, 0, 0, 417, 0, 445, 444, 437, 440, 0, 436, 543, 3062, 2005, 1989, 1990, 1991, 1992, 1993, 1994, 1997, 1995, 1996, 1998, 2000, 1999, 2001, 2002, 2003, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 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, 1744, 1745, 1746, 1747, 1748, 1749, 1750, 1751, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1676, 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, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1903, 1904, 1905, 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, 1918, 1919, 1920, 1921, 1922, 0, 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, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1752, 1753, 1754, 1755, 1756, 1757, 1896, 1897, 1880, 1846, 1875, 1901, 1874, 1863, 1876, 1855, 1856, 1899, 1900, 1864, 1865, 1866, 1890, 1892, 1894, 1889, 1881, 1882, 1867, 1883, 1868, 1870, 1871, 1862, 1849, 1847, 1888, 1887, 1886, 1861, 1850, 1857, 1859, 1858, 1879, 1878, 1854, 1851, 1852, 1853, 1885, 1872, 1884, 1869, 1898, 1860, 1873, 1848, 1877, 1902, 1891, 1893, 1895, 1709, 1707, 1706, 1705, 1708, 0, 1677, 2333, 2318, 2319, 2320, 2321, 2322, 2323, 2326, 2324, 2325, 2327, 2329, 2328, 2330, 2331, 2332, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 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, 2074, 2075, 2076, 2077, 2078, 2079, 2080, 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, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 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, 2081, 2082, 2083, 2084, 2085, 2086, 2224, 2225, 2208, 2174, 2203, 2229, 2202, 2191, 2204, 2183, 2184, 2227, 2228, 2192, 2193, 2194, 2218, 2220, 2222, 2217, 2209, 2210, 2195, 2211, 2196, 2198, 2199, 2190, 2177, 2175, 2216, 2215, 2214, 2189, 2178, 2185, 2187, 2186, 2207, 2206, 2182, 2179, 2180, 2181, 2213, 2200, 2212, 2197, 2226, 2188, 2201, 2176, 2205, 2230, 2219, 2221, 2223, 2038, 2036, 2035, 2034, 2037, 0, 2007, 1674, 1658, 1659, 1660, 1661, 1662, 1663, 1666, 1664, 1665, 1667, 1669, 1668, 1670, 1671, 1672, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 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, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 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, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 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, 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 0, 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, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1421, 1422, 1423, 1424, 1425, 1426, 1565, 1566, 1549, 1515, 1544, 1570, 1543, 1532, 1545, 1524, 1525, 1568, 1569, 1533, 1534, 1535, 1559, 1561, 1563, 1558, 1550, 1551, 1536, 1552, 1537, 1539, 1540, 1531, 1518, 1516, 1557, 1556, 1555, 1530, 1519, 1526, 1528, 1527, 1548, 1547, 1523, 1520, 1521, 1522, 1554, 1541, 1553, 1538, 1567, 1529, 1542, 1517, 1546, 1571, 1560, 1562, 1564, 1378, 1376, 1375, 1374, 1377, 0, 1346, 228, 100, 374, 2386, 373, 0, 0, 0, 0, 155, 0, 159, 2386, 111, 112, 2386, 137, 138, 0, 1284, 1285, 1282, 529, 0, 493, 197, 0, 713, 1303, 0, 711, 290, 299, 298, 297, 2464, 2472, 2468, 2469, 2470, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 0, 2666, 3062, 3062, 1206, 0, 0, 0, 0, 3062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2731, 0, 0, 0, 0, 2855, 3062, 3062, 361, 0, 2458, 2703, 2716, 2701, 2699, 2700, 1263, 2743, 2744, 1262, 2702, 2713, 2714, 0, 2718, 2717, 2668, 3062, 2657, 2656, 3062, 2670, 2754, 2755, 2669, 2653, 2655, 2673, 2652, 2654, 2674, 3062, 2711, 2710, 2720, 2719, 2721, 2704, 2705, 2706, 2707, 2708, 2709, 2715, 2727, 2722, 2723, 2724, 2712, 2725, 2726, 2753, 2640, 2641, 2637, 2638, 2861, 2865, 0, 2866, 0, 0, 2664, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2760, 3062, 3062, 1196, 0, 2825, 0, 3062, 3062, 2489, 2481, 2797, 2810, 2795, 2793, 2794, 1256, 2837, 2838, 1255, 2796, 2807, 2808, 0, 2812, 2811, 2762, 3062, 3062, 2764, 2848, 2849, 2763, 2767, 2768, 3062, 2805, 2804, 2814, 2813, 2815, 2798, 2799, 2800, 2801, 2802, 2803, 2809, 2821, 2816, 2817, 2818, 2806, 2819, 2820, 2847, 2758, 871, 884, 885, 882, 887, 0, 1173, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 1216, 3062, 3062, 3062, 1147, 0, 3062, 3062, 582, 1119, 1132, 1117, 1115, 1116, 1270, 1159, 1160, 1269, 1118, 1129, 1130, 0, 1134, 1133, 3062, 1090, 3062, 0, 1170, 1171, 1091, 3062, 1127, 1126, 1136, 1135, 1137, 1120, 1121, 1122, 1123, 1124, 1125, 1131, 1143, 1138, 1139, 1140, 1128, 1141, 1142, 1169, 0, 2966, 2965, 2961, 0, 2895, 0, 2898, 2909, 0, 0, 0, 0, 0, 3062, 0, 0, 2873, 3062, 0, 0, 2443, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 3062, 2334, 0, 2393, 3062, 0, 0, 0, 0, 431, 356, 418, 443, 0, 0, 172, 175, 2395, 0, 3062, 0, 813, 0, 811, 0, 817, 0, 815, 2434, 2450, 2398, 3010, 0, 3062, 0, 3082, 3099, 3100, 3091, 3089, 3088, 3130, 3090, 3096, 3078, 0, 0, 3098, 3074, 3079, 3077, 0, 0, 3072, 3075, 3095, 3062, 3092, 3093, 3076, 0, 0, 1175, 0, 3110, 3105, 3107, 553, 0, 924, 0, 2376, 2377, 2378, 522, 0, 329, 332, 0, 3062, 504, 0, 503, 1077, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 1186, 0, 489, 0, 595, 0, 2346, 0, 2348, 0, 3062, 618, 3062, 635, 634, 0, 0, 0, 2493, 772, 3062, 0, 3062, 0, 773, 0, 3062, 0, 0, 0, 2379, 0, 2356, 2369, 2372, 0, 3063, 597, 0, 734, 0, 660, 0, 3062, 0, 3062, 0, 620, 0, 646, 1063, 3062, 0, 655, 0, 2362, 0, 636, 3062, 0, 0, 3062, 0, 0, 3062, 591, 2386, 602, 0, 593, 2386, 3062, 3062, 3062, 3062, 728, 799, 3062, 1035, 1048, 1033, 1031, 1032, 1249, 0, 0, 1075, 1076, 1248, 1034, 1045, 1046, 0, 1050, 1049, 3062, 3062, 0, 1086, 1087, 3062, 1043, 1042, 1052, 1051, 1053, 1036, 1037, 1038, 1039, 1040, 1041, 1047, 1059, 1054, 1055, 1056, 1044, 1057, 1058, 1085, 3062, 0, 0, 3062, 3062, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 611, 2374, 559, 856, 868, 868, 354, 266, 0, 1289, 3062, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 0, 1322, 1317, 1318, 0, 0, 0, 3062, 3062, 759, 0, 999, 797, 0, 3062, 979, 0, 3062, 3062, 3062, 1007, 3062, 980, 1000, 3123, 3114, 0, 0, 0, 3116, 0, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2543, 3062, 3062, 3062, 1226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2608, 0, 0, 3062, 3062, 1302, 1296, 1310, 0, 2580, 2593, 2578, 2576, 2577, 1277, 2620, 2621, 1276, 2579, 2590, 2591, 0, 2595, 2594, 2545, 3062, 2534, 2533, 3062, 2547, 2631, 2632, 2546, 2530, 2532, 2550, 2529, 2531, 2551, 3062, 2588, 2587, 2597, 2596, 2598, 2581, 2582, 2583, 2584, 2585, 2586, 2592, 2604, 2599, 2600, 2601, 2589, 2602, 2603, 2630, 2517, 2518, 2514, 2515, 2541, 790, 363, 523, 564, 0, 565, 573, 562, 574, 65, 94, 73, 0, 300, 0, 300, 513, 0, 0, 300, 0, 300, 0, 300, 3062, 0, 0, 2393, 3062, 3062, 384, 3062, 0, 0, 425, 0, 416, 441, 0, 0, 0, 1675, 1678, 2006, 2008, 0, 1345, 1347, 0, 0, 226, 222, 52, 0, 151, 152, 0, 154, 157, 105, 131, 3062, 1344, 196, 3062, 1300, 1293, 1308, 3062, 3062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 782, 937, 2859, 993, 0, 1003, 0, 1175, 0, 2857, 0, 3062, 3062, 3062, 3062, 3062, 0, 3062, 3062, 2671, 3062, 3062, 3062, 3062, 2635, 3062, 3062, 3062, 3062, 3062, 2636, 2745, 3062, 2853, 2854, 3, 0, 3062, 3062, 0, 0, 0, 2860, 2863, 2864, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3062, 2765, 3062, 2839, 3062, 3, 0, 3062, 0, 0, 0, 3062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3062, 588, 586, 584, 1161, 3062, 3, 0, 3062, 0, 0, 1146, 0, 2958, 2909, 2899, 3062, 0, 3062, 2886, 2937, 0, 2929, 2930, 3062, 2893, 2893, 3062, 2893, 0, 0, 0, 0, 0, 486, 0, 0, 0, 3062, 0, 0, 3062, 0, 0, 3033, 0, 0, 3062, 3062, 356, 430, 356, 174, 356, 0, 0, 0, 0, 0, 0, 2411, 2416, 2416, 0, 2399, 2400, 0, 2404, 3048, 3052, 3083, 0, 0, 0, 3097, 0, 3080, 3081, 2386, 3073, 838, 340, 352, 338, 0, 339, 3084, 3085, 3094, 0, 3062, 3062, 3062, 0, 548, 559, 0, 554, 555, 553, 0, 544, 546, 553, 0, 3062, 0, 854, 1076, 3062, 496, 3062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3062, 0, 3062, 0, 0, 3062, 2341, 3062, 2344, 0, 0, 3062, 0, 0, 0, 0, 778, 0, 3062, 771, 3062, 0, 0, 0, 0, 0, 0, 3062, 2360, 2361, 733, 0, 736, 0, 752, 732, 862, 863, 0, 2973, 3062, 2969, 0, 3062, 0, 993, 0, 0, 0, 3062, 0, 0, 637, 2427, 3, 0, 293, 300, 0, 0, 590, 592, 0, 0, 0, 0, 730, 728, 0, 729, 0, 633, 631, 630, 3062, 0, 0, 1062, 0, 675, 614, 615, 0, 0, 0, 0, 0, 0, 0, 3062, 1321, 988, 3062, 1325, 3062, 3062, 3062, 1177, 3062, 3062, 764, 763, 1298, 998, 893, 0, 3062, 3127, 3128, 3125, 745, 3121, 3062, 3062, 3117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1313, 0, 0, 3062, 3062, 3062, 3062, 2548, 3062, 3062, 3062, 2512, 3062, 3062, 3062, 3062, 3062, 2513, 2622, 3062, 3, 0, 3062, 3062, 0, 0, 0, 268, 563, 567, 566, 3062, 101, 0, 301, 0, 513, 88, 0, 300, 0, 513, 0, 513, 0, 513, 408, 392, 3062, 3062, 406, 0, 534, 535, 3062, 0, 424, 0, 0, 2004, 1673, 229, 224, 0, 0, 153, 156, 0, 0, 1311, 0, 0, 2473, 819, 2687, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 3062, 3062, 489, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2667, 3062, 0, 0, 2658, 2868, 2647, 3062, 2501, 0, 0, 2504, 3062, 2867, 2650, 0, 2502, 2644, 2659, 2660, 2661, 2648, 2651, 2645, 0, 0, 2748, 0, 2728, 2756, 2729, 2749, 2781, 2782, 2783, 2784, 2785, 2786, 2787, 2788, 2789, 2790, 2791, 2792, 2761, 0, 0, 0, 0, 0, 2842, 2822, 2850, 2823, 2843, 888, 2386, 3062, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 0, 0, 0, 0, 1164, 1144, 1172, 1145, 1165, 0, 2910, 2876, 0, 0, 0, 2935, 2941, 2942, 0, 0, 0, 2940, 2943, 0, 2885, 0, 0, 2893, 0, 0, 3062, 0, 0, 3062, 400, 3062, 0, 0, 356, 451, 3062, 478, 0, 0, 0, 0, 0, 0, 3034, 3062, 0, 457, 2386, 356, 2386, 356, 453, 423, 422, 0, 814, 812, 818, 816, 0, 0, 0, 2422, 2420, 2418, 2424, 2408, 2417, 2409, 2386, 2401, 2414, 0, 2412, 836, 246, 837, 3087, 0, 0, 0, 3041, 350, 0, 0, 3111, 0, 0, 553, 538, 0, 552, 556, 0, 0, 541, 547, 908, 925, 330, 0, 0, 3062, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 0, 0, 0, 720, 2440, 0, 2441, 2442, 2347, 2349, 2342, 2343, 0, 3062, 2448, 0, 3062, 0, 779, 780, 778, 774, 777, 619, 2358, 0, 2357, 2368, 644, 2373, 0, 926, 737, 735, 2972, 868, 2967, 2970, 0, 3062, 639, 0, 3062, 654, 656, 2363, 640, 0, 0, 0, 231, 513, 233, 1080, 723, 724, 725, 0, 0, 0, 731, 0, 0, 727, 621, 797, 1060, 1088, 1061, 1081, 616, 658, 0, 824, 832, 286, 997, 1323, 3062, 0, 0, 0, 0, 0, 0, 892, 894, 0, 3120, 3118, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2574, 2575, 2544, 1314, 0, 0, 2535, 2524, 2527, 0, 2521, 2536, 2537, 2538, 2525, 2528, 2522, 0, 0, 2625, 0, 2605, 2633, 2606, 2626, 3062, 575, 0, 102, 0, 300, 300, 76, 3062, 0, 513, 101, 85, 101, 84, 300, 75, 409, 0, 447, 3062, 476, 0, 407, 0, 2386, 0, 2386, 0, 449, 421, 420, 0, 227, 223, 0, 0, 0, 0, 0, 160, 166, 0, 167, 3062, 1312, 714, 0, 995, 3062, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 2858, 2737, 3062, 1207, 3062, 3062, 3062, 2508, 3062, 3062, 2500, 2495, 2672, 3062, 3062, 2747, 3062, 2831, 3062, 1197, 3062, 3062, 2766, 3062, 2841, 2874, 0, 1153, 3062, 1217, 3062, 3062, 3062, 1163, 0, 2911, 3062, 3062, 2893, 2893, 2894, 0, 2936, 0, 2938, 2931, 2932, 2887, 2928, 0, 2888, 3062, 2893, 2451, 2445, 487, 488, 2452, 2446, 356, 485, 452, 479, 356, 2453, 3062, 0, 2454, 2447, 458, 459, 435, 2386, 433, 2386, 356, 2457, 2405, 2406, 2402, 2423, 2421, 2419, 2416, 2389, 3062, 0, 2403, 0, 3086, 0, 0, 0, 349, 342, 3102, 3101, 3108, 3062, 557, 549, 550, 551, 545, 3062, 497, 3062, 0, 1069, 3062, 1187, 3062, 3062, 722, 0, 617, 0, 0, 3062, 775, 0, 3062, 0, 0, 3062, 0, 2380, 3062, 3062, 868, 0, 0, 0, 0, 0, 0, 3003, 0, 2976, 2978, 2996, 2981, 2993, 2995, 2968, 627, 994, 492, 1079, 294, 295, 624, 0, 740, 623, 0, 0, 0, 622, 3040, 0, 1326, 1327, 1328, 1178, 1179, 1180, 748, 3062, 2614, 3062, 1227, 3062, 3062, 2549, 3062, 2624, 3062, 568, 0, 0, 3062, 513, 0, 513, 513, 93, 101, 86, 0, 3062, 0, 3062, 513, 0, 482, 448, 477, 0, 459, 429, 2386, 427, 2386, 0, 225, 0, 163, 165, 171, 170, 164, 158, 0, 162, 1283, 3062, 3062, 663, 3062, 0, 0, 0, 0, 2506, 2505, 2503, 0, 2639, 2662, 3062, 0, 0, 0, 0, 1174, 3062, 0, 0, 0, 0, 3062, 2893, 3062, 2915, 749, 2925, 0, 2919, 2921, 0, 2893, 2907, 0, 2905, 0, 2939, 0, 2891, 2893, 0, 484, 483, 0, 3062, 0, 0, 0, 0, 434, 432, 454, 0, 2410, 2415, 2413, 868, 835, 3103, 3104, 351, 0, 505, 0, 1078, 3062, 0, 0, 0, 721, 643, 3062, 776, 642, 781, 0, 2359, 0, 0, 787, 0, 0, 0, 2975, 2987, 2991, 2992, 0, 2989, 3062, 3062, 0, 3062, 1303, 2971, 0, 3062, 2994, 0, 3062, 0, 739, 0, 742, 0, 738, 3062, 989, 3062, 3062, 3119, 3062, 0, 0, 0, 0, 2539, 572, 569, 3062, 576, 83, 101, 87, 78, 0, 3062, 513, 90, 513, 89, 77, 481, 480, 0, 428, 426, 450, 3062, 161, 0, 0, 1208, 1209, 1210, 2509, 2507, 2746, 0, 1198, 1199, 1200, 2840, 0, 1218, 1219, 1220, 1162, 0, 2906, 0, 3062, 2917, 3062, 3062, 3062, 3062, 2893, 2908, 3062, 0, 0, 0, 0, 2893, 2933, 0, 2890, 3062, 0, 472, 473, 356, 3062, 474, 475, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 3062, 2407, 0, 558, 498, 0, 1188, 1189, 1190, 2492, 641, 2381, 0, 2384, 2382, 2383, 2974, 2988, 2990, 0, 0, 3062, 0, 0, 0, 2977, 2984, 3062, 2985, 2979, 628, 296, 625, 743, 741, 0, 0, 0, 0, 1228, 1229, 1230, 2623, 0, 0, 3062, 513, 91, 80, 79, 0, 168, 0, 715, 3062, 2738, 3062, 3062, 3062, 2832, 3062, 3062, 3062, 1154, 3062, 3062, 2893, 3062, 2916, 2920, 2926, 0, 0, 0, 0, 2901, 0, 0, 0, 0, 0, 3062, 0, 0, 2944, 2889, 0, 3062, 456, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 0, 3062, 1070, 3062, 3062, 788, 3062, 0, 0, 2982, 3001, 0, 3004, 0, 2980, 990, 991, 992, 3062, 2615, 3062, 3062, 570, 3062, 513, 92, 81, 455, 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2902, 0, 3062, 2922, 2924, 2923, 3062, 2918, 0, 3062, 2953, 2954, 0, 0, 2952, 2951, 0, 0, 834, 0, 0, 0, 0, 0, 3062, 3005, 2997, 0, 3002, 2999, 2986, 0, 0, 0, 0, 82, 2739, 2740, 2741, 2833, 2834, 2835, 1155, 1156, 1157, 3062, 750, 2927, 0, 0, 0, 0, 2945, 2947, 2456, 0, 1071, 1072, 1073, 0, 0, 0, 3000, 3006, 0, 0, 2616, 2617, 2618, 571, 0, 2893, 2948, 2950, 2955, 0, 2455, 0, 3008, 0, 2998, 2983, 2893, 2903, 0, 3062, 3009, 3007, 2904, 3062, 0, 0, 2946, 2949 }; /* YYPGOTO[NTERM-NUM]. */ static const int yypgoto[] = { -4523, -1245, -3819, -4523, -4523, 3196, -607, -4523, -4523, -4523, -4523, 170, 276, -4523, -36, 3244, 2931, -4523, -4523, -549, 3246, 1548, -29, 458, -4523, -4523, 1087, 1278, -4523, 1946, 1089, -4523, -4523, -4522, -1304, -547, 64, -4523, -4523, 1893, -565, -4523, -4523, -4523, 2904, -542, 67, -4523, -4523, 1883, -4523, -4523, -4523, -4523, -4523, -683, -4523, -4523, -4523, -1737, -1503, -1497, -389, -4523, -1951, -492, -450, -620, -619, -4523, -4523, -4523, -4523, -4523, -4523, 25, -4523, -4523, -494, -521, -541, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 2232, 13737, 14689, 172, 248, 29435, -313, -76, 6331, -4523, -4523, -4523, -681, -4523, 1976, -1043, -4523, -775, 2794, -394, -1377, -4523, -80, -223, -459, -4523, -1745, -4523, 3079, -4523, -4523, -4523, 2293, -4523, -4523, -304, -378, -4523, -4523, -4523, -4523, -4523, -4523, -4523, 15, -69, -283, -4523, -4523, 1943, -4523, -538, -557, -439, -421, -288, -611, -4523, 325, -4523, -186, 2771, -522, -4523, -4472, -4371, -4230, -4019, -2161, -1725, -2153, -1724, -4222, -4011, -588, -4523, -585, -4523, 1091, -1702, -4523, -4523, -1460, -1234, -4523, -1225, -1905, -1334, -582, 2294, -4053, -4045, -4523, 2831, -4523, -437, -311, -145, 2980, -4523, -123, -1941, -4523, 2792, -401, 3232, -4523, -617, 54, -4523, -4523, -4523, -4523, -4523, -4523, -1283, -4523, -4523, -1276, -4523, -2192, -4523, -853, -3565, -4523, -4523, -4523, -589, -148, -379, -664, 1464, -4523, -4523, -4523, -4523, 2235, -4523, -958, -935, -2942, 1337, -4523, -4523, -3183, 165, -4523, -4523, -4523, -4523, -1248, 1355, -4523, -3857, -4523, -4523, -4523, -942, -4523, 2278, -4523, -1986, -474, -1158, -1856, -1852, -388, -4523, 2154, -4523, 2155, 23344, -4523, -4523, -888, -1307, -4523, -4098, -4523, 2356, 1397, 24575, -4523, 3949, -256, -4523, 3002, -162, -543, -128, -183, -498, -4523, -810, 327, 538, -105, 1624, -171, -81, 340, 267, -263, -4523, -4523, 2241, -276, -4523, -4523, 1699, -4523, -4523, 2478, -196, -1446, -960, -4523, -4523, 2991, -4523, -358, -4523, -4523, 63, 18756, 881, 5984, -3162, 3819, -4523, -4523, -4523, -4523, -4523, -4523, -364, 5605, 2549, 2609, 2487, 2108, -139, -4523, -506, -295, -1774, -480, -4523, -4523, -4523, 126, 1246, 127, 1250, 132, 1251, 28204, 2773, 2201, -4523, -1143, -4523, 1951, -374, -4523, -4523, -4523, -2739, -4523, -4523, -2132, -4523, -4523, 496, -5, 116, -48, -944, -4523, -1603, 20, 1306, -4523, -4523, -968, -30, -3542, 3069, -851, 10149, -852, 33064, 53, -329, -4523, -101, -4523, -4523, -762, -4523, -4523, -4523, -1512, -4037, -4347, 1408, -491, -230, -4523, -4523, -4523, -4523, 446, 23, -4523, -576, 184, -4523, -4523, 1116, -4523, -4523, 1948, -4523, -4523, -4523, -4523, 2890, -4523, -4523, -4523, -4523, -4523, -4523, -2118, 2582, -1054, -252, -4523, -1424, -1187, 1247, -403, 23038, -3204, -1038, -671, 451, -1300, -1253, -455, -4523, -4523, -178, -4523, -3954, -31, -4523, 2476, -895, -4523, -1722, -3434, -4523, 1654, -687, -1706, -3423, -1436, -1790, -1783, -4523, -3179, -4523, -100, -4523, -3427, -1118, -4523, -1109, -4523, -4523, -4224, -1959, 2554, -4523, 1672, 2503, -4523, -826, -4102, -4523, -4523, -1701, -4523, -4523, -1826, -4523, -1687, -4523, -1520, -1999, -3720, -4523, -1957, -204, -4523, -4523, -4523, -4523, -331, -4523, -4523, -4523, -152, -4523, -4523, -4523, -4523, -4523, -4523, -119, -933, -4523, 11622, 31, -41, 469, 14321, 4588, -4523, -4523, -4523, -4523, -4523, -146, -4523, -4523, -131, -4523, -149, -4523, -627, -4523, 1618, -732, -730, -4523, -860, -1513, -2918, -361, -4523, -1732 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 1178, 3784, 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, 3197, 4739, 1429, 67, 68, 1373, 1374, 1375, 2203, 69, 368, 369, 370, 70, 71, 1387, 1388, 1389, 1390, 1391, 1378, 1379, 3205, 3206, 4389, 3207, 4776, 4777, 4778, 5006, 1344, 1781, 1782, 72, 73, 74, 75, 1316, 76, 77, 78, 724, 1410, 1324, 79, 80, 1325, 1345, 1346, 4386, 4769, 4385, 3947, 1070, 3676, 3677, 420, 421, 422, 254, 262, 423, 424, 84, 527, 575, 1303, 1996, 781, 86, 1131, 1132, 3759, 265, 266, 4249, 4250, 3228, 470, 471, 472, 1133, 1134, 207, 193, 87, 162, 534, 535, 995, 1824, 1822, 88, 3564, 89, 4151, 90, 4152, 91, 92, 257, 782, 93, 1347, 1348, 1349, 1350, 2204, 1352, 1353, 1354, 1355, 1356, 3924, 1357, 521, 138, 306, 1358, 950, 4766, 4548, 2205, 1775, 2206, 1776, 2207, 1777, 2208, 1778, 1359, 951, 1360, 952, 3522, 5065, 4757, 4532, 4758, 4533, 4101, 4102, 1889, 1415, 1074, 693, 3596, 3597, 235, 236, 237, 477, 483, 484, 327, 452, 473, 513, 514, 515, 229, 230, 2196, 2197, 1361, 523, 3583, 524, 3584, 308, 4168, 4169, 4170, 4161, 4162, 4163, 4164, 4165, 4166, 1305, 1306, 2173, 2174, 3906, 1075, 891, 892, 1076, 1077, 1078, 1079, 1080, 1907, 1908, 1081, 1082, 1083, 1084, 3982, 1085, 427, 1086, 828, 783, 893, 1278, 487, 3230, 1087, 4616, 1920, 3689, 4674, 4262, 4671, 4263, 4672, 2049, 2050, 2051, 5042, 1871, 2028, 616, 617, 618, 619, 428, 3636, 3637, 3638, 4629, 4630, 3984, 5096, 429, 1090, 430, 1092, 431, 1362, 4394, 1122, 95, 4571, 1124, 96, 4573, 4574, 5007, 153, 97, 378, 1989, 345, 346, 556, 563, 1094, 4232, 1095, 1096, 495, 496, 854, 855, 856, 857, 858, 580, 1193, 2041, 1194, 98, 330, 356, 99, 139, 3586, 3255, 532, 1098, 896, 433, 1099, 831, 786, 897, 1281, 3988, 1100, 434, 1101, 832, 787, 898, 1282, 1138, 3219, 596, 1139, 1419, 1283, 2035, 1420, 1284, 1421, 1285, 1422, 1286, 1423, 1287, 436, 1159, 2017, 3774, 597, 309, 721, 480, 481, 1363, 3195, 3196, 1364, 2539, 2540, 1365, 2866, 2867, 437, 1744, 1431, 3622, 3621, 3623, 1859, 3645, 3668, 142, 1728, 143, 3646, 144, 3647, 438, 3648, 439, 698, 1367, 958, 1445, 4131, 4132, 4133, 4558, 4134, 4569, 4570, 4563, 4564, 1106, 100, 1368, 961, 1107, 1108, 1109, 1760, 1110, 1111, 963, 1112, 101, 102, 272, 492, 732, 733, 734, 1432, 735, 792, 793, 103, 104, 274, 1439, 1440, 838, 3631, 794, 795, 1446, 4432, 4433, 1293, 3632, 1593, 798, 3990, 3991, 1562, 3339, 3260, 3340, 105, 106, 276, 107, 108, 5043, 915, 916, 917, 918, 919, 3496, 920, 1740, 1741, 4085, 1742, 5044, 4837, 5045, 5046, 5047, 5285, 921, 1745, 4843, 1746, 4090, 4511, 4512, 4513, 4514, 5192, 5366, 282, 907, 908, 1729, 1114, 4234, 4235, 4236, 4935, 4936, 4937, 5243, 4938, 5105, 5106, 4939, 4940, 5324, 4941, 5378, 5379, 109, 110, 284, 967, 968, 1780, 970, 971, 1115, 111, 112, 113, 506, 975, 1803, 694, 440, 972, 349, 441, 288, 289, 290, 442, 443, 210, 118, 181, 3567, 3568, 3569, 3570, 3571, 3572, 3573, 3574, 3575, 980, 1807, 1808, 3579, 3580, 2054, 1233, 1234, 2047, 2048, 116, 117 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { 140, 498, 850, 1180, 353, 372, 1495, 281, 1277, 1277, 373, 313, 713, 959, 476, 324, 1739, 713, 3656, 2184, 2022, 270, 1123, 3497, 615, 141, 371, 3548, 584, 239, 222, 3490, 222, 712, 1069, 222, 374, 325, 3331, 715, 328, 1804, 268, 1414, 205, 2045, 3936, 3934, 209, 3526, 426, 3758, 3528, 728, 2065, 348, 348, 3735, 3738, 435, 3563, 1861, 4087, 1067, 3289, 947, 706, 1125, 3983, 231, 231, 4091, 238, 3576, 3804, 348, 348, 320, 3222, 172, 1314, 1315, 173, 948, 1858, 267, 1158, 1158, 1993, 3987, 381, 839, 1887, 4565, 1396, 260, 1339, 1371, 1386, 614, 1113, 1874, 4549, 252, 2110, 1068, 318, 4222, 4223, 482, 4550, 522, 4631, 379, 379, 945, 316, 1398, 319, 1809, 1399, 1909, 1909, 3410, 4597, 152, 946, 155, 163, 1402, 4504, 325, 4649, 310, 4598, 222, 222, 222, 180, 1376, 325, 140, 1416, 140, 1910, 1910, 955, 1381, 190, 984, 4767, 501, 191, 4039, 1341, 3374, 1342, 1372, 4768, 4858, 1924, 1343, 1377, 1380, 1392, 1351, 512, 717, 1639, 347, 347, 3268, 516, 969, 3983, 957, 3229, 1073, 317, 363, 456, 365, 1382, 1397, 160, 461, 372, 490, 4278, 347, 347, 373, 307, 1297, 569, 3987, 551, 1097, 4447, 328, 119, 533, 543, 454, 3256, 468, 3484, 371, 1155, 4875, 4876, 637, 602, 604, 606, 608, 949, 374, 325, 3269, 277, 348, 5180, 348, 348, 2039, 4987, 4471, 4989, 5361, 218, 3495, -786, 3275, 278, -786, 632, 1426, 278, 1453, 634, 796, 3450, 5135, 637, 638, 119, 3277, 953, 510, 5051, 119, 192, 261, 263, 4495, 119, 1731, 1205, 550, 161, 552, 553, 517, 519, 3787, 1393, 149, 2, 150, 151, 992, 3939, 500, 960, 311, 62, 312, 1003, 1156, 1156, 331, 3495, 4993, 1394, 1121, 1510, 993, 140, 140, 140, 149, 140, 150, 151, 359, 119, 1688, 361, 1318, 966, 364, 219, 366, 1576, 375, 1166, 119, 1167, 140, 1168, 156, 1169, 1404, 3495, 444, 445, 141, 447, 448, 449, 954, 328, 3595, 637, 94, 965, 255, 255, 468, 321, 322, 62, 5291, 568, 347, 62, 347, 347, 3944, 4618, 905, 3363, 174, 175, 560, 341, 341, 179, 206, 4626, 1975, 3495, 157, 182, 325, 187, 567, 189, 533, 119, 533, 1688, 2198, 376, 1665, 2055, -792, 5364, 684, 194, 195, 160, 5296, 5297, 560, 906, 233, 528, 3595, 4021, 94, 317, 2191, 922, 4656, 531, 459, 1900, 4, 140, 512, 791, 836, 1009, 1564, 637, 718, 1732, 149, 600, 150, 151, 1570, 234, 4807, 119, 3941, 24, 5288, 1484, 395, 478, 119, 5188, 589, 220, 1395, 5189, 570, 1292, 1292, 342, 342, 1485, 688, 239, 3510, 533, 4660, 333, 426, 348, 3440, 1594, 334, 674, 1640, 677, 1486, 268, 5353, 536, 959, 1309, 539, 4160, 3733, 161, 1400, 518, 647, 5190, 426, 279, 426, 3946, 426, 279, 426, 594, 2040, 231, 5143, 4, 4049, -3112, 1769, 4808, 238, 1002, -3112, 331, 317, 566, 620, 469, 959, 412, 1890, 3521, 571, 1770, 267, 647, 3701, 5059, 196, 1658, 412, 5060, 859, -3112, 62, 5181, 947, 179, 189, 914, 956, 280, 5181, 5069, 664, 280, 358, 4637, 122, 5063, 5064, 1843, 4549, 122, 948, 685, 511, 310, 3643, 119, 4550, 5150, 668, 669, 4730, 5151, 4767, 1532, 962, 54, 947, 5155, 710, 3624, 4768, 4631, 5292, 40, 1700, 1126, 1500, 4077, 796, 4360, 1992, 412, 945, 347, 948, 154, 4649, 1103, 468, 1761, 1120, 154, 154, 946, 354, 197, 154, 1888, 1787, 681, 1941, 647, 154, 4556, 154, 3643, 154, 285, 1291, 1291, 531, 1069, 307, 955, 1277, 4, 945, 722, 154, 154, 664, 1425, 719, 720, 1067, 1067, 412, 946, 1921, 261, 263, 1922, 4557, 491, 1880, 4587, 233, 469, 1757, 1700, 1067, 1170, 957, 325, 1171, 198, 206, 955, 40, 1734, 507, 4321, 5296, 5297, 904, 5258, 1941, 564, 1717, 2163, 976, 1113, 1113, 234, 1277, 3495, 1068, 1068, 723, 1976, 1977, 1277, 3983, 647, 1800, 1958, 957, 1113, 986, 2187, 3892, 1766, 1068, 949, 1837, 577, 188, 660, -357, 3675, 208, 5191, 2020, 3987, 355, 996, 997, 119, 1767, 119, 729, 2, -3062, 4851, 4852, 851, 4, 3850, 4855, 4856, 1062, 4636, 4638, 1129, 1130, 953, 462, 949, -254, 1820, 3698, 4772, 557, 1735, 1736, 964, 5049, 1307, 1308, 791, 1881, 1758, 231, 211, 836, 1366, 1366, 1401, 1073, 1073, 119, 960, 836, 1646, 154, 154, 412, 1487, 1683, 953, 1488, 3736, 1685, 154, 1073, 576, 1688, 1689, 1097, 1097, 5215, 1503, 40, 962, 962, 325, 1430, 966, 119, 1757, 268, 287, 836, 836, 1097, 960, 836, 2072, 1339, 1009, 4, 852, 1790, 1792, 1794, 1796, 39, 119, 954, 668, 669, 1766, 227, 965, 509, 178, 395, 281, 1476, 4767, -257, 966, -357, 4767, 1371, 1503, 1489, 4768, 1767, 4767, -257, 4768, -257, 267, 1396, 3824, 1653, 4768, 1386, 1757, 1478, 615, 954, 509, 3831, 2032, 119, 965, 4269, 5342, 4142, 674, 677, 1811, 922, 4437, 1341, 1398, 1342, 1302, 1399, 24, 554, 1343, 154, 1452, 1376, 1351, 1580, 1402, 1310, 555, 1753, 40, 1381, 2168, 3983, 3901, 5092, 469, 3823, 154, 1758, 3203, 1372, 228, 5302, 1416, 233, 1377, 1380, 119, 3832, 674, 677, 4549, 4469, 3987, 119, 4549, 2, 5071, 1739, 4550, 1392, 2194, 5080, 4550, 859, 1382, 3659, 4549, 3837, 561, 1798, 234, 5081, 3983, 614, 4550, 2195, 1645, 562, 1397, 119, 119, 4158, 325, 3204, 3775, 1575, 1671, 1758, 119, 3911, 383, 119, 384, 3987, 3918, 3920, 925, 1759, 927, 964, 964, 964, 40, 2164, 1747, 1639, 1748, 4159, 1411, 674, 677, 1639, 140, 140, 5413, 3917, 5226, 1733, 1738, 1437, 1888, 1749, 3620, 914, 930, 1891, 3669, 2177, 5227, 1754, 1734, 1103, 3639, 3673, 1639, 1639, 54, 1727, 1727, 1103, 119, 1779, 1783, 910, 1802, 1103, 1664, 1762, 3858, 271, 3860, 689, 911, 4346, 2, 3866, 690, 691, 119, 1809, 269, 1393, 3681, 1810, 5112, 1129, 1130, 1812, 169, 962, 692, 1700, 233, -1236, 5113, 956, 4929, 5293, 1926, 1394, 27, 1639, 1928, 275, 1412, 3682, 3595, 1932, 140, 140, 1717, 119, 1813, 2, 119, 24, 219, 4930, 170, 234, 1163, 1292, 632, 962, 1735, 1736, 634, 635, 286, 636, 637, 638, 672, -257, 141, 348, 1164, 348, 632, 485, 1979, 486, 634, 635, 323, 636, 637, 638, 255, 1987, 119, 287, 2, 333, 940, 140, 140, 1103, 357, 3983, 1683, 1650, 1103, 1172, 1685, 1686, 4767, 1687, 1688, 1689, 119, 1292, 140, 379, 4768, 291, 1878, 1765, 1292, 1173, 3987, 1727, 1815, 4931, 1816, 1817, 1818, 140, 499, 1894, 149, 3261, 150, 151, 311, 412, 312, 3265, 2015, 164, 2016, 1103, 1103, 165, 5368, 5369, 1103, 1103, 3272, 1103, 119, 1842, 1727, 455, 24, 4845, 1901, 166, 4848, 5178, 4844, 311, 1103, 312, -258, 844, 1174, 292, 1009, 255, 1980, 4932, 1395, 1103, -258, 54, -258, 1651, 668, 669, 536, 4933, 1175, 674, 677, 395, 1737, 4834, 3491, 347, 964, 347, 3302, 24, 1991, 1129, 1130, 3308, 4721, 1993, 3311, 1734, 1009, 119, 1400, 4835, 1926, 1892, 3303, 4088, 1928, 1929, 1291, 1930, 3595, 1932, 1009, 1163, 4089, 3983, -247, 1893, 293, 119, 964, 850, -255, 845, 846, 540, 3343, 541, 24, 3253, 323, 119, -255, 2, -255, 1757, 3987, 294, 1853, 1984, 1985, 1829, 4836, 1829, 3360, 1829, 1829, 1416, 1829, 4549, 1829, 1829, 540, 847, 541, 4929, 1997, 4550, 1291, 2042, 1757, 836, 3799, 1846, 4893, 1291, 3560, 991, 295, 848, 54, 1735, 1736, 979, 3382, 1405, 4930, 3385, -1236, 3388, 3389, 3390, 1941, 1757, 3417, 120, 1848, 3591, 273, 192, 1829, 1829, 1829, 3386, 283, 3592, 5284, 5284, 5284, 4896, 121, 1958, 3227, 3412, 486, 620, 647, 4897, 3983, 54, -1236, -1236, -1236, -1236, -1236, -1236, -1236, -1236, -1236, -1236, -1236, 4615, 647, 4615, 4619, 664, 3217, 2092, 1758, 3987, 1888, 412, 1009, 4615, 3221, 1916, 1917, 1918, 661, 662, 663, 664, 4931, 4834, 1700, 4640, 689, 122, 54, 2, 959, 690, 691, 1758, 959, 1163, 325, 594, 674, 677, 3236, 5039, 3690, 1717, 341, 1833, 450, 2171, 4615, 314, 533, 3359, 451, 24, 1496, 1497, 1758, 2071, 3462, 231, 1163, 3561, 325, 4022, 156, 255, 2188, 925, 1766, 927, 140, 1103, 4119, 1737, 140, 5355, 3434, 2209, -258, 4559, 4933, 1919, 947, 119, 119, 1767, 947, 474, 315, 5367, 412, 1366, 475, 1759, 3532, 930, -1235, 3233, 2189, 1727, 948, 672, 5235, 3562, 948, 962, 157, 1163, 2068, 836, 3641, 630, 323, 3208, 631, 836, 1762, 1366, 3198, 962, 342, 1763, -321, 3614, 1768, 3642, 836, 5094, 1890, 1890, 1941, 1401, 945, 1590, 1591, 326, 945, 5236, 4099, 119, -255, 4104, 2163, 946, 4107, 962, 4050, 946, 4560, 1958, 5401, 1683, 3500, 3501, 5402, 1685, 1686, 5404, 1687, 1688, 1689, 5056, 4561, 955, 1067, 4122, 2169, 955, 264, 24, 836, 680, 3643, 54, 119, 836, 2, 323, 836, 119, 909, 172, 329, 119, 173, 2, -3062, 2163, 3791, 3792, 3578, 1277, 957, 5424, 332, 488, 957, 3983, 3486, 3235, 489, 1113, 1383, 3919, 1384, 940, 1068, 1277, 836, 1277, 910, 925, 1163, 927, 1277, 1763, 4379, 360, 3987, 911, 233, 1768, 4078, 2015, 412, 2018, 836, 1926, 3778, 3782, 1385, 1928, 1929, 949, 1930, 3595, 1932, 949, 362, 930, 412, 1639, 3536, 2185, 3538, 3783, 3540, 234, 3542, 377, 1142, 465, 466, 3416, 3793, 382, 836, 912, 913, 836, 233, 836, 836, 836, 5325, 953, 964, 1721, 1722, 953, 3794, 533, 3259, 164, -2877, 325, 446, 176, 1073, 412, 964, 3223, 3259, 2103, 2104, 836, 3795, 234, 1860, 54, 149, 960, 150, 151, 455, 960, 3274, 119, 1097, 2, 3712, 5240, 3796, 3281, 1314, 1315, 964, 457, 488, 149, 154, 150, 151, 3279, -256, 5241, 24, 966, 4114, 2186, 964, 966, 1976, 1977, -256, 24, -256, 4120, 178, 4615, 4615, 188, 3552, 3913, 4615, 4615, 3530, 1163, 954, 5074, 940, 3531, 954, 965, 4865, 4866, 458, 965, 5075, 940, 5380, 3553, 5382, 3821, 5383, 3202, 311, 3488, 312, 460, 3928, 547, 548, 549, 225, 3929, 164, 226, 3338, 3338, 3338, 233, 5195, 120, 463, 3565, 5193, -1235, -1235, -1235, -1235, -1235, -1235, -1235, -1235, -1235, -1235, -1235, 121, 426, 859, 426, 3237, 426, 2180, 426, 3366, 3955, 234, 1700, 467, 3566, 3956, 149, 5414, 150, 151, 3203, 479, 5419, 3909, 4127, 3415, 3344, 4199, 1714, 1715, 1716, 1717, 3657, 4911, 4201, -247, 3658, 3825, 493, 4283, 3921, 3555, 3828, 4200, 497, 255, 3795, 1163, 122, 54, 4202, 3835, 24, 494, 5431, 4284, 5433, 3793, 54, 5434, 5325, 3795, 4308, 4424, 540, 3204, 541, 3556, 4139, 1129, 1130, 502, 4196, 4451, 1163, 119, 5382, 4452, 4128, 4129, 335, 336, 337, 503, 3487, 4270, 3863, 22, 1941, 156, 4467, 3869, 3558, 504, 3872, 3793, 1738, 3983, 3494, 412, 3795, 797, 3864, 1163, 1955, 1956, 1957, 1958, 4130, 120, 3506, 4474, 4212, 4507, 3793, 32, 4475, 4213, 3987, 4492, 3898, 5299, 4525, 3795, 121, 3518, 1734, 4526, 3523, 1779, 4498, 157, 36, 1779, 3936, 3559, 1318, 505, 149, 4499, 150, 151, 668, 669, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 3421, 119, 962, 537, 344, 352, 962, 3528, 1163, 3503, -256, 4201, -539, 4585, 4201, 3563, 122, 54, 4586, 3657, 1891, 1891, 511, 4227, 4612, 851, 3544, 4622, 4141, 3563, 4623, 4143, 3793, 119, 3563, 2, 16, 3657, 17, 4840, 544, 4806, 3576, 3795, 1163, 1735, 1736, 149, 4679, 150, 151, 587, 1734, 588, 5201, 140, 140, 426, 3547, 4680, 4716, 1292, 3793, 4591, 3795, 140, 3760, 3644, 4592, 3499, 1103, 3795, 3795, 5179, 3660, 512, 4661, 1292, 4734, 1292, 4735, 4662, 4347, 140, 1292, 545, 412, 5185, 5280, 5446, 140, 3519, 3593, 3962, 5179, 1830, 540, 1835, 541, 1838, 1839, 852, 1840, 255, 1844, 1845, 3533, 412, 1727, 1103, 5447, 1103, 4369, 3419, 4370, 1727, 1682, 16, 4661, 17, 3420, 1408, 558, 4664, 1409, 1103, 1735, 1736, 4410, 1496, 1497, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, 488, 4884, 1884, 1885, 1886, 4687, 4885, 559, 1590, 1591, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, 964, 488, 3679, 4349, 964, 3916, 4892, 3683, 3618, 4158, 572, 3657, 24, 5087, 4895, 4861, 3795, 3752, 4590, 3657, 4955, 836, 4593, 4996, 3545, 3601, 836, 3651, 3795, 632, 5104, 1447, 5122, 634, 635, 836, 636, 637, 638, 1458, 3657, 639, 573, 640, 5415, 1465, 1466, 5286, 5287, 1291, 123, 124, 3341, 3342, 1473, 1475, 125, 126, 3517, 5444, 150, 151, 127, 5445, 4203, 1291, 4204, 1291, 1427, 120, 836, 1428, 1291, 412, 1681, 836, 1962, 1682, 836, 1998, 578, 1501, 1999, 797, 121, -253, 2014, 128, 129, 1682, 671, 2024, 579, 644, 1999, 3644, 2025, 2026, 2027, 1999, 1999, 1999, 2175, 2179, 836, 2176, 2180, 601, 130, 131, 132, 133, 134, 135, 136, 137, 1721, 1722, 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431, 3432, 628, 4123, 122, 54, 1999, 1829, 1829, 1829, 1829, 1829, 603, 1829, 1829, 1829, 1829, 1829, 1829, 645, 3915, 1829, 605, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 1829, 607, 1829, 5202, 5203, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, 2045, 3259, 119, 4124, 2, 4431, 1999, 412, 4125, 4176, 3259, 1999, 4126, 4172, 3805, 1999, 4173, 4178, 679, 4242, 4179, 909, 4243, 5104, 119, -783, 2, -3062, -783, -784, 4422, 231, -784, 4423, 4466, 4714, 1430, 4423, 4423, 676, 4810, 1430, 1430, 4423, 4820, 4903, 4972, 4423, 4904, 4423, 119, 910, 686, 5010, 3523, 2209, 5011, 682, -785, 296, 911, -785, 2209, 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, 627, 672, 297, 673, 412, 683, 5182, 5183, 5184, 962, 4763, 2045, 4765, 687, 696, 697, 962, 699, 81, 298, 647, 701, 703, 704, 912, 913, 3552, 705, 711, 367, 158, 299, 716, 659, 660, 726, 661, 662, 663, 664, 4534, -2878, 731, 843, -3130, 3553, 81, 668, 669, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612, 4673, 861, 974, 510, -3044, 979, 987, 81, 1963, 981, 24, 985, 991, 1118, 81, 11, 994, 998, 81, 240, 999, 1000, 1001, 1128, 1136, 3914, 2045, 1135, 1119, -767, 3922, 1176, 24, 1179, 1161, 1181, 3926, 81, 81, 1299, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1207, 119, -3054, 2, 81, 1203, 1204, 16, 1298, 17, 1300, 3555, 1301, 1304, 389, 300, 120, 1319, 1456, 1403, 1406, 1424, 301, 302, 1459, 303, 1460, 1461, 214, 3912, 1462, 121, 241, 242, 1463, 1467, 1468, 3556, 4139, 1129, 1130, 1469, 1470, 1471, 1187, 1479, 4517, 4518, 1483, 4520, 1492, 243, 244, 245, 246, 247, 248, 1493, 4510, 964, 81, 39, 3558, 1756, 1502, 412, 964, -2499, 4545, 1579, 4547, 1771, 119, 1584, 1587, 1588, 249, 1786, 122, 54, 250, 81, 81, 1595, 1643, -877, 3656, 251, 123, 124, 1647, 1675, 1678, 1679, 125, 126, 4772, 1726, 1750, 1764, 127, 54, 43, 5408, 44, 3559, 1772, 158, 2103, 2104, 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3813, 3814, 3815, 3816, 304, 305, 119, 81, 128, 129, 51, 1752, 1784, 1785, 1788, 296, 1789, 1791, 1793, 4773, 1795, 278, 1797, 1799, 844, 5430, 24, 1801, 982, 130, 131, 132, 133, 134, 135, 136, 137, 485, 1805, 486, 3202, 311, 1814, 312, 1188, 1821, 1823, 1825, 1826, 298, 1827, 1849, 1862, 1828, 1850, 2077, 1851, 1867, 2081, 2082, 4774, 299, 169, 4786, 1852, 1863, 1864, 2089, 2091, 1866, 1868, 1873, 1875, 1879, 3950, 1882, 1883, 4759, 1897, 1898, 1902, 1163, 1899, 3697, 4775, 1986, 845, 846, 1914, 1915, 1923, -800, 170, 2013, 1988, 1990, 1904, 1905, -250, 2057, 2056, 2058, 2021, 81, 1913, 2023, 2060, 2075, 2078, 2045, 2079, 2083, 1190, 2084, 2085, 2086, 847, 2087, 2093, 2097, 2100, 2101, 2106, 165, 4103, 2167, 2107, 2108, 1981, 2172, 2193, 2199, 848, 2210, 2190, 3199, 540, 3209, 541, 3200, 1759, 1191, 408, 409, 410, 3211, 54, 411, 1639, 1762, 3214, 3212, 1639, 3215, 3224, 3225, 300, 3252, 3226, 1639, 3936, 3258, 3936, 301, 302, 3276, 303, 3278, 3298, -2496, 4361, 4362, 632, 4364, 4137, 3301, 634, 635, 3312, 636, 637, 638, 3358, 3364, 639, 3391, 640, 3383, 3384, 1639, 4323, -883, 3441, 2045, 3433, 1639, 3418, 1416, 1639, 3458, 1683, 1684, 3280, 3465, 1685, 1686, 3460, 1687, 1688, 1689, 1747, 3495, 1690, 3502, 1691, 1692, 3493, 3952, 3498, 1693, 3507, 1694, 3504, 3508, 3509, 1009, 3511, 3512, 3529, 3514, 1639, 3515, 3516, 3520, 3537, 3535, 644, 3587, 4534, 3539, 3613, 3624, 3541, 3549, 4954, 3543, 3546, 1639, 3626, 3629, 1501, 3594, 3625, 3627, 3588, 3628, 3589, 3590, 3661, 2045, 3665, 3667, 304, 305, 1695, 3671, 3672, 3678, 3684, 1639, 3685, 3686, 1639, 3687, 3680, 1639, 1639, 1639, 3688, 3691, 3709, 81, 3710, 3714, 3753, 3754, 81, 3755, 3756, 645, 3757, 3788, 3776, 3781, 81, 3777, 3819, 3838, 3820, 1639, 1244, 3842, 3873, 3902, 3992, 3899, 632, 633, 1696, 3900, 634, 635, 3927, 636, 637, 638, 3859, 1697, 639, 3862, 640, 3923, 3930, 3297, 3937, 3299, 3300, 3953, 3954, 3957, 3305, 3306, 3307, 3961, 3309, 3310, 3963, 1417, 3968, 4395, 3993, 3995, 3996, 3999, 1699, 4015, 4000, 4019, 4052, 4041, 2192, 4700, 4701, 3981, 4009, 4847, 4010, 4016, 3333, 3334, 3335, 3336, 4024, 4510, 4025, 3692, 3693, 3694, 3695, 3696, 644, 3703, 3704, 3705, 3706, 3707, 3708, 4026, 3528, 3713, 3528, 3715, 3716, 3717, 3718, 3719, 3720, 3721, 3722, 3723, 3724, 3725, 3726, 3727, 3728, 3729, 3730, 3731, 3732, 4068, 3734, 4081, 4084, 4083, 4086, 4095, 4092, 5048, 4112, 4098, 4040, -2337, 4115, 4116, 4136, 4138, 4144, 4145, 4157, 4146, 647, 4205, 4177, 645, 4194, 4207, 4206, 653, 654, 655, 656, 657, 658, 659, 660, 4219, 661, 662, 663, 664, 4214, 4216, 4217, 4218, 4220, 3989, 4221, 4237, 1700, 4246, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 4759, 1714, 1715, 1716, 1717, -795, 1089, 1718, 4265, 1683, 1719, 4266, 4267, 1685, 1686, 4274, 1687, 1688, 1689, 4275, 4285, 1690, 4067, 1691, 4297, 4298, 4306, 81, 4325, 4344, 81, 81, 81, 4327, 4328, 4336, 4337, 4354, 4382, 4372, 4376, 119, 4381, 2, 4387, 4408, 4515, 4505, 4521, 4478, 4431, 81, 4523, 4522, 389, 2198, 3560, 4527, 4785, 4528, 4536, 4535, 81, 4541, 4551, 4552, 4553, 4588, 4566, 4142, 4554, 4555, 4625, 1695, 4368, 4576, 4628, 4594, 1926, 4281, 4577, 4160, 1928, 1929, 1187, 1930, 3595, 1932, 3989, 4596, 1933, 647, 1934, 4647, 4650, 81, 4653, 652, 653, 654, 655, 656, 657, 658, 659, 660, 4676, 661, 662, 663, 664, 4684, 241, 242, 4685, 4686, 4690, 4737, 2040, 149, 4745, 150, 151, 4748, 4741, 4750, 1697, 4799, 488, 1890, 959, 243, 244, 245, 246, 247, 248, 4813, 4832, 4811, 4815, 4822, 1938, 4831, 4833, 4849, 4825, 4742, 5176, 4863, 4135, 4746, 4842, 4864, 4874, -319, 249, 4873, 4881, 4877, 250, 4887, 4883, 4899, 4900, 4902, 4906, 251, 1069, 4912, 4916, 3561, 6, 4918, 4919, 7, 81, 119, 4927, 2, 4921, 4922, 947, 24, 81, 4943, 4946, 4966, 4952, 395, 389, -793, 4957, 533, 4974, 1939, 4956, 1067, 4980, 4967, 948, 1188, 4193, 4985, 5002, 4988, 5014, 4110, 533, 5050, 5052, 4990, 5055, 3562, 5017, 5053, 5028, 5034, 5054, 5062, 1187, 5070, 5076, 5058, 5077, 5083, 5088, 5093, 5101, 5107, 5108, 5110, 945, 5109, 1113, 4689, 5111, 5114, 5116, 1068, 1189, 5140, 5118, 946, 5117, 5144, 5145, 5129, 5147, 1639, 1277, 5156, 1639, 19, 20, 5187, 5179, 1700, -2497, 1639, 5200, 81, 5217, 955, 25, 26, 81, 4383, 5218, 1190, 1712, 1713, 5225, 1714, 1715, 1716, 1717, 5228, 5229, 5230, 5244, 5259, 2163, 5260, 2163, 5264, 5294, 1639, 5281, 4509, 2163, 5295, 957, 1639, 5315, 81, 1639, 35, 1191, 408, 409, 410, 5327, 54, 411, 37, 4929, 156, 5339, 5362, 5356, 1073, 5357, 5358, 5359, 5363, 5405, 5360, 5399, 24, 5372, 5400, 1639, 5406, 5407, 5297, 1941, 5425, 5418, 5426, 5427, 1097, 5429, 949, 5432, 45, 5436, 1188, 5438, 1953, 5440, 1954, 1955, 1956, 1957, 1958, 5441, 212, 3951, 157, 4620, 5439, 4621, 167, 5443, 81, 171, 3958, 3908, 546, 3959, 2178, 3210, 3639, 3910, 953, 3213, 4388, 574, 5157, 4657, 5012, 81, 5009, 2170, 1089, 3287, 727, 4252, 4947, 1819, 453, 4174, 1089, 4153, 3931, 3201, 983, 533, 1089, 5152, 960, 4995, 4860, 922, 4853, 81, 530, 1834, 1277, 714, 978, 232, 4901, 4898, 1190, 4374, 4589, 4350, 4324, 1912, 3751, 3737, 5177, 4675, 1870, 4304, 966, 5282, 4633, 4920, 2029, 5186, 3699, 2031, 4575, 4175, 542, 3653, 1648, 5194, 1925, 5238, 4697, 1191, 408, 409, 410, 954, 54, 411, 3413, 565, 965, 2064, 1444, 3964, 3965, 3839, 1659, 1569, 81, 3840, 3966, 3841, 3220, 2019, 3943, 3801, 520, 81, 1160, 4639, 4641, 3948, 4567, 3739, 5073, 3861, 1913, 1504, 3232, 4580, 3867, 3868, 4809, 3870, 3871, 5023, 837, 4798, 1089, 4053, 1913, 4155, 3565, 1089, 1751, 4294, 3492, 4501, 5040, 5290, 5283, 3545, 4846, 4094, 4841, 5403, 3489, 3894, 3895, 3896, 3897, 1730, 4154, 4651, 5239, 914, 4109, 1655, 3566, 5329, 5232, 5115, 5435, 5417, 4147, 4140, 4156, 3582, 4754, 4583, 4582, 0, 1089, 1089, 4303, 0, 0, 1089, 1089, 4981, 1089, 1639, 0, 0, 0, 0, 0, 3949, 0, 0, 0, 0, 0, 1089, 0, 5128, 3989, 0, 4079, 713, 0, 0, 0, 0, 1089, 5289, 0, 0, 0, 0, 1891, 5377, 5298, 0, 0, 0, 0, 0, 0, 0, 4359, 4279, 4280, 0, 0, 0, 0, 4082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4150, 0, 0, 0, 4097, 0, 0, 0, 0, 140, 0, 0, 0, 0, 1683, 1684, 0, 0, 1685, 1686, 1783, 1687, 1688, 1689, 0, 1779, 1690, 0, 1691, 1783, 5377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4562, 4562, 962, 4978, 0, 3544, 0, 0, 81, 0, 0, 5354, 81, 0, 0, 0, 0, 0, 0, 81, 1292, 0, 0, 0, 0, 0, 0, 1695, 0, 0, 0, 4167, 4171, 81, 4103, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 4770, 4771, 0, 0, 0, 0, 4509, 0, 0, 140, 81, 140, 0, 0, 0, 0, 959, 1697, 959, 0, 959, 0, 0, 0, 0, 0, 0, 0, 3989, 0, 4117, 4135, 0, 0, 3644, 3644, 0, 1103, 0, 1103, 0, 0, 2163, 1103, 4233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 4251, 4251, 0, 0, 0, 0, 1103, 947, 3989, 947, 0, 947, 0, 1089, 0, 0, 0, 0, 4356, 0, 0, 0, 0, 0, 0, 948, 0, 948, 0, 948, 0, 0, 5437, 0, 0, 4271, 0, 0, 0, 964, 268, 0, 3545, 5442, 0, 1292, 0, 1291, 0, 0, 0, 0, 0, 2163, 0, 0, 0, 945, 0, 945, 0, 945, 4254, 0, 0, 0, 4255, 0, 946, 0, 946, 0, 946, 0, 0, 0, 1980, 0, 0, 0, 4209, 0, 0, 267, 0, 0, 0, 1700, 955, 0, 955, 0, 955, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 957, 0, 957, 0, 957, 0, 3578, 3578, 0, 0, 0, 0, 0, 0, 0, 4384, 0, 0, 0, 119, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389, 0, 0, 0, 0, 325, 0, 0, 1890, 949, 0, 949, 4355, 949, 4358, 0, 0, 0, 4363, 0, 4365, 0, 4367, 0, 0, 0, 3989, 0, 0, 0, 1187, 0, 0, 0, 0, 4352, 0, 0, 0, 0, 0, 953, 0, 953, 0, 953, 0, 1291, 0, 0, 0, 0, 0, 119, 0, 2, 0, 0, 0, 81, 0, 81, 0, 0, 0, 0, 389, 960, 0, 960, 0, 960, 0, 0, 0, 4779, 0, 713, 0, 268, 0, 0, 0, 0, 0, 0, 4508, 0, 0, 0, 0, 1430, 1430, 966, 1430, 966, 1187, 966, 140, 0, 0, 4744, 0, 140, 0, 0, 4749, 0, 4751, 2209, 4753, 0, 0, 0, 954, 0, 954, 0, 954, 965, 0, 965, 267, 965, 0, 0, 0, 0, 1727, 24, 3208, 0, 0, 0, 4894, 0, 0, 962, 0, 0, 3544, 0, 0, 0, 0, 0, 3989, 1188, 0, 0, 0, 0, 0, 0, 4562, 4562, 0, 4878, 4879, 4880, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 5003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 3372, 0, 836, 81, 0, 0, 4572, 0, 0, 24, 0, 0, 0, 4351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4357, 0, 0, 0, 1188, 0, 1190, 0, 4366, 0, 959, 0, 0, 0, 0, 0, 0, 81, 0, 4377, 0, 0, 0, 0, 0, 959, 0, 959, 0, 4427, 3989, 0, 0, 4435, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 3448, 1277, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1738, 0, 81, 81, 0, 0, 0, 947, 0, 0, 0, 0, 81, 0, 0, 0, 0, 1190, 0, 0, 268, 0, 947, 0, 947, 948, 0, 0, 1779, 0, 1779, 0, 1779, 0, 964, 0, 0, 3545, 0, 0, 948, 0, 948, 0, 0, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 0, 962, 945, 962, 0, 962, 0, 0, 267, 0, 0, 0, 0, 946, 0, 0, 0, 945, 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 946, 0, 946, 0, 4663, 955, 0, 0, 0, 0, 0, 0, 4543, 0, 0, 796, 0, 0, 0, 0, 955, 0, 955, 1103, 0, 1103, 1103, 140, 0, 140, 0, 0, 4578, 0, 957, 1103, 0, 0, 0, 0, 140, 0, 0, 0, 3644, 3644, 3644, 1103, 3644, 957, 0, 957, 0, 1103, 0, 1103, 4584, 0, 1089, 4948, 4646, 0, 4233, 0, 0, 4233, 1103, 0, 0, 1103, 1103, 140, 1103, 0, 0, 949, 0, 0, 0, 0, 0, 0, 0, 4568, 0, 0, 0, 0, 0, 0, 949, 0, 949, 0, 533, 1891, 1727, 1089, 0, 1089, 0, 3989, 0, 0, 0, 0, 4581, 953, 0, 0, 0, 0, 0, 1089, 4747, 0, 0, 4642, 0, 0, 1089, 0, 953, 0, 953, 0, 0, 0, 0, 0, 0, 0, 4562, 960, 964, 0, 964, 0, 964, 0, 2163, 0, 0, 4986, 0, 0, 0, 0, 960, 0, 960, 0, 0, 0, 0, 0, 0, 4627, 0, 966, 0, 4508, 0, 0, 0, 0, 0, 0, 1089, 0, 268, 268, 0, 0, 966, 0, 966, 0, 0, 0, 954, 0, 0, 0, 1430, 965, 0, 0, 1430, 0, 0, 0, 0, 0, 0, 954, 0, 954, 140, 959, 965, 0, 965, 959, 4928, 2209, 0, 2209, 2209, 0, 0, 0, 0, 267, 267, 959, 0, 4780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 962, 4886, 962, 962, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 947, 0, 0, 0, 947, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 1829, 947, 0, 948, 0, 0, 81, 948, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 948, 348, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 945, 0, 0, 0, 945, 4743, 0, 4579, 0, 0, 0, 946, 0, 0, 4752, 946, 945, 1292, 0, 0, 4562, 0, 0, 0, 0, 0, 0, 946, 0, 0, 0, 955, 0, 0, 0, 955, 1093, 0, 1738, 0, 0, 0, 0, 4945, 0, 0, 0, 955, 0, 4779, 1103, 1103, 140, 0, 0, 1103, 1103, 1779, 0, 0, 957, 0, 1103, 4823, 957, 1103, 1103, 0, 0, 0, 0, 0, 1779, 0, 1779, 5139, 957, 5141, 5142, 0, 0, 0, 0, 5103, 0, 962, 5149, 3989, 0, 0, 0, 0, 0, 964, 5026, 964, 964, 0, 0, 347, 962, 949, 962, 0, 0, 949, 0, 0, 0, 0, 0, 0, 4167, 0, 0, 0, 0, 949, 4171, 0, 115, 0, 0, 0, 0, 148, 0, 0, 0, 4869, 0, 4871, 0, 953, 0, 0, 4867, 953, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 0, 115, 953, 0, 4882, 0, 0, 0, 0, 0, 0, 4839, 960, 0, 1639, 0, 960, 0, 0, 0, 0, 1291, 115, 0, 0, 0, 0, 0, 960, 115, 4934, 4233, 0, 115, 0, 0, 5100, 0, 966, 0, 0, 4251, 966, 0, 0, 0, 0, 4982, 4983, 1103, 1103, 0, 115, 115, 966, 0, 0, 4991, 0, 954, 0, 0, 0, 954, 965, 0, 0, 0, 965, 0, 115, 154, 0, 0, 0, 954, 0, 4888, 4889, 0, 965, 0, 0, 0, 0, 1639, 0, 0, 0, 119, 0, 2, 0, 5262, 959, 5263, 0, 0, 0, 964, 0, 0, 389, 0, 0, 0, 268, 0, 0, 0, 0, 0, 5103, 0, 964, 0, 964, 0, 0, 0, 0, 1430, 0, 0, 0, 0, 115, 0, 0, 341, 5078, 0, 1187, 0, 0, 2209, 4890, 0, 0, 0, 0, 0, 0, 2209, 0, 2209, 947, 115, 115, 267, 0, 0, 325, 0, 5008, 5008, 0, 0, 0, 4780, 0, 0, 0, 962, 948, 0, 0, 115, 115, 0, 0, 962, 0, 962, 0, 0, 0, 0, 5300, 0, 0, 0, 0, 5216, 0, 0, 0, 0, 0, 0, 115, 0, 0, 4984, 0, 0, 945, 119, 0, 2, 4998, 0, 5000, 0, 0, 342, 0, 946, 5341, 0, 389, 0, 1831, 0, 1831, 0, 1831, 1831, 0, 1831, 0, 1831, 1831, 0, 0, 0, 0, 955, 0, 0, 0, 24, 0, 0, 0, 0, 0, 1779, 0, 0, 1187, 1779, 0, 0, 0, 0, 0, 0, 5066, 1188, 0, 0, 0, 1779, 0, 0, 957, 0, 1093, 0, 0, 1831, 1831, 1831, 115, 962, 1093, 0, 0, 962, 148, 0, 1093, 5004, 5005, 0, 0, 0, 0, 0, 0, 962, 0, 5371, 0, 0, 115, 5389, 3848, 0, 0, 0, 1103, 0, 0, 0, 0, 949, 1103, 0, 0, 3644, 0, 5097, 0, 0, 0, 0, 5067, 1103, 5068, 0, 0, 115, 0, 115, 115, 1190, 0, 4934, 0, 0, 0, 0, 964, 0, 0, 0, 0, 953, 1103, 0, 964, 1103, 964, 1103, 0, 0, 0, 24, 533, 0, 0, 0, 5079, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 960, 0, 1188, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 148, 1093, 5095, 0, 2209, 5098, 5099, 0, 2209, 5066, 0, 0, 0, 966, 2209, 0, 0, 4568, 0, 0, 0, 0, 0, 4780, 0, 0, 0, 0, 3697, 0, 0, 0, 962, 0, 954, 0, 962, 0, 0, 965, 1093, 1093, 962, 0, 0, 1093, 1093, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 1190, 964, 0, 115, 1093, 964, 0, 0, 0, 0, 0, 5146, 5153, 5148, 5154, 1093, 0, 964, 5198, 5199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1191, 408, 409, 410, 0, 54, 411, 0, 0, 0, 115, 0, 800, 842, 0, 115, 0, 0, 903, 1103, 0, 0, 115, 115, 115, 0, 836, 0, 0, 0, 0, 1103, 0, 0, 0, 4934, 0, 0, 0, 4934, 140, 0, 0, 0, 1103, 0, 1103, 4224, 1103, 4226, 0, 0, 0, 4229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5242, 0, 0, 0, 0, 115, 0, 0, 0, 1117, 0, 0, 1913, 0, 0, 4678, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 903, 964, 0, 0, 0, 964, 0, 0, 0, 0, 0, 964, 0, 0, 0, 0, 0, 0, 0, 0, 1779, 0, 0, 0, 0, 836, 0, 0, 0, 0, 0, 0, 5261, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5320, 0, 962, 0, 1196, 0, 0, 0, 0, 0, 4934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4426, 0, 4428, 0, 0, 0, 4436, 0, 0, 4438, 4439, 4440, 0, 4441, 4442, 4443, 4444, 4445, 2209, 1296, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 962, 115, 5365, 0, 115, 115, 115, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 0, 0, 1933, 0, 1934, 1935, 0, 0, 115, 1936, 0, 1937, 0, 4934, 0, 4934, 0, 4934, 5340, 115, 0, 0, 0, 0, 0, 800, 0, 0, 0, 0, 0, 0, 0, 800, 0, 0, 0, 0, 0, 800, 800, 0, 0, 0, 0, 0, 0, 0, 800, 800, 0, 0, 115, 5365, 1938, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 0, 0, 4934, 0, 0, 0, 0, 4934, 0, 0, 800, 0, 800, 0, 0, 964, 0, 842, 0, 0, 0, 0, 0, 0, 0, 842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1103, 0, 0, 0, 4934, 0, 4934, 1939, 0, 4934, 4934, 0, 0, 0, 0, 0, 0, 0, 0, 0, 842, 842, 0, 0, 842, 81, 4934, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 964, 0, 0, 0, 0, 903, 903, 903, 903, 903, 903, 0, 903, 903, 0, 0, 0, 0, 0, 0, 0, 903, 903, 903, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 0, 0, 0, 0, 642, 0, 148, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 1117, 5428, 115, 0, 0, 0, 1117, 115, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 1941, 0, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 115, 1954, 1955, 1956, 1957, 1958, 115, 0, 1959, 0, 0, 1960, 0, 0, 148, 0, 0, 4718, 4719, 4720, 0, 0, 4722, 4723, 0, 4724, 4725, 4726, 4727, 4728, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 1117, 115, 1117, 0, 1117, 1117, 0, 1117, 0, 1117, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 1117, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1117, 1117, 1117, 148, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 1117, 1117, 0, 0, 0, 1117, 1117, 0, 1117, 0, 0, 0, 0, 0, 4805, 0, 0, 0, 0, 797, 0, 1117, 0, 0, 0, 0, 0, 4644, 0, 4645, 0, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 4652, 0, 0, 4655, 0, 0, 4658, 0, 115, 0, 115, 0, 0, 0, 0, 0, 0, 0, 647, 115, 0, 0, 0, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 81, 0, 0, 1831, 1831, 1831, 1831, 1831, 0, 1831, 1831, 1831, 1831, 1831, 1831, 0, 81, 1831, 0, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 1831, 0, 1831, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 0, 800, 800, 0, 0, 0, 0, 0, 0, 0, 800, 800, 0, 0, 0, 0, 81, 1093, 81, 1093, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 1296, 1093, 0, 842, 0, 0, 0, 1296, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 148, 1117, 0, 0, 148, 0, 0, 115, 0, 0, 0, 1596, 1597, 1093, 0, 1598, 1599, 0, 1600, 1601, 1602, 115, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 1610, 0, 634, 635, 0, 636, 637, 638, 0, 4862, 639, 0, 640, 641, 0, 0, 0, 642, 1089, 643, 1089, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 0, 0, 0, 1089, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 0, 0, 842, 5021, 644, 5022, 0, 0, 842, 0, 5024, 0, 0, 5027, 0, 0, 0, 0, 0, 842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1196, 0, 0, 0, 0, 0, 0, 645, 800, 0, 800, 800, 0, 842, 0, 800, 800, 800, 842, 800, 800, 842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4949, 4951, 0, 0, 0, 0, 0, 0, 800, 800, 800, 800, 0, 0, 0, 0, 842, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 842, 0, 0, 0, 0, 0, 0, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1196, 1631, 1632, 1633, 1634, 0, 0, 1635, 842, 0, 1636, 842, 0, 842, 842, 842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 5134, 0, 0, 0, 842, 0, 0, 0, 0, 0, 0, 0, 0, 115, 647, 115, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 0, 0, 666, 5027, 0, 0, 0, 0, 0, 0, 0, 903, 903, 903, 903, 903, 903, 1196, 903, 903, 903, 903, 903, 903, 0, 0, 0, 903, 903, 0, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 903, 0, 903, 0, 0, 0, 0, 1926, 0, 0, 115, 1928, 1929, 0, 1930, 3595, 1932, 0, 0, 1933, 0, 1934, 0, 0, 0, 85, 0, 0, 0, 0, 5223, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 81, 0, 81, 0, 81, 0, 0, 0, 0, 0, 185, 0, 115, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1938, 0, 0, 204, 0, 5091, 0, 0, 0, 0, 85, 0, 0, 0, 85, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 115, 0, 1933, 81, 1934, 0, 0, 0, 256, 259, 0, 0, 5119, 0, 0, 5121, 0, 5123, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 1939, 81, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 81, 0, 0, 0, 0, 0, 0, 800, 148, 0, 3650, 0, 1938, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 81, 148, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1117, 0, 1117, 0, 0, 0, 0, 0, 0, 343, 343, 0, 0, 1939, 0, 0, 1117, 0, 1117, 1117, 1117, 1117, 1117, 1196, 1117, 1117, 1117, 1117, 1117, 1117, 0, 0, 1117, 425, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 1117, 85, 1117, 0, 1089, 0, 1089, 1089, 0, 0, 5224, 0, 0, 0, 1941, 0, 1089, 0, 0, 0, 1117, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1089, 1954, 1955, 1956, 1957, 1958, 1089, 5246, 1089, 5247, 0, 5248, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 1089, 1089, 0, 1089, 0, 81, 0, 0, 0, 0, 0, 0, 81, 0, 81, 81, 1832, 0, 1832, 0, 1832, 1832, 0, 1832, 0, 1832, 1832, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1941, 0, 0, 0, 525, 3650, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 0, 1954, 1955, 1956, 1957, 1958, 0, 0, 1832, 1832, 1832, 0, 0, 842, 0, 0, 0, 0, 842, 0, 0, 0, 0, 0, 0, 0, 0, 842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1296, 0, 0, 0, 0, 0, 0, 0, 0, 1196, 0, 0, 0, 0, 0, 0, 1296, 0, 1296, 800, 0, 842, 0, 1296, 800, 800, 842, 800, 800, 842, 0, 0, 119, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 800, 800, 800, 842, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 81, 1854, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 81, 6, 0, 0, 7, 0, 0, 0, 8, 115, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 709, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 730, 0, 780, 827, 0, 853, 12, 13, 890, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1656, 1657, 0, 1660, 1661, 1662, 0, 1666, 1667, 0, 0, 0, 19, 20, 0, 0, 1672, 1673, 1674, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 1089, 1089, 0, 0, 81, 1089, 1089, 1072, 0, 0, 0, 0, 1089, 1683, 1684, 1089, 1089, 1685, 1686, 0, 1687, 1688, 1689, 33, 34, 1690, 35, 1691, 0, 0, 0, 425, 1693, 0, 37, 38, 0, 0, 0, 890, 0, 0, 0, 0, 41, 0, 42, 120, 0, 0, 0, 0, 0, 425, 0, 425, 0, 425, 0, 425, 0, 0, 121, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 1695, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 122, 54, 0, 0, 1855, 0, 0, 81, 0, 81, 0, 0, 0, 0, 0, 1276, 1276, 0, 0, 592, 593, 1697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 1089, 0, 0, 0, 0, 1317, 0, 0, 85, 85, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1413, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1438, 0, 0, 632, 633, 0, 1443, 634, 635, 0, 636, 637, 638, 0, 1443, 639, 0, 640, 641, 0, 1443, 1443, 642, 81, 643, 0, 0, 81, 0, 1443, 1443, 0, 0, 1477, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 780, 0, 0, 0, 0, 1563, 0, 0, 0, 644, 0, 0, 0, 1563, 0, 0, 1700, 0, 0, 0, 0, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 0, 0, 0, 0, 0, 1563, 827, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 1644, 0, 0, 0, 0, 0, 645, 0, 1652, 0, 0, 0, 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, 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, 1683, 1684, 0, 1755, 1685, 1686, 0, 1687, 1688, 1689, 4076, 1755, 1690, 85, 1691, 1692, 1089, 1755, 85, 1693, 0, 1694, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 1089, 0, 1089, 0, 0, 0, 0, 1695, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 1755, 0, 1755, 0, 1755, 1755, 0, 1755, 0, 1755, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1856, 1696, 1755, 0, 0, 0, 0, 1755, 0, 0, 1697, 0, 0, 0, 0, 0, 0, 1856, 0, 0, 0, 0, 0, 0, 1698, 0, 0, 0, 0, 1755, 1755, 1755, 0, 0, 0, 0, 0, 1699, 0, 0, 0, 1413, 0, 0, 0, 0, 1755, 1755, 0, 0, 0, 1072, 1072, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1072, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0, 0, 0, 343, 0, 0, 0, 0, 0, 1089, 0, 0, 1995, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1089, 0, 1089, 0, 1089, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 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, 0, 0, 0, 1720, 0, 1832, 1832, 1832, 1832, 1832, 0, 1832, 1832, 1832, 1832, 1832, 1832, 1093, 0, 1832, 0, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 1832, 0, 1832, 0, 0, 0, 0, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 0, 1443, 1443, 0, 0, 0, 0, 0, 0, 0, 1443, 1443, 0, 0, 0, 0, 0, 0, 1093, 0, 1093, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1276, 0, 0, 1563, 0, 0, 0, 1276, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1413, 0, 0, 0, 1856, 1755, 0, 0, 0, 0, 0, 85, 3442, 3443, 3444, 3445, 3446, 3447, 0, 3452, 3453, 3454, 3455, 3456, 3457, 85, 0, 0, 3463, 3464, 0, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3483, 0, 3485, 85, 1505, 1506, 0, 3250, 1507, 1508, 3251, 1509, 1510, 1511, -74, 0, 1513, 85, 1514, 1515, 0, 0, 0, 1516, 1089, 1517, 0, 0, 1320, 0, -74, 1518, 0, 0, 0, 3216, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 844, 0, 1089, 0, 3234, 0, 0, 1519, 0, 0, 0, 0, 0, 1443, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1563, 0, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 0, 845, 846, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 1524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 1525, 1443, 1443, 0, 1563, 847, 1443, 1443, 1443, 1563, 1443, 1443, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 848, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 1443, 1443, 1443, 0, 0, 0, 0, 1563, 0, 241, 242, 0, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, 0, 1563, 0, 0, 243, 244, 245, 246, 247, 248, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 1531, 1563, 0, 250, 1563, 0, 1563, 1563, 1563, 0, 251, 0, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1563, 1546, 1547, 1548, 1549, 0, 0, 1550, 0, 853, 1551, 3414, 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, 115, 0, 0, 0, 0, 0, 0, 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, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 3505, 0, 1831, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 148, 800, 0, 0, 800, 842, 85, 0, 0, 0, 85, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 425, 0, 425, 800, 425, 1610, 425, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 1093, 3585, 1093, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0, 1093, 0, 1093, 0, 1611, 0, 0, 0, 1117, 1196, 0, 1856, 1856, 1093, 0, 0, 1093, 1093, 0, 1093, 1443, 3635, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 148, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1072, 1117, 1755, 1117, 0, 0, 0, 1117, 115, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 1755, 1755, 1755, 1755, 1755, 0, 1755, 1755, 1755, 1755, 1755, 1755, 0, 1117, 1755, 0, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 1755, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 1755, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 425, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 0, 0, 0, 0, 642, 1296, 643, 0, 1563, 0, 0, 0, 0, 1563, 0, 0, 0, 0, 0, 0, 1505, 1506, 1563, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 1276, 0, 0, 1516, 0, 1517, 0, 0, 0, 0, 0, 1518, 0, 644, 0, 0, 1276, 0, 1276, 1443, 0, 1563, 0, 1276, 1443, 1443, 1563, 1443, 1443, 1563, 0, 0, 0, 0, 1093, 1093, 0, 0, 0, 1093, 1093, 0, 0, 0, 0, 0, 1093, 0, 1519, 1093, 1093, 1443, 1443, 1443, 1443, 1563, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 3905, 0, 1317, 0, 0, 0, 148, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 1520, 85, 0, 0, 1521, 0, 0, 0, 85, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1296, 0, 0, 0, 0, 0, 0, 1093, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 800, 0, 0, 0, 800, 0, 0, 800, 800, 800, 0, 800, 800, 800, 800, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1526, 1527, 0, 0, 0, 1093, 1093, 0, 1528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 1529, 1530, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 1531, 0, 0, 0, 0, 0, 0, 0, 0, 903, 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, 842, 0, 0, 774, 0, 0, 0, 0, 115, 0, 115, 0, 115, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 0, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 3356, 1598, 1599, 3357, 1600, 1601, 1602, 0, 0, 1604, 115, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 644, 1117, 0, 1117, 1117, 148, 0, 148, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 1117, 0, 0, 0, 0, 1610, 1117, 0, 1117, 0, 0, 0, 0, 0, 0, 115, 0, 0, 115, 1117, 0, 0, 1117, 1117, 148, 1117, 632, 633, 645, 0, 634, 635, 0, 636, 637, 638, 4286, 0, 639, 0, 640, 641, 0, 0, 4287, 642, 0, 643, 0, 1117, 0, 0, 0, 0, 1093, 0, 0, 0, 1611, 0, 1093, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 1093, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 644, 0, 1093, 0, 0, 1093, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 800, 800, 0, 0, 800, 800, 0, 800, 800, 800, 800, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1615, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 646, 115, 647, 115, 115, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 1616, 661, 662, 663, 664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1617, 1196, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 0, 800, 1635, 0, 0, 1636, 800, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 1093, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1093, 0, 1683, 0, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 1093, 1690, 1093, 1691, 1093, 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, 4288, 4289, 666, 0, 0, 0, 667, 1117, 1117, 148, 0, 0, 1117, 1117, 115, 0, 1695, 0, 0, 1117, 0, 0, 1117, 1117, 0, 0, 0, 0, 0, 115, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, 119, 0, 2, 0, 386, 387, 388, 0, 0, 115, 0, 0, 0, 389, 390, 0, 115, 391, 392, 0, 0, 393, 1697, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 591, 399, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1117, 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, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 1196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 1117, 1117, 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, 1700, 0, 0, 0, 0, 0, 401, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1093, 1714, 1715, 1716, 1717, 0, 1296, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 1230, 0, 0, 115, 0, 0, 0, 403, 0, 42, 404, 115, 0, 115, 0, 0, 0, 0, 1093, 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, 800, 0, 800, 0, 0, 0, 0, 800, 0, 0, 800, 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, 592, 593, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, 119, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 418, 419, 391, 392, 0, 0, 393, 0, 394, 0, 0, 0, 1117, 0, 0, 0, 0, 0, 1117, 0, 396, 397, 398, 3581, 399, 0, 0, -74, 0, 1117, -74, 0, 0, 0, 0, 0, 0, 0, 6, 0, 1413, 7, 0, 0, 1320, 8, -74, 0, 0, 0, 1117, 400, 0, 1117, 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 800, 0, 844, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 115, 0, 0, 0, 115, 1228, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 1229, 0, 0, 0, 0, 0, 0, 800, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 119, 0, 2, 0, 0, 845, 846, 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, 847, 0, 37, 38, 402, 1230, 1806, 0, 0, 0, 0, 0, 403, 0, 42, 404, 848, 0, 6, 0, 800, 7, 0, 0, 1117, 8, 405, 199, 0, 0, 406, 0, 45, 0, 0, 0, 1117, 0, 0, 241, 242, 48, 0, 50, 1231, 148, 407, 0, 0, 1117, 0, 1117, 0, 1117, 183, 0, 184, 0, 243, 244, 245, 246, 247, 248, 0, 0, 200, 13, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 249, 413, 414, 415, 250, 0, -74, 0, 0, -74, 0, 251, 0, 0, 0, 0, 19, 20, 0, 201, 0, 0, 0, 1320, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 0, 842, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 844, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 418, 419, 0, 0, 0, 0, 0, 0, 41, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 1443, 0, 1856, 1443, 0, 0, 1443, 1563, 48, 0, 203, 0, 0, 115, 0, 0, 0, 0, 85, 845, 846, 183, 0, 184, 0, 0, 0, 1443, 0, 0, 0, 0, 0, 0, 1832, 0, 0, 1236, 119, 0, 2, -3062, 1237, 1238, 388, 54, 0, 0, 0, 847, 842, 389, 1239, 0, 0, 1240, 1241, 0, 0, 1242, 0, 1243, 1244, 0, 85, 848, 0, 0, 0, 0, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 0, 1250, 0, 0, 0, 0, 0, 1072, 0, 241, 242, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 243, 244, 245, 246, 247, 248, 0, 0, 0, 1856, 0, 1856, 1117, 874, 0, 0, 0, 0, 0, 4208, 0, 0, 0, 0, 0, 249, 0, 0, 0, 250, 0, 0, 12, 13, 1251, 0, 251, 1755, 0, 1755, 1252, 0, 0, 1755, 4231, 0, 0, 0, 0, 0, 0, 1117, 0, 0, 754, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 1755, 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, 4497, 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, 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, 1276, 0, 0, 0, 145, 0, 0, 0, 632, 633, 0, 1270, 634, 635, 0, 636, 637, 638, 4290, 0, 639, 774, 640, 641, 0, 0, 4291, 642, 0, 643, 0, 0, 0, 0, 0, 1271, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1273, 1274, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 3905, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 0, 0, 0, 0, 0, 1856, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 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, 1519, 0, 0, 0, 145, 0, 145, 0, 1276, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 1443, 0, 0, 0, 1443, 0, 0, 1443, 1443, 1443, 0, 1443, 1443, 1443, 1443, 1443, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 890, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 1528, 0, 665, 4292, 4293, 666, 0, 0, 0, 667, 0, 0, 0, 0, 1563, 0, 145, 145, 145, 0, 145, 0, 85, 0, 85, 0, 85, 0, 0, 0, 0, 0, 0, 0, 1531, 0, 0, 526, 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, 4595, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 1755, 1755, 1856, 0, 1856, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 3635, 145, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 1755, 0, 1755, 0, 0, 0, 0, 0, 0, 4231, 0, 0, 4231, 1755, 0, 0, 1755, 1755, 0, 1755, 0, 0, 0, 801, 119, 0, 2, 0, 802, 803, 388, 0, 0, 0, 675, 0, 678, 389, 804, 0, 0, 805, 806, 1755, 0, 807, 0, 808, 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, 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, 789, 834, 0, 0, 400, 0, 900, 0, 0, 0, 0, 0, 0, 0, 0, 1443, 1443, 1443, 0, 0, 1443, 1443, 0, 1443, 1443, 1443, 1443, 1443, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 12, 13, 639, 0, 640, 641, 0, 0, 813, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 1856, 0, 0, 1104, 0, 0, 0, 85, 0, 85, 85, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 644, 900, 0, 0, 814, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 1443, 0, 0, 0, 0, 1443, 37, 38, 402, 0, 0, 0, 0, 0, 0, 0, 403, 0, 42, 815, 0, 0, 0, 0, 0, 0, 1195, 0, 645, 0, 816, 0, 0, 0, 817, 0, 45, 0, 0, 0, 0, 0, 646, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 768, 0, 0, 0, 183, 0, 184, 1289, 1289, 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, 0, 1755, 1755, 1856, 0, 0, 1755, 1755, 85, 0, 0, 821, 0, 1755, 0, 0, 1755, 1755, 0, 0, 0, 774, 0, 85, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 822, 823, 789, 0, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 343, 789, 789, 0, 0, 0, 0, 4891, 0, 0, 789, 789, 0, 0, 824, 825, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 789, 665, 789, 0, 666, 1755, 0, 834, 1565, 1566, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4231, 0, 0, 834, 834, 0, 0, 834, 1641, 1642, 0, 0, 0, 0, 0, 0, 0, 0, 1755, 1755, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1724, 1725, 0, 145, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4977, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 85, 1104, 0, 0, 0, 0, 0, 0, 85, 0, 85, 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, 145, 145, 1518, 0, 0, 1443, 0, 1443, 0, 0, 0, 0, 1443, 0, 0, 1443, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 0, 1104, 1104, 0, 1104, 0, 1104, 1104, 0, 1519, 0, 0, 0, 0, 0, 0, 0, 145, 145, 1104, 0, 0, 0, 0, 1104, 0, 0, 0, 85, 0, 0, 0, 85, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 1104, 1104, 1104, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1522, 1104, 1104, 0, 0, 1523, 1104, 1104, 0, 1104, 0, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 1755, 1104, 1690, 0, 1691, 1692, 1755, 0, 0, 1693, 0, 1694, 1104, 0, 0, 0, 0, 1072, 0, 0, 0, 0, 1982, 1983, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 0, 1755, 0, 1755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1695, 0, 0, 0, 0, 0, 0, 1528, 0, 1443, 0, 0, 0, 2111, 2112, 0, 3817, 2113, 2114, 3818, 2115, 2116, 2117, 0, 0, 2118, 85, 2119, 2120, 0, 85, 0, 2121, 0, 2122, 0, 85, 0, 0, 0, 2123, 1531, 0, 0, 0, 0, 0, 0, 0, 1443, 0, 0, 0, 1697, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 0, 1546, 1547, 1548, 1549, 0, 2124, 1550, 0, 0, 1551, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 789, 0, 0, 789, 789, 0, 0, 0, 0, 0, 0, 0, 789, 789, 0, 0, 0, 0, 0, 2125, 0, 1443, 0, 2126, 0, 1755, 0, 0, 2127, 0, 0, 0, 0, 2128, 0, 0, 0, 1072, 0, 0, 0, 1289, 2129, 0, 834, 2165, 2166, 0, 1289, 0, 1755, 0, 1755, 0, 1755, 2130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 1104, 0, 0, 145, 1700, 0, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 2131, 2132, 1718, 0, 0, 1719, 0, 0, 2133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2134, 2135, 1563, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 0, 0, 2157, 774, 2158, 2159, 0, 0, 0, 789, 85, 2160, 2161, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 834, 632, 633, 0, 1563, 634, 635, 0, 636, 637, 638, 4800, 0, 639, 0, 640, 641, 0, 0, 4801, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 3290, 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, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 1755, 789, 789, 789, 789, 0, 0, 0, 0, 834, 0, 0, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 0, 0, 1933, 0, 1934, 834, 0, 0, 0, 1936, 0, 0, 0, 0, 0, 0, 0, 1755, 0, 0, 0, 0, 0, 645, 0, 0, 0, 3375, 0, 0, 0, 0, 0, 0, 0, 834, 0, 646, 834, 0, 834, 834, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1938, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 350, 350, 0, 0, 0, 0, 0, 0, 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, 1939, 900, 900, 900, 900, 900, 900, 3451, 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, 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, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 146, 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, 1941, 380, 0, 380, 380, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 0, 1954, 1955, 1956, 1957, 1958, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 0, 0, 0, 0, 0, 0, 0, 789, 145, 0, 0, 0, 146, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 1520, 0, 145, 0, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1525, 1104, 0, 1104, 1104, 1104, 1104, 1104, 3702, 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, 799, 841, 0, 0, 1526, 1527, 902, 0, 0, 0, 380, 0, 1528, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1529, 1530, 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, 380, 0, 0, 1532, 1116, 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, 902, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 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, 380, 0, 0, 0, 0, 0, 3851, 0, 0, 0, 0, 0, 0, 1289, 0, 1289, 789, 0, 834, 0, 1289, 789, 789, 834, 789, 789, 834, 0, 0, 0, 0, 0, 0, 0, 0, 1295, 1295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 789, 789, 789, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, 119, 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, 799, 0, 0, 0, 0, 0, 0, 0, 799, 396, 397, 398, 3798, 399, 799, 799, 0, 0, 0, 0, 0, 0, 0, 799, 799, 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, 799, 0, 799, 1227, 0, 0, 0, 841, 0, 0, 0, 0, 0, 0, 0, 841, 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, 0, 0, 0, 0, 841, 841, 1229, 0, 841, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 902, 902, 902, 902, 902, 902, 0, 902, 902, 401, 0, 0, 0, 0, 0, 0, 902, 902, 902, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 1230, 146, 146, 0, 0, 0, 0, 403, 0, 42, 404, 0, 380, 0, 0, 0, 0, 0, 0, 0, 1116, 405, 0, 0, 0, 406, 0, 45, 1116, 0, 0, 0, 0, 0, 1116, 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, 146, 413, 414, 415, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 1116, 0, 1116, 1116, 0, 1116, 0, 1116, 1116, 0, 0, 0, 0, 416, 417, 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, 0, 0, 418, 419, 0, 0, 0, 1116, 1116, 1116, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 1116, 0, 0, 0, 1116, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 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, 0, 380, 1004, 380, 1005, 119, 0, 2, -3062, 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, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 1025, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, -858, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -858, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 1295, 0, 0, 0, 0, 0, 0, 0, -716, 799, 0, 0, 799, 799, 220, 0, 1037, 1038, 0, 19, 20, 799, 799, 0, 0, 22, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 1039, 0, 1040, 0, 0, 30, 1295, 1041, 0, 841, 0, 0, 0, 1295, 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, 146, 1116, 0, 0, 146, 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, -356, 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, 1683, 1684, 0, 0, 1685, 1686, 0, 1687, 1688, 1689, 1060, 1061, 1690, 0, 1691, 1062, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 1065, 1066, 0, 0, 0, 841, 1695, 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, 380, 0, 0, 0, 0, 0, 0, 0, 799, 0, 799, 799, 1697, 841, 0, 799, 799, 799, 841, 799, 799, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 799, 799, 799, 0, 0, 0, 0, 841, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 841, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 841, 0, 0, 841, 0, 841, 841, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 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, 1700, 0, 0, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 0, 0, 0, 0, 0, 1611, 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, 0, 0, 0, 0, 1596, 1597, 0, 4001, 1598, 1599, 4002, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 1615, 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 0, 0, 0, 0, 0, 0, 1610, 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, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 146, 146, 1611, 0, 0, 0, 0, 1612, 0, 799, 146, 0, 3649, 0, 0, 1116, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 1614, 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, 1615, 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, 1616, 0, 0, 0, 0, 0, 0, 1116, 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, 789, 0, 145, 789, 0, 0, 789, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3649, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 0, 0, 0, 0, 841, 0, 0, 0, 0, 0, 0, 0, 0, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1295, 0, 0, 0, 0, 0, 0, 0, 82, 380, 0, 0, 0, 0, 1104, 3702, 1295, 0, 1295, 799, 159, 841, 0, 1295, 799, 799, 841, 799, 799, 841, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 145, 0, 145, 0, 0, 0, 0, 799, 799, 799, 799, 841, 0, 82, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 1104, 0, 1104, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0, 0, 82, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 82, 1004, 0, 1005, 119, 0, 2, -3062, 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, 82, 6, 1023, 0, 7, -716, -716, -716, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 82, 82, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, -861, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, -861, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 82, 0, 0, 0, 0, 0, 0, -716, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 119, 0, 2, 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, 1854, 0, 0, 0, 0, 0, 0, 403, 0, 42, 1048, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 1049, 0, 82, 8, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 1051, 1052, 407, 0, 0, 0, 145, 0, 0, 0, 183, 145, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 0, 0, 0, 0, 19, 20, 1060, 1061, 0, 0, 0, 1062, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 789, 0, 789, 1063, 1064, 0, 789, 0, 0, 789, 789, 789, 0, 789, 789, 789, 789, 789, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 1065, 1066, 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, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 0, 0, 0, 0, 900, 0, 0, 82, 183, 0, 184, 0, 82, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 54, 0, 0, 1855, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1596, 1597, 0, 0, 1598, 1599, 114, 1600, 1601, 1602, 0, 147, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 1104, 1104, 145, 186, 145, 0, 0, 1695, 0, 0, 1104, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 1104, 0, 114, 0, 0, 0, 1104, 0, 1104, 114, 0, 1610, 0, 114, 0, 0, 0, 0, 0, 1104, 0, 0, 1104, 1104, 145, 1104, 0, 0, 0, 1696, 0, 0, 114, 114, 0, 0, 0, 0, 1697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 114, 0, 1698, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 1699, 0, 0, 0, 82, 0, 0, 82, 82, 82, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 0, 0, 1933, 0, 1934, 1935, 0, 0, 82, 1936, 0, 1937, 0, 0, 0, 0, 0, 0, 0, 82, 0, 114, 789, 789, 789, 0, 0, 789, 789, 0, 789, 789, 789, 789, 789, 0, 0, 0, 0, 0, 0, 0, 351, 351, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 1938, 0, 0, 0, 0, 0, 0, 1615, 147, 147, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1700, 114, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 0, 1195, 1718, 1939, 0, 1719, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 789, 1631, 1632, 1633, 1634, 789, 0, 1635, 82, 0, 1636, 0, 0, 0, 0, 774, 82, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 147, 147, 0, 0, 0, 0, 0, 0, 82, 1104, 1104, 145, 0, 82, 1104, 1104, 0, 0, 0, 0, 0, 1104, 0, 0, 1104, 1104, 83, 0, 1941, 0, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 82, 1954, 1955, 1956, 1957, 1958, 0, 0, 0, 0, 0, 147, 83, 0, 0, 0, 2111, 2112, 0, 5136, 2113, 2114, 0, 2115, 2116, 2117, 5137, 0, 2118, 0, 2119, 2120, 0, 83, 0, 2121, 0, 2122, 0, 0, 83, 0, 0, 2123, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 82, 0, 0, 83, 83, 0, 0, 0, 0, 0, 0, 695, 0, 0, 0, 0, 0, 82, 0, 0, 2124, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1195, 0, 0, 82, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 114, 1104, 1104, 0, 0, 0, 0, 147, 114, 973, 0, 0, 2125, 0, 0, 0, 2126, 0, 0, 0, 0, 2127, 0, 0, 0, 83, 2128, 0, 0, 0, 0, 0, 0, 0, 0, 2129, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 83, 83, 2130, 0, 0, 0, 0, 82, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1289, 0, 0, 0, 0, 1127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 2131, 2132, 0, 0, 0, 0, 0, 0, 2133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2134, 2135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 2136, 789, 0, 0, 147, 0, 789, 0, 0, 789, 0, 0, 0, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 0, 0, 2157, 774, 2158, 2159, 83, 0, 0, 0, 0, 2160, 2161, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 114, 114, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 82, 1104, 0, 0, 82, 0, 0, 1104, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 1104, 0, 1104, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 789, 82, 0, 0, 0, 0, 799, 0, 146, 799, 0, 0, 799, 841, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 789, 0, 0, 0, 0, 0, 114, 0, 0, 82, 0, 0, 0, 0, 114, 0, 83, 0, 0, 0, 0, 83, 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, 1116, 380, 0, 0, 0, 0, 119, 0, 2, 0, 147, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 789, 0, 0, 0, 1104, 0, 0, 0, 146, 0, 146, 3633, 0, 0, 0, 0, 1104, 114, 0, 0, 1854, 0, 114, 0, 0, 145, 0, 0, 0, 1104, 0, 1104, 0, 1104, 0, 0, 1116, 6, 1116, 0, 7, 0, 1116, 0, 8, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 0, 147, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 12, 13, 1933, 0, 1934, 1935, 0, 695, 0, 1936, 0, 1937, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 351, 147, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 351, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 1938, 0, 0, 0, 147, 0, 0, 82, 0, 82, 0, 0, 83, 114, 0, 83, 83, 83, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 83, 0, 0, 0, 0, 41, 0, 42, 120, 0, 0, 83, 0, 0, 0, 0, 0, 1939, 0, 0, 0, 0, 0, 121, 0, 45, 0, 0, 1295, 0, 147, 1940, 351, 0, 48, 0, 50, 834, 0, 0, 0, 114, 0, 3634, 83, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 54, 1683, 1684, 1855, 0, 1685, 1686, 82, 1687, 1688, 1689, 0, 0, 1690, 0, 1691, 1692, 0, 0, 0, 1693, 0, 1694, 0, 0, 0, 82, 0, 0, 0, 82, 0, 0, 0, 0, 1104, 1596, 1597, 0, 4042, 1598, 1599, 4043, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 83, 1607, 0, 1608, 0, 0, 0, 146, 83, 1609, 0, 1695, 146, 82, 0, 0, 0, 0, 0, 0, 1104, 0, 0, 1941, 0, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 0, 1954, 1955, 1956, 1957, 1958, 0, 0, 1959, 1610, 0, 1960, 0, 0, 0, 1295, 82, 82, 0, 0, 0, 0, 0, 0, 0, 0, 82, 1697, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 799, 0, 0, 0, 799, 83, 0, 799, 799, 799, 83, 799, 799, 799, 799, 799, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 114, 0, 0, 0, 351, 0, 0, 1613, 147, 0, 0, 114, 0, 83, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 114, 0, 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, 0, 0, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 83, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 841, 0, 1700, 83, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 1616, 0, 0, 0, 114, 83, 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, 2, 0, 1635, 0, 0, 1636, 0, 0, 0, 1637, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 83, 0, 0, 0, 1116, 0, 1116, 1116, 146, 83, 146, 0, 0, 0, 0, 0, 1116, 0, 147, 0, 0, 146, 0, 0, 0, 0, 6, 0, 1116, 7, 0, 0, 0, 8, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 1116, 1116, 146, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 19, 20, 147, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 799, 799, 799, 0, 0, 799, 799, 0, 799, 799, 799, 799, 799, 33, 34, 0, 35, 0, 0, 0, 114, 0, 114, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 147, 0, 48, 83, 50, 0, 0, 83, 0, 0, 0, 0, 0, 0, 83, 183, 0, 184, 1994, 0, 0, 0, 380, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 147, 0, 799, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 83, 1512, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 114, 1517, 0, 0, 0, 0, 0, 1518, 0, 0, 1116, 1116, 146, 0, 0, 1116, 1116, 0, 0, 0, 0, 0, 1116, 0, 0, 1116, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 351, 0, 0, 1519, 0, 0, 0, 0, 0, 351, 0, 147, 0, 0, 0, 0, 1683, 1684, 350, 0, 1685, 1686, 0, 1687, 1688, 1689, 0, 147, 1690, 0, 1691, 0, 0, 0, 147, 1693, 0, 1694, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 1116, 1523, 0, 0, 0, 0, 0, 0, 0, 0, 1524, 0, 0, 0, 0, 0, 147, 0, 0, 0, 1695, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 380, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1526, 1527, 0, 1697, 0, 0, 0, 0, 1528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1529, 1530, 0, 0, 0, 0, 83, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1295, 0, 0, 0, 1532, 0, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 147, 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, 0, 0, 0, 799, 0, 799, 0, 0, 0, 0, 799, 0, 0, 799, 147, 0, 0, 1700, 0, 0, 83, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 0, 1714, 1715, 1716, 1717, 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, 114, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0, 1116, 0, 0, 83, 83, 0, 0, 0, 0, 0, 0, 1116, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1116, 0, 0, 1116, 0, 1116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 799, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 799, 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, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 1025, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 0, 0, 0, 0, 0, -859, 0, 0, 0, 799, 0, 0, 0, 1116, 0, 0, -859, 12, 13, 0, 1031, 0, 0, 0, 0, 1116, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 146, 0, 0, 0, 1116, -716, 1116, 0, 1116, 0, 0, 220, 0, 1037, 1038, 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, 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, 841, 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, -356, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 83, 0, 0, 0, 0, 0, 0, 83, 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, 841, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 1065, 1066, 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, 4, 1116, 1022, 213, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, -598, 0, 0, 1116, 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, -716, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, -598, 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, -356, 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, 82, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 1065, 1066, 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, 82, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 213, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 8, 0, 0, 0, 0, 0, 1024, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, 1906, 0, 0, 0, 0, 0, 82, 0, 82, 0, 0, 0, 0, 0, 0, 0, 82, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -716, 0, 82, 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, -356, 0, 0, 0, 52, 0, 53, 1053, 1054, 1055, 0, 0, 1056, 114, 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, 1236, 119, 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, 82, 1250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 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, 2109, 0, 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, 147, 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, 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, 351, 0, 1265, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 114, 0, 407, 0, 0, 0, 0, 82, 0, 82, 183, 82, 184, 0, 0, 0, 0, 1266, 0, 0, 0, 0, 0, 973, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 83, 1267, 1268, 1269, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1270, 0, 0, 0, 0, 0, 0, 82, 0, 0, 774, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1271, 1272, 0, 0, 0, 0, 0, 0, 0, 82, 0, 82, 0, 0, 0, 0, 0, 0, 351, 0, 351, 0, 82, 0, 0, 0, 0, 0, 114, 1273, 1274, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 82, 0, 0, 82, 0, 0, 389, 1008, 1009, 114, 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, -716, -716, -716, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, -600, 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, -716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, -600, 0, 0, 24, 82, 0, 25, 26, 0, 0, 0, 82, 0, 82, 82, 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, 83, 0, 0, 183, 0, 184, 1053, 1054, 1055, 0, 0, 1056, 0, 0, 0, 0, 83, 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, 351, 0, 0, 0, 0, 147, 119, 0, 2, 1060, 1061, 114, 0, 0, 1062, 0, 0, 83, 82, 0, 0, 0, 0, 82, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 82, 0, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 0, 0, 1933, 0, 1934, 1065, 1066, 6, 0, 1936, 7, 1937, 0, 82, 8, 0, 0, 83, 0, 83, 82, 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, 0, 4648, 83, 0, 1938, 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, 82, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 1926, 1927, 0, 1939, 1928, 1929, 0, 1930, 3595, 1932, 0, 0, 1933, 0, 1934, 0, 0, 0, 0, 1936, 0, 1937, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 114, 0, 114, 0, 114, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1938, 0, 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, 4230, 82, 0, 114, 0, 0, 0, 0, 0, 82, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 1939, 0, 0, 351, 0, 351, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 1941, 0, 0, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 0, 1954, 1955, 1956, 1957, 1958, 0, 114, 0, 0, 114, 0, 0, 0, 0, 0, 147, 0, 0, 0, 1236, 119, 0, 2, 0, 1237, 1238, 388, 0, 0, 0, 0, 0, 0, 389, 1239, 0, 0, 1240, 1241, 4322, 0, 1242, 0, 1243, 0, 82, 0, 0, 0, 82, 0, 0, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 82, 1250, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 83, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1941, 0, 0, 874, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 0, 1954, 1955, 1956, 1957, 1958, 0, 0, 12, 13, 1251, 0, 0, 0, 0, 0, 1252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 351, 754, 0, 0, 0, 0, 0, 114, 0, 114, 114, 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, 82, 147, 0, 0, 82, 877, 0, 0, 0, 0, 82, 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, 83, 183, 83, 184, 83, 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, 2111, 2112, 0, 4715, 2113, 2114, 351, 2115, 2116, 2117, 0, 114, 2118, 1270, 2119, 2120, 0, 0, 0, 2121, 0, 2122, 83, 774, 0, 0, 114, 2123, 114, 0, 0, 0, 0, 0, 0, 0, 0, 1271, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 83, 0, 0, 351, 0, 0, 0, 0, 0, 0, 114, 83, 0, 0, 2124, 0, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2125, 0, 0, 0, 2126, 0, 432, 0, 0, 2127, 0, 0, 0, 0, 2128, 0, 0, 0, 0, 0, 0, 0, 0, 2129, 114, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 2130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 2131, 2132, 1604, 0, 1605, 1606, 0, 0, 2133, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 0, 0, 0, 2134, 2135, 0, 0, 83, 0, 0, 0, 0, 0, 0, 83, 0, 83, 83, 0, 529, 0, 2136, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 114, 1610, 114, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 0, 0, 2157, 774, 2158, 2159, 0, 0, 0, 0, 0, 2160, 2161, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 581, 582, 583, 585, 586, 0, 590, 595, 598, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 621, 622, 623, 624, 625, 626, 0, 0, 0, 0, 114, 0, 0, 0, 114, 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, 0, 0, 83, 0, 0, 0, 0, 83, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 83, 0, 0, 0, 0, 725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 860, 1616, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 83, 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, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 114, 0, 0, 0, 114, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 432, 0, 0, 0, 0, 83, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 83, 0, 83, 0, 0, 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, 0, 0, 1441, 1442, 0, 1448, 1449, 1450, 595, 1454, 1455, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 1480, 1481, 1482, 0, 0, 1490, 1491, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1567, 1568, 83, 1571, 1572, 1573, 595, 1577, 1578, 0, 0, 0, 0, 0, 1581, 1582, 1583, 0, 1585, 1586, 0, 0, 0, 0, 0, 114, 0, 0, 0, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 5163, 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, 595, 0, 0, 1668, 1669, 0, 1670, 0, 0, 0, 0, 0, 0, 0, 1676, 1677, 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, 1743, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 83, 0, 0, 0, 0, 0, 83, 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, 0, 0, 0, 0, 0, 0, 0, 1525, 0, 1232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1836, 0, 0, 0, 0, 595, 0, 0, 0, 1847, 0, 0, 0, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 1865, 0, 0, 0, 0, 0, 0, 0, 0, 1872, 0, 0, 0, 0, 1877, 1529, 1530, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 1895, 1896, 1604, 1531, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 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, 1610, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 0, 0, 0, 0, 0, 0, 0, 1157, 0, 1157, 0, 0, 0, 0, 0, 0, 1611, 1165, 2030, 0, 0, 1612, 2033, 2034, 2036, 2037, 0, 2038, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 2046, 2046, 0, 0, 2052, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2053, 0, 0, 0, 2059, 0, 0, 0, 0, -358, 0, 2, -3062, 2062, 2063, 0, 2066, 2067, 0, 2069, 595, 2073, 2074, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2094, 2095, 2096, 0, 2098, 2099, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 6, 0, 0, 7, 0, 0, 0, 8, 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, 0, 774, 0, 0, 0, 0, 12, 13, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3218, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 156, 3231, 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, 0, 0, 0, 3254, 0, 0, 3257, 253, 0, 50, 3262, 3263, 157, 0, 3264, 0, 3266, 3267, 0, 0, 183, 3270, 184, 3271, 0, 0, 0, 0, 0, 0, 3273, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 3282, 3283, 3284, 3285, 3286, 0, 3291, 0, 3292, 3293, 3294, 3295, 3296, 0, 0, 0, 0, 0, 0, 3304, 0, 0, 0, 0, 0, 0, 0, 0, 3313, 3314, 3315, 3316, 3317, 3318, 3319, 3320, 3321, 3322, 3323, 3324, 3325, 3326, 3327, 3328, 3329, 3330, 1232, 3332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3361, 0, 0, 0, 3362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3367, 3368, 3369, 3370, 3371, 0, 3376, 0, 3377, 3378, 3379, 3380, 3381, 0, 0, 0, 0, 3387, 0, 0, 0, 0, 3392, 3393, 3394, 3395, 3396, 3397, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3409, 1232, 3411, 0, 0, 801, 119, 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, 3438, 0, 278, 0, 3439, 809, 810, 811, 0, 812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 3459, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 4108, 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, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3513, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 3534, 25, 26, 0, 432, 0, 432, 0, 432, 0, 432, 0, 0, 0, 0, 814, 1418, 0, 0, 0, 0, 3577, 1232, 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, 3598, 0, 0, 0, 403, 0, 42, 815, 0, 0, 0, 0, 0, 3615, 0, 3617, 0, 0, 816, 0, 3619, 0, 817, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 1872, 407, 0, 0, 0, 3662, 0, 0, 3664, 183, 3666, 184, 0, 3670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3674, 0, 0, 0, 0, 0, 408, 409, 410, 0, 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, 0, 0, 822, 823, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 0, 0, 3740, 3741, 3742, 3743, 3744, 3745, 3746, 3747, 3748, 3749, 3750, 0, 0, 0, 824, 825, 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, 3779, 0, 3780, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1418, 0, 0, 0, 3789, 3790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 3800, 0, 3802, 0, 2046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3822, 0, 0, 0, 0, 3826, 0, 0, 3827, 0, 3829, 3830, 0, 0, 0, 3833, 0, 3834, 0, 0, 0, 0, 3836, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3843, 3844, 3845, 3846, 3847, 0, 3852, 3853, 3854, 3855, 3856, 3857, 0, 0, 0, 0, 0, 0, 3865, 0, 0, 0, 0, 0, 0, 0, 0, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 1232, 3893, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 3907, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 3925, 395, 0, 0, 1015, 1016, 1017, 0, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 4, 3938, 1022, 213, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 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, -716, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 19, 20, 0, 0, 0, 1911, 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, -356, 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, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 1065, 1066, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 5102, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 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, -716, 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, 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, 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, -356, 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, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 1065, 1066, 0, 1014, 0, 0, 0, 0, 395, 0, 0, 1015, 1016, 1017, 5231, 1018, 0, 0, 0, 0, 1019, 1020, 1021, 4, 0, 1022, 0, 0, 0, 6, 1023, 0, 7, -716, -716, -716, 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, -716, 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, 632, 633, 0, 28, 634, 635, 4923, 636, 637, 638, 1039, 0, 639, 0, 640, 641, 0, 1041, 4924, 642, 0, 643, 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, 644, 1050, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 1051, 1052, 407, 0, 0, 0, -356, 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, 645, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 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, 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, 4925, 4926, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1418, 0, 725, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, 0, 0, 3986, 1157, 0, 0, 0, 0, 0, 3998, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4017, 4018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2111, 2112, 0, 2046, 2113, 2114, 2046, 2115, 2116, 2117, 0, 0, 2118, 0, 2119, 2120, 0, 4023, 0, 2121, 0, 2122, 0, 0, 0, 0, 0, 2123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4027, 4028, 4029, 4030, 4031, 4032, 4033, 4034, 4035, 4036, 4037, 4038, 0, 3986, 1157, 2124, 0, 0, 0, 4046, 4047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2046, 2046, 0, 0, 0, 0, 0, 0, 4051, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2125, 0, 0, 0, 2126, 0, 0, 0, 0, 2127, 0, 0, 0, 0, 2128, 0, 0, 4054, 4055, 4056, 4057, 4058, 4059, 4060, 4061, 4062, 4063, 4064, 4065, 4066, 1157, 0, 4069, 4070, 4071, 0, 2130, 4074, 4075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2046, 0, 2046, 0, 0, 0, 0, 4080, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2131, 2132, 0, 0, 0, 0, 0, 0, 2133, 0, 0, 0, 0, 0, 4093, 0, 0, 0, 4096, 0, 0, 0, 0, 4100, 2134, 2135, 4105, 0, 0, 0, 4111, 0, 0, 0, 4113, 0, 0, 0, 0, 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 0, 0, 0, 774, 2158, 2159, 0, 0, 0, 0, 0, 2160, 2161, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4180, 4181, 4182, 4183, 4184, 4185, 4186, 4187, 4188, 4189, 4190, 4191, 4192, 1157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1505, 1506, 4211, 0, 1507, 1508, 4215, 1509, 1510, 1511, 0, 5164, 1513, 0, 1514, 1515, 0, 0, 0, 1516, 0, 1517, 0, 4228, 0, 0, 0, 1518, 0, 0, 0, 4240, 0, 0, 0, 0, 0, 0, 4245, 0, 0, 4248, 0, 0, 4253, 0, 0, 0, 0, 0, 0, 4256, 4257, 4258, 4259, 1872, 0, 4264, 0, 0, 0, 0, 0, 0, 1519, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2046, 2046, 0, 0, 0, 4272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4273, 0, 0, 4276, 4277, 0, 0, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 4282, 0, 0, 0, 1524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1525, 0, 0, 4295, 4296, 0, 0, 0, 0, 0, 4299, 0, 0, 4301, 4302, 2046, 0, 2046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 0, 3986, 0, 1157, 0, 0, 0, 0, 1526, 1527, 0, 0, 0, 0, 0, 0, 1528, 0, 0, 0, 4342, 4343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 2046, 0, 0, 2046, 0, 0, 0, 0, 1531, 0, 0, 0, 0, 0, 4348, 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, 3907, 0, 1550, 0, 0, 1551, 0, 0, 0, 1552, 774, 1553, 1554, 0, 0, 0, 0, 0, 1555, 1556, 1557, 1558, 1559, 1560, 0, 4373, 0, 0, 4375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4390, 0, 0, 4392, 0, 0, 0, 4393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4816, 0, 639, 4425, 640, 641, 0, 1872, 4817, 642, 0, 643, 3986, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4446, 0, 0, 0, 0, 4449, 4450, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4468, 0, 3986, 644, 4470, 0, 0, 4473, 0, 0, 0, 4477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4493, 0, 0, 0, 0, 4494, 0, 0, 0, 0, 0, 3438, 0, 0, 0, 0, 4503, 0, 4506, 0, 0, 0, 0, 0, 4516, 0, 0, 4519, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 1872, 0, 0, 0, 0, 646, 0, 0, 0, 4542, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3577, 3577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3598, 0, 3598, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4613, 0, 4617, 0, 0, 0, 0, 0, 0, 0, 0, 4624, 0, 0, 0, 0, 3986, 0, 0, 0, 4634, 0, 0, 0, 0, 0, 0, 4643, 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, 4818, 4819, 666, 0, 0, 0, 667, 0, 0, 2046, 1872, 0, 1872, 0, 0, 0, 0, 0, 0, 0, 3664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1157, 0, 0, 4691, 0, 4692, 4693, 4694, 0, 4695, 4696, 0, 0, 0, 0, 0, 0, 4699, 0, 0, 0, 0, 0, 1232, 1232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4717, 0, 0, 0, 0, 3986, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4729, 0, 0, 4732, 4733, 0, 0, 0, 0, 0, 0, 0, 4738, 4740, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1872, 0, 0, 0, 0, 4761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3986, 0, 0, 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, 2, 0, 1237, 1238, 388, 0, 0, 0, 0, 0, 0, 389, 1239, 0, 0, 1240, 1241, 4976, 0, 1242, 0, 1243, 0, 0, 0, 0, 4824, 0, 0, 0, 278, 0, 0, 1245, 1246, 1247, 0, 1248, 1249, 0, 1250, 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, 4850, 0, 0, 0, 0, 4854, 0, 0, 0, 0, 1872, 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, 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, 4905, 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, 4915, 33, 34, 4917, 35, 1256, 0, 3986, 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, 2046, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 0, 183, 4958, 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, 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, 4740, 0, 4740, 0, 0, 0, 0, 0, 0, 1872, 0, 1271, 1272, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, 5013, 0, 0, 0, 0, 5016, 0, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5018, 0, 5019, 5020, 0, 0, 0, 1872, 0, 0, 0, 119, 5025, 2, 0, 0, 5029, 0, 5030, 5031, 0, 5032, 0, 0, 0, 0, 5035, 0, 5036, 5037, 5038, 0, 0, 0, 4503, 2046, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1854, 0, 5057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5061, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3598, 0, 3598, 0, 0, 5084, 0, 5085, 5086, 0, 12, 13, 0, 0, 5090, 0, 0, 3986, 0, 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, 1294, 1294, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 1232, 0, 5130, 0, 5131, 5132, 0, 5133, 0, 0, 0, 0, 0, 5138, 0, 0, 0, 0, 0, 4740, 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, 629, 5158, 0, 0, 5159, 0, 0, 0, 0, 670, 0, 0, 121, 0, 45, 5166, 0, 0, 0, 0, 0, 5171, 0, 48, 0, 50, 2046, 0, 4503, 0, 0, 0, 3634, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 54, 0, 0, 1855, 0, 0, 1561, 840, 784, 829, 5219, 0, 0, 0, 894, 840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5233, 5234, 0, 5237, 1418, 0, 0, 0, 629, 0, 5245, 840, 840, 0, 1638, 840, 0, 5249, 0, 5250, 5251, 0, 5252, 0, 0, 0, 0, 0, 0, 0, 5257, 0, 0, 4740, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5266, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 670, 0, 0, 894, 0, 0, 0, 4503, 0, 4503, 4503, 4503, 4503, 0, 0, 4503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5303, 0, 0, 5304, 5305, 5306, 5307, 5308, 5309, 5310, 5311, 5312, 5313, 5314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5323, 0, 0, 0, 0, 0, 5328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1279, 1279, 0, 0, 0, 0, 0, 0, 5344, 0, 5345, 5346, 5347, 0, 5348, 5349, 5350, 0, 5351, 5352, 0, 4503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4503, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, -880, 0, 2, -3062, 0, 0, 0, 0, 0, 0, 5373, 0, 5374, 5375, 0, 1872, 0, 0, 0, 0, 0, 0, 0, 784, 0, 0, 0, 5385, 0, 5386, 5387, 784, 5388, 0, 0, 0, 0, 784, 784, 0, 0, 0, 0, 0, 0, 0, 784, 784, 0, 0, 4503, 0, 0, 6, 4503, 0, 7, 4503, 0, 0, 8, 0, 1494, 0, 0, 0, 0, 0, 0, 1498, 0, 0, 1872, 784, 0, 784, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 4503, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 1589, 0, 0, 0, 0, 1592, 0, 0, 0, 829, 829, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4503, 19, 20, 0, 4503, 0, 0, 0, 0, 24, 0, 0, 25, 26, 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, 33, 34, 0, 35, 0, 1723, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 45, 1294, 0, 0, 1088, 0, 0, 0, 0, 48, 0, 50, 0, 0, 157, 0, 0, 0, 1649, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 1294, 0, 2162, 840, 0, 0, 0, 1294, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1903, 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, 1978, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2111, 2112, 0, 0, 2113, 2114, 0, 2115, 2116, 2117, 0, 0, 2118, 0, 2119, 2120, 0, 0, 0, 2121, 1561, 2122, 0, 0, 0, 0, 0, 2123, 0, 0, 0, 1561, 0, 0, 0, 840, 0, 0, 1561, 1561, 0, 840, 0, 0, 0, 0, 1561, 0, 1561, 0, 0, 0, 840, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 0, 0, 840, 0, 0, 840, 0, 0, 0, 2125, 0, 0, 0, 2126, 0, 0, 0, 0, 2127, 0, 0, 1279, 0, 2128, 0, 0, 0, 0, 0, 0, 784, 0, 2129, 784, 784, 840, 0, 0, 1638, 0, 0, 0, 784, 784, 1638, 2130, 0, 0, 0, 0, 0, 0, 0, 840, 0, 0, 2102, 0, 0, 0, 0, 0, 2105, 0, 0, 0, 0, 1638, 1638, 0, 0, 1279, 0, 0, 829, 0, 0, 0, 1279, 0, 0, 0, 0, 840, 0, 0, 840, 0, 840, 840, 840, 0, 2131, 2132, 0, 0, 0, 0, 0, 0, 2133, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 840, 0, 1638, 0, 2134, 2135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 0, 0, 2157, 774, 2158, 2159, 0, 0, 0, 0, 0, 2160, 2161, 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, 0, 0, 0, 1494, 1498, 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 2061, 639, 0, 640, 641, 0, 0, 0, 642, -926, 643, 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, 0, 644, 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, 0, 645, 0, 0, 0, 0, 829, 0, 0, 829, 0, 829, 829, 829, 0, 646, 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, 1162, 0, 0, 785, 830, 0, 0, 0, 0, 895, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 1903, 0, 665, 0, 2162, 666, 0, 0, 0, 667, 0, 0, 0, 0, 0, 0, 1561, 0, 840, 0, 1561, 1561, 0, 840, 0, 0, 0, 0, 1561, 0, 1561, 1091, 840, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4826, 0, 639, 1294, 640, 641, 2162, 0, 4827, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 1294, 895, 1294, 0, 0, 840, 0, 1294, 0, 0, 840, 0, 0, 840, 0, 1978, 0, 0, 0, 0, 670, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 0, 0, 0, 840, 0, 1638, 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, 645, 0, 0, 1088, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 646, 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, 0, 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, 0, 0, 0, 0, 830, 0, 0, 0, 0, 0, 0, 647, 830, 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, 2105, 667, 0, 830, 830, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 829, 0, 0, 0, 0, 829, 0, 0, 119, 0, 2, -3062, 0, 0, 829, 0, 0, 895, 895, 895, 895, 895, 895, 0, 895, 895, 0, 0, 1279, 0, 0, 0, 2181, 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, 0, 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, 2182, 2183, 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, 0, 1004, 0, 1005, 119, 0, 2, -3062, 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, -716, -716, -716, 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, -860, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -860, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 1280, 0, 0, 0, 0, 0, 0, 0, -716, 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, -358, 0, 2, -3062, 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, 6, 0, 0, 7, 1049, 0, 0, 8, 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, 12, 13, 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, 19, 20, 1060, 1061, 0, 0, 0, 1062, 24, 0, 0, 25, 26, 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, 33, 34, 0, 35, 0, 0, 0, 0, 830, 1065, 1066, 37, 38, 156, 830, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 830, 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, 0, 157, 3288, 0, 0, 768, 0, 0, 0, 183, 785, 184, 785, 785, 0, 830, 0, 785, 785, 785, 830, 785, 785, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 785, 785, 785, 0, 0, 0, 0, 830, 0, 0, 0, 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, 3373, 0, 0, 0, 0, 0, 0, 0, 830, 0, 0, 830, 0, 830, 830, 830, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 830, 1140, 634, 635, 0, 636, 637, 638, 1141, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 895, 895, 895, 895, 895, 895, 3449, 895, 895, 895, 895, 895, 895, 0, 0, 0, 895, 895, 644, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 895, 0, 895, 0, 0, 0, 1638, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 1561, 0, 1561, 1561, 0, 1638, 0, 646, 1561, 1561, 1561, 1638, 1561, 1561, 1638, 0, 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, 0, 0, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 1638, 0, 0, 1638, 1638, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 1638, 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, 1091, 666, 1091, 0, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 1091, 1091, 1091, 1091, 1091, 3700, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 840, 1091, 0, 0, 0, 0, 0, 629, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 385, 119, 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, 0, 0, 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, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 611, 0, 0, 830, 0, 0, 0, 0, 0, 0, 0, 0, 830, 0, 1561, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 3849, 0, 0, 0, 0, 0, 0, 1280, 0, 1280, 785, 0, 830, 0, 1280, 785, 785, 830, 785, 785, 830, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 785, 785, 785, 785, 830, 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, 119, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 0, 0, 784, 0, 0, 784, 0, 1294, 784, 829, 0, 0, 0, 1638, 0, 0, 1638, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 613, 0, 6, 784, 0, 7, 0, 0, 0, 8, 0, 416, 417, 0, 0, 0, 0, 0, 0, 0, 2162, 0, 2162, 1561, 0, 1638, 0, 0, 2162, 1561, 1561, 1638, 1561, 1561, 1638, 0, 0, 0, 0, 0, 418, 419, 0, 0, 0, 0, 670, 0, 0, 0, 12, 13, 0, 0, 0, 0, 1561, 1561, 1561, 1561, 1638, 0, 1088, 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, 23, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 1088, 0, 1088, 0, 33, 34, 1088, 35, 0, 0, 1294, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 1311, 0, 50, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 183, 0, 184, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 54, 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, -716, -716, -716, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 0, -599, 0, 0, 0, 0, 0, 0, 840, 1638, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 1279, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 0, 0, 0, 0, -716, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, -599, 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, 629, 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, 1279, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 1057, 1058, 1059, 0, 0, 0, 0, 0, 0, 670, 0, 0, 0, 0, 784, 0, 784, 0, 0, 0, 784, 1060, 1061, 784, 784, 784, 1062, 784, 784, 784, 784, 784, 0, 0, 0, 0, 0, 2162, 0, 0, 1063, 1064, 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, 1065, 1066, 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, 894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2162, 0, 0, 0, 0, 0, 0, 1519, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4907, 829, 639, 0, 640, 641, 0, 0, 4908, 642, 0, 643, 1561, 0, 1561, 0, 0, 0, 0, 0, 0, 0, 1561, 0, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1520, 0, 0, 0, 1521, 0, 0, 0, 0, 1522, 0, 0, 0, 0, 1523, 0, 0, 0, 0, 0, 0, 0, 644, 1524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 1088, 1088, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 1088, 0, 0, 0, 1526, 1527, 1088, 0, 1088, 0, 646, 0, 1528, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 1088, 1088, 0, 1088, 0, 0, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1531, 0, 0, 1088, 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, 784, 784, 784, 0, 0, 784, 784, 0, 784, 784, 784, 784, 784, 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, 4909, 4910, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1561, 1561, 1561, 0, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 0, 0, 0, 0, 0, 0, 784, 0, 1294, 0, 0, 784, 0, 0, 0, 0, 0, 736, 119, 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, 3985, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 1561, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 751, 0, 0, 1088, 1088, 0, 0, 0, 1088, 1088, 0, 0, 0, 0, 0, 1088, 0, 0, 1088, 1088, 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, 3985, 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, 1088, 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, 1088, 1088, 407, 2162, 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, 0, 0, 770, 771, 772, 0, 0, 0, 1561, 1561, 0, 1561, 0, 0, 1561, 0, 0, 0, 773, 0, 0, 0, 119, 0, 2, 0, 0, 0, 774, 0, 1279, 0, 785, 0, 0, 785, 0, 0, 785, 830, 0, 0, 775, 776, 0, 0, 1926, 1927, 0, 0, 1928, 1929, 0, 1930, 3595, 1932, 4268, 0, 1933, 785, 1934, 1935, 0, 0, 0, 1936, 0, 1937, 0, 0, 0, 777, 778, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 784, 0, 784, 0, 0, 0, 0, 784, 0, 0, 784, 0, 0, 1938, 0, 0, 0, 0, 0, 0, 0, 1091, 3700, 0, 1561, 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, 1939, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 1091, 1940, 1091, 0, 0, 0, 1091, 840, 0, 0, 0, 0, 0, 4239, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 1088, 1091, 0, 37, 38, 1561, 1088, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 4230, 0, 0, 0, 0, 784, 0, 2102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 1638, 840, 0, 0, 0, 0, 0, 1941, 0, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 784, 1954, 1955, 1956, 1957, 1958, 0, 0, 1959, 0, 0, 1960, 0, 0, 0, 1961, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3985, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1638, 0, 0, 119, 0, 2, 0, 385, 119, 0, 2, -3062, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 784, 391, 392, 0, 1088, 393, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 1088, 0, 0, 396, 397, 398, 0, 399, 0, 0, 0, 0, 0, 1088, 0, 1088, 6, 1088, 0, 7, 0, 6, 0, 8, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4942, 0, 0, 0, 12, 13, 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, 829, 0, 0, 1280, 0, 0, 19, 20, 0, 0, 4260, 19, 20, 0, 24, 0, 0, 25, 26, 24, 0, 0, 25, 26, 4261, 0, 0, 0, 0, 785, 119, 785, 2, 0, 0, 785, 401, 3985, 785, 785, 785, 0, 785, 785, 785, 785, 785, 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, 404, 0, 3985, 0, 0, 0, 0, 6, 0, 0, 7, 405, 45, 0, 8, 406, 0, 45, 0, 0, 0, 48, 0, 50, 0, 0, 48, 0, 50, 829, 0, 407, 0, 0, 183, 895, 184, 4230, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 54, 408, 409, 410, 0, 54, 411, 0, 412, 0, 830, 413, 414, 415, 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, 1088, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 1088, 418, 419, 37, 38, 0, 1102, 0, 0, 0, 0, 0, 0, 41, 0, 42, 0, 1091, 0, 1091, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 3985, 45, 0, 0, 0, 0, 899, 0, 0, 1091, 48, 0, 50, 2, 0, 1091, 0, 1091, 0, 0, 0, 0, 0, 183, 0, 184, 0, 0, 1091, 0, 0, 1091, 1091, 0, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1288, 1288, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 785, 785, 785, 0, 3985, 785, 785, 0, 785, 785, 785, 785, 785, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 4968, 0, 639, 0, 640, 641, 19, 20, 4969, 642, 0, 643, 0, 0, 24, 0, 0, 25, 26, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 788, 788, 0, 0, 0, 0, 0, 0, 0, 788, 788, 0, 33, 34, 0, 35, 0, 0, 0, 644, 0, 0, 0, 37, 38, 1192, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 788, 0, 788, 3985, 0, 0, 0, 833, 0, 785, 0, 0, 0, 0, 785, 833, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 183, 0, 184, 0, 0, 0, 833, 833, 0, 0, 833, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 1091, 1091, 0, 0, 0, 1091, 1091, 0, 0, 0, 0, 0, 1091, 0, 0, 1091, 1091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 1102, 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, 4970, 4971, 666, 0, 1091, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3985, 0, 0, 0, 0, 1102, 0, 1102, 0, 1102, 1102, 0, 1102, 0, 1102, 1102, 0, 0, 0, 0, 0, 0, 4944, 0, 0, 1857, 0, 1102, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 1091, 1091, 0, 0, 0, 1857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 862, 119, 785, 2, 785, 863, 864, 388, 0, 785, 0, 0, 785, 0, 389, 865, 0, 0, 866, 867, 0, 0, 868, 0, 869, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 870, 871, 872, 0, 873, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 6, 0, 8, 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, 12, 13, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 1091, 0, 0, 0, 0, 0, 1091, 3985, 1288, 0, 0, 833, 0, 0, 0, 1288, 0, 1091, 0, 0, 19, 20, 0, 0, 0, 19, 20, 0, 24, 0, 0, 25, 26, 24, 0, 0, 25, 26, 1091, 0, 0, 1091, 875, 1091, 1857, 1102, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 877, 0, 0, 0, 0, 33, 34, 785, 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, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3461, 45, 785, 0, 880, 0, 45, 0, 0, 0, 48, 0, 50, 0, 0, 48, 0, 50, 0, 0, 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, 881, 882, 883, 788, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 884, 0, 785, 0, 833, 0, 1091, 0, 0, 0, 833, 0, 0, 613, 0, 0, 0, 0, 1091, 0, 0, 833, 0, 0, 885, 886, 0, 0, 0, 0, 0, 1091, 0, 1091, 0, 1091, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 887, 888, 642, -926, 643, 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, 0, 0, 0, 788, 788, 788, 788, 0, 644, 0, 0, 833, 0, 0, 0, 0, 0, 830, 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, 833, 0, 645, 833, 0, 833, 833, 833, 0, 0, 0, 0, 0, 0, 0, 0, 646, 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, 830, 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, 779, 826, 0, 0, 1162, 0, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091, 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, 1091, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 2111, 2112, 0, 0, 2113, 2114, 0, 2115, 2116, 2117, 0, 0, 2118, 0, 2119, 2120, 0, 0, 0, 2121, 0, 2122, 0, 0, 0, 0, 889, 2123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2124, 0, 0, 0, 0, 0, 0, 788, 1857, 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, 2127, 1102, 0, 0, 0, 2128, 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, 2133, 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, 2136, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 826, 826, 0, 774, 826, 0, 0, 0, 0, 0, 0, 0, 833, 1557, 1558, 1559, 1560, 833, 0, 0, 119, 0, 2, -3062, 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, 338, 1071, 339, 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, 0, 0, 0, 0, 183, 1071, 184, 340, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 3652, 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, -716, -716, -716, 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, 1275, 0, 0, 0, 0, 0, 0, 0, -716, 779, 0, 0, 779, 779, 0, 0, 0, 0, 0, 19, 20, 779, 779, 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, 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, 119, 0, 2, -3062, 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, -246, 0, 0, 0, 0, 0, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 826, 1065, 1066, 8, 0, 0, 826, 0, 0, 0, 0, 0, 844, 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 12, 13, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 779, 0, 779, 779, 0, 826, 0, 779, 779, 779, 826, 779, 779, 826, 0, 0, 0, 0, 845, 846, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 779, 779, 779, 779, 0, 0, 0, 1610, 826, 0, 0, 0, 0, 847, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 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, 0, 0, 0, 0, 826, 0, 0, 826, 1611, 826, 826, 826, 0, 1612, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 157, 0, 0, 826, 849, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 889, 889, 889, 889, 889, 889, 0, 889, 889, 889, 889, 889, 889, 1615, 0, 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, 0, 0, 0, 0, 1616, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 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, 0, 774, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 16, 0, 17, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 779, 0, 37, 38, 0, 0, 1071, 0, 0, 0, 0, 0, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 50, 0, 1071, 0, 1071, 0, 0, 4148, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 1071, 0, 1071, 1071, 1071, 1071, 1071, 0, 1071, 1071, 1071, 1071, 1071, 1071, 0, 0, 1071, 54, 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, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 4225, 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, -716, -716, -716, 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, -716, 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, 788, 0, 1857, 788, 0, 0, 788, 833, 0, 0, 0, 0, 0, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 788, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 1065, 1066, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 0, 1014, 0, 0, 0, 1102, 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, -716, -716, -716, 8, 1857, 0, 1857, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 0, 1028, 0, 0, 1029, 0, 1030, 0, 4614, 0, 0, 0, 0, 0, 1102, 0, 1102, 0, 0, 0, 1102, 0, 0, 0, 0, 0, 12, 13, 0, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 1102, 0, 0, 0, -716, 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, 1288, 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, 736, 119, 1062, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 1063, 1064, 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, 1065, 1066, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 0, 0, 0, 0, 400, 1857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1288, 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, 788, 0, 788, 0, 24, 0, 788, 25, 26, 788, 788, 788, 0, 788, 788, 788, 788, 788, 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, 899, 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, 833, 0, 0, 0, 0, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 770, 771, 772, 119, 0, 2, -3062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 773, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 1596, 1597, 0, 4329, 1598, 1599, 4330, 1600, 1601, 1602, 775, 776, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 6, 1609, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 777, 778, 1102, 0, 1102, 1102, 1857, 0, 1857, 0, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 1857, 0, 0, 0, 0, 0, 1610, 1102, 0, 0, 0, 0, 0, 1102, 0, 1102, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 0, 0, 1102, 1102, 0, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 1102, 24, 0, 1611, 25, 26, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 156, 0, 0, 0, 0, 0, 0, 0, 41, 0, 42, 788, 788, 788, 0, 0, 788, 788, 0, 788, 788, 788, 788, 788, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1615, 50, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 183, 0, 184, 340, 0, 1857, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 54, 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, 788, 0, 1637, 774, 0, 788, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 4950, 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, -716, -716, -716, 8, 0, 1102, 1102, 1857, 0, 400, 1102, 1102, 0, 0, 1026, 1027, 0, 1102, 0, 1028, 1102, 1102, 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, -716, 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, 1102, 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, 1102, 1102, 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, 1288, 0, 779, 0, 0, 779, 0, 0, 779, 826, 0, 0, 0, 1060, 1061, 0, 0, 0, 1062, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 779, 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, 788, 0, 788, 0, 0, 0, 0, 788, 0, 0, 788, 0, 0, 0, 0, 0, 0, 1236, 119, 0, 2, 1071, 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, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 0, 0, 8, 1071, 0, 1071, 0, 0, 400, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 874, 0, 0, 0, 0, 0, 0, 0, 1102, 1071, 0, 0, 0, 0, 1102, 0, 0, 0, 0, 12, 13, 1251, 0, 0, 0, 1102, 0, 1252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, 0, 0, 0, 1102, 0, 0, 1102, 0, 1102, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 875, 0, 788, 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, 788, 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, 1275, 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, 788, 1267, 1268, 1269, 1102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1102, 1270, 0, 0, 0, 0, 0, 0, 0, 0, 0, 774, 0, 1102, 0, 1102, 0, 1102, 0, 0, 0, 0, 0, 1596, 1597, 1271, 1272, 1598, 1599, 0, 1600, 1601, 1602, 0, 1603, 1604, 0, 1605, 1606, 0, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 0, 0, 0, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 833, 0, 0, 1275, 0, 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, 0, 0, 0, 779, 0, 0, 779, 779, 779, 0, 779, 779, 779, 779, 779, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, -358, 0, 2, -3062, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 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, 889, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 835, 0, 0, 0, 0, 901, 0, 1616, 0, 0, 0, 0, 12, 13, 0, 0, 1102, 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, 19, 20, 1636, 0, 0, 0, 1637, 774, 24, 0, 1102, 25, 26, 0, 0, 0, 1105, 1557, 1558, 1559, 1560, 0, 0, 0, 0, 0, 0, 1071, 0, 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 33, 34, 0, 35, 0, 0, 0, 901, 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, 0, 0, 258, 0, 50, 0, 0, 157, 0, 0, 0, 1071, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 1290, 1290, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, -358, 0, 2, -3062, 0, 0, 790, 0, 0, 0, 0, 0, 790, 790, 0, 0, 0, 0, 0, 0, 0, 790, 790, 0, 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, 0, 790, 0, 0, 6, 0, 835, 7, 779, 0, 0, 8, 0, 779, 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, 0, 0, 0, 0, 0, 835, 835, 0, 0, 835, 0, 0, 0, 12, 13, 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, 19, 20, 0, 0, 901, 901, 901, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 1071, 1071, 0, 0, 0, 1071, 1071, 0, 0, 0, 0, 0, 1071, 0, 0, 1071, 1071, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 1105, 0, 0, 0, 0, 37, 38, 156, 1105, 0, 0, 0, 0, 0, 1105, 41, 0, 42, 385, 119, 0, 2, 0, 386, 387, 388, 0, 0, 0, 0, 0, 0, 389, 390, 0, 45, 391, 392, 0, 0, 393, 0, 394, 0, 48, 0, 50, 0, 0, 157, 0, 0, 0, 0, 396, 397, 398, 183, 399, 184, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 0, 54, 0, 0, 1105, 400, 1105, 0, 1105, 1105, 0, 1105, 0, 1105, 1105, 0, 0, 0, 1227, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 1071, 1071, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1228, 0, 1105, 1105, 1105, 0, 0, 0, 0, 0, 0, 1229, 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, 0, 0, 0, 401, 0, 0, 0, 1105, 0, 1275, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 402, 1230, 1806, 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, 779, 0, 779, 0, 0, 0, 183, 779, 184, 0, 779, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1290, 0, 0, 0, 0, 0, 0, 0, 0, 790, 416, 417, 790, 790, 0, 0, 0, 0, 0, 0, 0, 790, 790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 419, 0, 1071, 0, 0, 0, 0, 0, 1071, 0, 1290, 0, 0, 835, 0, 0, 0, 1290, 0, 1071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, 1071, 0, 1071, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 779, 636, 637, 638, -926, 0, 639, 0, 640, 641, 0, 0, 0, 642, 1177, 643, 0, 0, 0, 0, 0, 0, 0, 0, 1596, 1597, 0, 0, 1598, 1599, 0, 1600, 1601, 1602, 0, 3365, 1604, 0, 1605, 1606, 779, 0, 0, 1607, 0, 1608, 0, 0, 0, 0, 0, 1609, 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, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 779, 0, 835, 0, 1071, 0, 0, 0, 835, 0, 0, 646, 0, 0, 0, 0, 1071, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 1071, 0, 1071, 1612, 1071, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 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, 0, 0, 0, 835, 0, 0, 0, 0, 0, 826, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 1616, 661, 662, 663, 664, 0, 835, 665, 0, 835, 666, 835, 835, 835, 667, 1617, 0, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 0, 1631, 1632, 1633, 1634, 835, 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, 826, 0, 0, 0, 0, 0, 0, 0, 0, 0, 901, 901, 901, 901, 901, 901, 0, 901, 901, 901, 901, 901, 901, 0, 0, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 0, 0, 5120, 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, -716, -716, -716, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 1026, 1027, 0, 0, 835, 1028, 0, 0, 1029, 835, 1030, 0, 0, 0, 0, 0, 0, 0, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 1290, 1031, 0, 0, 0, 0, 0, 1032, 1033, 1034, 1035, 1036, 0, 0, 0, 0, 1290, 0, 1290, 790, -716, 835, 0, 1290, 790, 790, 835, 790, 790, 835, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 790, 790, 790, 790, 835, 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, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 1065, 1066, 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, -716, -716, -716, 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, -716, 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, 1004, 0, 1005, 119, 0, 2, -3062, 1006, 1007, 388, 0, 0, 0, 0, 0, 0, 389, 1008, 1009, 0, 1010, 1011, 0, 0, 1012, 0, 1013, 1065, 1066, 0, 0, 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, -716, -716, -716, 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, -716, 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, 736, 119, 0, 2, 0, 737, 738, 388, 0, 0, 0, 1060, 1061, 0, 389, 739, 1062, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 1063, 1064, 0, 278, 1464, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 7, 750, 1065, 1066, 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, 752, 0, 0, 632, 633, 0, 753, 634, 635, 0, 636, 637, 638, 5124, 0, 639, 0, 640, 641, 0, 754, 5125, 642, 0, 643, 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, 644, 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, 645, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 0, 0, 0, 646, 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, 736, 119, 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, 1472, 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, 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, 5126, 5127, 666, 0, 0, 0, 667, 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, 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, 0, 0, 0, 0, 0, 790, 0, 0, 790, 0, 0, 790, 835, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 777, 778, 736, 119, 0, 2, 790, 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, 0, 6, 0, 0, 7, 750, 0, 0, 8, 0, 1105, 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, 752, 0, 0, 0, 0, 0, 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1105, 754, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 1105, 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, 0, 0, 1290, 0, 0, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 775, 776, 736, 119, 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, 777, 778, 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, 632, 633, 0, 400, 634, 635, 0, 636, 637, 638, 5268, 0, 639, 0, 640, 641, 1499, 0, 5269, 642, 0, 643, 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, 1290, 0, 644, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 790, 0, 790, 0, 0, 755, 790, 756, 757, 790, 790, 790, 0, 790, 790, 790, 790, 790, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 758, 645, 0, 0, 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, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 901, 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, 835, 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, 5270, 5271, 666, 777, 778, 0, 667, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 1105, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 1105, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 1105, 1105, 0, 1105, 0, 0, 0, 736, 119, 0, 2, 0, 737, 738, 388, 0, 0, 0, 0, 0, 0, 389, 739, 0, 0, 740, 741, 1105, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 2076, 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, 790, 790, 790, 0, 0, 790, 790, 0, 790, 790, 790, 790, 790, 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, 790, 0, 0, 0, 0, 790, 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, 1105, 1105, 0, 0, 0, 1105, 1105, 0, 0, 0, 773, 0, 1105, 0, 0, 1105, 1105, 0, 0, 0, 774, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 0, 736, 119, 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, 2080, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 1105, 1105, 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, 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, 1290, 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, 790, 0, 790, 0, 37, 38, 402, 790, 0, 0, 790, 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, 1105, 0, 0, 0, 774, 0, 1105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 775, 776, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, 0, 1105, 0, 1105, 0, 0, 0, 777, 778, 0, 0, 0, 736, 119, 0, 2, 0, 737, 738, 388, 0, 0, 0, 790, 0, 0, 389, 739, 0, 0, 740, 741, 0, 0, 742, 0, 743, 0, 0, 0, 0, 0, 0, 0, 0, 278, 2088, 0, 744, 745, 746, 0, 747, 748, 0, 749, 0, 0, 0, 0, 0, 0, 0, 790, 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, 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, 790, 0, 0, 0, 1105, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 1105, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 1105, 0, 1105, 755, 1105, 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, 835, 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, 0, 736, 119, 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, 2090, 0, 744, 745, 746, 0, 747, 748, 0, 749, 835, 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, 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, 1105, 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, 1105, 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, 736, 119, 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, 3249, 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, 0, 736, 119, 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, 3630, 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, 0, 736, 119, 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, 0, 736, 119, 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, 0, 862, 119, 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, 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, 875, 0, 0, 0, 0, 0, 0, 0, 876, 0, 0, 0, 0, 0, 877, 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, 878, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 879, 0, 0, 1696, 880, 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, 881, 882, 883, 0, 0, 0, 385, 119, 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, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1700, 1227, 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, 0, 0, 1720, 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, 801, 119, 0, 2, 0, 802, 803, 388, 48, 0, 50, 1231, 0, 407, 389, 804, 0, 0, 805, 806, 0, 183, 807, 184, 808, 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, 809, 810, 811, 0, 812, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 4537, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 813, 0, 0, 0, 0, 0, 0, 0, 0, 0, 418, 419, 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, 0, 862, 119, 0, 2, 0, 863, 864, 388, 0, 0, 821, 0, 0, 0, 389, 865, 0, 0, 866, 867, 774, 0, 868, 0, 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 822, 823, 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, 824, 825, 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, 3599, 634, 635, 0, 636, 637, 638, 3600, 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, 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, 0, 801, 119, 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, 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, 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, 0, 385, 119, 0, 2, 0, 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, 591, 399, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 5272, 0, 639, 6, 640, 641, 7, 0, 5273, 642, 8, 643, 824, 825, 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, 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, 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, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 1451, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 592, 593, 0, 0, 400, 0, 0, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 416, 417, 665, 5274, 5275, 666, 0, 0, 0, 667, 0, 12, 13, 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, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 1574, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 592, 593, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 1663, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 592, 593, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 1841, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 592, 593, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 592, 593, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 2070, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 3903, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 592, 593, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2044, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 3904, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2044, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4953, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 5276, 0, 639, 0, 640, 641, 418, 419, 5277, 642, 0, 643, 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, 644, 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, 645, 0, 0, 0, 0, 48, 0, 50, 0, 0, 407, 0, 0, 0, 646, 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, 385, 119, 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, 0, 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, 0, 0, 0, 400, 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, 5278, 5279, 666, 12, 13, 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, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 1137, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 395, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 1417, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 3227, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3654, 0, 0, 0, 0, 0, 0, 0, 3655, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 1005, 119, 0, 2, 0, 1006, 1007, 388, 48, 0, 50, 0, 0, 407, 389, 1008, 0, 0, 1010, 1011, 0, 183, 1012, 184, 1013, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1015, 1016, 1017, 0, 1018, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 1039, 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, 1048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3711, 0, 0, 0, 1050, 0, 45, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 395, 0, 0, 396, 397, 398, 0, 399, 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, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 613, 0, 0, 0, 0, 0, 0, 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, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3967, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4429, 0, 0, 0, 0, 0, 0, 0, 4430, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4530, 0, 0, 0, 0, 0, 0, 0, 4531, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3654, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4530, 0, 0, 0, 0, 0, 0, 0, 4859, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4755, 0, 0, 0, 0, 0, 0, 0, 4994, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5376, 0, 0, 0, 0, 0, 0, 0, 5416, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 395, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, -3062, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 977, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 1876, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 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, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2044, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3337, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 4210, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 4391, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4502, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4429, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5041, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 5265, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5376, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 385, 119, 0, 2, 0, 386, 387, 388, 48, 0, 50, 0, 0, 407, 389, 390, 0, 0, 391, 392, 0, 183, 393, 184, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 396, 397, 398, 0, 399, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 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, 1005, 119, 0, 2, 0, 1006, 1007, 388, 48, 0, 50, 0, 0, 407, 389, 1008, 0, 0, 1010, 1011, 0, 183, 1012, 184, 1013, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1015, 1016, 1017, 0, 1018, 408, 409, 410, 0, 54, 411, 0, 412, 0, 0, 413, 414, 415, 6, 0, 0, 7, 0, 0, 0, 8, 0, 0, 632, 633, 0, 400, 634, 635, 0, 636, 637, 638, 5316, 0, 639, 0, 640, 641, 0, 0, 5317, 642, 0, 643, 0, 0, 0, 0, 0, 416, 417, 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, 418, 419, 0, 0, 0, 0, 0, 0, 644, 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, 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 645, 0, 0, 0, 0, 0, 37, 38, 402, 0, 0, 0, 0, 0, 646, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1063, 1064, 0, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 0, 0, 665, 5318, 5319, 666, 1065, 1066, 2211, 667, 2212, 2213, 2214, 2215, 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, 2211, 0, 2212, 2213, 2214, 2215, 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, 3940, 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, 2868, 0, 2869, 2870, 2871, 2872, 2873, 2874, 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, 3945, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 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, 2868, 0, 2869, 2870, 2871, 2872, 2873, 2874, 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, 0, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 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, 2211, 0, 2212, 2213, 2214, 2215, 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, 0, 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, 2541, 0, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 3942, 2570, 2571, 2572, 2573, 2574, 2575, 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, 0, 2635, 2636, 2637, 2638, 0, 2639, 2640, 2641, 2642, 2643, 2644, 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, 2541, 0, 2542, 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568, 2569, 0, 2570, 2571, 2572, 2573, 2574, 2575, 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, 0, 2635, 2636, 2637, 2638, 0, 2639, 2640, 2641, 2642, 2643, 2644, 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, 1596, 1597, 0, 4006, 1598, 1599, 0, 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, 1596, 1597, 0, 4012, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 1610, 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, 0, 1596, 1597, 0, 4333, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 1610, 0, 1607, 0, 1608, 0, 0, 1611, 0, 0, 1609, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 1615, 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, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 1615, 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, 1616, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 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, 1596, 1597, 0, 4339, 1598, 1599, 0, 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, 1596, 1597, 0, 4538, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 0, 1610, 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, 0, 1596, 1597, 0, 5370, 1598, 1599, 0, 1600, 1601, 1602, 0, 0, 1604, 0, 1605, 1606, 0, 1610, 0, 1607, 0, 1608, 0, 0, 1611, 0, 0, 1609, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1610, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 1615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1611, 0, 0, 0, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 1616, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 1615, 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, 1616, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 1615, 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, 1616, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 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, 1596, 1597, 0, 5409, 1598, 1599, 0, 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, 1505, 1506, 0, 0, 1507, 1508, 0, 1509, 1510, 1511, 0, 0, 1513, 0, 1514, 1515, 0, 0, 1610, 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, 2111, 2112, 0, 0, 2113, 2114, 0, 2115, 2116, 2117, 0, 0, 2118, 0, 2119, 2120, 0, 1519, 0, 2121, 0, 2122, 0, 0, 1611, 0, 0, 2123, 0, 1612, 0, 0, 0, 0, 0, 0, 0, 0, 1613, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1520, 0, 0, 2124, 0, 0, 0, 0, 0, 1522, 0, 2111, 2112, 0, 1523, 2113, 2114, 0, 2115, 2116, 2117, 0, 0, 2118, 0, 2119, 2120, 0, 0, 0, 2121, 0, 2122, 0, 0, 0, 1525, 0, 0, 0, 0, 0, 0, 0, 0, 1615, 0, 2125, 0, 0, 0, 0, 0, 0, 0, 0, 2127, 0, 0, 0, 0, 2128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2124, 0, 0, 0, 1616, 0, 0, 0, 2130, 0, 0, 0, 0, 0, 0, 0, 1528, 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, 1531, 0, 0, 2127, 0, 0, 0, 0, 2128, 1557, 1558, 1559, 1560, 2133, 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, 2136, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 0, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 2133, 0, 2156, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1557, 1558, 1559, 1560, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 5333, 0, 639, 2136, 640, 641, 0, 0, 5334, 642, 0, 643, 0, 0, 0, 0, 0, 0, 2137, 0, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 0, 2151, 2152, 2153, 2154, 0, 0, 2155, 0, 0, 2156, 0, 0, 0, 0, 774, 0, 0, 0, 0, 0, 644, 0, 0, 0, 1557, 1558, 1559, 1560, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 0, 988, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4013, 634, 635, 0, 636, 637, 638, 4014, 0, 639, 0, 640, 641, 0, 645, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4044, 634, 635, 0, 636, 637, 638, 4045, 0, 639, 644, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4072, 634, 635, 645, 636, 637, 638, 4073, 0, 639, 0, 640, 641, 0, 0, 0, 642, 646, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 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, 644, 647, 0, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 0, 661, 662, 663, 664, 645, 0, 665, 5335, 5336, 666, 0, 0, 0, 667, 0, 0, 0, 0, 646, 632, 633, 0, 4340, 634, 635, 0, 636, 637, 638, 4341, 0, 639, 0, 640, 641, 0, 645, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 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, 0, 644, 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, 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, 0, 667, 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, 5337, 634, 635, 667, 636, 637, 638, 5338, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 644, 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, 644, 661, 662, 663, 664, 0, 0, 665, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 0, 640, 641, 0, 645, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 0, 646, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 2043, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 2061, 639, 0, 640, 641, 0, 644, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 645, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 644, 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, 644, 0, 666, 0, 0, 647, 667, 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, 3495, 0, 0, 0, 0, 0, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1162, 0, 0, 0, 646, 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, 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, 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, 632, 633, 666, 0, 634, 635, 667, 636, 637, 638, 0, 0, 639, 3616, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 637, 638, 0, 0, 639, 3640, 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, 3663, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 3761, 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, 3762, 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, 3763, 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, 3764, 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, 3765, 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, 3766, 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, 3767, 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, 3768, 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, 3769, 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, 3770, 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, 3771, 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, 3772, 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, 3773, 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, 0, 639, 645, 640, 641, 0, 0, 644, 642, 1177, 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, 3785, 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, 3786, 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, 3797, 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, 3803, 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, 3960, 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, 3994, 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, 3997, 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, 4003, 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, 4004, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4005, 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, 4007, 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, 4008, 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, 4011, 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, 4020, 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, 4048, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4106, 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, 4121, 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, 4195, 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, 4197, 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, 4198, 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, 4238, 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, 4241, 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, 4244, 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, 4247, 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, 4300, 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, 4305, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4307, 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, 4326, 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, 4331, 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, 4332, 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, 4334, 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, 4335, 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, 4338, 642, 0, 643, 0, 0, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 644, 636, 637, 638, 4345, 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, 4353, 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, 4371, 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, 4380, 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, 4396, 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, 4397, 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, 4398, 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, 4399, 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, 4400, 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, 4401, 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, 4402, 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, 4403, 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, 4404, 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, 4405, 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, 4406, 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, 4407, 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, 4434, 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, 4448, 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, 4453, 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, 4454, 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, 4455, 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, 4456, 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, 4457, 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, 4458, 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, 4459, 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, 4460, 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, 4461, 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, 4462, 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, 4463, 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, 4464, 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, 4465, 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, 4472, 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, 4476, 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, 4479, 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, 4480, 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, 4481, 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, 4482, 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, 4483, 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, 4484, 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, 4485, 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, 4486, 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, 4487, 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, 4488, 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, 4489, 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, 4490, 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, 4491, 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, 4496, 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, 4500, 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, 4524, 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, 4529, 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, 4539, 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, 4540, 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, 4599, 0, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4600, 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, 4601, 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, 4602, 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, 4603, 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, 4604, 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, 4605, 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, 4606, 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, 4607, 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, 4608, 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, 4609, 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, 4610, 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, 4611, 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, 4632, 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, 4635, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 646, 632, 633, 0, 4659, 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, 4665, 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, 4666, 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, 4667, 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, 4668, 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, 4669, 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, 4677, 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, 4681, 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, 4682, 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, 4683, 639, 0, 640, 641, 0, 0, 644, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4688, 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, 4698, 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, 4702, 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, 4703, 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, 4704, 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, 4705, 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, 4706, 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, 4707, 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, 4708, 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, 4709, 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, 4710, 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, 4711, 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, 4712, 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, 4713, 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, 4731, 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, 4736, 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, 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, 0, 634, 635, 644, 636, 637, 638, 0, 4868, 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, 4913, 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, 4914, 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, 4959, 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, 4960, 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, 4961, 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, 4962, 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, 4963, 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, 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, 4973, 0, 639, 0, 640, 641, 0, 0, 0, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 4975, 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, 4979, 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, 4997, 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, 5015, 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, 5033, 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, 5082, 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, 5089, 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, 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, 5160, 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, 5161, 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, 5162, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5165, 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, 5167, 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, 5168, 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, 5169, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5170, 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, 5172, 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, 5173, 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, 5174, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5175, 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, 5196, 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, 5220, 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, 5221, 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, 5222, 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, 5253, 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, 5254, 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, 5255, 642, 0, 643, 0, 0, 0, 0, 0, 0, 632, 633, 0, 5256, 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, 5267, 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, 5301, 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, 5321, 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, 5322, 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, 5326, 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, 5330, 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, 5331, 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, 5332, 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, 5343, 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, 5381, 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, 5384, 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, 5390, 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, 5391, 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, 5392, 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, 5393, 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, 5394, 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, 5395, 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, 5396, 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, 5397, 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, 5398, 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, 5410, 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, 5411, 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, 5412, 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, 5420, 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, 5421, 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, 5422, 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, 5423, 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, 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, 1926, 1927, 666, 0, 1928, 1929, 667, 1930, 1931, 1932, 0, 0, 1933, 0, 1934, 1935, 0, 0, 644, 1936, 0, 1937, 0, 0, 0, 0, 0, 0, 632, 633, 0, 0, 634, 635, 0, 636, 4409, 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, 1938, 636, 4654, 638, 0, 0, 639, 645, 640, 641, 0, 0, 0, 642, 0, 643, 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, 1939, 0, 0, 0, 0, 644, 0, 0, 0, 0, 0, 0, 0, 0, 1940, 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, 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, 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, 1941, 0, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 0, 1954, 1955, 1956, 1957, 1958, 0, 0, 1959, 0, 0, 1960, 0, 0, 647, 1961, 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, 1326, 665, 0, 119, 666, 2, -3062, 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, -3044, 0, 929, -3130, 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, -370, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 46, 47, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, -3044, 0, 929, -3130, 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, -371, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 46, 47, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, -3044, 0, 929, -3130, 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, -108, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, -3044, 0, 929, -3130, 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, -109, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3932, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 3933, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3935, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 4378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 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, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 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, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 0, 0, 0, 296, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4992, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1327, 1328, 298, 925, 926, 927, 4, 0, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 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, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 4999, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 10, 0, 0, 0, 0, 0, 930, 11, 0, 0, 0, 1330, 1331, 0, 0, 0, 0, 0, 5001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, 1332, 0, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, -191, 304, 305, 941, 942, 943, 1326, 54, 944, 119, 0, 2, -3062, 0, 0, 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, 2200, 5, 0, 0, 6, 0, 299, 7, 1329, 0, 0, 8, 9, -3044, 0, 929, -3130, 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, 2202, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 1338, 0, 43, 0, 44, 0, 0, 45, 0, 0, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, -4, 1, 0, -191, 0, 0, 2, -3062, 0, 0, -191, 304, 305, 941, 942, 943, 0, 54, 944, 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, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 9, -3044, 0, 0, -3130, 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, -191, 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, -191, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, -5, 1, 0, -191, 0, 0, 2, -3062, 0, 0, -191, 0, 0, 0, 0, 0, 0, 54, 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, 0, 0, 0, 0, 0, 0, 4, 0, 0, 5, 0, 0, 6, 0, 0, 7, 0, 0, 0, 8, 9, -3044, 0, 0, -3130, 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, -191, 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, -191, -191, 3550, 0, 0, 0, 0, -3091, -3091, 0, 0, 43, 0, 44, 0, 0, 45, 46, 47, -191, -191, -191, -191, -191, -191, 48, 49, 50, 0, 0, 0, 0, 3551, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, -191, 0, 0, 0, -191, 0, 0, 0, 3552, 0, 0, -191, 0, 0, -3091, 0, 0, -3091, 54, 0, 0, -3091, 0, -3044, 0, 0, -3130, 3553, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3070, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3091, -3091, 0, 0, 0, 0, 3554, 0, 0, 0, 0, 0, 0, 0, 0, -3091, 0, -3091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3091, 0, 0, 0, 0, -3091, -3091, 0, 214, 0, 0, 0, 23, -3091, 3555, 0, -3091, -3091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 3556, 3557, 1129, 1130, 0, 0, -3091, -3091, 0, -3091, 0, 0, 0, 0, 0, 0, 3550, -3091, -3091, 0, 0, -3091, -3091, 0, 39, 3558, 0, -3091, 0, -3091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3091, 0, -3091, 0, 3551, -3091, 46, 47, 0, 0, 0, 0, 0, 0, -3091, -3091, -3091, 0, 0, 0, 0, 0, 0, -3091, 3552, 51, 3559, -3091, 0, -3091, -3091, 0, 0, -3091, 0, 0, 0, -3091, 0, -3044, 0, 0, -3130, 3553, 0, 0, 0, 0, 0, 0, 11, -3091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3071, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3091, -3091, 0, 0, 0, 0, 3554, 0, 0, 0, 0, 0, 0, 0, 0, -3091, 0, -3091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3091, 0, 0, 0, 0, -3091, -3091, 0, 214, 0, 0, 0, 23, -3091, 3555, 0, -3091, -3091, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 3556, 3557, 1129, 1130, 0, 0, -3091, -3091, 0, -3091, 0, 0, 0, 0, 0, 0, 0, -3091, -3091, 0, 0, 0, 0, 0, 39, 3558, 0, -3091, 0, -3091, 0, 0, 0, 0, 119, 0, 2, -3062, 0, 0, 0, 0, -3091, 0, -3091, 0, 0, -3091, 46, 47, 0, 0, 0, 0, 0, 0, -3091, -3091, -3091, 0, 0, 3, 0, 0, 0, -3091, 0, 51, 3559, -3091, 0, -3091, 0, 0, 0, 0, 0, 0, 1383, 926, 1384, 4, 0, 0, 213, 0, 0, 6, 0, 0, 7, 1329, 0, -3091, 8, 9, -3044, 0, 929, -3130, 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, -134, 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, 119, 0, 2, -3062, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, -356, 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, -3044, 0, 929, -3130, 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, -135, 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, 2, -3062, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3524, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 3525, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 1774, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 3527, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 4118, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 4544, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 4546, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4857, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 4870, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, 4872, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 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, -3013, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 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, -3014, 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, 2, -3062, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 923, 0, 0, 941, 942, 943, 0, 54, 944, 0, 0, 0, 0, 0, 0, 924, 0, 925, 926, 927, 4, 0, 1773, 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, -3062, 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, -3044, 0, 0, -3130, 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, -3062, 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, -356, 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, 0, 0, 54, 8, 9, -3044, 0, 0, -3130, 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, -21, 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, 2, -3062, 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, -246, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 215, 32, 0, 0, 0, 0, 0, 6, 33, 34, 7, 35, 0, 0, 8, 0, 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, 12, 13, 0, 48, 49, 50, 0, 0, 2, -3062, 0, 0, -356, 0, 51, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 54, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 6, 0, 0, 7, 2, -3062, 0, 8, 1433, 0, 0, 0, 0, 10, 0, 33, 34, 1009, 35, 0, 0, 2, -3062, 0, 0, 1434, 37, 38, 156, 0, 0, 0, 0, 0, 0, -246, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 0, 0, -246, 0, 0, 6, 45, 0, 7, 0, 0, 0, 8, 0, 0, 48, 0, 50, 0, 0, 157, 0, 6, 1435, 1436, 7, 220, 0, 183, 8, 184, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0, 0, 0, 0, 28, 0, 0, 54, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 19, 20, 0, 0, 0, 40, 0, 41, 24, 42, 0, 25, 26, 0, 0, 0, 0, 19, 20, 0, 0, 0, 0, 0, 0, 24, 0, 45, 25, 26, 0, 0, 2, -3062, 0, 0, 48, 49, 50, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 52, 0, 53, 37, 38, 156, 0, 0, 0, 33, 34, 0, 35, 41, -246, 42, 0, 0, 0, 0, 37, 38, 156, 0, 54, 0, 0, 0, 0, 0, 41, 0, 42, 45, 6, 0, 0, 7, 0, 0, 0, 8, 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, 768, 0, 0, 0, 183, 0, 184, 0, 0, 0, 0, 54, 0, 0, 12, 13, 0, 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, 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, 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, 156, 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, 0, 0, 0, 0, 0, 0, 0, 48, 0, 50, 0, 0, 157, 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, 0, 0, 0, 0, 54 }; static const yytype_int16 yycheck[] = { 5, 277, 496, 630, 175, 188, 781, 108, 672, 673, 188, 139, 471, 504, 237, 160, 911, 476, 1870, 1323, 1163, 97, 565, 1745, 412, 5, 188, 1801, 392, 77, 66, 1737, 68, 470, 555, 71, 188, 160, 1551, 476, 163, 974, 90, 724, 49, 1203, 2207, 2200, 53, 1773, 198, 1992, 1777, 490, 1241, 174, 175, 1962, 1963, 198, 1805, 1029, 3496, 555, 1510, 504, 467, 565, 3251, 74, 75, 3498, 77, 1805, 2060, 194, 195, 153, 1412, 15, 700, 700, 15, 504, 1028, 90, 592, 593, 1131, 3251, 195, 494, 1060, 4130, 705, 80, 703, 704, 705, 412, 555, 1045, 4121, 78, 1291, 555, 147, 3649, 3650, 254, 4121, 297, 4210, 194, 195, 504, 146, 705, 148, 979, 705, 1079, 1080, 1636, 4177, 9, 504, 11, 12, 705, 4084, 254, 4234, 138, 4179, 171, 172, 173, 22, 704, 263, 146, 724, 148, 1079, 1080, 504, 704, 32, 523, 4380, 279, 36, 3357, 703, 1601, 703, 704, 4380, 4530, 1095, 703, 704, 704, 705, 703, 289, 478, 839, 174, 175, 1471, 291, 504, 3357, 504, 1424, 555, 147, 184, 209, 186, 704, 705, 12, 221, 369, 267, 3753, 194, 195, 369, 138, 673, 31, 3357, 341, 555, 4017, 322, 4, 324, 330, 208, 1457, 37, 1719, 369, 587, 4556, 4557, 28, 408, 409, 410, 411, 504, 369, 341, 1472, 22, 340, 23, 342, 343, 22, 4748, 4046, 4750, 23, 60, 128, 23, 1486, 36, 26, 20, 731, 36, 745, 24, 493, 1688, 23, 28, 29, 4, 1492, 504, 37, 26, 4, 167, 81, 82, 4074, 4, 23, 646, 340, 12, 342, 343, 293, 294, 2039, 705, 4, 6, 6, 7, 26, 2404, 278, 504, 120, 0, 122, 554, 592, 593, 165, 128, 4755, 705, 561, 28, 42, 293, 294, 295, 4, 297, 6, 7, 179, 4, 28, 182, 700, 504, 185, 19, 187, 810, 189, 601, 4, 603, 314, 605, 192, 607, 38, 128, 199, 200, 297, 202, 203, 204, 504, 445, 28, 28, 0, 504, 79, 80, 37, 158, 159, 56, 56, 363, 340, 60, 342, 343, 3078, 4197, 53, 1587, 16, 17, 350, 174, 175, 21, 214, 4207, 31, 128, 234, 27, 478, 29, 362, 31, 482, 4, 484, 28, 1331, 192, 871, 1226, 31, 23, 449, 43, 44, 200, 270, 271, 380, 88, 85, 315, 28, 3298, 56, 351, 1327, 503, 4242, 323, 217, 1069, 51, 395, 514, 493, 494, 19, 798, 28, 16, 164, 4, 405, 6, 7, 806, 112, 26, 4, 2539, 146, 255, 8, 36, 240, 4, 18, 395, 133, 705, 22, 256, 672, 673, 174, 175, 22, 454, 474, 1761, 551, 4248, 26, 579, 551, 1678, 837, 31, 441, 840, 443, 37, 488, 255, 326, 934, 157, 329, 37, 1960, 200, 705, 203, 268, 56, 601, 256, 603, 3195, 605, 256, 607, 397, 258, 467, 4985, 51, 3383, 26, 68, 89, 474, 551, 31, 356, 442, 358, 412, 308, 968, 269, 1061, 124, 365, 83, 488, 268, 1931, 4857, 9, 867, 269, 4861, 496, 52, 217, 295, 934, 169, 170, 503, 504, 302, 295, 4873, 287, 302, 178, 203, 265, 312, 313, 1016, 4530, 265, 934, 451, 303, 521, 265, 4, 4530, 4992, 312, 313, 4342, 4996, 4755, 268, 504, 266, 968, 5002, 468, 269, 4755, 4632, 258, 198, 268, 567, 791, 3458, 793, 28, 42, 269, 934, 551, 968, 10, 4651, 555, 37, 926, 558, 16, 17, 934, 74, 9, 21, 185, 939, 446, 268, 268, 27, 136, 29, 265, 31, 112, 672, 673, 510, 1095, 521, 934, 1241, 51, 968, 188, 43, 44, 287, 729, 204, 205, 1079, 1080, 269, 968, 255, 420, 421, 258, 165, 269, 22, 4163, 85, 308, 19, 268, 1095, 609, 934, 729, 612, 22, 214, 968, 198, 55, 286, 3818, 270, 271, 501, 5140, 268, 353, 287, 1293, 507, 1079, 1080, 112, 1291, 128, 1079, 1080, 239, 312, 313, 1298, 3818, 268, 968, 287, 968, 1095, 525, 1323, 2156, 172, 1095, 934, 1011, 381, 31, 282, 238, 1897, 141, 258, 1161, 3818, 174, 542, 543, 4, 189, 4, 491, 6, 7, 4523, 4524, 496, 51, 2116, 4528, 4529, 298, 4216, 4217, 175, 176, 934, 221, 968, 268, 993, 1931, 28, 345, 129, 130, 504, 189, 695, 696, 793, 118, 112, 700, 0, 798, 703, 704, 705, 1079, 1080, 4, 934, 806, 851, 169, 170, 269, 308, 20, 968, 311, 1962, 24, 178, 1095, 378, 28, 29, 1079, 1080, 5070, 793, 198, 703, 704, 851, 734, 934, 4, 19, 781, 7, 836, 837, 1095, 968, 840, 1246, 1348, 19, 51, 496, 941, 942, 943, 944, 197, 4, 934, 312, 313, 172, 31, 934, 288, 66, 36, 861, 766, 4992, 30, 968, 238, 4996, 1374, 837, 774, 4992, 189, 5002, 40, 4996, 42, 781, 1388, 2078, 859, 5002, 1388, 19, 768, 1172, 968, 317, 2087, 1176, 4, 968, 3709, 5264, 241, 799, 800, 982, 916, 4002, 1348, 1388, 1348, 686, 1388, 146, 22, 1348, 269, 745, 1374, 1348, 816, 1388, 697, 31, 30, 198, 1374, 1298, 4002, 42, 4919, 308, 2076, 286, 112, 1369, 1374, 31, 5200, 1412, 85, 1374, 1374, 4, 2088, 841, 842, 4857, 4043, 4002, 4, 4861, 6, 4881, 1740, 4857, 1388, 68, 4902, 4861, 856, 1374, 23, 4873, 2100, 22, 958, 112, 4904, 4043, 1174, 4873, 83, 849, 31, 1388, 4, 4, 26, 993, 1369, 2015, 810, 879, 112, 4, 2181, 29, 4, 31, 4043, 2186, 2187, 48, 172, 50, 703, 704, 705, 198, 1294, 28, 1564, 30, 52, 724, 902, 903, 1570, 905, 906, 30, 28, 26, 42, 911, 735, 185, 914, 1854, 916, 76, 1061, 1882, 1316, 38, 922, 55, 924, 1864, 1889, 1593, 1594, 266, 905, 906, 932, 4, 934, 935, 31, 973, 938, 871, 172, 2123, 22, 2125, 3, 40, 3859, 6, 2130, 8, 9, 4, 1807, 238, 1388, 1908, 981, 31, 175, 176, 984, 141, 934, 22, 268, 85, 33, 41, 968, 40, 5189, 20, 1388, 153, 1640, 24, 22, 724, 1908, 28, 29, 981, 982, 287, 4, 985, 6, 4, 146, 19, 61, 171, 112, 26, 1241, 20, 968, 129, 130, 24, 25, 66, 27, 28, 29, 22, 268, 982, 1122, 42, 1124, 20, 157, 30, 159, 24, 25, 37, 27, 28, 29, 768, 1122, 4, 7, 6, 26, 186, 1028, 1029, 1030, 31, 4210, 20, 857, 1035, 26, 24, 25, 5264, 27, 28, 29, 4, 1291, 1045, 1122, 5264, 69, 1049, 929, 1298, 42, 4210, 1029, 987, 127, 989, 990, 991, 1060, 22, 1062, 4, 1462, 6, 7, 120, 269, 122, 1468, 40, 6, 42, 1074, 1075, 10, 5296, 5297, 1079, 1080, 1479, 1082, 4, 1016, 1060, 19, 146, 4517, 1069, 24, 4520, 5041, 4515, 120, 1095, 122, 30, 73, 26, 303, 19, 849, 1103, 175, 1388, 1106, 40, 266, 42, 857, 312, 313, 992, 185, 42, 1116, 1117, 36, 251, 22, 42, 1122, 934, 1124, 1523, 146, 1127, 175, 176, 1528, 4330, 2170, 1531, 55, 19, 4, 1388, 40, 20, 8, 1524, 31, 24, 25, 1241, 27, 28, 29, 19, 26, 40, 4330, 37, 22, 28, 4, 968, 1647, 30, 135, 136, 215, 1561, 217, 146, 42, 37, 4, 40, 6, 42, 19, 4330, 28, 22, 1118, 1119, 1008, 81, 1010, 1579, 1012, 1013, 1761, 1015, 5200, 1017, 1018, 215, 165, 217, 40, 1135, 5200, 1291, 1196, 19, 1294, 2054, 22, 31, 1298, 1805, 30, 28, 181, 266, 129, 130, 40, 1609, 38, 61, 1612, 282, 1614, 1615, 1616, 268, 19, 1653, 203, 22, 30, 104, 167, 1057, 1058, 1059, 1613, 110, 38, 5182, 5183, 5184, 30, 218, 287, 157, 1638, 159, 1174, 268, 38, 4423, 266, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 4195, 268, 4197, 4198, 287, 1406, 1264, 112, 4423, 185, 269, 19, 4207, 1411, 61, 62, 63, 284, 285, 286, 287, 127, 22, 268, 4219, 3, 265, 266, 6, 1773, 8, 9, 112, 1777, 26, 1411, 1226, 1295, 1296, 1437, 40, 1921, 287, 1124, 22, 31, 1304, 4242, 28, 1425, 42, 37, 146, 312, 313, 112, 1246, 1698, 1316, 26, 1805, 1437, 3301, 192, 1069, 1323, 48, 172, 50, 1327, 1328, 53, 251, 1331, 5281, 42, 1334, 268, 86, 185, 127, 1773, 4, 4, 189, 1777, 26, 37, 5295, 269, 1348, 31, 172, 1783, 76, 33, 1429, 1325, 1331, 1773, 22, 22, 1805, 1777, 1334, 234, 26, 1244, 1462, 203, 255, 37, 1370, 258, 1468, 172, 1374, 1345, 1348, 1124, 927, 40, 42, 930, 218, 1479, 4921, 1962, 1963, 268, 1388, 1773, 312, 313, 40, 1777, 5109, 3508, 4, 268, 3511, 2065, 1773, 3514, 1374, 3384, 1777, 155, 287, 5356, 20, 78, 79, 5360, 24, 25, 5363, 27, 28, 29, 4847, 169, 1773, 1908, 3535, 1302, 1777, 33, 146, 1523, 31, 265, 266, 4, 1528, 6, 37, 1531, 4, 1, 1369, 303, 4, 1369, 6, 7, 2110, 304, 305, 1806, 2107, 1773, 5399, 303, 26, 1777, 4632, 1726, 1436, 31, 1908, 48, 28, 50, 186, 1908, 2123, 1561, 2125, 31, 48, 26, 50, 2130, 1021, 53, 303, 4632, 40, 85, 1027, 3460, 40, 269, 42, 1579, 20, 42, 26, 76, 24, 25, 1773, 27, 28, 29, 1777, 141, 76, 269, 2164, 1789, 1323, 1791, 42, 1793, 112, 1795, 40, 33, 225, 226, 1650, 26, 31, 1609, 78, 79, 1612, 85, 1614, 1615, 1616, 5236, 1773, 1334, 312, 313, 1777, 42, 1646, 1461, 6, 95, 1650, 66, 10, 1908, 269, 1348, 1417, 1471, 312, 313, 1638, 26, 112, 118, 266, 4, 1773, 6, 7, 19, 1777, 1485, 4, 1908, 6, 1940, 8, 42, 1502, 2176, 2176, 1374, 303, 26, 4, 1024, 6, 7, 31, 30, 22, 146, 1773, 3521, 1323, 1388, 1777, 312, 313, 40, 146, 42, 3530, 66, 4523, 4524, 31, 51, 28, 4528, 4529, 26, 26, 1773, 22, 186, 31, 1777, 1773, 4538, 4539, 98, 1777, 31, 186, 5322, 70, 5324, 42, 5326, 119, 120, 1728, 122, 22, 26, 335, 336, 337, 68, 31, 6, 71, 1557, 1558, 1559, 85, 5058, 203, 22, 1805, 5055, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 218, 1789, 1647, 1791, 33, 1793, 26, 1795, 1595, 26, 112, 268, 26, 1805, 31, 4, 5376, 6, 7, 2202, 289, 5381, 42, 81, 1649, 33, 26, 284, 285, 286, 287, 26, 4614, 26, 37, 30, 2079, 31, 26, 28, 147, 2084, 42, 33, 1436, 26, 26, 265, 266, 42, 2093, 146, 31, 5413, 42, 5415, 26, 266, 5418, 5419, 26, 42, 42, 215, 2202, 217, 173, 174, 175, 176, 22, 3616, 42, 26, 4, 5435, 42, 135, 136, 171, 172, 173, 31, 1728, 3710, 2128, 144, 268, 192, 42, 2133, 198, 31, 2136, 26, 1740, 4919, 1742, 269, 26, 493, 2129, 26, 284, 285, 286, 287, 165, 203, 1754, 42, 26, 42, 26, 172, 42, 31, 4919, 42, 2162, 5194, 26, 26, 218, 1769, 55, 31, 1772, 1773, 42, 234, 189, 1777, 3934, 241, 2176, 110, 4, 42, 6, 7, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 33, 4, 1773, 24, 174, 175, 1777, 3526, 26, 1750, 268, 26, 28, 26, 26, 3554, 265, 266, 31, 26, 1962, 1963, 303, 30, 42, 1647, 1797, 42, 3554, 3568, 42, 3557, 26, 4, 3573, 6, 120, 26, 122, 42, 33, 30, 3568, 26, 26, 129, 130, 4, 42, 6, 7, 22, 55, 24, 33, 1854, 1855, 1999, 1799, 42, 42, 2107, 26, 26, 26, 1864, 1999, 1866, 31, 1747, 1869, 26, 26, 26, 1873, 1992, 26, 2123, 42, 2125, 42, 31, 3862, 1882, 2130, 24, 269, 42, 42, 42, 1889, 1769, 1823, 3221, 26, 1008, 215, 1010, 217, 1012, 1013, 1647, 1015, 1649, 1017, 1018, 1784, 269, 1882, 1908, 42, 1910, 31, 23, 33, 1889, 26, 120, 26, 122, 30, 23, 28, 31, 26, 1924, 129, 130, 33, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 26, 26, 1057, 1058, 1059, 31, 31, 159, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 1773, 26, 1906, 3901, 1777, 2185, 31, 1911, 1849, 26, 31, 26, 146, 4912, 31, 30, 26, 1979, 4167, 26, 30, 2079, 4171, 30, 1797, 33, 2084, 1868, 26, 20, 4929, 741, 30, 24, 25, 2093, 27, 28, 29, 749, 26, 32, 99, 34, 30, 755, 756, 5183, 5184, 2107, 275, 276, 1558, 1559, 764, 765, 281, 282, 4, 5439, 6, 7, 287, 5443, 3624, 2123, 3626, 2125, 23, 203, 2128, 26, 2130, 269, 23, 2133, 33, 26, 2136, 23, 9, 791, 26, 793, 218, 268, 23, 312, 313, 26, 23, 23, 22, 84, 26, 2057, 23, 23, 23, 26, 26, 26, 23, 23, 2162, 26, 26, 22, 333, 334, 335, 336, 337, 338, 339, 340, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 268, 23, 265, 266, 26, 1926, 1927, 1928, 1929, 1930, 22, 1932, 1933, 1934, 1935, 1936, 1937, 137, 2184, 1940, 22, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 22, 1961, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 3298, 2078, 4, 23, 6, 3997, 26, 269, 23, 3595, 2087, 26, 23, 23, 33, 26, 26, 23, 31, 23, 26, 1, 26, 5105, 4, 23, 6, 7, 26, 23, 23, 2176, 26, 26, 23, 23, 2181, 26, 26, 7, 23, 2186, 2187, 26, 23, 23, 23, 26, 26, 26, 4, 31, 28, 23, 2199, 2200, 26, 31, 23, 13, 40, 26, 2207, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 22, 22, 30, 22, 269, 31, 308, 309, 310, 2200, 4377, 3383, 4379, 40, 28, 30, 2207, 23, 0, 47, 268, 301, 31, 31, 78, 79, 51, 31, 38, 31, 12, 59, 33, 281, 282, 22, 284, 285, 286, 287, 4106, 95, 147, 23, 69, 70, 28, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 4260, 23, 131, 37, 66, 40, 30, 49, 282, 28, 146, 28, 30, 93, 56, 77, 37, 31, 60, 140, 31, 31, 31, 31, 31, 2183, 3458, 104, 93, 30, 2188, 30, 146, 22, 40, 22, 2194, 79, 80, 31, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 22, 4, 22, 6, 97, 40, 40, 120, 22, 122, 31, 147, 38, 28, 17, 154, 203, 23, 22, 38, 33, 33, 161, 162, 22, 164, 128, 37, 141, 2182, 22, 218, 204, 205, 22, 22, 22, 173, 174, 175, 176, 22, 22, 37, 47, 22, 4093, 4094, 22, 4096, 22, 223, 224, 225, 226, 227, 228, 268, 4089, 2200, 153, 197, 198, 924, 100, 269, 2207, 100, 4117, 22, 4119, 932, 4, 22, 22, 268, 248, 938, 265, 266, 252, 174, 175, 101, 181, 4, 4263, 259, 275, 276, 26, 22, 22, 268, 281, 282, 28, 22, 95, 22, 287, 266, 215, 5370, 217, 241, 22, 200, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 260, 261, 4, 217, 312, 313, 240, 31, 68, 22, 172, 13, 22, 22, 22, 68, 22, 36, 30, 90, 73, 5409, 146, 22, 26, 333, 334, 335, 336, 337, 338, 339, 340, 157, 31, 159, 119, 120, 22, 122, 164, 8, 33, 31, 31, 47, 23, 30, 1030, 31, 31, 1250, 181, 1035, 1253, 1254, 109, 59, 141, 4410, 31, 22, 22, 1262, 1263, 22, 30, 22, 22, 268, 3197, 22, 22, 4371, 22, 31, 268, 26, 31, 203, 133, 23, 135, 136, 31, 31, 31, 31, 171, 23, 31, 31, 1074, 1075, 268, 22, 193, 22, 37, 313, 1082, 37, 40, 22, 37, 3709, 22, 22, 232, 22, 22, 22, 165, 37, 22, 22, 22, 268, 23, 10, 3510, 23, 26, 26, 1106, 23, 22, 22, 181, 22, 31, 31, 215, 96, 217, 97, 172, 261, 262, 263, 264, 31, 266, 267, 3261, 172, 31, 99, 3265, 30, 23, 26, 154, 40, 26, 3272, 4763, 22, 4765, 161, 162, 38, 164, 22, 40, 100, 3916, 3917, 20, 3919, 3549, 40, 24, 25, 22, 27, 28, 29, 40, 22, 32, 22, 34, 40, 40, 3302, 3819, 4, 22, 3793, 40, 3308, 31, 3221, 3311, 40, 20, 21, 128, 22, 24, 25, 40, 27, 28, 29, 28, 128, 32, 30, 34, 35, 31, 3202, 26, 39, 8, 41, 78, 22, 22, 19, 22, 22, 30, 22, 3343, 22, 22, 128, 31, 22, 84, 38, 4532, 31, 40, 269, 31, 26, 4672, 31, 31, 3360, 269, 250, 1445, 31, 31, 31, 38, 31, 38, 38, 31, 3859, 22, 31, 260, 261, 84, 31, 22, 22, 143, 3382, 22, 22, 3385, 22, 88, 3388, 3389, 3390, 22, 22, 40, 491, 40, 22, 22, 31, 496, 22, 22, 137, 31, 22, 42, 30, 504, 42, 22, 22, 40, 3412, 28, 128, 22, 26, 3252, 23, 20, 21, 128, 31, 24, 25, 128, 27, 28, 29, 40, 137, 32, 40, 34, 33, 33, 1518, 30, 1520, 1521, 31, 31, 22, 1525, 1526, 1527, 23, 1529, 1530, 22, 28, 33, 3968, 37, 30, 38, 30, 164, 23, 38, 22, 33, 37, 1328, 4306, 4307, 128, 38, 4519, 38, 38, 1553, 1554, 1555, 1556, 38, 4511, 38, 1926, 1927, 1928, 1929, 1930, 84, 1932, 1933, 1934, 1935, 1936, 1937, 38, 4545, 1940, 4547, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 37, 1961, 23, 37, 31, 22, 78, 33, 4835, 31, 30, 3358, 36, 31, 33, 23, 31, 31, 31, 69, 91, 268, 22, 30, 137, 37, 23, 128, 275, 276, 277, 278, 279, 280, 281, 282, 23, 284, 285, 286, 287, 33, 28, 28, 28, 28, 3251, 37, 23, 268, 31, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 4757, 284, 285, 286, 287, 31, 555, 290, 31, 20, 293, 31, 31, 24, 25, 31, 27, 28, 29, 31, 42, 32, 3433, 34, 23, 23, 23, 700, 37, 22, 703, 704, 705, 38, 38, 38, 38, 22, 103, 31, 31, 4, 102, 6, 31, 22, 26, 33, 30, 95, 4807, 724, 23, 78, 17, 3928, 3568, 33, 4409, 23, 128, 23, 735, 33, 23, 31, 31, 22, 92, 241, 31, 31, 22, 84, 3923, 69, 33, 31, 20, 3759, 69, 37, 24, 25, 47, 27, 28, 29, 3357, 38, 32, 268, 34, 22, 30, 768, 23, 274, 275, 276, 277, 278, 279, 280, 281, 282, 89, 284, 285, 286, 287, 23, 204, 205, 23, 23, 37, 22, 258, 4, 33, 6, 7, 22, 28, 22, 137, 42, 26, 3616, 3526, 223, 224, 225, 226, 227, 228, 23, 33, 87, 42, 23, 84, 23, 38, 78, 42, 4356, 5039, 22, 3546, 4360, 31, 128, 31, 40, 248, 87, 165, 31, 252, 31, 33, 23, 22, 30, 42, 259, 3594, 87, 33, 3568, 57, 23, 26, 60, 849, 4, 22, 6, 28, 30, 3526, 146, 857, 31, 23, 87, 89, 36, 17, 31, 31, 3221, 23, 137, 89, 3594, 23, 42, 3526, 164, 3613, 22, 87, 33, 22, 3515, 3236, 4836, 4837, 33, 26, 3568, 37, 33, 37, 37, 31, 22, 47, 165, 31, 4850, 31, 37, 31, 23, 23, 22, 22, 22, 3526, 143, 3594, 4283, 22, 304, 23, 3594, 203, 22, 87, 3526, 33, 33, 23, 37, 23, 3825, 3819, 22, 3828, 138, 139, 22, 26, 268, 100, 3835, 23, 934, 38, 3526, 149, 150, 939, 3947, 23, 232, 281, 282, 38, 284, 285, 286, 287, 38, 38, 23, 31, 33, 3858, 23, 3860, 23, 22, 3863, 30, 4089, 3866, 22, 3526, 3869, 23, 968, 3872, 182, 261, 262, 263, 264, 23, 266, 267, 190, 40, 192, 23, 22, 30, 3594, 38, 38, 38, 22, 28, 40, 40, 146, 31, 38, 3898, 23, 23, 271, 268, 23, 87, 23, 23, 3594, 142, 3526, 31, 220, 23, 164, 142, 281, 31, 283, 284, 285, 286, 287, 31, 56, 3200, 234, 4199, 40, 4201, 14, 40, 1028, 15, 3209, 2176, 333, 3212, 1320, 1374, 4212, 2180, 3526, 1388, 3955, 369, 5011, 4243, 4779, 1045, 4775, 1303, 924, 203, 488, 3677, 4661, 992, 207, 3591, 932, 3572, 2199, 1348, 521, 3416, 938, 4997, 3526, 4757, 4532, 3418, 4525, 1069, 322, 1009, 3968, 474, 514, 75, 4591, 4585, 232, 3928, 4165, 3902, 3820, 1080, 1979, 1962, 5040, 4261, 1042, 3795, 3526, 5179, 4212, 4632, 1172, 5049, 1931, 1174, 4140, 3594, 330, 1869, 856, 5057, 1095, 5111, 4298, 261, 262, 263, 264, 3526, 266, 267, 1647, 356, 3526, 1241, 741, 3225, 3225, 2107, 867, 806, 1124, 2107, 3226, 2108, 1409, 1160, 2866, 2057, 295, 1133, 593, 4218, 4220, 3197, 4132, 1963, 4884, 2126, 1910, 793, 1428, 4152, 2131, 2132, 4434, 2134, 2135, 4807, 494, 4423, 1030, 3418, 1924, 3572, 3568, 1035, 916, 3781, 1740, 4082, 4832, 5187, 5181, 3215, 4518, 3501, 4511, 5362, 1732, 2158, 2159, 2160, 2161, 906, 3572, 4237, 5113, 3418, 3515, 861, 3568, 5243, 5105, 4939, 5419, 5378, 3568, 3554, 3573, 1807, 4370, 4159, 4158, -1, 1074, 1075, 3793, -1, -1, 1079, 1080, 4741, 1082, 4110, -1, -1, -1, -1, -1, 3197, -1, -1, -1, -1, -1, 1095, -1, 4966, 3818, -1, 3461, 3916, -1, -1, -1, -1, 1106, 5185, -1, -1, -1, -1, 3616, 5321, 5192, -1, -1, -1, -1, -1, -1, -1, 3915, 3755, 3756, -1, -1, -1, -1, 3490, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3572, -1, -1, -1, 3505, -1, -1, -1, -1, 3510, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 3521, 27, 28, 29, -1, 3526, 32, -1, 34, 3530, 5378, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3572, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4129, 4130, 3526, 4737, -1, 3529, -1, -1, 1323, -1, -1, 5280, 1327, -1, -1, -1, -1, -1, -1, 1334, 3819, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, 3583, 3584, 1348, 4525, -1, -1, -1, -1, -1, -1, -1, 3594, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1374, -1, -1, -1, 4385, 4386, -1, -1, -1, -1, 4511, -1, -1, 3624, 1388, 3626, -1, -1, -1, -1, 4117, 137, 4119, -1, 4121, -1, -1, -1, -1, -1, -1, -1, 4002, -1, 3524, 4132, -1, -1, 3649, 3650, -1, 3652, -1, 3654, -1, -1, 4323, 3658, 3659, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1436, -1, -1, 3676, 3677, -1, -1, -1, -1, 3682, 4117, 4043, 4119, -1, 4121, -1, 1328, -1, -1, -1, -1, 3912, -1, -1, -1, -1, -1, -1, 4117, -1, 4119, -1, 4121, -1, -1, 5425, -1, -1, 3711, -1, -1, -1, 3526, 3759, -1, 3529, 5436, -1, 3968, -1, 3819, -1, -1, -1, -1, -1, 4395, -1, -1, -1, 4117, -1, 4119, -1, 4121, 3680, -1, -1, -1, 3684, -1, 4117, -1, 4119, -1, 4121, -1, -1, -1, 3752, -1, -1, -1, 3635, -1, -1, 3759, -1, -1, -1, 268, 4117, -1, 4119, -1, 4121, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 3901, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4117, -1, 4119, -1, 4121, -1, 4158, 4159, -1, -1, -1, -1, -1, -1, -1, 3948, -1, -1, -1, 4, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, 3948, -1, -1, 4410, 4117, -1, 4119, 3912, 4121, 3914, -1, -1, -1, 3918, -1, 3920, -1, 3922, -1, -1, -1, 4210, -1, -1, -1, 47, -1, -1, -1, -1, 3903, -1, -1, -1, -1, -1, 4117, -1, 4119, -1, 4121, -1, 3968, -1, -1, -1, -1, -1, 4, -1, 6, -1, -1, -1, 1647, -1, 1649, -1, -1, -1, -1, 17, 4117, -1, 4119, -1, 4121, -1, -1, -1, 4389, -1, 4356, -1, 3947, -1, -1, -1, -1, -1, -1, 4089, -1, -1, -1, -1, 3916, 3917, 4117, 3919, 4119, 47, 4121, 3923, -1, -1, 4358, -1, 3928, -1, -1, 4363, -1, 4365, 3934, 4367, -1, -1, -1, 4117, -1, 4119, -1, 4121, 4117, -1, 4119, 3947, 4121, -1, -1, -1, -1, 3928, 146, 3955, -1, -1, -1, 4581, -1, -1, 3934, -1, -1, 3937, -1, -1, -1, -1, -1, 4330, 164, -1, -1, -1, -1, -1, -1, 4556, 4557, -1, 4559, 4560, 4561, -1, -1, -1, -1, -1, -1, 1754, -1, -1, -1, -1, -1, -1, -1, 4769, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1773, 203, -1, 4109, 1777, -1, -1, 4140, -1, -1, 146, -1, -1, -1, 3903, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3913, -1, -1, -1, 164, -1, 232, -1, 3921, -1, 4530, -1, -1, -1, -1, -1, -1, 1814, -1, 3932, -1, -1, -1, -1, -1, 4545, -1, 4547, -1, 3995, 4423, -1, -1, 3999, -1, 261, 262, 263, 264, -1, 266, 267, -1, 203, 4737, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4089, -1, 1854, 1855, -1, -1, -1, 4530, -1, -1, -1, -1, 1864, -1, -1, -1, -1, 232, -1, -1, 4152, -1, 4545, -1, 4547, 4530, -1, -1, 4117, -1, 4119, -1, 4121, -1, 3934, -1, -1, 3937, -1, -1, 4545, -1, 4547, -1, -1, -1, 261, 262, 263, 264, -1, 266, 267, -1, -1, -1, 4117, 4530, 4119, -1, 4121, -1, -1, 4152, -1, -1, -1, -1, 4530, -1, -1, -1, 4545, -1, 4547, -1, -1, -1, -1, -1, -1, -1, -1, 4545, -1, 4547, -1, 4251, 4530, -1, -1, -1, -1, -1, -1, 4116, -1, -1, 4434, -1, -1, -1, -1, 4545, -1, 4547, 4195, -1, 4197, 4198, 4199, -1, 4201, -1, -1, 4146, -1, 4530, 4207, -1, -1, -1, -1, 4212, -1, -1, -1, 4216, 4217, 4218, 4219, 4220, 4545, -1, 4547, -1, 4225, -1, 4227, 4160, -1, 1869, 4663, 4232, -1, 4234, -1, -1, 4237, 4238, -1, -1, 4241, 4242, 4243, 4244, -1, -1, 4530, -1, -1, -1, -1, -1, -1, -1, 4134, -1, -1, -1, -1, -1, -1, 4545, -1, 4547, -1, 4384, 4410, 4243, 1908, -1, 1910, -1, 4632, -1, -1, -1, -1, 4157, 4530, -1, -1, -1, -1, -1, 1924, 4361, -1, -1, 4221, -1, -1, 1931, -1, 4545, -1, 4547, -1, -1, -1, -1, -1, -1, -1, 4881, 4530, 4117, -1, 4119, -1, 4121, -1, 4978, -1, -1, 4747, -1, -1, -1, -1, 4545, -1, 4547, -1, -1, -1, -1, -1, -1, 4208, -1, 4530, -1, 4511, -1, -1, -1, -1, -1, -1, 1979, -1, 4385, 4386, -1, -1, 4545, -1, 4547, -1, -1, -1, 4530, -1, -1, -1, 4356, 4530, -1, -1, 4360, -1, -1, -1, -1, -1, -1, 4545, -1, 4547, 4370, 4857, 4545, -1, 4547, 4861, 4647, 4377, -1, 4379, 4380, -1, -1, -1, -1, 4385, 4386, 4873, -1, 4389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4377, 4572, 4379, 4380, -1, -1, -1, -1, 2176, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4857, -1, -1, -1, 4861, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2200, 4268, 4873, -1, 4857, -1, -1, 2207, 4861, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4873, 4572, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4857, -1, -1, -1, 4861, 4357, -1, 4148, -1, -1, -1, 4857, -1, -1, 4366, 4861, 4873, 4737, -1, -1, 5070, -1, -1, -1, -1, -1, -1, 4873, -1, -1, -1, 4857, -1, -1, -1, 4861, 555, -1, 4511, -1, -1, -1, -1, 4659, -1, -1, -1, 4873, -1, 5011, 4523, 4524, 4525, -1, -1, 4528, 4529, 4530, -1, -1, 4857, -1, 4535, 4478, 4861, 4538, 4539, -1, -1, -1, -1, -1, 4545, -1, 4547, 4980, 4873, 4982, 4983, -1, -1, -1, -1, 4929, -1, 4530, 4991, 4919, -1, -1, -1, -1, -1, 4377, 4814, 4379, 4380, -1, -1, 4572, 4545, 4857, 4547, -1, -1, 4861, -1, -1, -1, -1, -1, -1, 4585, -1, -1, -1, -1, 4873, 4591, -1, 0, -1, -1, -1, -1, 5, -1, -1, -1, 4544, -1, 4546, -1, 4857, -1, -1, 4541, 4861, -1, -1, -1, 4614, -1, -1, -1, -1, -1, -1, 28, 4873, -1, 4566, -1, -1, -1, -1, -1, -1, 4510, 4857, -1, 5300, -1, 4861, -1, -1, -1, -1, 4737, 49, -1, -1, -1, -1, -1, 4873, 56, 4650, 4651, -1, 60, -1, -1, 4927, -1, 4857, -1, -1, 4661, 4861, -1, -1, -1, -1, 4742, 4743, 4669, 4670, -1, 79, 80, 4873, -1, -1, 4752, -1, 4857, -1, -1, -1, 4861, 4857, -1, -1, -1, 4861, -1, 97, 4148, -1, -1, -1, 4873, -1, 4576, 4577, -1, 4873, -1, -1, -1, -1, 5371, -1, -1, -1, 4, -1, 6, -1, 5145, 5200, 5147, -1, -1, -1, 4530, -1, -1, 17, -1, -1, -1, 4769, -1, -1, -1, -1, -1, 5105, -1, 4545, -1, 4547, -1, -1, -1, -1, 4741, -1, -1, -1, -1, 153, -1, -1, 4572, 4890, -1, 47, -1, -1, 4755, 4579, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, 5200, 174, 175, 4769, -1, -1, 4890, -1, 4774, 4775, -1, -1, -1, 4779, -1, -1, -1, 4755, 5200, -1, -1, 194, 195, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, 5196, -1, -1, -1, -1, 5074, -1, -1, -1, -1, -1, -1, 217, -1, -1, 4745, -1, -1, 5200, 4, -1, 6, 4762, -1, 4764, -1, -1, 4572, -1, 5200, 5260, -1, 17, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, 5200, -1, -1, -1, 146, -1, -1, -1, -1, -1, 4857, -1, -1, 47, 4861, -1, -1, -1, -1, -1, -1, 4868, 164, -1, -1, -1, 4873, -1, -1, 5200, -1, 924, -1, -1, 1057, 1058, 1059, 291, 4857, 932, -1, -1, 4861, 297, -1, 938, 4772, 4773, -1, -1, -1, -1, -1, -1, 4873, -1, 5301, -1, -1, 313, 5339, 203, -1, -1, -1, 4912, -1, -1, -1, -1, 5200, 4918, -1, -1, 4921, -1, 4923, -1, -1, -1, -1, 4870, 4929, 4872, -1, -1, 340, -1, 342, 343, 232, -1, 4939, -1, -1, -1, -1, 4755, -1, -1, -1, -1, 5200, 4950, -1, 4763, 4953, 4765, 4955, -1, -1, -1, 146, 5078, -1, -1, -1, 4896, -1, 261, 262, 263, 264, -1, 266, 267, -1, -1, 5200, -1, 164, -1, -1, -1, -1, -1, -1, 1030, -1, -1, -1, 395, 1035, 4922, -1, 4992, 4925, 4926, -1, 4996, 4997, -1, -1, -1, 5200, 5002, -1, -1, 4884, -1, -1, -1, -1, -1, 5011, -1, -1, -1, -1, 203, -1, -1, -1, 4992, -1, 5200, -1, 4996, -1, -1, 5200, 1074, 1075, 5002, -1, -1, 1079, 1080, -1, 1082, -1, -1, -1, -1, -1, -1, -1, -1, 232, 4857, -1, 455, 1095, 4861, -1, -1, -1, -1, -1, 4988, 4999, 4990, 5001, 1106, -1, 4873, 5063, 5064, -1, -1, -1, -1, -1, -1, -1, -1, -1, 261, 262, 263, 264, -1, 266, 267, -1, -1, -1, 491, -1, 493, 494, -1, 496, -1, -1, 499, 5093, -1, -1, 503, 504, 505, -1, 5196, -1, -1, -1, -1, 5105, -1, -1, -1, 5109, -1, -1, -1, 5113, 5114, -1, -1, -1, 5118, -1, 5120, 3652, 5122, 3654, -1, -1, -1, 3658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5114, -1, -1, -1, -1, 551, -1, -1, -1, 555, -1, -1, 3682, -1, -1, 4268, -1, -1, -1, -1, -1, -1, -1, -1, 570, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 587, 4992, -1, -1, -1, 4996, -1, -1, -1, -1, -1, 5002, -1, -1, -1, -1, -1, -1, -1, -1, 5200, -1, -1, -1, -1, 5301, -1, -1, -1, -1, -1, -1, 5144, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5226, -1, 5200, -1, 637, -1, -1, -1, -1, -1, 5236, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, -1, 4000, -1, -1, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, 5264, 672, 673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1328, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5264, 700, 5294, -1, 703, 704, 705, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 724, 39, -1, 41, -1, 5322, -1, 5324, -1, 5326, 5259, 735, -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, 768, 5362, 84, -1, -1, -1, -1, -1, -1, 5370, -1, -1, -1, -1, -1, 5376, -1, -1, -1, -1, 5381, -1, -1, 791, -1, 793, -1, -1, 5200, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5409, -1, -1, -1, 5413, -1, 5415, 137, -1, 5418, 5419, -1, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, -1, 840, 3197, 5435, -1, -1, -1, -1, -1, -1, 849, -1, -1, -1, -1, -1, -1, -1, 857, -1, -1, 5264, -1, -1, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, -1, -1, -1, -1, -1, 881, 882, 883, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, -1, -1, -1, -1, 39, -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, 5405, 934, -1, -1, -1, 938, 939, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 968, 283, 284, 285, 286, 287, 974, -1, 290, -1, -1, 293, -1, -1, 982, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, 1008, 1009, 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, 1069, -1, -1, -1, -1, 1074, 1075, -1, -1, -1, 1079, 1080, -1, 1082, -1, -1, -1, -1, -1, 4429, -1, -1, -1, -1, 4434, -1, 1095, -1, -1, -1, -1, -1, 4225, -1, 4227, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, -1, -1, 4244, -1, 1122, -1, 1124, -1, -1, -1, -1, -1, -1, -1, 268, 1133, -1, -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 3510, -1, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, -1, 3526, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3572, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1241, -1, -1, -1, -1, -1, -1, -1, -1, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, 3624, 1908, 3626, 1910, -1, -1, -1, -1, -1, -1, 3634, -1, -1, -1, -1, -1, -1, 1924, -1, -1, -1, -1, -1, 1291, 1931, -1, 1294, -1, -1, -1, 1298, -1, -1, -1, -1, 3659, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, 1327, 1328, -1, -1, 1331, -1, -1, 1334, -1, -1, -1, 20, 21, 1979, -1, 24, 25, -1, 27, 28, 29, 1348, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, 3594, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1374, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1388, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 84, -1, 24, 25, -1, 27, 28, 29, -1, 4535, 32, -1, 34, 35, -1, -1, -1, 39, 3652, 41, 3654, -1, -1, -1, 3658, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1436, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, 3682, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, 1462, 4804, 84, 4806, -1, -1, 1468, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1510, -1, -1, -1, -1, -1, -1, 137, 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, 4669, 4670, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1561, -1, -1, -1, -1, -1, 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3934, 1579, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 1601, 284, 285, 286, 287, -1, -1, 290, 1609, -1, 293, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, 4975, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, 1647, 268, 1649, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, 5015, -1, -1, -1, -1, -1, -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, 20, -1, -1, 1728, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, -1, -1, -1, 0, -1, -1, -1, -1, 5089, -1, -1, -1, -1, -1, 1754, -1, -1, -1, -1, -1, -1, 4117, -1, 4119, -1, 4121, -1, -1, -1, -1, -1, 28, -1, 1773, -1, -1, -1, 1777, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, 49, -1, 4918, -1, -1, -1, -1, 56, -1, -1, -1, 60, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 1814, -1, 32, 4173, 34, -1, -1, -1, 79, 80, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, 137, 4199, -1, 4201, -1, -1, -1, -1, -1, -1, -1, -1, 1854, 1855, 4212, -1, -1, -1, -1, -1, -1, 1863, 1864, -1, 1866, -1, 84, 1869, -1, -1, -1, -1, -1, -1, -1, -1, 4234, -1, -1, 4237, 1882, -1, -1, -1, -1, -1, -1, 1889, -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1908, -1, 1910, -1, -1, -1, -1, -1, -1, 174, 175, -1, -1, 137, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, 198, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 217, 1961, -1, 4195, -1, 4197, 4198, -1, -1, 5093, -1, -1, -1, 268, -1, 4207, -1, -1, -1, 1979, 275, 276, 277, 278, 279, 280, 281, 4219, 283, 284, 285, 286, 287, 4225, 5118, 4227, 5120, -1, 5122, -1, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, -1, 4244, -1, 4370, -1, -1, -1, -1, -1, -1, 4377, -1, 4379, 4380, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, 313, 2057, 274, 275, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, -1, -1, 1057, 1058, 1059, -1, -1, 2079, -1, -1, -1, -1, 2084, -1, -1, -1, -1, -1, -1, -1, -1, 2093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2107, -1, -1, -1, -1, -1, -1, -1, -1, 2116, -1, -1, -1, -1, -1, -1, 2123, -1, 2125, 2126, -1, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, -1, 4, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2158, 2159, 2160, 2161, 2162, -1, -1, -1, -1, -1, -1, 4525, -1, -1, -1, -1, 4530, 40, 2176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4545, -1, 4547, 57, -1, -1, 60, -1, -1, -1, 64, 2200, -1, -1, -1, -1, -1, -1, 2207, -1, -1, -1, 468, -1, -1, -1, -1, 4572, -1, -1, -1, -1, -1, -1, 4579, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 491, -1, 493, 494, -1, 496, 105, 106, 499, -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 865, 866, -1, 868, 869, 870, -1, 872, 873, -1, -1, -1, 138, 139, -1, -1, 881, 882, 883, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 4523, 4524, -1, -1, 4651, 4528, 4529, 555, -1, -1, -1, -1, 4535, 20, 21, 4538, 4539, 24, 25, -1, 27, 28, 29, 179, 180, 32, 182, 34, -1, -1, -1, 579, 39, -1, 190, 191, -1, -1, -1, 587, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, 601, -1, 603, -1, 605, -1, 607, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, 4614, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4755, 265, 266, -1, -1, 269, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, -1, 672, 673, -1, -1, 284, 285, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -1, -1, -1, -1, 700, -1, -1, 703, 704, 705, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 724, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 735, -1, -1, 20, 21, -1, 741, 24, 25, -1, 27, 28, 29, -1, 749, 32, -1, 34, 35, -1, 755, 756, 39, 4857, 41, -1, -1, 4861, -1, 764, 765, -1, -1, 768, -1, -1, -1, -1, -1, 4873, -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, 84, -1, -1, -1, 806, -1, -1, 268, -1, -1, -1, -1, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, -1, -1, -1, -1, -1, 836, 837, -1, -1, 840, -1, -1, -1, -1, -1, -1, -1, -1, 849, -1, -1, -1, -1, -1, 137, -1, 857, -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, 4992, -1, -1, -1, 4996, -1, -1, -1, -1, -1, 5002, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 924, 24, 25, -1, 27, 28, 29, 30, 932, 32, 934, 34, 35, 4912, 938, 939, 39, -1, 41, 4918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4929, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 968, -1, -1, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, -1, 84, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028, 128, 1030, -1, -1, -1, -1, 1035, -1, -1, 137, -1, -1, -1, -1, -1, -1, 1045, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, 164, -1, -1, -1, 1069, -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, 5200, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5093, -1, -1, -1, -1, -1, 1124, -1, -1, -1, -1, -1, 5105, -1, -1, 1133, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5118, -1, 5120, -1, 5122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5264, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, 3594, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, 1241, -1, -1, -1, -1, -1, -1, -1, -1, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, -1, -1, 3652, -1, 3654, -1, -1, -1, 3658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1291, -1, -1, 1294, -1, -1, -1, 1298, -1, 3682, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, -1, -1, 1327, 1328, -1, -1, -1, -1, -1, 1334, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, 1348, -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, 1374, 20, 21, -1, 23, 24, 25, 26, 27, 28, 29, 26, -1, 32, 1388, 34, 35, -1, -1, -1, 39, 5370, 41, -1, -1, 40, -1, 42, 47, -1, -1, -1, 1406, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 73, -1, 5409, -1, 1436, -1, -1, 84, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, -1, 3197, -1, -1, -1, -1, -1, -1, -1, 1462, -1, -1, -1, -1, -1, 1468, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1479, -1, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, 135, 136, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1518, 164, 1520, 1521, -1, 1523, 165, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, 181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1561, -1, 204, 205, -1, 211, 212, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, -1, 1579, -1, -1, 223, 224, 225, 226, 227, 228, -1, -1, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, 253, 1609, -1, 252, 1612, -1, 1614, 1615, 1616, -1, 259, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 1638, 284, 285, 286, 287, -1, -1, 290, -1, 1647, 293, 1649, -1, -1, 297, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, 3418, -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, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, 1754, -1, 4268, -1, -1, -1, -1, -1, -1, -1, -1, 3508, -1, 3510, 3511, -1, -1, 3514, 3515, 1773, -1, -1, -1, 1777, -1, -1, -1, -1, -1, 3526, -1, -1, -1, -1, -1, 1789, -1, 1791, 3535, 1793, 84, 1795, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3549, -1, -1, -1, -1, -1, -1, 4195, 1814, 4197, 4198, -1, -1, -1, -1, -1, -1, -1, -1, 4207, -1, -1, -1, 3572, -1, -1, -1, -1, -1, -1, -1, 4219, -1, -1, -1, -1, -1, 4225, -1, 4227, -1, 137, -1, -1, -1, 3594, 3595, -1, 1854, 1855, 4238, -1, -1, 4241, 4242, -1, 4244, 1863, 1864, -1, -1, -1, -1, 1869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3624, -1, 3626, -1, -1, -1, -1, -1, -1, -1, 3634, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1908, 3652, 1910, 3654, -1, -1, -1, 3658, 3659, -1, -1, -1, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, -1, 3682, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 1979, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, 1999, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, -1, -1, -1, -1, 39, 3819, 41, -1, 2079, -1, -1, -1, -1, 2084, -1, -1, -1, -1, -1, -1, 20, 21, 2093, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, 2107, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, 84, -1, -1, 2123, -1, 2125, 2126, -1, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, -1, -1, -1, 4523, 4524, -1, -1, -1, 4528, 4529, -1, -1, -1, -1, -1, 4535, -1, 84, 4538, 4539, 2158, 2159, 2160, 2161, 2162, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, 2174, -1, 2176, -1, -1, -1, 3923, -1, -1, -1, -1, 3928, -1, -1, -1, -1, -1, 3934, -1, -1, -1, -1, -1, -1, -1, 128, 2200, -1, -1, 132, -1, -1, -1, 2207, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3968, -1, -1, -1, -1, -1, -1, 4614, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, -1, 4000, -1, -1, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, 212, -1, -1, -1, 4669, 4670, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 235, 236, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 253, -1, -1, -1, -1, -1, -1, -1, -1, 4076, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, 4109, -1, -1, 298, -1, -1, -1, -1, 4117, -1, 4119, -1, 4121, 308, 309, 310, 311, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, -1, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 4173, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 84, 4195, -1, 4197, 4198, 4199, -1, 4201, -1, -1, -1, -1, -1, 4207, -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, -1, 4219, -1, -1, -1, -1, 84, 4225, -1, 4227, -1, -1, -1, -1, -1, -1, 4234, -1, -1, 4237, 4238, -1, -1, 4241, 4242, 4243, 4244, 20, 21, 137, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, 4268, -1, -1, -1, -1, 4912, -1, -1, -1, 137, -1, 4918, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, 4929, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, 84, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, 4370, -1, -1, -1, -1, -1, 151, 4377, 268, 4379, 4380, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 253, 284, 285, 286, 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 4409, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, 4429, 290, -1, -1, 293, 4434, -1, -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, 5093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5105, -1, 20, -1, -1, -1, 24, 25, -1, 27, 28, 29, -1, 5118, 32, 5120, 34, 5122, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, -1, 297, 4523, 4524, 4525, -1, -1, 4528, 4529, 4530, -1, 84, -1, -1, 4535, -1, -1, 4538, 4539, -1, -1, -1, -1, -1, 4545, -1, 4547, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 4572, -1, -1, -1, 17, 18, -1, 4579, 21, 22, -1, -1, 25, 137, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4614, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, 4651, -1, -1, 4654, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, 4669, 4670, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, 163, 275, 276, 277, 278, 279, 280, 281, 282, 5370, 284, 285, 286, 287, -1, 4737, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, 193, -1, -1, 4755, -1, -1, -1, 200, -1, 202, 203, 4763, -1, 4765, -1, -1, -1, -1, 5409, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, 284, 285, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4857, -1, -1, -1, 4861, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 4873, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 341, 342, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 4912, -1, -1, -1, -1, -1, 4918, -1, 39, 40, 41, 42, 43, -1, -1, 23, -1, 4929, 26, -1, -1, -1, -1, -1, -1, -1, 57, -1, 3197, 60, -1, -1, 40, 64, 42, -1, -1, -1, 4950, 70, -1, 4953, -1, 4955, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4975, -1, 73, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, 4992, -1, -1, -1, 4996, 116, -1, -1, -1, -1, 5002, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, 5015, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, 4, -1, 6, -1, -1, 135, 136, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, 165, -1, 190, 191, 192, 193, 194, -1, -1, -1, -1, -1, 200, -1, 202, 203, 181, -1, 57, -1, 5089, 60, -1, -1, 5093, 64, 214, 66, -1, -1, 218, -1, 220, -1, -1, -1, 5105, -1, -1, 204, 205, 229, -1, 231, 232, 5114, 234, -1, -1, 5118, -1, 5120, -1, 5122, 242, -1, 244, -1, 223, 224, 225, 226, 227, 228, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, 248, 272, 273, 274, 252, -1, 23, -1, -1, 26, -1, 259, -1, -1, -1, -1, 138, 139, -1, 141, -1, -1, -1, 40, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, 5196, -1, -1, -1, 5200, -1, -1, -1, -1, -1, -1, -1, 73, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 341, 342, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, 3508, -1, 3510, 3511, -1, -1, 3514, 3515, 229, -1, 231, -1, -1, 5264, -1, -1, -1, -1, 3526, 135, 136, 242, -1, 244, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, 4268, -1, -1, 3, 4, -1, 6, 7, 8, 9, 10, 266, -1, -1, -1, 165, 5301, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, 28, -1, 3572, 181, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, 3594, -1, 204, 205, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, 223, 224, 225, 226, 227, 228, -1, -1, -1, 3624, -1, 3626, 5370, 86, -1, -1, -1, -1, -1, 3634, -1, -1, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, 105, 106, 107, -1, 259, 3652, -1, 3654, 113, -1, -1, 3658, 3659, -1, -1, -1, -1, -1, -1, 5409, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, 3682, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 155, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, 4076, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, 3819, -1, -1, -1, 5, -1, -1, -1, 20, 21, -1, 288, 24, 25, -1, 27, 28, 29, 30, -1, 32, 298, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 3902, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3934, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, 84, -1, -1, -1, 146, -1, 148, -1, 3968, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, -1, 4000, -1, -1, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 4076, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 219, -1, 290, 291, 292, 293, -1, -1, -1, 297, -1, -1, -1, -1, 4109, -1, 293, 294, 295, -1, 297, -1, 4117, -1, 4119, -1, 4121, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 4173, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, 4195, -1, 4197, 4198, 4199, -1, 4201, -1, -1, -1, -1, -1, 4207, -1, -1, -1, -1, 4212, 395, -1, -1, -1, -1, -1, 4219, -1, -1, -1, -1, -1, 4225, -1, 4227, -1, -1, -1, -1, -1, -1, 4234, -1, -1, 4237, 4238, -1, -1, 4241, 4242, -1, 4244, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, 441, -1, 443, 17, 18, -1, -1, 21, 22, 4268, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 493, 494, -1, -1, 70, -1, 499, -1, -1, -1, -1, -1, -1, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 105, 106, 32, -1, 34, 35, -1, -1, 113, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 4370, -1, -1, 555, -1, -1, -1, 4377, -1, 4379, 4380, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, 84, 587, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, 4429, -1, -1, -1, -1, 4434, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, 637, -1, 137, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, 151, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 672, 673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 4523, 4524, 4525, -1, -1, 4528, 4529, 4530, -1, -1, 288, -1, 4535, -1, -1, 4538, 4539, -1, -1, -1, 298, -1, 4545, -1, 4547, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 741, -1, -1, -1, -1, -1, -1, -1, 749, -1, -1, -1, -1, 4572, 755, 756, -1, -1, -1, -1, 4579, -1, -1, 764, 765, -1, -1, 341, 342, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, 791, 290, 793, -1, 293, 4614, -1, 798, 799, 800, -1, -1, -1, -1, -1, 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, 4651, -1, -1, 836, 837, -1, -1, 840, 841, 842, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -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, 902, 903, -1, 905, 906, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4737, -1, -1, -1, -1, 924, -1, -1, -1, -1, -1, -1, -1, 932, -1, -1, -1, -1, 4755, 938, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, 981, 982, 47, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, 84, -1, -1, -1, -1, -1, -1, -1, 1028, 1029, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, 4857, -1, -1, -1, 4861, -1, 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4873, -1, 1057, 1058, 1059, 1060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, 1074, 1075, -1, -1, 142, 1079, 1080, -1, 1082, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 4912, 1095, 32, -1, 34, 35, 4918, -1, -1, 39, -1, 41, 1106, -1, -1, -1, -1, 4929, -1, -1, -1, -1, 1116, 1117, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 219, -1, 4975, -1, -1, -1, 20, 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, 4992, 34, 35, -1, 4996, -1, 39, -1, 41, -1, 5002, -1, -1, -1, 47, 253, -1, -1, -1, -1, -1, -1, -1, 5015, -1, -1, -1, 137, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, 84, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, 1241, -1, -1, 308, 309, 310, 311, -1, -1, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, -1, 128, -1, 5089, -1, 132, -1, 5093, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, 5105, -1, -1, -1, 1291, 151, -1, 1294, 1295, 1296, -1, 1298, -1, 5118, -1, 5120, -1, 5122, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1327, 1328, -1, -1, 1331, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 211, 212, 290, -1, -1, 293, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 236, 5196, -1, -1, -1, 5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, 1445, 5264, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1462, -1, -1, -1, -1, -1, 1468, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 1479, 20, 21, -1, 5301, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -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, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, 5370, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 1561, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 1579, -1, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, 5409, -1, -1, -1, -1, -1, 137, -1, -1, -1, 1601, -1, -1, -1, -1, -1, -1, -1, 1609, -1, 151, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1638, -1, -1, -1, -1, -1, -1, -1, -1, 174, 175, -1, -1, -1, -1, -1, -1, -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, 137, 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, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, 291, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, 268, 340, -1, 342, 343, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1854, 1855, -1, -1, -1, -1, -1, -1, -1, 1863, 1864, -1, -1, -1, 395, 1869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1882, -1, -1, -1, -1, 128, -1, 1889, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, 1908, -1, 1910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, 1924, -1, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, 493, 494, -1, -1, 211, 212, 499, -1, -1, -1, 503, -1, 219, 1979, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 551, -1, -1, 268, 555, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, 299, 300, 587, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, 2079, -1, -1, -1, -1, 2084, -1, -1, -1, -1, -1, -1, -1, -1, 2093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2107, -1, -1, 637, -1, -1, -1, -1, -1, 2116, -1, -1, -1, -1, -1, -1, 2123, -1, 2125, 2126, -1, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2158, 2159, 2160, 2161, 2162, -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, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, 741, -1, -1, -1, -1, -1, -1, -1, 749, 39, 40, 41, 42, 43, 755, 756, -1, -1, -1, -1, -1, -1, -1, 764, 765, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, 791, -1, 793, 83, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, 836, 837, 127, -1, 840, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, 163, -1, -1, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, 193, 905, 906, -1, -1, -1, -1, 200, -1, 202, 203, -1, 916, -1, -1, -1, -1, -1, -1, -1, 924, 214, -1, -1, -1, 218, -1, 220, 932, -1, -1, -1, -1, -1, 938, -1, 229, -1, 231, 232, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, 982, 272, 273, 274, -1, -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, 312, 313, -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, 341, 342, -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, -1, -1, -1, 1095, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1122, 1, 1124, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, 73, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 1241, -1, -1, -1, -1, -1, -1, -1, 127, 1250, -1, -1, 1253, 1254, 133, -1, 135, 136, -1, 138, 139, 1262, 1263, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, 165, -1, -1, 168, 1291, 170, -1, 1294, -1, -1, -1, 1298, 177, 178, 179, 180, 181, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, -1, 1327, 1328, -1, -1, 1331, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 293, 294, 32, -1, 34, 298, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, 312, 313, -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, 341, 342, -1, -1, -1, 1468, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 137, 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, -1, -1, -1, 1561, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 1579, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1601, -1, -1, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -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, 268, -1, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, -1, -1, -1, -1, 137, -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, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, 219, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 1854, 1855, 137, -1, -1, -1, -1, 142, -1, 1863, 1864, -1, 1866, -1, -1, 1869, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1882, 164, -1, -1, -1, -1, -1, 1889, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1908, -1, 1910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, 219, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, 1979, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, 3508, -1, 3510, 3511, -1, -1, 3514, 3515, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2057, -1, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2079, -1, -1, -1, -1, 2084, -1, -1, -1, -1, -1, -1, -1, -1, 2093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2107, -1, -1, -1, -1, -1, -1, -1, 0, 2116, -1, -1, -1, -1, 3594, 3595, 2123, -1, 2125, 2126, 12, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, -1, -1, -1, -1, -1, 28, -1, -1, -1, -1, -1, -1, -1, 3624, -1, 3626, -1, -1, -1, -1, 2158, 2159, 2160, 2161, 2162, -1, 49, -1, -1, -1, -1, -1, -1, 56, -1, -1, -1, 60, -1, -1, -1, 3652, -1, 3654, -1, -1, -1, 3658, -1, -1, -1, -1, -1, -1, -1, -1, 79, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3682, -1, -1, 97, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, 153, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, 174, 175, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, 200, 104, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, 217, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, 3819, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, 4, -1, 6, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, 40, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 214, -1, 313, 64, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, 3923, -1, -1, -1, 242, 3928, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, 3968, -1, -1, -1, -1, -1, -1, -1, 138, 139, 293, 294, -1, -1, -1, 298, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 3994, -1, 3996, 312, 313, -1, 4000, -1, -1, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, 341, 342, 190, 191, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, -1, -1, -1, -1, 4076, -1, -1, 491, 242, -1, 244, -1, 496, -1, -1, -1, -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, 266, -1, -1, 269, -1, 4109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 0, 27, 28, 29, -1, 5, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, 4195, -1, 4197, 4198, 4199, 28, 4201, -1, -1, 84, -1, -1, 4207, -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, -1, 4219, -1, 49, -1, -1, -1, 4225, -1, 4227, 56, -1, 84, -1, 60, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, 4243, 4244, -1, -1, -1, 128, -1, -1, 79, 80, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4268, 97, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, 164, -1, -1, -1, 700, -1, -1, 703, 704, 705, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 724, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, 735, -1, 153, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, -1, -1, -1, -1, 174, 175, -1, -1, -1, -1, -1, -1, -1, -1, 768, -1, 84, -1, -1, -1, -1, -1, -1, 219, 194, 195, -1, -1, 4370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 217, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, 4409, 290, 137, -1, 293, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 4429, 284, 285, 286, 287, 4434, -1, 290, 849, -1, 293, -1, -1, -1, -1, 298, 857, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, -1, 291, -1, -1, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 340, -1, 342, 343, -1, -1, -1, -1, -1, -1, 934, 4523, 4524, 4525, -1, 939, 4528, 4529, -1, -1, -1, -1, -1, 4535, -1, -1, 4538, 4539, 0, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 968, 283, 284, 285, 286, 287, -1, -1, -1, -1, -1, 395, 28, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, 49, -1, 39, -1, 41, -1, -1, 56, -1, -1, 47, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4614, -1, 1028, -1, -1, 79, 80, -1, -1, -1, -1, -1, -1, 455, -1, -1, -1, -1, -1, 1045, -1, -1, 84, 97, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4654, -1, -1, 1069, -1, -1, -1, -1, -1, 491, -1, -1, -1, -1, 496, 4669, 4670, -1, -1, -1, -1, 503, 504, 505, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, 153, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, 1124, -1, 174, 175, 164, -1, -1, -1, -1, 1133, -1, 551, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4737, -1, -1, -1, -1, 570, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 217, -1, -1, -1, -1, -1, 211, 212, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4804, 253, 4806, -1, -1, 637, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, 313, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, 700, -1, -1, 703, 704, 705, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3418, -1, -1, -1, -1, 724, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 735, -1, -1, -1, 1323, 4912, -1, -1, 1327, -1, -1, 4918, -1, -1, -1, 1334, -1, -1, -1, -1, -1, -1, 4929, -1, -1, -1, -1, -1, -1, 1348, -1, -1, -1, 768, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, -1, -1, -1, 1374, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4975, 1388, -1, -1, -1, -1, 3508, -1, 3510, 3511, -1, -1, 3514, 3515, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, 5015, -1, -1, -1, -1, -1, 849, -1, -1, 1436, -1, -1, -1, -1, 857, -1, 491, -1, -1, -1, -1, 496, -1, -1, -1, -1, -1, -1, -1, 504, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3594, 3595, -1, -1, -1, -1, 4, -1, 6, -1, 905, 906, -1, -1, -1, -1, -1, -1, -1, -1, -1, 916, 5089, -1, -1, -1, 5093, -1, -1, -1, 3624, -1, 3626, 31, -1, -1, -1, -1, 5105, 934, -1, -1, 40, -1, 939, -1, -1, 5114, -1, -1, -1, 5118, -1, 5120, -1, 5122, -1, -1, 3652, 57, 3654, -1, 60, -1, 3658, -1, 64, -1, -1, -1, -1, -1, -1, 968, -1, -1, -1, -1, -1, 974, -1, -1, -1, -1, -1, -1, -1, 982, 3682, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 105, 106, 32, -1, 34, 35, -1, 1009, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5196, -1, -1, -1, 1028, 1029, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, 1045, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, 1060, -1, -1, 1647, -1, 1649, -1, -1, 700, 1069, -1, 703, 704, 705, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, -1, -1, -1, 724, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, 735, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, 218, -1, 220, -1, -1, 3819, -1, 1122, 151, 1124, -1, 229, -1, 231, 5301, -1, -1, -1, 1133, -1, 238, 768, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, 266, 20, 21, 269, -1, 24, 25, 1754, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, 1773, -1, -1, -1, 1777, -1, -1, -1, -1, 5370, 20, 21, -1, 23, 24, 25, 26, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 849, 39, -1, 41, -1, -1, -1, 3923, 857, 47, -1, 84, 3928, 1814, -1, -1, -1, -1, -1, -1, 5409, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, -1, -1, 290, 84, -1, 293, -1, -1, -1, 3968, 1854, 1855, -1, -1, -1, -1, -1, -1, -1, -1, 1864, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, -1, 4000, 934, -1, 4003, 4004, 4005, 939, 4007, 4008, 4009, 4010, 4011, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, 1323, -1, -1, -1, 1327, -1, -1, 151, 1331, -1, -1, 1334, -1, 968, -1, -1, -1, -1, -1, -1, 164, -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, 4076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1388, -1, -1, -1, -1, -1, -1, -1, 1028, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4109, -1, 268, 1045, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 253, -1, -1, -1, 1436, 1069, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 6, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, 1124, -1, -1, -1, 4195, -1, 4197, 4198, 4199, 1133, 4201, -1, -1, -1, -1, -1, 4207, -1, 1510, -1, -1, 4212, -1, -1, -1, -1, 57, -1, 4219, 60, -1, -1, -1, 64, 4225, -1, 4227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, 4243, 4244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 4268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2176, -1, -1, -1, -1, -1, -1, 138, 139, 1601, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 2200, -1, -1, -1, -1, -1, -1, 2207, -1, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, 179, 180, -1, 182, -1, -1, -1, 1647, -1, 1649, -1, 190, 191, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, 4370, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, 1688, -1, 229, 1323, 231, -1, -1, 1327, -1, -1, -1, -1, -1, -1, 1334, 242, -1, 244, 245, -1, -1, -1, 4409, -1, -1, -1, -1, -1, 1348, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, 1728, -1, 4429, -1, -1, -1, -1, 4434, -1, -1, -1, -1, -1, -1, 1374, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1754, -1, 1388, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1773, -1, -1, -1, 1777, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 1436, 31, 32, -1, 34, 35, -1, -1, -1, 39, 1814, 41, -1, -1, -1, -1, -1, 47, -1, -1, 4523, 4524, 4525, -1, -1, 4528, 4529, -1, -1, -1, -1, -1, 4535, -1, -1, 4538, 4539, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1854, 1855, -1, -1, 84, -1, -1, -1, -1, -1, 1864, -1, 1866, -1, -1, -1, -1, 20, 21, 4572, -1, 24, 25, -1, 27, 28, 29, -1, 1882, 32, -1, 34, -1, -1, -1, 1889, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, 4614, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, 1931, -1, -1, -1, 84, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4654, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, 212, -1, 137, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 236, -1, -1, -1, -1, 1647, -1, 1649, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4737, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 2057, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -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, 2116, -1, -1, 268, -1, -1, 1754, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 1773, -1, -1, -1, 1777, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2176, -1, -1, -1, -1, -1, 1814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2200, -1, -1, -1, -1, -1, -1, 2207, -1, -1, -1, -1, -1, 4912, -1, -1, -1, -1, -1, 4918, -1, -1, 1854, 1855, -1, -1, -1, -1, -1, -1, 4929, -1, 1864, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4975, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, 5015, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, 73, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, 5089, -1, -1, -1, 5093, -1, -1, 104, 105, 106, -1, 108, -1, -1, -1, -1, 5105, 114, 115, 116, 117, 118, -1, -1, -1, 5114, -1, -1, -1, 5118, 127, 5120, -1, 5122, -1, -1, 133, -1, 135, 136, -1, 138, 139, -1, -1, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, 165, -1, -1, 168, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, 181, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, 5196, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, 2176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 2200, -1, -1, -1, -1, -1, -1, 2207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5301, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, 3197, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, 341, 342, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, 51, 5370, 53, 54, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, 88, -1, -1, 5409, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, -1, -1, 143, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, 168, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, 3510, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3526, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, 341, 342, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, 3572, 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, 88, -1, -1, -1, -1, -1, 3624, -1, 3626, -1, -1, -1, -1, -1, -1, -1, 3634, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, 3659, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, 168, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, 3197, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, 3923, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3934, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3418, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 155, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, 3510, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 3526, -1, 234, -1, -1, -1, -1, 4117, -1, 4119, 242, 4121, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, 3549, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, 3197, 272, 273, 274, -1, -1, -1, 3572, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, 4173, -1, -1, 298, -1, -1, 3595, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, 4199, -1, 4201, -1, -1, -1, -1, -1, -1, 3624, -1, 3626, -1, 4212, -1, -1, -1, -1, -1, 3634, 341, 342, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, 4234, -1, -1, 4237, -1, -1, 17, 18, 19, 3659, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, 143, -1, -1, 146, 4370, -1, 149, 150, -1, -1, -1, 4377, -1, 4379, 4380, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, 3510, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, 3526, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3923, -1, -1, -1, -1, 3928, 4, -1, 6, 293, 294, 3934, -1, -1, 298, -1, -1, 3572, 4525, -1, -1, -1, -1, 4530, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, 4545, -1, 4547, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 341, 342, 57, -1, 39, 60, 41, -1, 4572, 64, -1, -1, 3624, -1, 3626, 4579, -1, -1, -1, -1, -1, -1, 3634, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, 3659, -1, 84, 105, 106, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, 4651, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, 20, 21, -1, 137, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, -1, -1, -1, -1, 39, -1, 41, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 4117, -1, 4119, -1, 4121, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 4755, -1, 4173, -1, -1, -1, -1, -1, 4763, -1, 4765, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, 137, -1, -1, 4199, -1, 4201, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4212, 268, -1, -1, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, -1, 4234, -1, -1, 4237, -1, -1, -1, -1, -1, 4243, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, 23, -1, 25, -1, 27, -1, 4857, -1, -1, -1, 4861, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, 4873, 46, 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, 3934, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, -1, 86, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4370, 127, -1, -1, -1, -1, -1, 4377, -1, 4379, 4380, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 155, -1, -1, -1, -1, 160, -1, 162, 163, 4992, 4409, -1, -1, 4996, 169, -1, -1, -1, -1, 5002, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, 4117, 242, 4119, 244, 4121, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 20, 21, -1, 23, 24, 25, 4525, 27, 28, 29, -1, 4530, 32, 288, 34, 35, -1, -1, -1, 39, -1, 41, 4173, 298, -1, -1, 4545, 47, 4547, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4199, -1, 4201, -1, -1, 4572, -1, -1, -1, -1, -1, -1, 4579, 4212, -1, -1, 84, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4234, -1, -1, 4237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5200, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, 132, -1, 198, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, 4651, -1, -1, 4654, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 211, 212, 32, -1, 34, 35, -1, -1, 219, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, 235, 236, -1, -1, 4370, -1, -1, -1, -1, -1, -1, 4377, -1, 4379, 4380, -1, 315, -1, 253, -1, -1, 4755, -1, -1, -1, -1, -1, -1, -1, 4763, 84, 4765, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, 390, 391, 392, 393, 394, -1, 396, 397, 398, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, 412, 413, 414, 415, 416, 417, -1, -1, -1, -1, 4857, -1, -1, -1, 4861, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4873, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4525, -1, -1, -1, -1, 4530, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4545, -1, 4547, -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 497, 253, -1, -1, -1, -1, -1, -1, 4572, -1, -1, -1, -1, -1, -1, 4579, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 4992, -1, -1, -1, 4996, -1, -1, -1, -1, -1, 5002, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 579, -1, -1, -1, -1, 4651, -1, -1, -1, -1, -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, -1, -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, -1, -1, -1, -1, -1, -1, 5114, -1, -1, -1, -1, -1, -1, -1, -1, 4755, -1, -1, -1, -1, -1, -1, -1, 4763, -1, 4765, -1, -1, -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, -1, -1, 739, 740, -1, 742, 743, 744, 745, 746, 747, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5200, -1, -1, -1, -1, 770, 771, 772, -1, -1, 775, 776, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4857, -1, -1, -1, 4861, -1, -1, -1, -1, -1, -1, -1, -1, -1, 804, 805, 4873, 807, 808, 809, 810, 811, 812, -1, -1, -1, -1, -1, 818, 819, 820, -1, 822, 823, -1, -1, -1, -1, -1, 5264, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 871, -1, -1, 874, 875, -1, 877, -1, -1, -1, -1, -1, -1, -1, 885, 886, -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, 912, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4992, -1, -1, -1, 4996, -1, -1, -1, -1, -1, 5002, -1, -1, -1, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, 979, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 211, 212, -1, -1, -1, -1, -1, -1, 219, 1033, -1, -1, -1, -1, -1, -1, -1, -1, 1042, -1, -1, -1, -1, 1047, 235, 236, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 1063, 1064, 32, 253, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, 84, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, 5200, -1, -1, -1, -1, -1, -1, -1, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, -1, -1, -1, -1, -1, -1, -1, 1161, -1, 1163, -1, -1, -1, -1, -1, -1, 137, 1171, 1172, -1, -1, 142, 1176, 1177, 1178, 1179, -1, 1181, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5264, -1, -1, -1, -1, -1, 1203, 1204, -1, -1, 1207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1226, -1, -1, -1, 1230, -1, -1, -1, -1, 4, -1, 6, 7, 1239, 1240, -1, 1242, 1243, -1, 1245, 1246, 1247, 1248, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -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, 253, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, 105, 106, -1, -1, -1, 308, 309, 310, 311, -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, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1406, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, 1424, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, 1456, -1, -1, 1459, 229, -1, 231, 1463, 1464, 234, -1, 1467, -1, 1469, 1470, -1, -1, 242, 1474, 244, 1476, -1, -1, -1, -1, -1, -1, 1483, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1580, -1, -1, -1, 1584, -1, -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, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, 1671, -1, 36, -1, 1675, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, 1696, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1719, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1764, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, 1785, 149, 150, -1, 1789, -1, 1791, -1, 1793, -1, 1795, -1, -1, -1, -1, 163, 1801, -1, -1, -1, -1, 1806, 1807, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, 1833, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, 1846, -1, 1848, -1, -1, 214, -1, 1853, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, 1870, 234, -1, -1, -1, 1875, -1, -1, 1878, 242, 1880, 244, -1, 1883, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1893, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1960, -1, -1, -1, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1999, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2015, -1, -1, -1, -1, -1, 2021, -1, 2023, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2039, -1, -1, -1, 2043, 2044, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2054, -1, 2056, -1, 2058, -1, 2060, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2075, -1, -1, -1, -1, 2080, -1, -1, 2083, -1, 2085, 2086, -1, -1, -1, 2090, -1, 2092, -1, -1, -1, -1, 2097, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2111, 2112, 2113, 2114, 2115, -1, 2117, 2118, 2119, 2120, 2121, 2122, -1, -1, -1, -1, -1, -1, 2129, -1, -1, -1, -1, -1, -1, -1, -1, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, 2174, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, 2193, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, 51, 2210, 53, 54, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, -1, -1, 143, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, 168, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, 341, 342, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, 42, 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, 341, 342, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, 42, 43, -1, -1, -1, -1, 48, 49, 50, 51, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, 20, 21, -1, 156, 24, 25, 26, 27, 28, 29, 163, -1, 32, -1, 34, 35, -1, 170, 38, 39, -1, 41, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, 84, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 232, 233, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, 137, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3225, -1, 3227, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3237, 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247, 3248, -1, -1, 3251, 3252, -1, -1, -1, -1, -1, 3258, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3277, 3278, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 3298, 24, 25, 3301, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 3312, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3344, 3345, 3346, 3347, 3348, 3349, 3350, 3351, 3352, 3353, 3354, 3355, -1, 3357, 3358, 84, -1, -1, -1, 3363, 3364, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3383, 3384, -1, -1, -1, -1, -1, -1, 3391, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, 3420, 3421, 3422, 3423, 3424, 3425, 3426, 3427, 3428, 3429, 3430, 3431, 3432, 3433, -1, 3435, 3436, 3437, -1, 164, 3440, 3441, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3458, -1, 3460, -1, -1, -1, -1, 3465, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 211, 212, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, 3500, -1, -1, -1, 3504, -1, -1, -1, -1, 3509, 235, 236, 3512, -1, -1, -1, 3516, -1, -1, -1, 3520, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3600, 3601, 3602, 3603, 3604, 3605, 3606, 3607, 3608, 3609, 3610, 3611, 3612, 3613, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 3636, -1, 24, 25, 3640, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 3657, -1, -1, -1, 47, -1, -1, -1, 3665, -1, -1, -1, -1, -1, -1, 3672, -1, -1, 3675, -1, -1, 3678, -1, -1, -1, -1, -1, -1, 3685, 3686, 3687, 3688, 3689, -1, 3691, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3709, 3710, -1, -1, -1, 3714, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3735, -1, -1, 3738, 3739, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, 3761, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, 3781, 3782, -1, -1, -1, -1, -1, 3788, -1, -1, 3791, 3792, 3793, -1, 3795, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3805, 3806, 3807, 3808, 3809, 3810, 3811, 3812, 3813, 3814, 3815, 3816, -1, 3818, -1, 3820, -1, -1, -1, -1, 211, 212, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, 3837, 3838, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, 3859, -1, -1, 3862, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, 3873, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 3902, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, 3927, -1, -1, 3930, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3960, -1, -1, 3963, -1, -1, -1, 3967, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 3993, 34, 35, -1, 3997, 38, 39, -1, 41, 4002, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4014, -1, -1, -1, -1, 4019, 4020, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4041, -1, 4043, 84, 4045, -1, -1, 4048, -1, -1, -1, 4052, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4068, -1, -1, -1, -1, 4073, -1, -1, -1, -1, -1, 4079, -1, -1, -1, -1, 4084, -1, 4086, -1, -1, -1, -1, -1, 4092, -1, -1, 4095, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, 4106, -1, -1, -1, -1, 151, -1, -1, -1, 4115, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4158, 4159, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4177, -1, 4179, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4194, -1, 4196, -1, -1, -1, -1, -1, -1, -1, -1, 4205, -1, -1, -1, -1, 4210, -1, -1, -1, 4214, -1, -1, -1, -1, -1, -1, 4221, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, -1, 297, -1, -1, 4260, 4261, -1, 4263, -1, -1, -1, -1, -1, -1, -1, 4271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4283, -1, -1, 4286, -1, 4288, 4289, 4290, -1, 4292, 4293, -1, -1, -1, -1, -1, -1, 4300, -1, -1, -1, -1, -1, 4306, 4307, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4325, -1, -1, -1, -1, 4330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4341, -1, -1, 4344, 4345, -1, -1, -1, -1, -1, -1, -1, 4353, 4354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4371, -1, -1, -1, -1, 4376, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4408, -1, -1, 4411, 4412, 4413, 4414, 4415, 4416, 4417, 4418, 4419, 4420, 4421, -1, 4423, -1, -1, -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, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, 23, -1, 25, -1, 27, -1, -1, -1, -1, 4479, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 4522, -1, -1, -1, -1, 4527, -1, -1, -1, -1, 4532, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, 4599, -1, -1, 155, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, 4625, 179, 180, 4628, 182, 183, -1, 4632, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, 4672, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, 4690, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, -1, 4748, -1, 4750, -1, -1, -1, -1, -1, -1, 4757, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 494, -1, -1, -1, -1, 4781, -1, -1, -1, -1, 4786, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4800, -1, 4802, 4803, -1, -1, -1, 4807, -1, -1, -1, 4, 4812, 6, -1, -1, 4816, -1, 4818, 4819, -1, 4821, -1, -1, -1, -1, 4826, -1, 4828, 4829, 4830, -1, -1, -1, 4834, 4835, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, -1, 4849, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4863, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4883, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4902, -1, 4904, -1, -1, 4907, -1, 4909, 4910, -1, 105, 106, -1, -1, 4916, -1, -1, 4919, -1, -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, -1, -1, -1, -1, -1, -1, 146, 672, 673, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, 4966, -1, 4968, -1, 4970, 4971, -1, 4973, -1, -1, -1, -1, -1, 4979, -1, -1, -1, -1, -1, 4985, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, 425, 5014, -1, -1, 5017, -1, -1, -1, -1, 434, -1, -1, 218, -1, 220, 5028, -1, -1, -1, -1, -1, 5034, -1, 229, -1, 231, 5039, -1, 5041, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5062, -1, -1, -1, -1, -1, -1, -1, -1, -1, 265, 266, -1, -1, 269, -1, -1, 797, 798, 493, 494, 5083, -1, -1, -1, 499, 806, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5107, 5108, -1, 5110, 5111, -1, -1, -1, 527, -1, 5117, 836, 837, -1, 839, 840, -1, 5124, -1, 5126, 5127, -1, 5129, -1, -1, -1, -1, -1, -1, -1, 5137, -1, -1, 5140, -1, -1, 555, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 584, -1, -1, 587, -1, -1, -1, 5179, -1, 5181, 5182, 5183, 5184, -1, -1, 5187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5201, -1, -1, 5204, 5205, 5206, 5207, 5208, 5209, 5210, 5211, 5212, 5213, 5214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5235, -1, -1, -1, -1, -1, 5241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, -1, -1, -1, 5268, -1, 5270, 5271, 5272, -1, 5274, 5275, 5276, -1, 5278, 5279, -1, 5281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5295, -1, 709, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 5316, -1, 5318, 5319, -1, 5321, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, 5333, -1, 5335, 5336, 749, 5338, -1, -1, -1, -1, 755, 756, -1, -1, -1, -1, -1, -1, -1, 764, 765, -1, -1, 5356, -1, -1, 57, 5360, -1, 60, 5363, -1, -1, 64, -1, 780, -1, -1, -1, -1, -1, -1, 787, -1, -1, 5378, 791, -1, 793, -1, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, -1, -1, 5399, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, 827, -1, -1, -1, -1, 832, -1, -1, -1, 836, 837, -1, -1, 840, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5439, 138, 139, -1, 5443, -1, -1, -1, -1, 146, -1, -1, 149, 150, 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, 179, 180, -1, 182, -1, 898, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, -1, -1, -1, -1, -1, 932, -1, 220, 1241, -1, -1, 938, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, 1291, -1, 1293, 1294, -1, -1, -1, 1298, -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, -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, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, 1447, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, 1458, -1, -1, -1, 1462, -1, -1, 1465, 1466, -1, 1468, -1, -1, -1, -1, 1473, -1, 1475, -1, -1, -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1501, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1523, -1, -1, -1, -1, 1528, -1, -1, 1531, -1, -1, -1, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, 1241, -1, 142, -1, -1, -1, -1, -1, -1, 1250, -1, 151, 1253, 1254, 1561, -1, -1, 1564, -1, -1, -1, 1262, 1263, 1570, 164, -1, -1, -1, -1, -1, -1, -1, 1579, -1, -1, 1276, -1, -1, -1, -1, -1, 1282, -1, -1, -1, -1, 1593, 1594, -1, -1, 1291, -1, -1, 1294, -1, -1, -1, 1298, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, 211, 212, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, 1328, -1, -1, -1, 1638, -1, 1640, -1, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, 1468, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1479, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, 40, 41, -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, 84, -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, -1, 137, -1, -1, -1, -1, 1609, -1, -1, 1612, -1, 1614, 1615, 1616, -1, 151, -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, 254, -1, -1, 493, 494, -1, -1, -1, -1, 499, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 1755, -1, 290, -1, 2065, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, 2077, -1, 2079, -1, 2081, 2082, -1, 2084, -1, -1, -1, -1, 2089, -1, 2091, 555, 2093, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 2107, 34, 35, 2110, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, 2123, 587, 2125, -1, -1, 2128, -1, 2130, -1, -1, 2133, -1, -1, 2136, -1, 1832, -1, -1, -1, -1, 1837, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, 2162, -1, 2164, -1, -1, -1, -1, 1863, -1, -1, -1, -1, 637, 1869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 137, -1, -1, 1908, -1, 1910, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, 1979, 749, -1, -1, -1, -1, -1, 755, 756, -1, -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, 268, 806, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, 2064, 297, -1, 836, 837, -1, -1, 840, -1, -1, -1, -1, -1, -1, -1, 2079, -1, -1, -1, -1, 2084, -1, -1, 4, -1, 6, 7, -1, -1, 2093, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, 2107, -1, -1, -1, 28, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, 2123, -1, 2125, 2126, -1, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, 2158, 2159, 2160, 2161, 2162, 932, -1, -1, -1, -1, 85, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, -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, 141, -1, -1, -1, -1, 146, -1, -1, 149, 150, -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, 179, 180, -1, 182, 1035, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, 1074, 1075, -1, -1, -1, 1079, 1080, 229, 1082, 231, -1, -1, 234, -1, -1, -1, 238, -1, -1, -1, 242, 1095, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 1241, -1, -1, -1, -1, -1, -1, -1, 127, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, 138, 139, 1262, 1263, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, 4, -1, 6, 7, -1, -1, 163, -1, -1, -1, -1, -1, 1291, 170, -1, 1294, -1, -1, -1, 1298, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, 1328, -1, -1, -1, 57, -1, -1, 60, 214, -1, -1, 64, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, 293, 294, -1, -1, -1, 298, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, 1462, 341, 342, 190, 191, 192, 1468, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, 1510, -1, -1, 238, -1, -1, -1, 242, 1518, 244, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1553, 1554, 1555, 1556, -1, -1, -1, -1, 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, -1, -1, 1601, -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, -1, -1, -1, -1, 20, 21, 1638, 23, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -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, 1688, 1689, 1690, 1691, 1692, 1693, 1694, -1, -1, -1, 1698, 1699, 84, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, 1718, -1, 1720, -1, -1, -1, 3261, -1, -1, -1, 3265, -1, -1, -1, -1, -1, -1, 3272, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, 3297, -1, 3299, 3300, -1, 3302, -1, 151, 3305, 3306, 3307, 3308, 3309, 3310, 3311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3333, 3334, 3335, 3336, -1, -1, -1, -1, -1, -1, 3343, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3360, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3382, -1, -1, 3385, -1, -1, 3388, 3389, 3390, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, 1869, -1, -1, -1, -1, -1, 3412, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, 1908, 293, 1910, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3515, 1979, -1, -1, -1, -1, -1, 3216, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, 2079, -1, 81, -1, -1, 2084, -1, -1, -1, -1, -1, -1, -1, -1, 2093, -1, 3632, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 2107, -1, -1, -1, -1, -1, -1, -1, -1, 2116, -1, -1, -1, -1, -1, -1, 2123, -1, 2125, 2126, -1, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, 2158, 2159, 2160, 2161, 2162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, 4, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, 3508, -1, -1, 3511, -1, 3819, 3514, 3515, -1, -1, -1, 3825, -1, -1, 3828, -1, -1, -1, -1, -1, -1, 3835, -1, -1, 301, -1, 57, 3535, -1, 60, -1, -1, -1, 64, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, 3858, -1, 3860, 3861, -1, 3863, -1, -1, 3866, 3867, 3868, 3869, 3870, 3871, 3872, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, 3578, -1, -1, -1, 105, 106, -1, -1, -1, -1, 3894, 3895, 3896, 3897, 3898, -1, 3594, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, -1, -1, 3652, -1, 3654, -1, 179, 180, 3658, 182, -1, -1, 3968, -1, -1, -1, -1, 190, 191, -1, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, 3682, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, 242, -1, 244, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, 266, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, 88, -1, -1, -1, -1, -1, -1, 4109, 4110, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, 3819, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, 143, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, 3905, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3968, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, 3989, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, -1, 4000, 293, 294, 4003, 4004, 4005, 298, 4007, 4008, 4009, 4010, 4011, -1, -1, -1, -1, -1, 4323, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 341, 342, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4395, -1, -1, -1, -1, -1, -1, 84, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, 4109, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, 4426, -1, 4428, -1, -1, -1, -1, -1, -1, -1, 4436, -1, 4438, 4439, 4440, 4441, 4442, 4443, 4444, 4445, 128, -1, -1, -1, 132, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, 84, 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, -1, -1, -1, 4195, -1, 4197, 4198, -1, -1, -1, -1, -1, -1, -1, -1, 4207, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, 4219, -1, -1, -1, 211, 212, 4225, -1, 4227, -1, 151, -1, 219, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, -1, 4244, -1, -1, 235, 236, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, 4268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 299, 300, -1, -1, -1, -1, -1, 306, 307, 308, 309, 310, 311, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4718, 4719, 4720, -1, 4722, 4723, 4724, 4725, 4726, 4727, 4728, -1, -1, -1, -1, -1, -1, 4429, -1, 4737, -1, -1, 4434, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, 3251, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, 4805, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, 4523, 4524, -1, -1, -1, 4528, 4529, -1, -1, -1, -1, -1, 4535, -1, -1, 4538, 4539, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, 3357, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4614, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 4669, 4670, 234, 4978, -1, -1, 238, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 5021, 5022, -1, 5024, -1, -1, 5027, -1, -1, -1, 288, -1, -1, -1, 4, -1, 6, -1, -1, -1, 298, -1, 4737, -1, 3508, -1, -1, 3511, -1, -1, 3514, 3515, -1, -1, 312, 313, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 3535, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, 341, 342, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -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, 84, -1, -1, -1, -1, -1, -1, -1, 3594, 3595, -1, 5134, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, 137, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, 3652, 151, 3654, -1, -1, -1, 3658, 5196, -1, -1, -1, -1, -1, 3665, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, 4912, 3682, -1, 190, 191, 5223, 4918, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, 4929, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, 4950, -1, -1, 4953, 229, 4955, 231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, -1, -1, -1, -1, 4975, -1, 4977, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, 5300, 5301, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 5015, 283, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3818, 3819, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5371, -1, -1, 4, -1, 6, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, 5089, 21, 22, -1, 5093, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 5105, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, 5118, -1, 5120, 57, 5122, -1, 60, -1, 57, -1, 64, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, -1, 105, 106, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5196, -1, -1, 3968, -1, -1, 138, 139, -1, -1, 137, 138, 139, -1, 146, -1, -1, 149, 150, 146, -1, -1, 149, 150, 151, -1, -1, -1, -1, 3994, 4, 3996, 6, -1, -1, 4000, 163, 4002, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, 179, 180, -1, 182, -1, 179, 180, -1, 182, -1, -1, 190, 191, -1, -1, -1, 190, 191, 192, -1, -1, 200, -1, 202, -1, -1, 200, -1, 202, 203, -1, 4043, -1, -1, -1, -1, 57, -1, -1, 60, 214, 220, -1, 64, 218, -1, 220, -1, -1, -1, 229, -1, 231, -1, -1, 229, -1, 231, 5301, -1, 234, -1, -1, 242, 4076, 244, 245, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 266, 262, 263, 264, -1, 266, 267, -1, 269, -1, 4109, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, 5370, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, 5409, 341, 342, 190, 191, -1, 555, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, 4195, -1, 4197, 4198, -1, -1, -1, -1, -1, -1, -1, -1, 4207, -1, -1, 4210, 220, -1, -1, -1, -1, 587, -1, -1, 4219, 229, -1, 231, 6, -1, 4225, -1, 4227, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, 4238, -1, -1, 4241, 4242, -1, 4244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4268, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 672, 673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 4326, 4327, 4328, -1, 4330, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, 138, 139, 38, 39, -1, 41, -1, -1, 146, -1, -1, 149, 150, -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, 179, 180, -1, 182, -1, -1, -1, 84, -1, -1, -1, 190, 191, 4409, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 791, -1, 793, 4423, -1, -1, -1, 798, -1, 4429, -1, -1, -1, -1, 4434, 806, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, 242, -1, 244, -1, -1, -1, 836, 837, -1, -1, 840, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -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, 4523, 4524, -1, -1, -1, 4528, 4529, -1, -1, -1, -1, -1, 4535, -1, -1, 4538, 4539, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, -1, -1, -1, -1, -1, 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, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, 4614, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4632, -1, -1, -1, -1, 1008, -1, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, 4654, -1, -1, 1028, -1, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, 4669, 4670, -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, -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, -1, 4737, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, 3, 4, 4804, 6, 4806, 8, 9, 10, -1, 4811, -1, -1, 4814, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, 57, -1, 64, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, 1241, -1, -1, -1, -1, -1, -1, -1, -1, 1250, -1, -1, 1253, 1254, -1, 86, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, 4912, -1, -1, -1, -1, -1, 4918, 4919, 1291, -1, -1, 1294, -1, -1, -1, 1298, -1, 4929, -1, -1, 138, 139, -1, -1, -1, 138, 139, -1, 146, -1, -1, 149, 150, 146, -1, -1, 149, 150, 4950, -1, -1, 4953, 155, 4955, 1327, 1328, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, 179, 180, 4975, 182, -1, 179, 180, -1, 182, -1, -1, 190, 191, -1, -1, -1, 190, 191, 192, -1, -1, 200, -1, 202, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, 220, 5015, -1, 218, -1, 220, -1, -1, -1, 229, -1, 231, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, 242, -1, 244, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, 5089, -1, 1462, -1, 5093, -1, -1, -1, 1468, -1, -1, 301, -1, -1, -1, -1, 5105, -1, -1, 1479, -1, -1, 312, 313, -1, -1, -1, -1, -1, 5118, -1, 5120, -1, 5122, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 341, 342, 39, 40, 41, -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, 84, -1, -1, 1561, -1, -1, -1, -1, -1, 5196, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1609, -1, 137, 1612, -1, 1614, 1615, 1616, -1, -1, -1, -1, -1, -1, -1, -1, 151, -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, 5301, -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, 493, 494, -1, -1, 254, -1, 499, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5370, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, 5409, -1, -1, -1, -1, -1, 555, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, 587, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1854, 1855, 84, -1, -1, -1, -1, -1, -1, 1863, 1864, -1, -1, -1, -1, 1869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, 1908, 137, 1910, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, -1, -1, -1, -1, -1, 1979, 749, -1, -1, -1, -1, -1, 755, 756, -1, -1, -1, 219, -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, 253, -1, -1, -1, 798, -1, -1, -1, -1, -1, -1, -1, 806, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, 836, 837, -1, 298, 840, -1, -1, -1, -1, -1, -1, -1, 2079, 308, 309, 310, 311, 2084, -1, -1, 4, -1, 6, 7, -1, -1, 2093, -1, -1, 865, 866, 867, 868, 869, 870, -1, 872, 873, -1, -1, 2107, -1, -1, -1, -1, 881, 882, 883, -1, -1, -1, -1, -1, -1, -1, -1, 2123, -1, 2125, 2126, -1, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, 924, -1, -1, 2158, 2159, 2160, 2161, 2162, 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, 105, 106, -1, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 1008, 157, 1010, 159, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1030, 179, 180, -1, 182, 1035, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 220, -1, 1074, 1075, -1, -1, -1, 1079, 1080, 229, 1082, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, 1095, 244, 245, -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, 30, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, 1241, -1, -1, -1, -1, -1, -1, -1, 127, 1250, -1, -1, 1253, 1254, -1, -1, -1, -1, -1, 138, 139, 1262, 1263, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, 1291, 170, -1, 1294, -1, -1, -1, 1298, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, 1328, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, 37, -1, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 1462, 341, 342, 64, -1, -1, 1468, -1, -1, -1, -1, -1, 73, -1, -1, -1, -1, 1479, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 105, 106, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, 1518, -1, 1520, 1521, -1, 1523, -1, 1525, 1526, 1527, 1528, 1529, 1530, 1531, -1, -1, -1, -1, 135, 136, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, 1553, 1554, 1555, 1556, -1, -1, -1, 84, 1561, -1, -1, -1, -1, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1579, 179, 180, 181, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, 1609, -1, -1, 1612, 137, 1614, 1615, 1616, -1, 142, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, 1638, 238, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 1682, 1683, 1684, 1685, 1686, 1687, -1, 1689, 1690, 1691, 1692, 1693, 1694, 219, -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, 253, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, 105, 106, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, 1863, -1, 190, 191, -1, -1, 1869, -1, -1, -1, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, -1, 1908, -1, 1910, -1, -1, 238, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, 266, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1979, -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, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, 30, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, 2079, 80, -1, -1, 83, 2084, 85, -1, -1, -1, -1, -1, -1, -1, 2093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 2107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, 2123, -1, 2125, 2126, 127, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, 2158, 2159, 2160, 2161, 2162, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, 3508, -1, 3510, 3511, -1, -1, 3514, 3515, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, 3535, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, 341, 342, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, 31, -1, -1, -1, 3594, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, 3624, -1, 3626, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, 87, -1, -1, -1, -1, -1, 3652, -1, 3654, -1, -1, -1, 3658, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, 3682, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3819, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, 3, 4, 298, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 312, 313, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, 3923, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, 3968, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, 3994, -1, 3996, -1, 146, -1, 4000, 149, 150, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, 4076, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, 4109, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, -1, -1, 20, 21, -1, 23, 24, 25, 26, 27, 28, 29, 312, 313, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, 57, 47, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 341, 342, 4195, -1, 4197, 4198, 4199, -1, 4201, -1, -1, -1, -1, -1, 4207, -1, -1, -1, -1, 4212, -1, -1, -1, -1, -1, 84, 4219, -1, -1, -1, -1, -1, 4225, -1, 4227, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, -1, 4244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, 4268, 146, -1, 137, 149, 150, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 219, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, -1, 4370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, 4429, -1, 297, 298, -1, 4434, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, 30, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, 4523, 4524, 4525, -1, 70, 4528, 4529, -1, -1, 75, 76, -1, 4535, -1, 80, 4538, 4539, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, 4614, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, 4669, 4670, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, 4737, -1, 3508, -1, -1, 3511, -1, -1, 3514, 3515, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3535, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, 4804, -1, 4806, -1, -1, -1, -1, 4811, -1, -1, 4814, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, 3594, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 3652, -1, 3654, -1, -1, 70, 3658, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, 4912, 3682, -1, -1, -1, -1, 4918, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, 4929, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 155, -1, 4975, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, 5015, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 3819, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, 5089, 272, 273, 274, 5093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5105, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, 5118, -1, 5120, -1, 5122, -1, -1, -1, -1, -1, 20, 21, 312, 313, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, 5196, -1, -1, 3968, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, -1, 4000, -1, -1, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, 4, -1, 6, 7, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5301, -1, -1, -1, -1, -1, 4076, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 493, 494, -1, -1, -1, -1, 499, -1, 253, -1, -1, -1, -1, 105, 106, -1, -1, 5370, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 138, 139, 293, -1, -1, -1, 297, 298, 146, -1, 5409, 149, 150, -1, -1, -1, 555, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, 4195, -1, 4197, 4198, -1, -1, -1, -1, -1, -1, -1, -1, 4207, -1, 179, 180, -1, 182, -1, -1, -1, 587, -1, -1, 4219, 190, 191, 192, -1, -1, 4225, -1, 4227, -1, -1, 200, -1, 202, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, -1, 4244, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, 4268, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, 672, 673, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 741, -1, 4, -1, 6, 7, -1, -1, 749, -1, -1, -1, -1, -1, 755, 756, -1, -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, 57, -1, 798, 60, 4429, -1, -1, 64, -1, 4434, 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, -1, 105, 106, -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, 138, 139, -1, -1, 881, 882, 883, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 4523, 4524, -1, -1, -1, 4528, 4529, -1, -1, -1, -1, -1, 4535, -1, -1, 4538, 4539, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, 924, -1, -1, -1, -1, 190, 191, 192, 932, -1, -1, -1, -1, -1, 938, 200, -1, 202, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, 220, 21, 22, -1, -1, 25, -1, 27, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, 39, 40, 41, 242, 43, 244, -1, 4614, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 266, -1, -1, 1008, 70, 1010, -1, 1012, 1013, -1, 1015, -1, 1017, 1018, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, 1030, -1, -1, -1, -1, 1035, -1, -1, -1, -1, 4669, 4670, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, 116, -1, 1057, 1058, 1059, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, 1074, 1075, -1, 138, 139, 1079, 1080, -1, 1082, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 1095, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, 1106, -1, 4737, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, 193, 194, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, -1, 234, -1, 4804, -1, 4806, -1, -1, -1, 242, 4811, 244, -1, 4814, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, 1250, 312, 313, 1253, 1254, -1, -1, -1, -1, -1, -1, -1, 1262, 1263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, 4912, -1, -1, -1, -1, -1, 4918, -1, 1291, -1, -1, 1294, -1, -1, -1, 1298, -1, 4929, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, 1328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 4975, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, 40, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, 5015, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -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, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, 5089, -1, 1462, -1, 5093, -1, -1, -1, 1468, -1, -1, 151, -1, -1, -1, -1, 5105, -1, -1, 1479, -1, -1, -1, -1, -1, -1, -1, 137, -1, 5118, -1, 5120, 142, 5122, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -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, -1, -1, -1, 1561, -1, -1, -1, -1, -1, 5196, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1579, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 253, 284, 285, 286, 287, -1, 1609, 290, -1, 1612, 293, 1614, 1615, 1616, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 1638, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5301, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5409, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1863, -1, -1, -1, -1, -1, 1869, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1908, -1, 1910, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1924, -1, 1926, 1927, 1928, 1929, 1930, -1, 1932, 1933, 1934, 1935, 1936, 1937, -1, -1, 1940, -1, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, -1, 1961, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1979, -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, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, 30, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, 2079, 80, -1, -1, 83, 2084, 85, -1, -1, -1, -1, -1, -1, -1, 2093, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 2107, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, 2123, -1, 2125, 2126, 127, 2128, -1, 2130, 2131, 2132, 2133, 2134, 2135, 2136, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, 2158, 2159, 2160, 2161, 2162, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, 341, 342, -1, 31, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, 294, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 1, -1, 3, 4, -1, 6, 7, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 19, -1, 21, 22, -1, -1, 25, -1, 27, 341, 342, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, -1, -1, -1, -1, 48, 49, 50, -1, -1, 53, -1, -1, -1, 57, 58, -1, 60, 61, 62, 63, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 75, 76, -1, -1, -1, 80, -1, -1, 83, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 108, -1, -1, -1, -1, -1, 114, 115, 116, 117, 118, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, 177, 178, 179, 180, -1, 182, -1, 184, 185, 186, 187, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, 232, 233, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, 245, 246, 247, -1, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, 293, 294, -1, 17, 18, 298, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, 312, 313, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, 341, 342, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, 20, 21, -1, 113, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, 127, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, 137, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, 151, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 4, 288, 6, -1, 8, 9, 10, -1, -1, -1, -1, 298, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, 312, 313, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, 341, 342, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, -1, -1, 297, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, 3508, -1, -1, 3511, -1, -1, 3514, 3515, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, 3, 4, -1, 6, 3535, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, 3594, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3652, -1, 3654, 127, -1, -1, 3658, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, 3682, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, 3819, -1, -1, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, 341, 342, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, 20, 21, -1, 70, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, 83, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, 3968, -1, 84, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 3994, -1, 3996, -1, -1, 160, 4000, 162, 163, 4003, 4004, 4005, -1, 4007, 4008, 4009, 4010, 4011, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, 137, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 151, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, 4076, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, 4109, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, 341, 342, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4195, -1, 4197, 4198, -1, -1, -1, -1, -1, -1, -1, -1, 4207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4219, -1, -1, -1, -1, -1, 4225, -1, 4227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4238, -1, -1, 4241, 4242, -1, 4244, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, 4268, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4326, 4327, 4328, -1, -1, 4331, 4332, -1, 4334, 4335, 4336, 4337, 4338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, 4429, -1, -1, -1, -1, 4434, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 4523, 4524, -1, -1, -1, 4528, 4529, -1, -1, -1, 288, -1, 4535, -1, -1, 4538, 4539, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4614, -1, -1, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, 4669, 4670, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, 4737, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, 4804, -1, 4806, -1, 190, 191, 192, 4811, -1, -1, 4814, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, 4912, -1, -1, -1, 298, -1, 4918, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4929, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4950, -1, -1, 4953, -1, 4955, -1, -1, -1, 341, 342, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, 4975, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, 5015, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, 5089, -1, -1, -1, 5093, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, 5105, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, 5118, -1, 5120, 160, 5122, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, 5196, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, 3, 4, 298, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, 312, 313, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 37, -1, 39, 40, 41, -1, 43, 44, -1, 46, 5301, 341, 342, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, 5370, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 5409, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 312, 313, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 312, 313, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, -1, 25, -1, 27, -1, -1, 30, -1, -1, -1, -1, -1, 36, 312, 313, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 312, 313, 39, 40, 41, -1, 43, 44, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, 162, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, 183, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, 201, 202, 203, -1, -1, 206, 207, 208, 209, 210, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, 24, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 155, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, 84, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, 128, 218, -1, 220, -1, -1, -1, -1, -1, 137, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, 151, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 83, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 105, 106, 293, -1, -1, -1, 297, -1, -1, -1, -1, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, 193, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, 232, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, 113, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, 155, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, 169, -1, -1, -1, 84, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, 137, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, 151, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, 312, 313, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, -1, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 105, 106, 293, -1, -1, -1, 297, -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, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, 288, -1, -1, -1, 17, 18, -1, -1, 21, 22, 298, -1, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 39, 40, 41, 42, 43, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 57, 34, 35, 60, -1, 38, 39, 64, 41, 341, 342, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, 84, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, 284, 285, -1, -1, 70, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 312, 313, 290, 291, 292, 293, -1, -1, -1, 297, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, 284, 285, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, 284, 285, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, 284, 285, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, 284, 285, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, 42, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, 284, 285, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, 341, 342, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, 137, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, 151, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, 3, 4, -1, 6, -1, 8, 9, 10, -1, -1, -1, -1, -1, -1, 17, 18, -1, -1, 21, 22, -1, 24, 25, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, 38, 39, 40, 41, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, 341, 342, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, 105, 106, -1, 297, -1, -1, -1, -1, -1, -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, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, 23, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, 157, -1, 159, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, 28, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, 7, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, 23, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 38, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, 23, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, 3, 4, -1, 6, -1, 8, 9, 10, 229, -1, 231, -1, -1, 234, 17, 18, -1, -1, 21, 22, -1, 242, 25, 244, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 40, 41, -1, 43, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, 57, -1, -1, 60, -1, -1, -1, 64, -1, -1, 20, 21, -1, 70, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, 312, 313, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, 137, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, 151, -1, 200, -1, 202, 203, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, 218, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, 269, -1, -1, 272, 273, 274, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 312, 313, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, 341, 342, 1, 297, 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, 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, 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, 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, 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, -1, 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, 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, -1, 98, 99, 100, 101, -1, 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, 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, -1, 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, -1, 98, 99, 100, 101, -1, 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, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 84, -1, 39, -1, 41, -1, -1, 137, -1, -1, 47, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 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, 84, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 253, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 219, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, 253, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 84, -1, 39, -1, 41, -1, -1, 137, -1, -1, 47, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 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, 84, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 253, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 219, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, 253, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 84, -1, 39, -1, 41, -1, -1, 137, -1, -1, 47, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, 128, -1, -1, 84, -1, -1, -1, -1, -1, 137, -1, 20, 21, -1, 142, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, -1, 219, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 142, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, 253, -1, -1, -1, 164, -1, -1, -1, -1, -1, -1, -1, 219, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 298, 253, -1, -1, 137, -1, -1, -1, -1, 142, 308, 309, 310, 311, 219, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, 253, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 219, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, -1, -1, -1, -1, 308, 309, 310, 311, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 253, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, -1, 298, -1, -1, -1, -1, -1, 84, -1, -1, -1, 308, 309, 310, 311, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, 137, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, 30, -1, 32, 84, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 137, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, 151, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 137, -1, 290, 291, 292, 293, -1, -1, -1, 297, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, 137, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 291, 292, 293, -1, 84, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -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, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 84, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, 137, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, 84, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 137, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, 84, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 137, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, 151, -1, -1, -1, -1, 128, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, 33, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, 33, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, 40, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, 31, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, 30, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, 31, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, 31, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 84, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 137, 84, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, 151, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, 137, 41, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 137, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, 30, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 30, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, 31, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, 84, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, 137, 84, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, 151, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, 137, 41, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, 137, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, 23, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, 23, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, 151, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 38, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, 20, 21, -1, 23, 24, 25, -1, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 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, -1, -1, 268, 137, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 151, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, 20, 21, 293, -1, 24, 25, 297, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, 84, 39, -1, 41, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, -1, 27, 28, 29, -1, -1, 32, -1, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, -1, -1, -1, 20, 21, -1, -1, 24, 25, 84, 27, 28, 29, -1, -1, 32, 137, 34, 35, -1, -1, -1, 39, -1, 41, -1, -1, -1, -1, -1, 151, -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, -1, -1, -1, 137, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, 283, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, 268, 297, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, -1, 290, -1, -1, 293, -1, -1, -1, 297, 268, -1, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, -1, 284, 285, 286, 287, -1, 1, 290, -1, 4, 293, 6, 7, -1, 297, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, 153, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, 165, -1, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, 195, 196, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, 153, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, 165, -1, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, 195, 196, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, 165, -1, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 96, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, 165, -1, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, 264, 1, 266, 267, 4, -1, 6, 7, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 45, 46, 47, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, 59, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, -1, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, 152, -1, 154, -1, 156, -1, -1, -1, -1, 161, 162, -1, 164, -1, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, 213, -1, 215, -1, 217, -1, -1, 220, -1, -1, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, 0, 1, -1, 252, -1, -1, 6, 7, -1, -1, 259, 260, 261, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, 153, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, 0, 1, -1, 252, -1, -1, 6, 7, -1, -1, 259, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, -1, -1, -1, 64, 65, 66, -1, -1, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, 140, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, 153, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, 166, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, 204, 205, 1, -1, -1, -1, -1, 6, 7, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, -1, -1, -1, -1, 31, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, 248, -1, -1, -1, 252, -1, -1, -1, 51, -1, -1, 259, -1, -1, 57, -1, -1, 60, 266, -1, -1, 64, -1, 66, -1, -1, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, 141, -1, -1, -1, 145, 146, 147, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, 173, 174, 175, 176, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, 1, 190, 191, -1, -1, 6, 7, -1, 197, 198, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, 31, 220, 221, 222, -1, -1, -1, -1, -1, -1, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, 51, 240, 241, 242, -1, 244, 57, -1, -1, 60, -1, -1, -1, 64, -1, 66, -1, -1, 69, 70, -1, -1, -1, -1, -1, -1, 77, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 91, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, 141, -1, -1, -1, 145, 146, 147, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, -1, -1, 173, 174, 175, 176, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, -1, -1, -1, 4, -1, 6, 7, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, -1, -1, -1, -1, -1, -1, 229, 230, 231, -1, -1, 31, -1, -1, -1, 238, -1, 240, 241, 242, -1, 244, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, 61, -1, 266, 64, 65, 66, -1, 68, 69, 70, -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, 138, 139, -1, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, -1, 4, -1, 6, 7, -1, 229, 230, 231, -1, -1, -1, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, 264, -1, 266, 267, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, 66, -1, 68, 69, 70, -1, -1, 73, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 99, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, 138, 139, -1, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, 165, -1, -1, 168, -1, -1, -1, 172, -1, -1, -1, -1, -1, -1, 179, 180, 181, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, -1, -1, -1, -1, -1, -1, 229, 230, 231, 4, -1, 6, 7, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -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, 229, 230, 231, 4, -1, 6, 7, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, 46, -1, 48, 49, 50, 51, -1, 53, 54, -1, -1, 57, -1, -1, 60, 61, -1, -1, 64, 65, -1, -1, 68, -1, 70, -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, -1, -1, -1, 112, -1, 114, -1, -1, -1, -1, -1, 120, -1, 122, 123, 124, 125, -1, 127, -1, -1, -1, -1, -1, 133, 134, -1, -1, -1, 138, 139, -1, -1, -1, -1, 144, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 172, -1, -1, 175, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, 186, 6, 7, 189, 190, 191, -1, -1, -1, -1, -1, -1, 198, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, -1, -1, -1, -1, -1, -1, -1, 220, -1, -1, -1, -1, -1, -1, -1, -1, 229, 230, 231, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, 242, -1, 244, 64, 65, 66, -1, -1, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, 262, 263, 264, -1, 266, 267, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, 6, 7, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, -1, -1, -1, -1, -1, -1, 229, 230, 231, -1, -1, 31, -1, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, 54, -1, -1, 57, -1, -1, 60, -1, -1, 266, 64, 65, 66, -1, -1, 69, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, -1, 6, 7, -1, -1, -1, -1, 133, -1, -1, -1, -1, 138, 139, -1, 141, -1, -1, 144, 145, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, 168, -1, -1, 171, 172, -1, -1, -1, -1, -1, 57, 179, 180, 60, 182, -1, -1, 64, -1, -1, -1, 189, 190, 191, -1, -1, -1, -1, -1, 197, 198, -1, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, -1, 217, -1, -1, 220, 221, 222, -1, -1, -1, 105, 106, -1, 229, 230, 231, -1, -1, 6, 7, -1, -1, 238, -1, 240, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, 266, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, -1, 57, -1, -1, 60, 6, 7, -1, 64, 172, -1, -1, -1, -1, 70, -1, 179, 180, 19, 182, -1, -1, 6, 7, -1, -1, 189, 190, 191, 192, -1, -1, -1, -1, -1, -1, 37, 200, -1, 202, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, -1, -1, 37, -1, -1, 57, 220, -1, 60, -1, -1, -1, 64, -1, -1, 229, -1, 231, -1, -1, 234, -1, 57, 237, 238, 60, 133, -1, 242, 64, 244, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, 156, -1, -1, 266, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 105, 106, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, -1, 138, 139, -1, -1, -1, 198, -1, 200, 146, 202, -1, 149, 150, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, 220, 149, 150, -1, -1, 6, 7, -1, -1, 229, 230, 231, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, 242, -1, 244, 190, 191, 192, -1, -1, -1, 179, 180, -1, 182, 200, 37, 202, -1, -1, -1, -1, 190, 191, 192, -1, 266, -1, -1, -1, -1, -1, 200, -1, 202, 220, 57, -1, -1, 60, -1, -1, -1, 64, 229, -1, 231, -1, -1, 234, -1, -1, 220, 238, -1, -1, -1, 242, -1, 244, -1, 229, -1, 231, -1, -1, 234, -1, -1, -1, 238, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, 266, -1, -1, 105, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 138, 139, -1, -1, -1, -1, -1, -1, 146, -1, -1, 149, 150, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, 182, -1, -1, -1, -1, -1, -1, -1, 190, 191, 192, -1, -1, -1, -1, -1, -1, -1, 200, -1, 202, -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, 229, -1, 231, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, 242, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 266 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 1, 6, 31, 51, 54, 57, 60, 64, 65, 70, 77, 105, 106, 109, 111, 120, 122, 133, 138, 139, 141, 144, 145, 146, 149, 150, 153, 156, 166, 168, 171, 172, 179, 180, 182, 189, 190, 191, 197, 198, 200, 202, 215, 217, 220, 221, 222, 229, 230, 231, 240, 242, 244, 266, 346, 347, 348, 349, 350, 351, 354, 355, 357, 361, 362, 363, 378, 379, 384, 388, 389, 408, 409, 410, 411, 413, 414, 415, 419, 420, 431, 432, 433, 438, 439, 444, 460, 467, 469, 471, 473, 474, 477, 489, 618, 621, 626, 648, 651, 737, 748, 749, 759, 760, 781, 782, 784, 785, 836, 837, 845, 846, 847, 859, 860, 883, 884, 862, 4, 203, 218, 265, 275, 276, 281, 282, 287, 312, 313, 333, 334, 335, 336, 337, 338, 339, 340, 491, 652, 705, 711, 714, 716, 718, 720, 855, 859, 860, 4, 6, 7, 706, 625, 626, 706, 192, 234, 431, 432, 434, 435, 461, 706, 6, 10, 24, 358, 359, 141, 171, 363, 379, 389, 625, 625, 10, 358, 66, 625, 706, 863, 625, 242, 244, 439, 859, 625, 31, 625, 706, 706, 167, 459, 625, 625, 9, 9, 22, 66, 105, 141, 202, 231, 439, 705, 214, 458, 141, 705, 861, 0, 348, 54, 141, 171, 352, 353, 354, 19, 133, 356, 357, 364, 366, 364, 364, 31, 31, 535, 536, 705, 536, 85, 112, 523, 524, 525, 705, 707, 140, 204, 205, 223, 224, 225, 226, 227, 228, 248, 252, 259, 418, 229, 434, 435, 439, 475, 229, 439, 475, 434, 435, 434, 33, 448, 449, 705, 707, 238, 438, 22, 750, 750, 761, 22, 783, 22, 36, 256, 302, 726, 815, 750, 838, 366, 66, 7, 856, 857, 858, 69, 303, 28, 28, 28, 13, 30, 47, 59, 154, 161, 162, 164, 260, 261, 492, 539, 544, 692, 705, 120, 122, 620, 28, 37, 716, 856, 857, 716, 438, 434, 434, 37, 528, 531, 40, 529, 531, 303, 649, 706, 303, 26, 31, 364, 364, 364, 157, 159, 245, 434, 435, 439, 628, 629, 630, 705, 852, 854, 855, 859, 628, 629, 74, 174, 650, 31, 625, 706, 303, 706, 141, 705, 706, 705, 706, 31, 385, 386, 387, 618, 621, 784, 845, 706, 434, 40, 627, 630, 855, 627, 31, 29, 31, 3, 8, 9, 10, 17, 18, 21, 22, 25, 27, 36, 39, 40, 41, 43, 70, 163, 192, 200, 203, 214, 218, 234, 262, 263, 264, 267, 269, 272, 273, 274, 312, 313, 341, 342, 431, 432, 433, 436, 437, 439, 559, 575, 602, 610, 612, 614, 655, 658, 666, 672, 687, 705, 720, 722, 852, 855, 859, 860, 706, 706, 66, 706, 706, 706, 31, 37, 530, 459, 705, 19, 365, 303, 98, 354, 22, 357, 366, 22, 370, 370, 370, 26, 37, 308, 453, 454, 455, 531, 26, 31, 454, 526, 434, 289, 694, 695, 528, 527, 528, 157, 159, 581, 26, 31, 453, 625, 751, 31, 31, 637, 638, 33, 637, 22, 705, 620, 22, 31, 31, 110, 848, 625, 365, 858, 37, 303, 531, 532, 533, 534, 852, 716, 203, 716, 718, 490, 491, 540, 542, 439, 720, 439, 654, 655, 529, 654, 655, 531, 462, 463, 706, 24, 360, 706, 215, 217, 617, 620, 33, 24, 359, 370, 370, 370, 630, 528, 630, 630, 22, 31, 631, 631, 28, 159, 705, 22, 31, 632, 632, 649, 706, 705, 365, 31, 256, 706, 31, 99, 387, 440, 631, 632, 9, 22, 644, 655, 655, 655, 666, 655, 655, 22, 24, 711, 655, 42, 284, 285, 654, 655, 674, 691, 655, 655, 705, 22, 644, 22, 644, 22, 644, 22, 644, 28, 42, 81, 214, 301, 437, 597, 598, 599, 600, 601, 654, 655, 655, 655, 655, 655, 655, 22, 268, 602, 255, 258, 20, 21, 24, 25, 27, 28, 29, 32, 34, 35, 39, 41, 84, 137, 151, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 284, 285, 286, 287, 290, 293, 297, 312, 313, 602, 23, 22, 22, 705, 720, 7, 705, 720, 31, 31, 706, 31, 31, 453, 654, 28, 40, 365, 3, 8, 9, 22, 520, 851, 859, 28, 30, 723, 23, 367, 301, 371, 31, 31, 31, 535, 24, 38, 439, 654, 38, 526, 455, 524, 526, 33, 527, 16, 204, 205, 693, 188, 239, 416, 655, 22, 449, 526, 434, 439, 147, 752, 753, 754, 756, 3, 8, 9, 18, 21, 22, 25, 27, 39, 40, 41, 43, 44, 46, 61, 83, 107, 113, 127, 160, 162, 163, 183, 201, 203, 206, 207, 208, 209, 210, 214, 218, 238, 249, 272, 273, 274, 288, 298, 312, 313, 341, 342, 436, 439, 443, 476, 578, 602, 612, 661, 669, 687, 720, 722, 726, 757, 758, 766, 767, 768, 772, 774, 855, 860, 3, 8, 9, 18, 21, 22, 25, 27, 39, 40, 41, 43, 113, 163, 203, 214, 218, 272, 273, 274, 288, 312, 313, 341, 342, 436, 439, 577, 602, 612, 660, 668, 687, 720, 722, 726, 758, 764, 773, 774, 855, 860, 23, 73, 135, 136, 165, 181, 238, 421, 434, 435, 439, 639, 640, 641, 642, 643, 705, 655, 23, 3, 8, 9, 18, 21, 22, 25, 27, 39, 40, 41, 43, 86, 155, 163, 169, 203, 214, 218, 272, 273, 274, 288, 312, 313, 341, 342, 436, 439, 560, 561, 579, 602, 612, 657, 662, 670, 687, 720, 722, 855, 860, 706, 53, 88, 816, 817, 1, 31, 40, 78, 79, 705, 787, 788, 789, 790, 791, 793, 804, 852, 31, 46, 48, 49, 50, 61, 68, 76, 81, 112, 114, 123, 124, 125, 127, 134, 175, 186, 262, 263, 264, 267, 405, 467, 484, 485, 486, 494, 506, 508, 615, 621, 651, 705, 724, 725, 737, 738, 739, 744, 746, 747, 784, 836, 839, 840, 841, 842, 843, 853, 859, 131, 849, 706, 38, 534, 40, 873, 28, 26, 492, 694, 28, 706, 30, 38, 291, 292, 30, 26, 42, 37, 464, 706, 706, 31, 31, 31, 31, 630, 637, 1, 3, 8, 9, 18, 19, 21, 22, 25, 27, 31, 39, 40, 41, 43, 48, 49, 50, 53, 58, 70, 73, 75, 76, 80, 83, 85, 108, 114, 115, 116, 117, 118, 135, 136, 163, 165, 170, 177, 178, 181, 184, 185, 187, 203, 214, 218, 232, 233, 245, 246, 247, 250, 272, 273, 274, 293, 294, 298, 312, 313, 341, 342, 408, 409, 422, 428, 436, 439, 467, 519, 559, 562, 563, 564, 565, 566, 569, 570, 571, 572, 574, 576, 583, 602, 610, 611, 612, 613, 614, 633, 635, 636, 651, 656, 659, 665, 667, 687, 705, 720, 722, 736, 740, 741, 742, 744, 745, 747, 781, 819, 844, 855, 860, 93, 93, 705, 637, 617, 619, 620, 622, 365, 859, 31, 175, 176, 445, 446, 456, 457, 104, 31, 23, 672, 675, 23, 30, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 24, 560, 437, 655, 674, 688, 688, 40, 254, 26, 42, 655, 675, 675, 675, 675, 705, 705, 26, 42, 26, 42, 30, 40, 344, 22, 873, 22, 655, 655, 655, 655, 655, 47, 164, 203, 232, 261, 612, 645, 647, 720, 860, 655, 655, 655, 655, 655, 655, 40, 40, 597, 655, 22, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 40, 83, 116, 127, 193, 232, 655, 879, 880, 655, 3, 8, 9, 18, 21, 22, 25, 27, 28, 39, 40, 41, 43, 44, 46, 107, 113, 160, 162, 163, 183, 201, 203, 206, 207, 208, 209, 210, 214, 218, 249, 272, 273, 274, 288, 312, 313, 341, 342, 436, 439, 561, 580, 602, 612, 663, 671, 677, 680, 682, 684, 686, 687, 720, 722, 726, 768, 771, 774, 855, 860, 677, 22, 31, 31, 38, 706, 441, 28, 554, 555, 705, 705, 157, 706, 229, 368, 369, 410, 411, 412, 439, 535, 23, 40, 372, 373, 374, 418, 421, 1, 45, 46, 61, 81, 82, 109, 114, 123, 127, 195, 196, 213, 349, 355, 362, 378, 388, 405, 422, 423, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 489, 493, 505, 507, 539, 615, 696, 699, 702, 705, 724, 738, 111, 152, 349, 378, 380, 381, 382, 383, 388, 395, 396, 423, 483, 493, 48, 50, 76, 349, 390, 391, 392, 393, 394, 423, 484, 485, 486, 487, 493, 505, 507, 615, 705, 746, 38, 38, 38, 33, 655, 23, 26, 417, 434, 435, 439, 443, 518, 519, 28, 655, 676, 679, 681, 683, 685, 33, 528, 421, 23, 26, 377, 705, 707, 755, 172, 189, 237, 238, 434, 439, 762, 763, 655, 655, 439, 669, 726, 768, 772, 655, 655, 655, 42, 654, 674, 655, 655, 22, 37, 772, 22, 128, 37, 22, 22, 37, 772, 772, 22, 22, 22, 22, 37, 37, 772, 37, 772, 705, 439, 475, 22, 655, 655, 655, 22, 8, 22, 37, 308, 311, 705, 655, 655, 22, 268, 602, 448, 312, 313, 602, 83, 768, 772, 100, 476, 766, 20, 21, 24, 25, 27, 28, 29, 31, 32, 34, 35, 39, 41, 47, 84, 128, 132, 137, 142, 151, 164, 211, 212, 219, 235, 236, 253, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 284, 285, 286, 287, 290, 293, 297, 299, 300, 306, 307, 308, 309, 310, 311, 774, 777, 439, 773, 720, 720, 655, 655, 668, 773, 655, 655, 655, 42, 654, 674, 655, 655, 22, 705, 655, 655, 655, 22, 655, 655, 22, 268, 602, 312, 313, 602, 773, 773, 101, 20, 21, 24, 25, 27, 28, 29, 31, 32, 34, 35, 39, 41, 47, 84, 137, 142, 151, 164, 219, 253, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 284, 285, 286, 287, 290, 293, 297, 774, 777, 773, 720, 720, 181, 439, 475, 528, 26, 643, 238, 434, 435, 439, 453, 31, 815, 657, 657, 560, 670, 657, 657, 657, 42, 654, 674, 657, 657, 655, 655, 655, 705, 657, 657, 657, 22, 655, 655, 22, 268, 602, 23, 26, 20, 21, 24, 25, 27, 28, 29, 32, 34, 35, 39, 41, 84, 128, 137, 151, 164, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 284, 285, 286, 287, 290, 293, 297, 312, 313, 602, 720, 720, 22, 711, 715, 818, 818, 23, 164, 42, 55, 129, 130, 251, 705, 790, 794, 795, 797, 655, 706, 805, 807, 28, 30, 705, 95, 789, 31, 30, 705, 439, 562, 19, 112, 172, 743, 694, 172, 743, 22, 706, 172, 189, 743, 68, 83, 562, 22, 53, 94, 498, 500, 502, 504, 705, 841, 406, 407, 705, 68, 22, 562, 467, 172, 22, 644, 22, 644, 22, 644, 22, 644, 30, 726, 90, 841, 22, 857, 850, 853, 31, 194, 874, 875, 879, 716, 491, 365, 705, 22, 654, 654, 654, 654, 463, 527, 8, 466, 33, 465, 31, 31, 23, 31, 576, 656, 659, 667, 22, 520, 656, 655, 666, 656, 656, 656, 42, 654, 674, 656, 656, 22, 655, 22, 30, 31, 181, 31, 22, 40, 269, 439, 687, 708, 711, 118, 715, 562, 22, 22, 655, 22, 562, 30, 81, 590, 596, 655, 22, 708, 22, 31, 655, 705, 268, 22, 118, 22, 22, 656, 656, 656, 715, 185, 517, 519, 559, 8, 22, 705, 655, 655, 22, 31, 31, 443, 475, 268, 602, 562, 562, 88, 567, 568, 569, 570, 143, 567, 562, 31, 31, 61, 62, 63, 127, 585, 255, 258, 31, 570, 636, 20, 21, 24, 25, 27, 28, 29, 32, 34, 35, 39, 41, 84, 137, 151, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 283, 284, 285, 286, 287, 290, 293, 297, 33, 282, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 31, 312, 313, 602, 30, 705, 562, 720, 720, 723, 723, 23, 627, 31, 628, 31, 705, 42, 446, 245, 439, 442, 723, 23, 26, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 23, 23, 40, 42, 689, 42, 689, 674, 37, 691, 37, 23, 23, 23, 23, 597, 599, 655, 601, 597, 655, 655, 678, 655, 655, 655, 22, 258, 646, 705, 30, 37, 594, 655, 881, 882, 592, 593, 594, 655, 655, 878, 879, 193, 22, 22, 655, 40, 31, 655, 655, 671, 771, 655, 655, 706, 655, 42, 654, 674, 655, 655, 22, 37, 772, 37, 22, 37, 772, 772, 22, 22, 22, 22, 37, 37, 772, 37, 772, 705, 22, 655, 655, 655, 22, 655, 655, 22, 268, 602, 312, 313, 602, 23, 26, 26, 83, 771, 20, 21, 24, 25, 27, 28, 29, 32, 34, 35, 39, 41, 47, 84, 128, 132, 137, 142, 151, 164, 211, 212, 219, 235, 236, 253, 268, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 284, 285, 286, 287, 290, 293, 297, 299, 300, 306, 307, 774, 777, 773, 720, 720, 23, 677, 706, 445, 705, 23, 556, 557, 23, 26, 535, 372, 23, 26, 28, 140, 141, 377, 434, 435, 443, 705, 418, 31, 708, 562, 22, 68, 83, 537, 538, 715, 22, 53, 94, 111, 383, 482, 497, 499, 501, 503, 705, 22, 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, 700, 701, 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, 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, 98, 99, 100, 101, 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, 703, 704, 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, 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, 697, 698, 375, 418, 31, 97, 480, 119, 619, 622, 397, 398, 400, 705, 96, 382, 31, 99, 392, 31, 30, 439, 559, 655, 673, 693, 528, 518, 706, 23, 26, 26, 157, 452, 581, 582, 655, 753, 453, 439, 475, 528, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 83, 23, 26, 40, 42, 655, 654, 780, 655, 22, 654, 779, 773, 655, 655, 655, 773, 655, 655, 779, 780, 655, 655, 773, 655, 654, 780, 38, 344, 22, 31, 128, 723, 655, 655, 655, 655, 655, 203, 612, 645, 720, 655, 655, 655, 655, 655, 655, 772, 40, 772, 772, 40, 773, 597, 655, 772, 772, 772, 773, 772, 772, 773, 22, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 880, 655, 772, 772, 772, 772, 38, 654, 778, 780, 778, 778, 773, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 23, 26, 40, 42, 773, 655, 655, 344, 22, 31, 723, 655, 655, 655, 655, 655, 203, 612, 645, 720, 655, 655, 655, 655, 655, 655, 773, 40, 40, 773, 597, 655, 773, 773, 773, 22, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 880, 655, 773, 640, 439, 475, 528, 526, 31, 23, 30, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 40, 42, 128, 128, 128, 655, 655, 344, 22, 657, 657, 657, 657, 657, 657, 203, 612, 645, 720, 657, 657, 657, 657, 657, 657, 40, 655, 40, 214, 597, 657, 657, 22, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 880, 657, 637, 705, 852, 817, 797, 42, 795, 31, 705, 128, 792, 792, 26, 706, 78, 79, 30, 723, 78, 439, 705, 8, 22, 22, 518, 22, 22, 655, 22, 22, 22, 4, 705, 706, 128, 124, 509, 705, 30, 88, 502, 94, 500, 30, 26, 31, 526, 706, 655, 22, 675, 31, 675, 31, 675, 31, 675, 31, 744, 747, 31, 723, 676, 26, 1, 31, 51, 70, 111, 147, 173, 174, 198, 241, 349, 408, 409, 457, 468, 784, 845, 864, 865, 866, 867, 868, 869, 870, 871, 872, 884, 655, 666, 876, 877, 42, 875, 541, 543, 439, 653, 38, 38, 38, 38, 30, 38, 654, 31, 28, 521, 522, 655, 23, 30, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 40, 42, 655, 33, 655, 706, 655, 708, 709, 708, 710, 269, 31, 269, 31, 31, 250, 83, 765, 772, 31, 238, 439, 603, 604, 605, 708, 33, 203, 218, 265, 705, 712, 717, 719, 721, 855, 860, 706, 30, 562, 81, 89, 596, 26, 30, 23, 705, 31, 655, 31, 655, 22, 655, 31, 713, 715, 655, 31, 22, 715, 655, 344, 429, 430, 22, 723, 88, 569, 570, 723, 143, 22, 22, 22, 22, 586, 873, 22, 656, 656, 656, 656, 656, 203, 581, 611, 612, 645, 720, 656, 656, 656, 656, 656, 656, 40, 40, 214, 597, 656, 22, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 880, 656, 517, 581, 582, 517, 736, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 572, 705, 22, 31, 22, 22, 31, 532, 447, 672, 30, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 690, 691, 42, 42, 42, 655, 655, 30, 26, 42, 345, 23, 23, 676, 22, 655, 655, 304, 305, 26, 42, 26, 42, 23, 42, 879, 655, 712, 655, 31, 592, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 23, 26, 22, 40, 42, 655, 780, 779, 773, 655, 655, 773, 655, 655, 779, 780, 655, 655, 773, 655, 344, 22, 682, 684, 686, 128, 655, 655, 655, 655, 655, 203, 612, 645, 720, 655, 655, 655, 655, 655, 655, 771, 40, 771, 772, 40, 773, 597, 655, 771, 772, 772, 773, 772, 772, 773, 22, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 880, 655, 772, 772, 772, 772, 773, 23, 31, 42, 26, 28, 301, 439, 558, 655, 369, 42, 373, 377, 434, 28, 706, 453, 454, 28, 377, 28, 377, 28, 706, 33, 488, 655, 706, 128, 26, 31, 33, 509, 30, 88, 501, 94, 499, 30, 655, 701, 102, 701, 31, 704, 698, 103, 698, 427, 434, 435, 443, 723, 619, 31, 31, 26, 31, 22, 723, 723, 30, 23, 518, 22, 681, 683, 685, 37, 33, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 128, 573, 575, 608, 612, 655, 658, 664, 666, 775, 776, 674, 37, 23, 30, 38, 23, 655, 30, 38, 23, 26, 23, 38, 23, 23, 23, 23, 38, 38, 38, 23, 23, 30, 23, 38, 655, 655, 22, 30, 881, 592, 655, 38, 38, 38, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 775, 674, 37, 23, 26, 23, 30, 655, 655, 30, 881, 592, 655, 33, 787, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 674, 37, 655, 655, 655, 23, 30, 655, 655, 30, 881, 592, 705, 655, 23, 705, 31, 37, 796, 22, 793, 31, 40, 808, 807, 33, 655, 805, 78, 655, 705, 30, 765, 655, 515, 516, 708, 765, 655, 23, 765, 83, 726, 773, 655, 31, 655, 407, 31, 33, 706, 88, 53, 407, 23, 765, 23, 23, 23, 23, 81, 135, 136, 165, 727, 728, 729, 731, 737, 23, 853, 31, 174, 869, 884, 241, 884, 31, 31, 91, 866, 238, 357, 438, 470, 472, 477, 618, 621, 871, 69, 26, 52, 37, 548, 549, 550, 551, 552, 553, 705, 545, 546, 547, 705, 23, 26, 466, 633, 645, 30, 23, 26, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 674, 37, 23, 517, 23, 23, 26, 42, 26, 42, 710, 710, 22, 128, 23, 439, 706, 31, 655, 26, 31, 33, 655, 28, 28, 28, 23, 28, 37, 717, 717, 562, 30, 562, 30, 655, 562, 245, 439, 634, 705, 820, 821, 822, 23, 23, 612, 655, 23, 23, 26, 23, 655, 31, 23, 655, 450, 451, 705, 450, 655, 723, 723, 655, 655, 655, 655, 137, 151, 588, 590, 655, 31, 31, 31, 30, 881, 592, 705, 655, 655, 31, 31, 655, 655, 554, 637, 637, 448, 655, 26, 42, 42, 30, 38, 291, 292, 30, 38, 291, 292, 597, 655, 655, 23, 23, 655, 30, 655, 655, 882, 593, 31, 23, 23, 42, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 775, 23, 771, 674, 37, 23, 38, 38, 23, 26, 38, 23, 23, 23, 23, 38, 38, 38, 23, 23, 30, 655, 655, 22, 30, 881, 592, 655, 532, 558, 706, 707, 30, 22, 453, 454, 706, 453, 526, 28, 377, 377, 453, 377, 453, 706, 453, 708, 31, 33, 23, 31, 655, 538, 655, 31, 706, 88, 53, 23, 102, 103, 448, 528, 426, 424, 31, 398, 399, 655, 23, 655, 655, 616, 771, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 28, 33, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 23, 26, 42, 655, 772, 654, 772, 81, 89, 596, 769, 770, 23, 654, 772, 775, 772, 772, 772, 772, 772, 772, 772, 772, 655, 345, 23, 655, 655, 42, 42, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 42, 655, 775, 655, 345, 23, 655, 42, 42, 23, 655, 95, 30, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 42, 655, 655, 345, 23, 657, 42, 42, 23, 796, 38, 655, 786, 33, 655, 42, 621, 790, 797, 809, 810, 811, 812, 26, 655, 792, 792, 655, 792, 30, 78, 23, 23, 26, 31, 33, 23, 23, 81, 89, 512, 514, 596, 23, 128, 83, 23, 23, 31, 33, 655, 654, 88, 502, 88, 502, 496, 498, 504, 23, 31, 31, 31, 31, 136, 165, 730, 86, 155, 169, 519, 734, 735, 734, 92, 729, 706, 732, 733, 619, 620, 622, 623, 624, 69, 69, 723, 625, 448, 706, 877, 876, 654, 26, 31, 554, 22, 553, 551, 26, 31, 551, 31, 439, 38, 521, 522, 30, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 42, 655, 87, 571, 584, 655, 584, 571, 708, 708, 42, 42, 655, 22, 584, 706, 33, 606, 607, 608, 31, 605, 655, 31, 717, 203, 717, 719, 571, 721, 654, 655, 562, 562, 705, 22, 101, 821, 30, 820, 562, 23, 28, 562, 584, 715, 562, 23, 345, 26, 31, 453, 31, 23, 23, 23, 23, 23, 81, 589, 591, 592, 587, 588, 89, 23, 656, 42, 42, 23, 31, 31, 23, 23, 23, 31, 23, 691, 37, 655, 655, 655, 655, 655, 655, 646, 23, 655, 880, 880, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 42, 655, 772, 772, 772, 775, 772, 772, 772, 772, 772, 772, 772, 655, 345, 23, 655, 655, 42, 42, 23, 22, 655, 376, 655, 28, 377, 706, 526, 33, 377, 453, 22, 526, 22, 526, 706, 526, 708, 81, 89, 511, 513, 596, 31, 655, 88, 501, 88, 501, 495, 497, 503, 425, 448, 448, 28, 68, 109, 133, 401, 402, 403, 421, 705, 30, 23, 38, 655, 645, 517, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 776, 42, 30, 38, 291, 292, 30, 772, 30, 26, 89, 767, 23, 87, 30, 23, 23, 42, 30, 38, 291, 292, 23, 30, 23, 723, 655, 42, 30, 38, 291, 292, 30, 23, 33, 38, 22, 40, 81, 799, 23, 706, 42, 810, 31, 806, 807, 793, 808, 792, 793, 78, 655, 584, 584, 516, 655, 584, 584, 30, 496, 89, 514, 30, 562, 22, 128, 571, 571, 654, 31, 723, 88, 723, 88, 87, 31, 735, 735, 31, 519, 519, 519, 165, 723, 33, 26, 31, 629, 31, 706, 706, 434, 439, 31, 31, 873, 31, 30, 38, 549, 23, 22, 546, 30, 23, 26, 655, 42, 30, 38, 291, 292, 571, 87, 31, 23, 655, 33, 655, 23, 26, 606, 28, 30, 26, 38, 291, 292, 22, 637, 40, 61, 127, 175, 185, 705, 823, 824, 825, 827, 830, 831, 833, 101, 31, 612, 559, 23, 451, 526, 562, 30, 562, 89, 81, 592, 30, 89, 31, 655, 38, 38, 38, 38, 38, 38, 38, 87, 42, 30, 38, 291, 292, 23, 30, 23, 23, 23, 439, 771, 30, 23, 377, 453, 453, 654, 22, 526, 376, 33, 376, 33, 453, 30, 495, 89, 513, 30, 31, 723, 88, 723, 88, 87, 448, 706, 706, 404, 624, 705, 404, 23, 26, 403, 655, 22, 23, 655, 37, 655, 655, 655, 772, 772, 770, 772, 655, 768, 772, 37, 655, 655, 655, 655, 23, 37, 655, 655, 655, 655, 40, 799, 37, 595, 786, 798, 800, 801, 802, 592, 189, 792, 26, 792, 33, 31, 26, 793, 655, 792, 496, 496, 655, 22, 312, 313, 510, 705, 723, 723, 496, 165, 734, 655, 733, 22, 31, 31, 31, 528, 654, 521, 522, 23, 37, 655, 655, 655, 571, 31, 23, 655, 562, 608, 23, 717, 654, 609, 705, 654, 654, 637, 23, 42, 467, 571, 828, 829, 22, 22, 143, 22, 22, 31, 41, 304, 831, 23, 33, 87, 562, 30, 562, 30, 562, 30, 38, 291, 292, 880, 37, 655, 655, 655, 655, 772, 23, 23, 30, 655, 526, 22, 526, 526, 376, 33, 23, 654, 23, 654, 526, 495, 495, 510, 723, 723, 495, 22, 402, 655, 655, 38, 38, 38, 31, 31, 23, 655, 38, 38, 38, 23, 655, 38, 38, 38, 23, 592, 792, 786, 26, 23, 295, 308, 309, 310, 42, 792, 22, 18, 22, 56, 258, 813, 807, 792, 793, 23, 655, 705, 705, 23, 33, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 735, 637, 38, 23, 655, 38, 38, 38, 772, 562, 38, 26, 38, 38, 38, 23, 42, 829, 655, 655, 22, 833, 655, 676, 824, 8, 22, 711, 826, 31, 655, 562, 562, 562, 655, 655, 655, 655, 38, 38, 38, 23, 655, 376, 33, 23, 654, 526, 526, 23, 23, 655, 23, 30, 38, 291, 292, 30, 38, 291, 292, 30, 38, 291, 292, 42, 30, 595, 801, 786, 803, 803, 803, 255, 792, 800, 56, 258, 813, 22, 22, 270, 271, 792, 793, 773, 23, 496, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 23, 30, 38, 291, 292, 705, 23, 23, 655, 832, 833, 23, 23, 655, 827, 38, 38, 38, 30, 38, 291, 292, 23, 30, 23, 654, 526, 495, 23, 655, 655, 655, 655, 655, 655, 655, 655, 655, 255, 792, 786, 30, 38, 38, 38, 40, 23, 22, 22, 23, 705, 814, 786, 813, 813, 23, 773, 31, 655, 655, 655, 81, 596, 834, 835, 833, 23, 833, 833, 23, 655, 655, 655, 655, 526, 38, 38, 38, 38, 38, 38, 38, 38, 38, 40, 38, 786, 786, 814, 786, 28, 23, 23, 571, 23, 38, 38, 38, 30, 833, 30, 89, 835, 87, 833, 38, 38, 38, 23, 786, 23, 23, 23, 706, 142, 571, 833, 31, 833, 833, 832, 23, 792, 142, 40, 31, 31, 792, 40, 798, 798, 42, 42 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { 0, 343, 344, 345, 346, 346, 347, 347, 348, 348, 348, 348, 348, 348, 348, 349, 349, 349, 350, 351, 352, 352, 353, 353, 354, 354, 354, 354, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 355, 356, 356, 357, 358, 358, 359, 360, 360, 361, 361, 362, 362, 363, 364, 364, 365, 365, 365, 366, 366, 367, 366, 368, 368, 369, 369, 370, 370, 371, 370, 372, 372, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, 374, 374, 374, 374, 375, 375, 376, 376, 377, 377, 378, 378, 379, 380, 380, 381, 381, 382, 382, 382, 382, 382, 382, 382, 383, 383, 384, 385, 385, 386, 386, 387, 387, 387, 387, 387, 388, 388, 389, 390, 390, 391, 391, 392, 392, 393, 393, 393, 393, 393, 393, 393, 394, 394, 394, 394, 395, 395, 395, 396, 397, 397, 399, 398, 400, 401, 401, 402, 402, 402, 402, 402, 403, 403, 403, 404, 404, 405, 406, 406, 407, 408, 409, 410, 410, 410, 411, 411, 411, 412, 412, 412, 412, 413, 414, 414, 415, 416, 416, 416, 417, 417, 417, 417, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, 419, 420, 421, 421, 421, 421, 421, 422, 422, 422, 422, 422, 424, 423, 425, 423, 426, 423, 427, 423, 429, 428, 430, 428, 431, 431, 431, 431, 431, 431, 432, 432, 432, 433, 433, 433, 434, 434, 435, 435, 436, 436, 436, 436, 436, 437, 437, 437, 437, 438, 438, 438, 439, 439, 439, 440, 439, 441, 439, 439, 439, 439, 439, 439, 439, 439, 439, 442, 442, 443, 443, 443, 444, 445, 445, 447, 446, 448, 448, 449, 449, 449, 449, 450, 450, 451, 451, 452, 452, 452, 453, 453, 454, 454, 455, 455, 455, 455, 455, 455, 456, 456, 457, 457, 458, 458, 459, 459, 460, 461, 461, 461, 461, 461, 461, 462, 462, 463, 464, 464, 464, 465, 465, 466, 467, 467, 467, 467, 468, 468, 468, 469, 470, 471, 471, 471, 471, 471, 471, 472, 472, 472, 472, 473, 473, 473, 474, 474, 475, 475, 475, 476, 477, 477, 477, 477, 477, 477, 477, 477, 478, 478, 479, 479, 480, 480, 481, 481, 481, 481, 481, 481, 481, 481, 482, 482, 482, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, 484, 485, 486, 487, 487, 487, 487, 487, 488, 488, 489, 489, 490, 490, 491, 492, 493, 493, 494, 494, 495, 495, 496, 496, 497, 497, 497, 497, 497, 497, 498, 498, 498, 498, 498, 498, 499, 499, 500, 500, 501, 501, 502, 502, 503, 503, 504, 505, 505, 505, 505, 506, 506, 506, 506, 507, 508, 509, 509, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 510, 511, 511, 512, 512, 513, 513, 513, 514, 514, 514, 515, 515, 516, 517, 517, 517, 517, 518, 518, 519, 519, 519, 519, 520, 520, 520, 520, 521, 522, 522, 523, 523, 524, 524, 524, 525, 525, 526, 527, 527, 528, 528, 529, 529, 530, 530, 531, 532, 532, 533, 533, 534, 534, 535, 535, 536, 536, 537, 537, 538, 540, 541, 539, 542, 543, 539, 544, 544, 545, 545, 546, 547, 548, 548, 549, 550, 550, 551, 551, 552, 552, 553, 553, 555, 554, 557, 556, 556, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 558, 559, 559, 559, 559, 560, 560, 561, 561, 561, 561, 561, 561, 562, 563, 563, 564, 564, 565, 565, 566, 566, 567, 567, 567, 568, 568, 569, 569, 569, 569, 569, 570, 570, 571, 571, 571, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 572, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 574, 575, 575, 575, 575, 576, 576, 576, 576, 577, 577, 577, 577, 578, 578, 578, 578, 579, 579, 579, 579, 580, 580, 580, 580, 581, 581, 581, 582, 582, 583, 583, 583, 583, 584, 584, 584, 585, 585, 585, 586, 587, 588, 588, 589, 589, 590, 590, 590, 590, 590, 590, 591, 591, 591, 591, 591, 591, 592, 592, 593, 594, 594, 595, 595, 596, 596, 597, 597, 597, 598, 598, 599, 599, 599, 600, 600, 600, 600, 601, 601, 601, 602, 602, 602, 603, 603, 604, 604, 605, 605, 605, 606, 606, 607, 607, 608, 608, 608, 608, 608, 609, 609, 610, 610, 610, 611, 611, 611, 611, 612, 612, 612, 612, 613, 614, 614, 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, 615, 615, 615, 615, 615, 615, 616, 617, 617, 618, 618, 619, 619, 620, 620, 621, 621, 621, 621, 622, 622, 623, 623, 624, 624, 625, 625, 626, 626, 627, 628, 628, 628, 628, 628, 629, 629, 629, 630, 630, 630, 631, 631, 632, 632, 633, 633, 633, 633, 634, 634, 635, 635, 636, 636, 638, 637, 639, 639, 640, 640, 640, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 641, 642, 643, 643, 644, 644, 645, 645, 646, 646, 647, 647, 647, 647, 648, 648, 648, 648, 649, 649, 650, 650, 650, 651, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 652, 653, 653, 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, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 656, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 657, 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, 662, 662, 662, 662, 662, 662, 662, 662, 662, 663, 663, 663, 663, 663, 663, 663, 663, 663, 663, 664, 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, 670, 670, 670, 670, 671, 671, 671, 671, 671, 671, 671, 672, 672, 672, 673, 673, 673, 673, 674, 674, 675, 675, 675, 676, 676, 676, 677, 677, 677, 678, 678, 679, 679, 680, 680, 681, 681, 682, 682, 683, 683, 684, 684, 685, 685, 686, 686, 687, 687, 687, 687, 688, 688, 689, 690, 690, 691, 691, 691, 691, 691, 692, 692, 692, 692, 692, 692, 692, 692, 692, 693, 693, 693, 694, 694, 695, 695, 696, 697, 697, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698, 699, 699, 700, 700, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 701, 702, 703, 703, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 704, 705, 706, 706, 706, 707, 707, 708, 708, 708, 708, 708, 708, 709, 709, 710, 710, 711, 711, 711, 711, 711, 711, 712, 712, 712, 712, 712, 712, 713, 713, 714, 715, 716, 716, 717, 717, 718, 718, 719, 719, 720, 720, 720, 720, 720, 721, 721, 721, 721, 721, 721, 722, 723, 723, 723, 724, 725, 725, 725, 725, 725, 725, 726, 726, 727, 727, 728, 728, 729, 729, 729, 730, 730, 730, 731, 731, 731, 731, 732, 732, 733, 733, 734, 734, 735, 735, 735, 735, 735, 735, 735, 736, 736, 736, 737, 737, 737, 738, 738, 739, 739, 740, 740, 740, 741, 741, 742, 742, 742, 743, 743, 744, 744, 744, 745, 746, 746, 747, 747, 747, 747, 747, 747, 747, 748, 749, 750, 751, 750, 752, 752, 753, 754, 754, 754, 754, 754, 754, 755, 755, 756, 756, 756, 757, 757, 758, 758, 759, 760, 761, 762, 762, 763, 763, 764, 764, 764, 764, 765, 765, 766, 766, 766, 766, 767, 767, 768, 768, 768, 768, 769, 769, 770, 770, 770, 770, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 771, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 772, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 773, 774, 774, 774, 774, 774, 774, 775, 775, 776, 777, 777, 777, 777, 777, 778, 778, 779, 780, 781, 782, 783, 783, 784, 784, 785, 786, 787, 787, 788, 788, 789, 789, 789, 789, 790, 791, 791, 791, 791, 791, 791, 791, 792, 792, 793, 793, 793, 794, 794, 795, 795, 795, 795, 795, 795, 795, 795, 795, 796, 796, 796, 797, 797, 797, 798, 798, 799, 799, 800, 800, 801, 801, 801, 801, 802, 803, 803, 804, 804, 805, 805, 806, 806, 807, 808, 808, 808, 809, 809, 810, 810, 811, 811, 812, 813, 813, 813, 813, 813, 813, 813, 813, 813, 814, 814, 815, 815, 815, 815, 816, 816, 817, 817, 818, 818, 818, 819, 819, 820, 820, 821, 822, 822, 822, 822, 823, 823, 824, 824, 824, 825, 825, 825, 826, 826, 826, 827, 827, 828, 828, 829, 829, 830, 830, 831, 831, 831, 831, 831, 831, 832, 832, 833, 833, 834, 834, 835, 835, 835, 836, 837, 838, 839, 839, 840, 840, 841, 841, 841, 841, 841, 841, 841, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 842, 843, 843, 843, 843, 844, 845, 846, 846, 847, 847, 848, 848, 848, 849, 849, 850, 850, 851, 852, 853, 854, 855, 856, 857, 857, 858, 859, 859, 861, 860, 862, 860, 863, 860, 864, 864, 865, 865, 866, 866, 866, 866, 866, 866, 866, 866, 866, 866, 867, 867, 867, 867, 868, 868, 868, 869, 869, 870, 870, 871, 871, 871, 871, 871, 871, 872, 872, 872, 872, 873, 874, 874, 875, 875, 876, 876, 877, 878, 878, 879, 879, 879, 879, 879, 879, 879, 880, 880, 881, 881, 882, 882, 882, 883, 884, 884 }; /* YYR2[YYN] -- Number of symbols on the 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, 8, 9, 10, 7, 5, 5, 6, 7, 4, 7, 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, 1, 1, 2, 3, 5, 0, 2, 0, 2, 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, 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, 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, 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, 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, 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, 2, 1, 6, 6, 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 }; #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 #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (YY_((char*)"syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* 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 (0) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # 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 (0) /*----------------------------------------. | Print this symbol's value on YYOUTPUT. | `----------------------------------------*/ static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { FILE *yyo = yyoutput; YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", 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). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { 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 (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; 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, yystos[yyssp[yyi + 1 - yynrhs]], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule); \ } while (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. */ static YYSIZE_T yystrlen (const char *yystr) { 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. */ static char * yystpcpy (char *yydest, const char *yysrc) { 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 (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* 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: - 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]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, 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_ } { YYSIZE_T 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. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (void) { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* 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 through 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 = 0; /* 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; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ 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 (&yylval); } 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; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END 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 787 "VParseBison.y" /* yacc.c:1646 */ { } #line 20668 "VParseBison.c" /* yacc.c:1646 */ break; case 3: #line 790 "VParseBison.y" /* yacc.c:1646 */ { } #line 20674 "VParseBison.c" /* yacc.c:1646 */ break; case 4: #line 797 "VParseBison.y" /* yacc.c:1646 */ { } #line 20680 "VParseBison.c" /* yacc.c:1646 */ break; case 5: #line 799 "VParseBison.y" /* yacc.c:1646 */ { } #line 20686 "VParseBison.c" /* yacc.c:1646 */ break; case 6: #line 803 "VParseBison.y" /* yacc.c:1646 */ { } #line 20692 "VParseBison.c" /* yacc.c:1646 */ break; case 7: #line 804 "VParseBison.y" /* yacc.c:1646 */ { } #line 20698 "VParseBison.c" /* yacc.c:1646 */ break; case 8: #line 808 "VParseBison.y" /* yacc.c:1646 */ { } #line 20704 "VParseBison.c" /* yacc.c:1646 */ break; case 9: #line 810 "VParseBison.y" /* yacc.c:1646 */ { } #line 20710 "VParseBison.c" /* yacc.c:1646 */ break; case 10: #line 811 "VParseBison.y" /* yacc.c:1646 */ { } #line 20716 "VParseBison.c" /* yacc.c:1646 */ break; case 11: #line 812 "VParseBison.y" /* yacc.c:1646 */ { } #line 20722 "VParseBison.c" /* yacc.c:1646 */ break; case 12: #line 813 "VParseBison.y" /* yacc.c:1646 */ { } #line 20728 "VParseBison.c" /* yacc.c:1646 */ break; case 13: #line 814 "VParseBison.y" /* yacc.c:1646 */ { } #line 20734 "VParseBison.c" /* yacc.c:1646 */ break; case 14: #line 816 "VParseBison.y" /* yacc.c:1646 */ { } #line 20740 "VParseBison.c" /* yacc.c:1646 */ break; case 15: #line 820 "VParseBison.y" /* yacc.c:1646 */ { } #line 20746 "VParseBison.c" /* yacc.c:1646 */ break; case 16: #line 821 "VParseBison.y" /* yacc.c:1646 */ { NEED_S09((yyvsp[-4].fl),"timeunit /"); } #line 20752 "VParseBison.c" /* yacc.c:1646 */ break; case 17: #line 822 "VParseBison.y" /* yacc.c:1646 */ { } #line 20758 "VParseBison.c" /* yacc.c:1646 */ break; case 18: #line 830 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endpackageCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::PACKAGE); } #line 20765 "VParseBison.c" /* yacc.c:1646 */ break; case 19: #line 837 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::PACKAGE, (yyvsp[-1].str)); PARSEP->packageCb((yyvsp[-3].fl),(yyvsp[-3].str), (yyvsp[-1].str)); } #line 20772 "VParseBison.c" /* yacc.c:1646 */ break; case 20: #line 842 "VParseBison.y" /* yacc.c:1646 */ { } #line 20778 "VParseBison.c" /* yacc.c:1646 */ break; case 21: #line 843 "VParseBison.y" /* yacc.c:1646 */ { } #line 20784 "VParseBison.c" /* yacc.c:1646 */ break; case 22: #line 847 "VParseBison.y" /* yacc.c:1646 */ { } #line 20790 "VParseBison.c" /* yacc.c:1646 */ break; case 23: #line 848 "VParseBison.y" /* yacc.c:1646 */ { } #line 20796 "VParseBison.c" /* yacc.c:1646 */ break; case 24: #line 852 "VParseBison.y" /* yacc.c:1646 */ { } #line 20802 "VParseBison.c" /* yacc.c:1646 */ break; case 25: #line 853 "VParseBison.y" /* yacc.c:1646 */ { } #line 20808 "VParseBison.c" /* yacc.c:1646 */ break; case 26: #line 854 "VParseBison.y" /* yacc.c:1646 */ { } #line 20814 "VParseBison.c" /* yacc.c:1646 */ break; case 27: #line 855 "VParseBison.y" /* yacc.c:1646 */ { } #line 20820 "VParseBison.c" /* yacc.c:1646 */ break; case 28: #line 859 "VParseBison.y" /* yacc.c:1646 */ { } #line 20826 "VParseBison.c" /* yacc.c:1646 */ break; case 29: #line 860 "VParseBison.y" /* yacc.c:1646 */ { } #line 20832 "VParseBison.c" /* yacc.c:1646 */ break; case 30: #line 861 "VParseBison.y" /* yacc.c:1646 */ { } #line 20838 "VParseBison.c" /* yacc.c:1646 */ break; case 31: #line 862 "VParseBison.y" /* yacc.c:1646 */ { } #line 20844 "VParseBison.c" /* yacc.c:1646 */ break; case 32: #line 863 "VParseBison.y" /* yacc.c:1646 */ { } #line 20850 "VParseBison.c" /* yacc.c:1646 */ break; case 33: #line 864 "VParseBison.y" /* yacc.c:1646 */ { } #line 20856 "VParseBison.c" /* yacc.c:1646 */ break; case 34: #line 865 "VParseBison.y" /* yacc.c:1646 */ { } #line 20862 "VParseBison.c" /* yacc.c:1646 */ break; case 35: #line 866 "VParseBison.y" /* yacc.c:1646 */ { } #line 20868 "VParseBison.c" /* yacc.c:1646 */ break; case 36: #line 868 "VParseBison.y" /* yacc.c:1646 */ { } #line 20874 "VParseBison.c" /* yacc.c:1646 */ break; case 37: #line 869 "VParseBison.y" /* yacc.c:1646 */ { } #line 20880 "VParseBison.c" /* yacc.c:1646 */ break; case 38: #line 870 "VParseBison.y" /* yacc.c:1646 */ { } #line 20886 "VParseBison.c" /* yacc.c:1646 */ break; case 39: #line 871 "VParseBison.y" /* yacc.c:1646 */ { } #line 20892 "VParseBison.c" /* yacc.c:1646 */ break; case 40: #line 872 "VParseBison.y" /* yacc.c:1646 */ { } #line 20898 "VParseBison.c" /* yacc.c:1646 */ break; case 41: #line 873 "VParseBison.y" /* yacc.c:1646 */ { } #line 20904 "VParseBison.c" /* yacc.c:1646 */ break; case 42: #line 877 "VParseBison.y" /* yacc.c:1646 */ { } #line 20910 "VParseBison.c" /* yacc.c:1646 */ break; case 43: #line 878 "VParseBison.y" /* yacc.c:1646 */ { } #line 20916 "VParseBison.c" /* yacc.c:1646 */ break; case 44: #line 882 "VParseBison.y" /* yacc.c:1646 */ { } #line 20922 "VParseBison.c" /* yacc.c:1646 */ break; case 45: #line 886 "VParseBison.y" /* yacc.c:1646 */ { } #line 20928 "VParseBison.c" /* yacc.c:1646 */ break; case 46: #line 887 "VParseBison.y" /* yacc.c:1646 */ { } #line 20934 "VParseBison.c" /* yacc.c:1646 */ break; case 47: #line 892 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().import((yyvsp[-2].fl),(yyvsp[-2].str),(yyvsp[0].str)); PARSEP->importCb((yyvsp[-2].fl),(yyvsp[-2].str),(yyvsp[0].str)); } #line 20941 "VParseBison.c" /* yacc.c:1646 */ break; case 48: #line 897 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 20947 "VParseBison.c" /* yacc.c:1646 */ break; case 49: #line 898 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 20953 "VParseBison.c" /* yacc.c:1646 */ break; case 50: #line 902 "VParseBison.y" /* yacc.c:1646 */ { } #line 20959 "VParseBison.c" /* yacc.c:1646 */ break; case 51: #line 903 "VParseBison.y" /* yacc.c:1646 */ { } #line 20965 "VParseBison.c" /* yacc.c:1646 */ break; case 52: #line 914 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endmoduleCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::MODULE); } #line 20972 "VParseBison.c" /* yacc.c:1646 */ break; case 53: #line 918 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::MODULE); } #line 20978 "VParseBison.c" /* yacc.c:1646 */ break; case 54: #line 925 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::MODULE, (yyvsp[0].str)); PARSEP->moduleCb((yyvsp[-2].fl),(yyvsp[-2].str),(yyvsp[0].str),false,PARSEP->inCellDefine()); } #line 20985 "VParseBison.c" /* yacc.c:1646 */ break; case 55: #line 931 "VParseBison.y" /* yacc.c:1646 */ { } #line 20991 "VParseBison.c" /* yacc.c:1646 */ break; case 56: #line 932 "VParseBison.y" /* yacc.c:1646 */ { } #line 20997 "VParseBison.c" /* yacc.c:1646 */ break; case 57: #line 936 "VParseBison.y" /* yacc.c:1646 */ { } #line 21003 "VParseBison.c" /* yacc.c:1646 */ break; case 58: #line 937 "VParseBison.y" /* yacc.c:1646 */ { } #line 21009 "VParseBison.c" /* yacc.c:1646 */ break; case 59: #line 939 "VParseBison.y" /* yacc.c:1646 */ { } #line 21015 "VParseBison.c" /* yacc.c:1646 */ break; case 60: #line 943 "VParseBison.y" /* yacc.c:1646 */ { } #line 21021 "VParseBison.c" /* yacc.c:1646 */ break; case 61: #line 944 "VParseBison.y" /* yacc.c:1646 */ { } #line 21027 "VParseBison.c" /* yacc.c:1646 */ break; case 62: #line 949 "VParseBison.y" /* yacc.c:1646 */ {VARRESET_LIST("parameter");} #line 21033 "VParseBison.c" /* yacc.c:1646 */ break; case 63: #line 949 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); } #line 21039 "VParseBison.c" /* yacc.c:1646 */ break; case 64: #line 954 "VParseBison.y" /* yacc.c:1646 */ { } #line 21045 "VParseBison.c" /* yacc.c:1646 */ break; case 65: #line 955 "VParseBison.y" /* yacc.c:1646 */ { } #line 21051 "VParseBison.c" /* yacc.c:1646 */ break; case 66: #line 960 "VParseBison.y" /* yacc.c:1646 */ { } #line 21057 "VParseBison.c" /* yacc.c:1646 */ break; case 67: #line 961 "VParseBison.y" /* yacc.c:1646 */ { } #line 21063 "VParseBison.c" /* yacc.c:1646 */ break; case 68: #line 965 "VParseBison.y" /* yacc.c:1646 */ { } #line 21069 "VParseBison.c" /* yacc.c:1646 */ break; case 69: #line 968 "VParseBison.y" /* yacc.c:1646 */ { } #line 21075 "VParseBison.c" /* yacc.c:1646 */ break; case 70: #line 969 "VParseBison.y" /* yacc.c:1646 */ {VARRESET_LIST("");} #line 21081 "VParseBison.c" /* yacc.c:1646 */ break; case 71: #line 969 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); } #line 21087 "VParseBison.c" /* yacc.c:1646 */ break; case 72: #line 973 "VParseBison.y" /* yacc.c:1646 */ { } #line 21093 "VParseBison.c" /* yacc.c:1646 */ break; case 73: #line 974 "VParseBison.y" /* yacc.c:1646 */ { } #line 21099 "VParseBison.c" /* yacc.c:1646 */ break; case 74: #line 984 "VParseBison.y" /* yacc.c:1646 */ { } #line 21105 "VParseBison.c" /* yacc.c:1646 */ break; case 75: #line 986 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-3].str)); VARIO("interface"); VARDONE((yyvsp[-3].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); PARSEP->instantCb((yyvsp[-3].fl), (yyvsp[-3].str), (yyvsp[-2].str), (yyvsp[-1].str)); PARSEP->endcellCb((yyvsp[-3].fl),""); } #line 21112 "VParseBison.c" /* yacc.c:1646 */ break; case 76: #line 989 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-3].str)); VARIO("interface"); VARDONE((yyvsp[-3].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21118 "VParseBison.c" /* yacc.c:1646 */ break; case 77: #line 991 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-5].str)+"."+(yyvsp[-3].str)); VARIO("interface"); VARDONE((yyvsp[-5].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); PARSEP->instantCb((yyvsp[-5].fl), (yyvsp[-5].str), (yyvsp[-2].str), (yyvsp[-1].str)); PARSEP->endcellCb((yyvsp[-5].fl),""); } #line 21125 "VParseBison.c" /* yacc.c:1646 */ break; case 78: #line 994 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-5].str)+"."+(yyvsp[-3].str)); VARIO("interface"); VARDONE((yyvsp[-5].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21131 "VParseBison.c" /* yacc.c:1646 */ break; case 79: #line 1024 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-6].str)); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), "", ""); PINNUMINC(); } #line 21137 "VParseBison.c" /* yacc.c:1646 */ break; case 80: #line 1026 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-6].str)); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), "", ""); PINNUMINC(); } #line 21143 "VParseBison.c" /* yacc.c:1646 */ break; case 81: #line 1028 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-7].str),(yyvsp[-6].str))); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), "", ""); PINNUMINC(); } #line 21149 "VParseBison.c" /* yacc.c:1646 */ break; case 82: #line 1030 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED(SPACED((yyvsp[-8].str),(yyvsp[-7].str)),(yyvsp[-6].str))); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), "", ""); PINNUMINC(); } #line 21155 "VParseBison.c" /* yacc.c:1646 */ break; case 83: #line 1032 "VParseBison.y" /* yacc.c:1646 */ { /*VARDTYPE-same*/ VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), "", ""); PINNUMINC(); } #line 21161 "VParseBison.c" /* yacc.c:1646 */ break; case 84: #line 1035 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-3].str)); VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21167 "VParseBison.c" /* yacc.c:1646 */ break; case 85: #line 1037 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-3].str)); VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21173 "VParseBison.c" /* yacc.c:1646 */ break; case 86: #line 1039 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-4].str),(yyvsp[-3].str))); VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21179 "VParseBison.c" /* yacc.c:1646 */ break; case 87: #line 1041 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED(SPACED((yyvsp[-5].str),(yyvsp[-4].str)),(yyvsp[-3].str))); VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21185 "VParseBison.c" /* yacc.c:1646 */ break; case 88: #line 1043 "VParseBison.y" /* yacc.c:1646 */ { /*VARDTYPE-same*/ VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); PINNUMINC(); } #line 21191 "VParseBison.c" /* yacc.c:1646 */ break; case 89: #line 1046 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-5].str)); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); PINNUMINC(); } #line 21197 "VParseBison.c" /* yacc.c:1646 */ break; case 90: #line 1048 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-5].str)); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); PINNUMINC(); } #line 21203 "VParseBison.c" /* yacc.c:1646 */ break; case 91: #line 1050 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-6].str),(yyvsp[-5].str))); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); PINNUMINC(); } #line 21209 "VParseBison.c" /* yacc.c:1646 */ break; case 92: #line 1052 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED(SPACED((yyvsp[-7].str),(yyvsp[-6].str)),(yyvsp[-5].str))); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); PINNUMINC(); } #line 21215 "VParseBison.c" /* yacc.c:1646 */ break; case 93: #line 1054 "VParseBison.y" /* yacc.c:1646 */ { /*VARDTYPE-same*/ VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); PINNUMINC(); } #line 21221 "VParseBison.c" /* yacc.c:1646 */ break; case 94: #line 1056 "VParseBison.y" /* yacc.c:1646 */ { } #line 21227 "VParseBison.c" /* yacc.c:1646 */ break; case 95: #line 1060 "VParseBison.y" /* yacc.c:1646 */ { } #line 21233 "VParseBison.c" /* yacc.c:1646 */ break; case 96: #line 1063 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(""/*default_nettype*/); } #line 21239 "VParseBison.c" /* yacc.c:1646 */ break; case 97: #line 1064 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(""/*default_nettype*/); } #line 21245 "VParseBison.c" /* yacc.c:1646 */ break; case 98: #line 1065 "VParseBison.y" /* yacc.c:1646 */ { } #line 21251 "VParseBison.c" /* yacc.c:1646 */ break; case 99: #line 1069 "VParseBison.y" /* yacc.c:1646 */ { } #line 21257 "VParseBison.c" /* yacc.c:1646 */ break; case 100: #line 1070 "VParseBison.y" /* yacc.c:1646 */ { } #line 21263 "VParseBison.c" /* yacc.c:1646 */ break; case 101: #line 1074 "VParseBison.y" /* yacc.c:1646 */ { } #line 21269 "VParseBison.c" /* yacc.c:1646 */ break; case 102: #line 1075 "VParseBison.y" /* yacc.c:1646 */ { } #line 21275 "VParseBison.c" /* yacc.c:1646 */ break; case 103: #line 1079 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 21281 "VParseBison.c" /* yacc.c:1646 */ break; case 104: #line 1080 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 21287 "VParseBison.c" /* yacc.c:1646 */ break; case 105: #line 1090 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endinterfaceCb((yyvsp[-1].fl), (yyvsp[-1].str)); PARSEP->symPopScope(VAstType::INTERFACE); } #line 21294 "VParseBison.c" /* yacc.c:1646 */ break; case 106: #line 1092 "VParseBison.y" /* yacc.c:1646 */ { } #line 21300 "VParseBison.c" /* yacc.c:1646 */ break; case 107: #line 1097 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::INTERFACE,(yyvsp[0].str)); PARSEP->interfaceCb((yyvsp[-2].fl),(yyvsp[-2].str),(yyvsp[0].str)); } #line 21307 "VParseBison.c" /* yacc.c:1646 */ break; case 108: #line 1102 "VParseBison.y" /* yacc.c:1646 */ { } #line 21313 "VParseBison.c" /* yacc.c:1646 */ break; case 109: #line 1103 "VParseBison.y" /* yacc.c:1646 */ { } #line 21319 "VParseBison.c" /* yacc.c:1646 */ break; case 110: #line 1107 "VParseBison.y" /* yacc.c:1646 */ { } #line 21325 "VParseBison.c" /* yacc.c:1646 */ break; case 111: #line 1108 "VParseBison.y" /* yacc.c:1646 */ { } #line 21331 "VParseBison.c" /* yacc.c:1646 */ break; case 112: #line 1112 "VParseBison.y" /* yacc.c:1646 */ { } #line 21337 "VParseBison.c" /* yacc.c:1646 */ break; case 113: #line 1114 "VParseBison.y" /* yacc.c:1646 */ { } #line 21343 "VParseBison.c" /* yacc.c:1646 */ break; case 114: #line 1115 "VParseBison.y" /* yacc.c:1646 */ { } #line 21349 "VParseBison.c" /* yacc.c:1646 */ break; case 115: #line 1116 "VParseBison.y" /* yacc.c:1646 */ { } #line 21355 "VParseBison.c" /* yacc.c:1646 */ break; case 116: #line 1119 "VParseBison.y" /* yacc.c:1646 */ { } #line 21361 "VParseBison.c" /* yacc.c:1646 */ break; case 117: #line 1120 "VParseBison.y" /* yacc.c:1646 */ { } #line 21367 "VParseBison.c" /* yacc.c:1646 */ break; case 118: #line 1122 "VParseBison.y" /* yacc.c:1646 */ { } #line 21373 "VParseBison.c" /* yacc.c:1646 */ break; case 119: #line 1130 "VParseBison.y" /* yacc.c:1646 */ { } #line 21379 "VParseBison.c" /* yacc.c:1646 */ break; case 120: #line 1131 "VParseBison.y" /* yacc.c:1646 */ { } #line 21385 "VParseBison.c" /* yacc.c:1646 */ break; case 121: #line 1139 "VParseBison.y" /* yacc.c:1646 */ { } #line 21391 "VParseBison.c" /* yacc.c:1646 */ break; case 122: #line 1143 "VParseBison.y" /* yacc.c:1646 */ { } #line 21397 "VParseBison.c" /* yacc.c:1646 */ break; case 123: #line 1144 "VParseBison.y" /* yacc.c:1646 */ { } #line 21403 "VParseBison.c" /* yacc.c:1646 */ break; case 124: #line 1148 "VParseBison.y" /* yacc.c:1646 */ { } #line 21409 "VParseBison.c" /* yacc.c:1646 */ break; case 125: #line 1149 "VParseBison.y" /* yacc.c:1646 */ { } #line 21415 "VParseBison.c" /* yacc.c:1646 */ break; case 126: #line 1153 "VParseBison.y" /* yacc.c:1646 */ { } #line 21421 "VParseBison.c" /* yacc.c:1646 */ break; case 127: #line 1154 "VParseBison.y" /* yacc.c:1646 */ { } #line 21427 "VParseBison.c" /* yacc.c:1646 */ break; case 128: #line 1155 "VParseBison.y" /* yacc.c:1646 */ { } #line 21433 "VParseBison.c" /* yacc.c:1646 */ break; case 129: #line 1156 "VParseBison.y" /* yacc.c:1646 */ { } #line 21439 "VParseBison.c" /* yacc.c:1646 */ break; case 130: #line 1158 "VParseBison.y" /* yacc.c:1646 */ { } #line 21445 "VParseBison.c" /* yacc.c:1646 */ break; case 131: #line 1165 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endprogramCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::PROGRAM); } #line 21452 "VParseBison.c" /* yacc.c:1646 */ break; case 132: #line 1168 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::PROGRAM); } #line 21458 "VParseBison.c" /* yacc.c:1646 */ break; case 133: #line 1173 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::PROGRAM,(yyvsp[0].str)); PARSEP->programCb((yyvsp[-2].fl),(yyvsp[-2].str), (yyvsp[0].str)); } #line 21466 "VParseBison.c" /* yacc.c:1646 */ break; case 134: #line 1179 "VParseBison.y" /* yacc.c:1646 */ { } #line 21472 "VParseBison.c" /* yacc.c:1646 */ break; case 135: #line 1180 "VParseBison.y" /* yacc.c:1646 */ { } #line 21478 "VParseBison.c" /* yacc.c:1646 */ break; case 136: #line 1184 "VParseBison.y" /* yacc.c:1646 */ { } #line 21484 "VParseBison.c" /* yacc.c:1646 */ break; case 137: #line 1185 "VParseBison.y" /* yacc.c:1646 */ { } #line 21490 "VParseBison.c" /* yacc.c:1646 */ break; case 138: #line 1189 "VParseBison.y" /* yacc.c:1646 */ { } #line 21496 "VParseBison.c" /* yacc.c:1646 */ break; case 139: #line 1190 "VParseBison.y" /* yacc.c:1646 */ { } #line 21502 "VParseBison.c" /* yacc.c:1646 */ break; case 140: #line 1194 "VParseBison.y" /* yacc.c:1646 */ { } #line 21508 "VParseBison.c" /* yacc.c:1646 */ break; case 141: #line 1195 "VParseBison.y" /* yacc.c:1646 */ { } #line 21514 "VParseBison.c" /* yacc.c:1646 */ break; case 142: #line 1196 "VParseBison.y" /* yacc.c:1646 */ { } #line 21520 "VParseBison.c" /* yacc.c:1646 */ break; case 143: #line 1197 "VParseBison.y" /* yacc.c:1646 */ { } #line 21526 "VParseBison.c" /* yacc.c:1646 */ break; case 144: #line 1198 "VParseBison.y" /* yacc.c:1646 */ { } #line 21532 "VParseBison.c" /* yacc.c:1646 */ break; case 145: #line 1199 "VParseBison.y" /* yacc.c:1646 */ { } #line 21538 "VParseBison.c" /* yacc.c:1646 */ break; case 146: #line 1200 "VParseBison.y" /* yacc.c:1646 */ { } #line 21544 "VParseBison.c" /* yacc.c:1646 */ break; case 147: #line 1204 "VParseBison.y" /* yacc.c:1646 */ { } #line 21550 "VParseBison.c" /* yacc.c:1646 */ break; case 148: #line 1205 "VParseBison.y" /* yacc.c:1646 */ { } #line 21556 "VParseBison.c" /* yacc.c:1646 */ break; case 149: #line 1206 "VParseBison.y" /* yacc.c:1646 */ { } #line 21562 "VParseBison.c" /* yacc.c:1646 */ break; case 150: #line 1207 "VParseBison.y" /* yacc.c:1646 */ { } #line 21568 "VParseBison.c" /* yacc.c:1646 */ break; case 151: #line 1211 "VParseBison.y" /* yacc.c:1646 */ { } #line 21574 "VParseBison.c" /* yacc.c:1646 */ break; case 152: #line 1212 "VParseBison.y" /* yacc.c:1646 */ { } #line 21580 "VParseBison.c" /* yacc.c:1646 */ break; case 153: #line 1213 "VParseBison.y" /* yacc.c:1646 */ { } #line 21586 "VParseBison.c" /* yacc.c:1646 */ break; case 154: #line 1217 "VParseBison.y" /* yacc.c:1646 */ { } #line 21592 "VParseBison.c" /* yacc.c:1646 */ break; case 155: #line 1221 "VParseBison.y" /* yacc.c:1646 */ { } #line 21598 "VParseBison.c" /* yacc.c:1646 */ break; case 156: #line 1222 "VParseBison.y" /* yacc.c:1646 */ { } #line 21604 "VParseBison.c" /* yacc.c:1646 */ break; case 157: #line 1226 "VParseBison.y" /* yacc.c:1646 */ {VARRESET_LIST("");} #line 21610 "VParseBison.c" /* yacc.c:1646 */ break; case 158: #line 1227 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); PARSEP->endmodportCb((yyvsp[-4].fl), "endmodport"); PARSEP->symPopScope(VAstType::MODPORT); } #line 21618 "VParseBison.c" /* yacc.c:1646 */ break; case 159: #line 1234 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::MODPORT,(yyvsp[0].str)); PARSEP->modportCb((yyvsp[0].fl),"modport",(yyvsp[0].str)); } #line 21625 "VParseBison.c" /* yacc.c:1646 */ break; case 160: #line 1239 "VParseBison.y" /* yacc.c:1646 */ { } #line 21631 "VParseBison.c" /* yacc.c:1646 */ break; case 161: #line 1240 "VParseBison.y" /* yacc.c:1646 */ { } #line 21637 "VParseBison.c" /* yacc.c:1646 */ break; case 162: #line 1249 "VParseBison.y" /* yacc.c:1646 */ { } #line 21643 "VParseBison.c" /* yacc.c:1646 */ break; case 163: #line 1251 "VParseBison.y" /* yacc.c:1646 */ { } #line 21649 "VParseBison.c" /* yacc.c:1646 */ break; case 164: #line 1252 "VParseBison.y" /* yacc.c:1646 */ { } #line 21655 "VParseBison.c" /* yacc.c:1646 */ break; case 165: #line 1253 "VParseBison.y" /* yacc.c:1646 */ { } #line 21661 "VParseBison.c" /* yacc.c:1646 */ break; case 166: #line 1256 "VParseBison.y" /* yacc.c:1646 */ { } #line 21667 "VParseBison.c" /* yacc.c:1646 */ break; case 167: #line 1261 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[0].fl),(yyvsp[0].str),"",(yyvsp[0].str)); PINNUMINC(); } #line 21673 "VParseBison.c" /* yacc.c:1646 */ break; case 168: #line 1262 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-3].fl),(yyvsp[-2].str),"",""); PINNUMINC(); } #line 21679 "VParseBison.c" /* yacc.c:1646 */ break; case 169: #line 1263 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-4].fl),(yyvsp[-3].str),"",(yyvsp[-1].str)); PINNUMINC(); } #line 21685 "VParseBison.c" /* yacc.c:1646 */ break; case 170: #line 1267 "VParseBison.y" /* yacc.c:1646 */ { } #line 21691 "VParseBison.c" /* yacc.c:1646 */ break; case 171: #line 1268 "VParseBison.y" /* yacc.c:1646 */ { } #line 21697 "VParseBison.c" /* yacc.c:1646 */ break; case 172: #line 1275 "VParseBison.y" /* yacc.c:1646 */ { } #line 21703 "VParseBison.c" /* yacc.c:1646 */ break; case 173: #line 1279 "VParseBison.y" /* yacc.c:1646 */ { } #line 21709 "VParseBison.c" /* yacc.c:1646 */ break; case 174: #line 1280 "VParseBison.y" /* yacc.c:1646 */ { } #line 21715 "VParseBison.c" /* yacc.c:1646 */ break; case 175: #line 1284 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST("genvar"); VARDONE((yyvsp[-1].fl), (yyvsp[-1].str), "", ""); } #line 21721 "VParseBison.c" /* yacc.c:1646 */ break; case 176: #line 1289 "VParseBison.y" /* yacc.c:1646 */ { } #line 21727 "VParseBison.c" /* yacc.c:1646 */ break; case 177: #line 1297 "VParseBison.y" /* yacc.c:1646 */ { } #line 21733 "VParseBison.c" /* yacc.c:1646 */ break; case 178: #line 1301 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("localparam"); VARDTYPE((yyvsp[0].str)); } #line 21739 "VParseBison.c" /* yacc.c:1646 */ break; case 179: #line 1302 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("localparam"); VARDTYPE((yyvsp[0].str)); } #line 21745 "VParseBison.c" /* yacc.c:1646 */ break; case 180: #line 1303 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("localparam"); VARDTYPE((yyvsp[0].str)); } #line 21751 "VParseBison.c" /* yacc.c:1646 */ break; case 181: #line 1307 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("parameter"); VARDTYPE((yyvsp[0].str)); } #line 21757 "VParseBison.c" /* yacc.c:1646 */ break; case 182: #line 1308 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("parameter"); VARDTYPE((yyvsp[0].str)); } #line 21763 "VParseBison.c" /* yacc.c:1646 */ break; case 183: #line 1309 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("parameter"); VARDTYPE((yyvsp[0].str)); } #line 21769 "VParseBison.c" /* yacc.c:1646 */ break; case 184: #line 1314 "VParseBison.y" /* yacc.c:1646 */ { } #line 21775 "VParseBison.c" /* yacc.c:1646 */ break; case 185: #line 1315 "VParseBison.y" /* yacc.c:1646 */ { /*NEED_S09(CURLINE(),"port localparams");*/ } #line 21781 "VParseBison.c" /* yacc.c:1646 */ break; case 186: #line 1317 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 21787 "VParseBison.c" /* yacc.c:1646 */ break; case 187: #line 1318 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 21793 "VParseBison.c" /* yacc.c:1646 */ break; case 188: #line 1322 "VParseBison.y" /* yacc.c:1646 */ { } #line 21799 "VParseBison.c" /* yacc.c:1646 */ break; case 189: #line 1326 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 21805 "VParseBison.c" /* yacc.c:1646 */ break; case 190: #line 1327 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[-2].str)); VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 21811 "VParseBison.c" /* yacc.c:1646 */ break; case 191: #line 1331 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST("net"); } #line 21817 "VParseBison.c" /* yacc.c:1646 */ break; case 192: #line 1335 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 21823 "VParseBison.c" /* yacc.c:1646 */ break; case 193: #line 1336 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 21829 "VParseBison.c" /* yacc.c:1646 */ break; case 194: #line 1337 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 21835 "VParseBison.c" /* yacc.c:1646 */ break; case 195: #line 1344 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 21841 "VParseBison.c" /* yacc.c:1646 */ break; case 196: #line 1345 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=SPACED((yyvsp[-2].str),(yyvsp[-1].str)); } #line 21847 "VParseBison.c" /* yacc.c:1646 */ break; case 197: #line 1346 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str); } #line 21853 "VParseBison.c" /* yacc.c:1646 */ break; case 198: #line 1347 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=""; } #line 21859 "VParseBison.c" /* yacc.c:1646 */ break; case 199: #line 1351 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21865 "VParseBison.c" /* yacc.c:1646 */ break; case 200: #line 1352 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21871 "VParseBison.c" /* yacc.c:1646 */ break; case 201: #line 1353 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21877 "VParseBison.c" /* yacc.c:1646 */ break; case 202: #line 1354 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21883 "VParseBison.c" /* yacc.c:1646 */ break; case 203: #line 1355 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21889 "VParseBison.c" /* yacc.c:1646 */ break; case 204: #line 1356 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21895 "VParseBison.c" /* yacc.c:1646 */ break; case 205: #line 1357 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21901 "VParseBison.c" /* yacc.c:1646 */ break; case 206: #line 1358 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21907 "VParseBison.c" /* yacc.c:1646 */ break; case 207: #line 1359 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21913 "VParseBison.c" /* yacc.c:1646 */ break; case 208: #line 1360 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21919 "VParseBison.c" /* yacc.c:1646 */ break; case 209: #line 1361 "VParseBison.y" /* yacc.c:1646 */ { VARNET((yyvsp[0].str)); } #line 21925 "VParseBison.c" /* yacc.c:1646 */ break; case 210: #line 1365 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST((yyvsp[0].str)); } #line 21931 "VParseBison.c" /* yacc.c:1646 */ break; case 211: #line 1369 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST((yyvsp[0].str)); } #line 21937 "VParseBison.c" /* yacc.c:1646 */ break; case 212: #line 1374 "VParseBison.y" /* yacc.c:1646 */ { VARIO((yyvsp[0].str)); } #line 21943 "VParseBison.c" /* yacc.c:1646 */ break; case 213: #line 1375 "VParseBison.y" /* yacc.c:1646 */ { VARIO((yyvsp[0].str)); } #line 21949 "VParseBison.c" /* yacc.c:1646 */ break; case 214: #line 1376 "VParseBison.y" /* yacc.c:1646 */ { VARIO((yyvsp[0].str)); } #line 21955 "VParseBison.c" /* yacc.c:1646 */ break; case 215: #line 1377 "VParseBison.y" /* yacc.c:1646 */ { VARIO((yyvsp[0].str)); } #line 21961 "VParseBison.c" /* yacc.c:1646 */ break; case 216: #line 1378 "VParseBison.y" /* yacc.c:1646 */ { VARIO((yyvsp[-1].str)); } #line 21967 "VParseBison.c" /* yacc.c:1646 */ break; case 217: #line 1383 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); VARIO((yyvsp[0].str)); } #line 21973 "VParseBison.c" /* yacc.c:1646 */ break; case 218: #line 1384 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); VARIO((yyvsp[0].str)); } #line 21979 "VParseBison.c" /* yacc.c:1646 */ break; case 219: #line 1385 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); VARIO((yyvsp[0].str)); } #line 21985 "VParseBison.c" /* yacc.c:1646 */ break; case 220: #line 1386 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); VARIO((yyvsp[0].str)); } #line 21991 "VParseBison.c" /* yacc.c:1646 */ break; case 221: #line 1387 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); VARIO((yyvsp[-1].str)); } #line 21997 "VParseBison.c" /* yacc.c:1646 */ break; case 222: #line 1398 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 22003 "VParseBison.c" /* yacc.c:1646 */ break; case 223: #line 1398 "VParseBison.y" /* yacc.c:1646 */ { } #line 22009 "VParseBison.c" /* yacc.c:1646 */ break; case 224: #line 1399 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 22015 "VParseBison.c" /* yacc.c:1646 */ break; case 225: #line 1399 "VParseBison.y" /* yacc.c:1646 */ { } #line 22021 "VParseBison.c" /* yacc.c:1646 */ break; case 226: #line 1400 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 22027 "VParseBison.c" /* yacc.c:1646 */ break; case 227: #line 1400 "VParseBison.y" /* yacc.c:1646 */ { } #line 22033 "VParseBison.c" /* yacc.c:1646 */ break; case 228: #line 1401 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE("");/*default_nettype*/} #line 22039 "VParseBison.c" /* yacc.c:1646 */ break; case 229: #line 1401 "VParseBison.y" /* yacc.c:1646 */ { } #line 22045 "VParseBison.c" /* yacc.c:1646 */ break; case 230: #line 1411 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 22051 "VParseBison.c" /* yacc.c:1646 */ break; case 231: #line 1411 "VParseBison.y" /* yacc.c:1646 */ { } #line 22057 "VParseBison.c" /* yacc.c:1646 */ break; case 232: #line 1412 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 22063 "VParseBison.c" /* yacc.c:1646 */ break; case 233: #line 1412 "VParseBison.y" /* yacc.c:1646 */ { } #line 22069 "VParseBison.c" /* yacc.c:1646 */ break; case 234: #line 1416 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22075 "VParseBison.c" /* yacc.c:1646 */ break; case 235: #line 1417 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22081 "VParseBison.c" /* yacc.c:1646 */ break; case 236: #line 1418 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22087 "VParseBison.c" /* yacc.c:1646 */ break; case 237: #line 1419 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22093 "VParseBison.c" /* yacc.c:1646 */ break; case 238: #line 1420 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22099 "VParseBison.c" /* yacc.c:1646 */ break; case 239: #line 1421 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22105 "VParseBison.c" /* yacc.c:1646 */ break; case 240: #line 1425 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22111 "VParseBison.c" /* yacc.c:1646 */ break; case 241: #line 1426 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22117 "VParseBison.c" /* yacc.c:1646 */ break; case 242: #line 1427 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22123 "VParseBison.c" /* yacc.c:1646 */ break; case 243: #line 1431 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22129 "VParseBison.c" /* yacc.c:1646 */ break; case 244: #line 1432 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22135 "VParseBison.c" /* yacc.c:1646 */ break; case 245: #line 1433 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22141 "VParseBison.c" /* yacc.c:1646 */ break; case 246: #line 1437 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 22147 "VParseBison.c" /* yacc.c:1646 */ break; case 247: #line 1438 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22153 "VParseBison.c" /* yacc.c:1646 */ break; case 248: #line 1442 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22159 "VParseBison.c" /* yacc.c:1646 */ break; case 249: #line 1443 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22165 "VParseBison.c" /* yacc.c:1646 */ break; case 250: #line 1450 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22171 "VParseBison.c" /* yacc.c:1646 */ break; case 251: #line 1455 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22177 "VParseBison.c" /* yacc.c:1646 */ break; case 252: #line 1456 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22183 "VParseBison.c" /* yacc.c:1646 */ break; case 253: #line 1457 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22189 "VParseBison.c" /* yacc.c:1646 */ break; case 254: #line 1458 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22195 "VParseBison.c" /* yacc.c:1646 */ break; case 255: #line 1463 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22201 "VParseBison.c" /* yacc.c:1646 */ break; case 256: #line 1464 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22207 "VParseBison.c" /* yacc.c:1646 */ break; case 257: #line 1465 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22213 "VParseBison.c" /* yacc.c:1646 */ break; case 258: #line 1468 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 22219 "VParseBison.c" /* yacc.c:1646 */ break; case 259: #line 1474 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22225 "VParseBison.c" /* yacc.c:1646 */ break; case 260: #line 1478 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str)=SPACED((yyvsp[-5].str),SPACED((yyvsp[-4].str),(yyvsp[-3].str))); } #line 22231 "VParseBison.c" /* yacc.c:1646 */ break; case 261: #line 1480 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=SPACED((yyvsp[-4].str),(yyvsp[-3].str)); } #line 22237 "VParseBison.c" /* yacc.c:1646 */ break; case 262: #line 1484 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=SPACED((yyvsp[-2].str),SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 22243 "VParseBison.c" /* yacc.c:1646 */ break; case 263: #line 1485 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=SPACED((yyvsp[-1].str),(yyvsp[0].str)); } #line 22249 "VParseBison.c" /* yacc.c:1646 */ break; case 264: #line 1486 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22255 "VParseBison.c" /* yacc.c:1646 */ break; case 265: #line 1487 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::STRUCT); } #line 22261 "VParseBison.c" /* yacc.c:1646 */ break; case 266: #line 1489 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str)=(yyvsp[-6].str); PARSEP->symPopScope(VAstType::STRUCT); } #line 22267 "VParseBison.c" /* yacc.c:1646 */ break; case 267: #line 1490 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::UNION); } #line 22273 "VParseBison.c" /* yacc.c:1646 */ break; case 268: #line 1492 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str)=(yyvsp[-7].str); PARSEP->symPopScope(VAstType::UNION); } #line 22279 "VParseBison.c" /* yacc.c:1646 */ break; case 269: #line 1493 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22285 "VParseBison.c" /* yacc.c:1646 */ break; case 270: #line 1494 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22291 "VParseBison.c" /* yacc.c:1646 */ break; case 271: #line 1495 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22297 "VParseBison.c" /* yacc.c:1646 */ break; case 272: #line 1502 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=SPACED((yyvsp[-3].str),SPACED((yyvsp[-2].str),(yyvsp[-1].str))); } #line 22303 "VParseBison.c" /* yacc.c:1646 */ break; case 273: #line 1504 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=SPACED((yyvsp[-2].str),(yyvsp[-1].str)); } #line 22309 "VParseBison.c" /* yacc.c:1646 */ break; case 274: #line 1510 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22315 "VParseBison.c" /* yacc.c:1646 */ break; case 275: #line 1511 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22321 "VParseBison.c" /* yacc.c:1646 */ break; case 276: #line 1520 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 22327 "VParseBison.c" /* yacc.c:1646 */ break; case 277: #line 1526 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22333 "VParseBison.c" /* yacc.c:1646 */ break; case 278: #line 1527 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22339 "VParseBison.c" /* yacc.c:1646 */ break; case 279: #line 1531 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22345 "VParseBison.c" /* yacc.c:1646 */ break; case 280: #line 1532 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str); } #line 22351 "VParseBison.c" /* yacc.c:1646 */ break; case 281: #line 1533 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str); } #line 22357 "VParseBison.c" /* yacc.c:1646 */ break; case 282: #line 1537 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)="type("+(yyvsp[-1].str)+")"; } #line 22363 "VParseBison.c" /* yacc.c:1646 */ break; case 283: #line 1541 "VParseBison.y" /* yacc.c:1646 */ { } #line 22369 "VParseBison.c" /* yacc.c:1646 */ break; case 284: #line 1542 "VParseBison.y" /* yacc.c:1646 */ { } #line 22375 "VParseBison.c" /* yacc.c:1646 */ break; case 285: #line 1546 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST("member"); VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 22381 "VParseBison.c" /* yacc.c:1646 */ break; case 286: #line 1547 "VParseBison.y" /* yacc.c:1646 */ { } #line 22387 "VParseBison.c" /* yacc.c:1646 */ break; case 287: #line 1551 "VParseBison.y" /* yacc.c:1646 */ { } #line 22393 "VParseBison.c" /* yacc.c:1646 */ break; case 288: #line 1552 "VParseBison.y" /* yacc.c:1646 */ { } #line 22399 "VParseBison.c" /* yacc.c:1646 */ break; case 289: #line 1557 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); } #line 22405 "VParseBison.c" /* yacc.c:1646 */ break; case 290: #line 1559 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); } #line 22411 "VParseBison.c" /* yacc.c:1646 */ break; case 291: #line 1560 "VParseBison.y" /* yacc.c:1646 */ { } #line 22417 "VParseBison.c" /* yacc.c:1646 */ break; case 292: #line 1570 "VParseBison.y" /* yacc.c:1646 */ { } #line 22423 "VParseBison.c" /* yacc.c:1646 */ break; case 293: #line 1574 "VParseBison.y" /* yacc.c:1646 */ { } #line 22429 "VParseBison.c" /* yacc.c:1646 */ break; case 294: #line 1575 "VParseBison.y" /* yacc.c:1646 */ { } #line 22435 "VParseBison.c" /* yacc.c:1646 */ break; case 295: #line 1580 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); } #line 22441 "VParseBison.c" /* yacc.c:1646 */ break; case 296: #line 1582 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); } #line 22447 "VParseBison.c" /* yacc.c:1646 */ break; case 297: #line 1586 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22453 "VParseBison.c" /* yacc.c:1646 */ break; case 298: #line 1587 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22459 "VParseBison.c" /* yacc.c:1646 */ break; case 299: #line 1588 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22465 "VParseBison.c" /* yacc.c:1646 */ break; case 300: #line 1592 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 22471 "VParseBison.c" /* yacc.c:1646 */ break; case 301: #line 1593 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22477 "VParseBison.c" /* yacc.c:1646 */ break; case 302: #line 1597 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22483 "VParseBison.c" /* yacc.c:1646 */ break; case 303: #line 1598 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 22489 "VParseBison.c" /* yacc.c:1646 */ break; case 304: #line 1603 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=""; } #line 22495 "VParseBison.c" /* yacc.c:1646 */ break; case 305: #line 1605 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22501 "VParseBison.c" /* yacc.c:1646 */ break; case 306: #line 1606 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)="["+(yyvsp[-1].str)+"]"; } #line 22507 "VParseBison.c" /* yacc.c:1646 */ break; case 307: #line 1608 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)="["+(yyvsp[-1].str)+"]"; } #line 22513 "VParseBison.c" /* yacc.c:1646 */ break; case 308: #line 1609 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)="[*]"; } #line 22519 "VParseBison.c" /* yacc.c:1646 */ break; case 309: #line 1610 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)="[*]"; } #line 22525 "VParseBison.c" /* yacc.c:1646 */ break; case 310: #line 1617 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 22531 "VParseBison.c" /* yacc.c:1646 */ break; case 311: #line 1618 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22537 "VParseBison.c" /* yacc.c:1646 */ break; case 312: #line 1622 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22543 "VParseBison.c" /* yacc.c:1646 */ break; case 313: #line 1623 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22549 "VParseBison.c" /* yacc.c:1646 */ break; case 314: #line 1627 "VParseBison.y" /* yacc.c:1646 */ { } #line 22555 "VParseBison.c" /* yacc.c:1646 */ break; case 315: #line 1628 "VParseBison.y" /* yacc.c:1646 */ { } #line 22561 "VParseBison.c" /* yacc.c:1646 */ break; case 316: #line 1632 "VParseBison.y" /* yacc.c:1646 */ { } #line 22567 "VParseBison.c" /* yacc.c:1646 */ break; case 317: #line 1633 "VParseBison.y" /* yacc.c:1646 */ { } #line 22573 "VParseBison.c" /* yacc.c:1646 */ break; case 318: #line 1641 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-4].str); } #line 22579 "VParseBison.c" /* yacc.c:1646 */ break; case 319: #line 1645 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="enum"; } #line 22585 "VParseBison.c" /* yacc.c:1646 */ break; case 320: #line 1648 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 22591 "VParseBison.c" /* yacc.c:1646 */ break; case 321: #line 1649 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 22597 "VParseBison.c" /* yacc.c:1646 */ break; case 322: #line 1651 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=SPACED((yyvsp[-1].str),(yyvsp[0].str)); } #line 22603 "VParseBison.c" /* yacc.c:1646 */ break; case 323: #line 1652 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=SPACED((yyvsp[-2].str),SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 22609 "VParseBison.c" /* yacc.c:1646 */ break; case 324: #line 1655 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=SPACED((yyvsp[-1].str),(yyvsp[0].str)); } #line 22615 "VParseBison.c" /* yacc.c:1646 */ break; case 325: #line 1659 "VParseBison.y" /* yacc.c:1646 */ { } #line 22621 "VParseBison.c" /* yacc.c:1646 */ break; case 326: #line 1660 "VParseBison.y" /* yacc.c:1646 */ { } #line 22627 "VParseBison.c" /* yacc.c:1646 */ break; case 327: #line 1664 "VParseBison.y" /* yacc.c:1646 */ { } #line 22633 "VParseBison.c" /* yacc.c:1646 */ break; case 328: #line 1668 "VParseBison.y" /* yacc.c:1646 */ { } #line 22639 "VParseBison.c" /* yacc.c:1646 */ break; case 329: #line 1669 "VParseBison.y" /* yacc.c:1646 */ { } #line 22645 "VParseBison.c" /* yacc.c:1646 */ break; case 330: #line 1670 "VParseBison.y" /* yacc.c:1646 */ { } #line 22651 "VParseBison.c" /* yacc.c:1646 */ break; case 331: #line 1674 "VParseBison.y" /* yacc.c:1646 */ { } #line 22657 "VParseBison.c" /* yacc.c:1646 */ break; case 332: #line 1675 "VParseBison.y" /* yacc.c:1646 */ { } #line 22663 "VParseBison.c" /* yacc.c:1646 */ break; case 333: #line 1679 "VParseBison.y" /* yacc.c:1646 */ { } #line 22669 "VParseBison.c" /* yacc.c:1646 */ break; case 334: #line 1687 "VParseBison.y" /* yacc.c:1646 */ { } #line 22675 "VParseBison.c" /* yacc.c:1646 */ break; case 335: #line 1688 "VParseBison.y" /* yacc.c:1646 */ { } #line 22681 "VParseBison.c" /* yacc.c:1646 */ break; case 336: #line 1689 "VParseBison.y" /* yacc.c:1646 */ { } #line 22687 "VParseBison.c" /* yacc.c:1646 */ break; case 337: #line 1695 "VParseBison.y" /* yacc.c:1646 */ { } #line 22693 "VParseBison.c" /* yacc.c:1646 */ break; case 338: #line 1699 "VParseBison.y" /* yacc.c:1646 */ { } #line 22699 "VParseBison.c" /* yacc.c:1646 */ break; case 339: #line 1700 "VParseBison.y" /* yacc.c:1646 */ { } #line 22705 "VParseBison.c" /* yacc.c:1646 */ break; case 340: #line 1701 "VParseBison.y" /* yacc.c:1646 */ { } #line 22711 "VParseBison.c" /* yacc.c:1646 */ break; case 341: #line 1709 "VParseBison.y" /* yacc.c:1646 */ { } #line 22717 "VParseBison.c" /* yacc.c:1646 */ break; case 342: #line 1714 "VParseBison.y" /* yacc.c:1646 */ { } #line 22723 "VParseBison.c" /* yacc.c:1646 */ break; case 343: #line 1719 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("var"); VARDTYPE(SPACED((yyvsp[-3].str),(yyvsp[0].str))); } #line 22729 "VParseBison.c" /* yacc.c:1646 */ break; case 344: #line 1720 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("var"); VARDTYPE((yyvsp[-2].str)); } #line 22735 "VParseBison.c" /* yacc.c:1646 */ break; case 345: #line 1721 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("var"); VARDTYPE(SPACED((yyvsp[-4].str),SPACED((yyvsp[-1].str),(yyvsp[0].str)))); } #line 22741 "VParseBison.c" /* yacc.c:1646 */ break; case 346: #line 1724 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("var"); VARDTYPE((yyvsp[0].str)); } #line 22747 "VParseBison.c" /* yacc.c:1646 */ break; case 347: #line 1725 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("var"); VARDTYPE((yyvsp[0].str)); } #line 22753 "VParseBison.c" /* yacc.c:1646 */ break; case 348: #line 1726 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDECL("var"); VARDTYPE(SPACED((yyvsp[-2].str),(yyvsp[0].str))); } #line 22759 "VParseBison.c" /* yacc.c:1646 */ break; case 349: #line 1737 "VParseBison.y" /* yacc.c:1646 */ { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,(yyvsp[0].str))); } #line 22765 "VParseBison.c" /* yacc.c:1646 */ break; case 350: #line 1738 "VParseBison.y" /* yacc.c:1646 */ { VARDECL("var"); VARDTYPE(GRAMMARP->m_varDType); } #line 22771 "VParseBison.c" /* yacc.c:1646 */ break; case 351: #line 1739 "VParseBison.y" /* yacc.c:1646 */ { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,SPACED((yyvsp[-1].str),(yyvsp[0].str)))); } #line 22777 "VParseBison.c" /* yacc.c:1646 */ break; case 352: #line 1742 "VParseBison.y" /* yacc.c:1646 */ { VARDECL("var"); VARDTYPE(SPACED(GRAMMARP->m_varDType,(yyvsp[0].str))); } #line 22783 "VParseBison.c" /* yacc.c:1646 */ break; case 353: #line 1750 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::TYPE, (yyvsp[-1].str)); } #line 22789 "VParseBison.c" /* yacc.c:1646 */ break; case 354: #line 1753 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::TYPE, (yyvsp[-4].str)); } #line 22795 "VParseBison.c" /* yacc.c:1646 */ break; case 355: #line 1755 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::TYPE, (yyvsp[-1].str)); } #line 22801 "VParseBison.c" /* yacc.c:1646 */ break; case 356: #line 1759 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = ""; } #line 22807 "VParseBison.c" /* yacc.c:1646 */ break; case 357: #line 1760 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 22813 "VParseBison.c" /* yacc.c:1646 */ break; case 358: #line 1765 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = ""; } #line 22819 "VParseBison.c" /* yacc.c:1646 */ break; case 359: #line 1766 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = SPACED((yyvsp[-1].str),(yyvsp[0].str)); } #line 22825 "VParseBison.c" /* yacc.c:1646 */ break; case 360: #line 1767 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 22831 "VParseBison.c" /* yacc.c:1646 */ break; case 361: #line 1772 "VParseBison.y" /* yacc.c:1646 */ { } #line 22837 "VParseBison.c" /* yacc.c:1646 */ break; case 362: #line 1778 "VParseBison.y" /* yacc.c:1646 */ { VARDONETYPEDEF((yyvsp[-4].fl),(yyvsp[-2].str),(yyvsp[-3].str),(yyvsp[-1].str)); } #line 22843 "VParseBison.c" /* yacc.c:1646 */ break; case 363: #line 1780 "VParseBison.y" /* yacc.c:1646 */ { VARDONETYPEDEF((yyvsp[-6].fl),(yyvsp[-1].str),(yyvsp[-5].str)+(yyvsp[-4].str)+"."+(yyvsp[-2].str),""); } #line 22849 "VParseBison.c" /* yacc.c:1646 */ break; case 364: #line 1782 "VParseBison.y" /* yacc.c:1646 */ { VARDONETYPEDEF((yyvsp[-2].fl),(yyvsp[-1].str),"",""); } #line 22855 "VParseBison.c" /* yacc.c:1646 */ break; case 365: #line 1783 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::ENUM, (yyvsp[-1].str)); } #line 22861 "VParseBison.c" /* yacc.c:1646 */ break; case 366: #line 1784 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::STRUCT, (yyvsp[-1].str)); } #line 22867 "VParseBison.c" /* yacc.c:1646 */ break; case 367: #line 1785 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::UNION, (yyvsp[-1].str)); } #line 22873 "VParseBison.c" /* yacc.c:1646 */ break; case 368: #line 1786 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::CLASS, (yyvsp[-1].str)); } #line 22879 "VParseBison.c" /* yacc.c:1646 */ break; case 369: #line 1787 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().replaceInsert(VAstType::CLASS, (yyvsp[-2].str)); } #line 22885 "VParseBison.c" /* yacc.c:1646 */ break; case 370: #line 1794 "VParseBison.y" /* yacc.c:1646 */ { } #line 22891 "VParseBison.c" /* yacc.c:1646 */ break; case 371: #line 1795 "VParseBison.y" /* yacc.c:1646 */ { } #line 22897 "VParseBison.c" /* yacc.c:1646 */ break; case 372: #line 1799 "VParseBison.y" /* yacc.c:1646 */ { } #line 22903 "VParseBison.c" /* yacc.c:1646 */ break; case 373: #line 1800 "VParseBison.y" /* yacc.c:1646 */ { } #line 22909 "VParseBison.c" /* yacc.c:1646 */ break; case 374: #line 1804 "VParseBison.y" /* yacc.c:1646 */ { } #line 22915 "VParseBison.c" /* yacc.c:1646 */ break; case 375: #line 1805 "VParseBison.y" /* yacc.c:1646 */ { } #line 22921 "VParseBison.c" /* yacc.c:1646 */ break; case 376: #line 1809 "VParseBison.y" /* yacc.c:1646 */ { } #line 22927 "VParseBison.c" /* yacc.c:1646 */ break; case 377: #line 1810 "VParseBison.y" /* yacc.c:1646 */ { } #line 22933 "VParseBison.c" /* yacc.c:1646 */ break; case 378: #line 1811 "VParseBison.y" /* yacc.c:1646 */ { } #line 22939 "VParseBison.c" /* yacc.c:1646 */ break; case 379: #line 1812 "VParseBison.y" /* yacc.c:1646 */ { } #line 22945 "VParseBison.c" /* yacc.c:1646 */ break; case 380: #line 1813 "VParseBison.y" /* yacc.c:1646 */ { } #line 22951 "VParseBison.c" /* yacc.c:1646 */ break; case 381: #line 1814 "VParseBison.y" /* yacc.c:1646 */ { } #line 22957 "VParseBison.c" /* yacc.c:1646 */ break; case 382: #line 1815 "VParseBison.y" /* yacc.c:1646 */ { } #line 22963 "VParseBison.c" /* yacc.c:1646 */ break; case 383: #line 1816 "VParseBison.y" /* yacc.c:1646 */ { } #line 22969 "VParseBison.c" /* yacc.c:1646 */ break; case 384: #line 1821 "VParseBison.y" /* yacc.c:1646 */ { } #line 22975 "VParseBison.c" /* yacc.c:1646 */ break; case 385: #line 1825 "VParseBison.y" /* yacc.c:1646 */ { } #line 22981 "VParseBison.c" /* yacc.c:1646 */ break; case 386: #line 1827 "VParseBison.y" /* yacc.c:1646 */ { } #line 22987 "VParseBison.c" /* yacc.c:1646 */ break; case 387: #line 1831 "VParseBison.y" /* yacc.c:1646 */ { } #line 22993 "VParseBison.c" /* yacc.c:1646 */ break; case 388: #line 1835 "VParseBison.y" /* yacc.c:1646 */ { } #line 22999 "VParseBison.c" /* yacc.c:1646 */ break; case 389: #line 1836 "VParseBison.y" /* yacc.c:1646 */ { } #line 23005 "VParseBison.c" /* yacc.c:1646 */ break; case 390: #line 1837 "VParseBison.y" /* yacc.c:1646 */ { } #line 23011 "VParseBison.c" /* yacc.c:1646 */ break; case 391: #line 1838 "VParseBison.y" /* yacc.c:1646 */ { } #line 23017 "VParseBison.c" /* yacc.c:1646 */ break; case 392: #line 1840 "VParseBison.y" /* yacc.c:1646 */ { } #line 23023 "VParseBison.c" /* yacc.c:1646 */ break; case 393: #line 1841 "VParseBison.y" /* yacc.c:1646 */ { } #line 23029 "VParseBison.c" /* yacc.c:1646 */ break; case 394: #line 1842 "VParseBison.y" /* yacc.c:1646 */ { } #line 23035 "VParseBison.c" /* yacc.c:1646 */ break; case 395: #line 1844 "VParseBison.y" /* yacc.c:1646 */ { } #line 23041 "VParseBison.c" /* yacc.c:1646 */ break; case 396: #line 1845 "VParseBison.y" /* yacc.c:1646 */ { } #line 23047 "VParseBison.c" /* yacc.c:1646 */ break; case 397: #line 1846 "VParseBison.y" /* yacc.c:1646 */ { } #line 23053 "VParseBison.c" /* yacc.c:1646 */ break; case 398: #line 1847 "VParseBison.y" /* yacc.c:1646 */ { } #line 23059 "VParseBison.c" /* yacc.c:1646 */ break; case 399: #line 1849 "VParseBison.y" /* yacc.c:1646 */ { } #line 23065 "VParseBison.c" /* yacc.c:1646 */ break; case 400: #line 1853 "VParseBison.y" /* yacc.c:1646 */ { } #line 23071 "VParseBison.c" /* yacc.c:1646 */ break; case 401: #line 1857 "VParseBison.y" /* yacc.c:1646 */ { } #line 23077 "VParseBison.c" /* yacc.c:1646 */ break; case 402: #line 1861 "VParseBison.y" /* yacc.c:1646 */ { } #line 23083 "VParseBison.c" /* yacc.c:1646 */ break; case 403: #line 1865 "VParseBison.y" /* yacc.c:1646 */ { } #line 23089 "VParseBison.c" /* yacc.c:1646 */ break; case 404: #line 1866 "VParseBison.y" /* yacc.c:1646 */ { } #line 23095 "VParseBison.c" /* yacc.c:1646 */ break; case 405: #line 1867 "VParseBison.y" /* yacc.c:1646 */ { } #line 23101 "VParseBison.c" /* yacc.c:1646 */ break; case 406: #line 1868 "VParseBison.y" /* yacc.c:1646 */ { } #line 23107 "VParseBison.c" /* yacc.c:1646 */ break; case 407: #line 1869 "VParseBison.y" /* yacc.c:1646 */ { } #line 23113 "VParseBison.c" /* yacc.c:1646 */ break; case 408: #line 1873 "VParseBison.y" /* yacc.c:1646 */ { } #line 23119 "VParseBison.c" /* yacc.c:1646 */ break; case 409: #line 1874 "VParseBison.y" /* yacc.c:1646 */ { } #line 23125 "VParseBison.c" /* yacc.c:1646 */ break; case 410: #line 1880 "VParseBison.y" /* yacc.c:1646 */ { } #line 23131 "VParseBison.c" /* yacc.c:1646 */ break; case 411: #line 1881 "VParseBison.y" /* yacc.c:1646 */ { } #line 23137 "VParseBison.c" /* yacc.c:1646 */ break; case 412: #line 1885 "VParseBison.y" /* yacc.c:1646 */ { } #line 23143 "VParseBison.c" /* yacc.c:1646 */ break; case 413: #line 1886 "VParseBison.y" /* yacc.c:1646 */ { } #line 23149 "VParseBison.c" /* yacc.c:1646 */ break; case 414: #line 1890 "VParseBison.y" /* yacc.c:1646 */ { } #line 23155 "VParseBison.c" /* yacc.c:1646 */ break; case 415: #line 1897 "VParseBison.y" /* yacc.c:1646 */ { } #line 23161 "VParseBison.c" /* yacc.c:1646 */ break; case 416: #line 1909 "VParseBison.y" /* yacc.c:1646 */ { } #line 23167 "VParseBison.c" /* yacc.c:1646 */ break; case 417: #line 1910 "VParseBison.y" /* yacc.c:1646 */ { } #line 23173 "VParseBison.c" /* yacc.c:1646 */ break; case 418: #line 1914 "VParseBison.y" /* yacc.c:1646 */ { } #line 23179 "VParseBison.c" /* yacc.c:1646 */ break; case 419: #line 1914 "VParseBison.y" /* yacc.c:1646 */ { } #line 23185 "VParseBison.c" /* yacc.c:1646 */ break; case 420: #line 1919 "VParseBison.y" /* yacc.c:1646 */ { } #line 23191 "VParseBison.c" /* yacc.c:1646 */ break; case 421: #line 1920 "VParseBison.y" /* yacc.c:1646 */ { } #line 23197 "VParseBison.c" /* yacc.c:1646 */ break; case 422: #line 1924 "VParseBison.y" /* yacc.c:1646 */ { } #line 23203 "VParseBison.c" /* yacc.c:1646 */ break; case 423: #line 1924 "VParseBison.y" /* yacc.c:1646 */ { } #line 23209 "VParseBison.c" /* yacc.c:1646 */ break; case 424: #line 1928 "VParseBison.y" /* yacc.c:1646 */ { } #line 23215 "VParseBison.c" /* yacc.c:1646 */ break; case 425: #line 1929 "VParseBison.y" /* yacc.c:1646 */ { } #line 23221 "VParseBison.c" /* yacc.c:1646 */ break; case 426: #line 1930 "VParseBison.y" /* yacc.c:1646 */ { } #line 23227 "VParseBison.c" /* yacc.c:1646 */ break; case 427: #line 1931 "VParseBison.y" /* yacc.c:1646 */ { } #line 23233 "VParseBison.c" /* yacc.c:1646 */ break; case 428: #line 1932 "VParseBison.y" /* yacc.c:1646 */ { } #line 23239 "VParseBison.c" /* yacc.c:1646 */ break; case 429: #line 1933 "VParseBison.y" /* yacc.c:1646 */ { } #line 23245 "VParseBison.c" /* yacc.c:1646 */ break; case 430: #line 1937 "VParseBison.y" /* yacc.c:1646 */ { } #line 23251 "VParseBison.c" /* yacc.c:1646 */ break; case 431: #line 1937 "VParseBison.y" /* yacc.c:1646 */ { } #line 23257 "VParseBison.c" /* yacc.c:1646 */ break; case 432: #line 1937 "VParseBison.y" /* yacc.c:1646 */ { } #line 23263 "VParseBison.c" /* yacc.c:1646 */ break; case 433: #line 1937 "VParseBison.y" /* yacc.c:1646 */ { } #line 23269 "VParseBison.c" /* yacc.c:1646 */ break; case 434: #line 1937 "VParseBison.y" /* yacc.c:1646 */ { } #line 23275 "VParseBison.c" /* yacc.c:1646 */ break; case 435: #line 1937 "VParseBison.y" /* yacc.c:1646 */ { } #line 23281 "VParseBison.c" /* yacc.c:1646 */ break; case 436: #line 1941 "VParseBison.y" /* yacc.c:1646 */ { } #line 23287 "VParseBison.c" /* yacc.c:1646 */ break; case 437: #line 1942 "VParseBison.y" /* yacc.c:1646 */ { } #line 23293 "VParseBison.c" /* yacc.c:1646 */ break; case 438: #line 1946 "VParseBison.y" /* yacc.c:1646 */ { } #line 23299 "VParseBison.c" /* yacc.c:1646 */ break; case 439: #line 1946 "VParseBison.y" /* yacc.c:1646 */ { } #line 23305 "VParseBison.c" /* yacc.c:1646 */ break; case 440: #line 1950 "VParseBison.y" /* yacc.c:1646 */ { } #line 23311 "VParseBison.c" /* yacc.c:1646 */ break; case 441: #line 1951 "VParseBison.y" /* yacc.c:1646 */ { } #line 23317 "VParseBison.c" /* yacc.c:1646 */ break; case 442: #line 1955 "VParseBison.y" /* yacc.c:1646 */ { } #line 23323 "VParseBison.c" /* yacc.c:1646 */ break; case 443: #line 1955 "VParseBison.y" /* yacc.c:1646 */ { } #line 23329 "VParseBison.c" /* yacc.c:1646 */ break; case 444: #line 1960 "VParseBison.y" /* yacc.c:1646 */ { } #line 23335 "VParseBison.c" /* yacc.c:1646 */ break; case 445: #line 1962 "VParseBison.y" /* yacc.c:1646 */ { } #line 23341 "VParseBison.c" /* yacc.c:1646 */ break; case 446: #line 1969 "VParseBison.y" /* yacc.c:1646 */ { } #line 23347 "VParseBison.c" /* yacc.c:1646 */ break; case 447: #line 1974 "VParseBison.y" /* yacc.c:1646 */ { } #line 23353 "VParseBison.c" /* yacc.c:1646 */ break; case 448: #line 1975 "VParseBison.y" /* yacc.c:1646 */ { } #line 23359 "VParseBison.c" /* yacc.c:1646 */ break; case 449: #line 1977 "VParseBison.y" /* yacc.c:1646 */ { } #line 23365 "VParseBison.c" /* yacc.c:1646 */ break; case 450: #line 1978 "VParseBison.y" /* yacc.c:1646 */ { } #line 23371 "VParseBison.c" /* yacc.c:1646 */ break; case 451: #line 1982 "VParseBison.y" /* yacc.c:1646 */ { } #line 23377 "VParseBison.c" /* yacc.c:1646 */ break; case 452: #line 1982 "VParseBison.y" /* yacc.c:1646 */ { } #line 23383 "VParseBison.c" /* yacc.c:1646 */ break; case 453: #line 1982 "VParseBison.y" /* yacc.c:1646 */ { } #line 23389 "VParseBison.c" /* yacc.c:1646 */ break; case 454: #line 1982 "VParseBison.y" /* yacc.c:1646 */ { } #line 23395 "VParseBison.c" /* yacc.c:1646 */ break; case 455: #line 1987 "VParseBison.y" /* yacc.c:1646 */ { } #line 23401 "VParseBison.c" /* yacc.c:1646 */ break; case 456: #line 1991 "VParseBison.y" /* yacc.c:1646 */ { } #line 23407 "VParseBison.c" /* yacc.c:1646 */ break; case 457: #line 1995 "VParseBison.y" /* yacc.c:1646 */ { } #line 23413 "VParseBison.c" /* yacc.c:1646 */ break; case 458: #line 1996 "VParseBison.y" /* yacc.c:1646 */ { } #line 23419 "VParseBison.c" /* yacc.c:1646 */ break; case 460: #line 2001 "VParseBison.y" /* yacc.c:1646 */ { } #line 23425 "VParseBison.c" /* yacc.c:1646 */ break; case 461: #line 2002 "VParseBison.y" /* yacc.c:1646 */ { } #line 23431 "VParseBison.c" /* yacc.c:1646 */ break; case 462: #line 2003 "VParseBison.y" /* yacc.c:1646 */ { } #line 23437 "VParseBison.c" /* yacc.c:1646 */ break; case 463: #line 2004 "VParseBison.y" /* yacc.c:1646 */ { } #line 23443 "VParseBison.c" /* yacc.c:1646 */ break; case 464: #line 2005 "VParseBison.y" /* yacc.c:1646 */ { } #line 23449 "VParseBison.c" /* yacc.c:1646 */ break; case 465: #line 2006 "VParseBison.y" /* yacc.c:1646 */ { } #line 23455 "VParseBison.c" /* yacc.c:1646 */ break; case 466: #line 2007 "VParseBison.y" /* yacc.c:1646 */ { } #line 23461 "VParseBison.c" /* yacc.c:1646 */ break; case 467: #line 2008 "VParseBison.y" /* yacc.c:1646 */ { } #line 23467 "VParseBison.c" /* yacc.c:1646 */ break; case 468: #line 2009 "VParseBison.y" /* yacc.c:1646 */ { } #line 23473 "VParseBison.c" /* yacc.c:1646 */ break; case 469: #line 2010 "VParseBison.y" /* yacc.c:1646 */ { } #line 23479 "VParseBison.c" /* yacc.c:1646 */ break; case 470: #line 2011 "VParseBison.y" /* yacc.c:1646 */ { } #line 23485 "VParseBison.c" /* yacc.c:1646 */ break; case 471: #line 2012 "VParseBison.y" /* yacc.c:1646 */ { } #line 23491 "VParseBison.c" /* yacc.c:1646 */ break; case 472: #line 2014 "VParseBison.y" /* yacc.c:1646 */ { } #line 23497 "VParseBison.c" /* yacc.c:1646 */ break; case 473: #line 2015 "VParseBison.y" /* yacc.c:1646 */ { } #line 23503 "VParseBison.c" /* yacc.c:1646 */ break; case 474: #line 2016 "VParseBison.y" /* yacc.c:1646 */ { } #line 23509 "VParseBison.c" /* yacc.c:1646 */ break; case 475: #line 2017 "VParseBison.y" /* yacc.c:1646 */ { } #line 23515 "VParseBison.c" /* yacc.c:1646 */ break; case 476: #line 2021 "VParseBison.y" /* yacc.c:1646 */ { } #line 23521 "VParseBison.c" /* yacc.c:1646 */ break; case 477: #line 2022 "VParseBison.y" /* yacc.c:1646 */ { } #line 23527 "VParseBison.c" /* yacc.c:1646 */ break; case 478: #line 2026 "VParseBison.y" /* yacc.c:1646 */ { } #line 23533 "VParseBison.c" /* yacc.c:1646 */ break; case 479: #line 2026 "VParseBison.y" /* yacc.c:1646 */ { } #line 23539 "VParseBison.c" /* yacc.c:1646 */ break; case 480: #line 2030 "VParseBison.y" /* yacc.c:1646 */ { } #line 23545 "VParseBison.c" /* yacc.c:1646 */ break; case 481: #line 2031 "VParseBison.y" /* yacc.c:1646 */ { } #line 23551 "VParseBison.c" /* yacc.c:1646 */ break; case 482: #line 2032 "VParseBison.y" /* yacc.c:1646 */ { } #line 23557 "VParseBison.c" /* yacc.c:1646 */ break; case 483: #line 2036 "VParseBison.y" /* yacc.c:1646 */ { } #line 23563 "VParseBison.c" /* yacc.c:1646 */ break; case 484: #line 2036 "VParseBison.y" /* yacc.c:1646 */ { } #line 23569 "VParseBison.c" /* yacc.c:1646 */ break; case 485: #line 2036 "VParseBison.y" /* yacc.c:1646 */ { } #line 23575 "VParseBison.c" /* yacc.c:1646 */ break; case 486: #line 2043 "VParseBison.y" /* yacc.c:1646 */ { } #line 23581 "VParseBison.c" /* yacc.c:1646 */ break; case 487: #line 2044 "VParseBison.y" /* yacc.c:1646 */ { } #line 23587 "VParseBison.c" /* yacc.c:1646 */ break; case 488: #line 2048 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->contassignCb((yyvsp[-1].fl),"assign",(yyvsp[-2].str),(yyvsp[0].str)); } #line 23593 "VParseBison.c" /* yacc.c:1646 */ break; case 489: #line 2052 "VParseBison.y" /* yacc.c:1646 */ { } #line 23599 "VParseBison.c" /* yacc.c:1646 */ break; case 490: #line 2053 "VParseBison.y" /* yacc.c:1646 */ { } #line 23605 "VParseBison.c" /* yacc.c:1646 */ break; case 491: #line 2054 "VParseBison.y" /* yacc.c:1646 */ { } #line 23611 "VParseBison.c" /* yacc.c:1646 */ break; case 492: #line 2055 "VParseBison.y" /* yacc.c:1646 */ { } #line 23617 "VParseBison.c" /* yacc.c:1646 */ break; case 493: #line 2059 "VParseBison.y" /* yacc.c:1646 */ { } #line 23623 "VParseBison.c" /* yacc.c:1646 */ break; case 494: #line 2060 "VParseBison.y" /* yacc.c:1646 */ { } #line 23629 "VParseBison.c" /* yacc.c:1646 */ break; case 495: #line 2064 "VParseBison.y" /* yacc.c:1646 */ { } #line 23635 "VParseBison.c" /* yacc.c:1646 */ break; case 496: #line 2065 "VParseBison.y" /* yacc.c:1646 */ { } #line 23641 "VParseBison.c" /* yacc.c:1646 */ break; case 497: #line 2066 "VParseBison.y" /* yacc.c:1646 */ { } #line 23647 "VParseBison.c" /* yacc.c:1646 */ break; case 498: #line 2067 "VParseBison.y" /* yacc.c:1646 */ { } #line 23653 "VParseBison.c" /* yacc.c:1646 */ break; case 499: #line 2072 "VParseBison.y" /* yacc.c:1646 */ { } #line 23659 "VParseBison.c" /* yacc.c:1646 */ break; case 500: #line 2073 "VParseBison.y" /* yacc.c:1646 */ { } #line 23665 "VParseBison.c" /* yacc.c:1646 */ break; case 501: #line 2074 "VParseBison.y" /* yacc.c:1646 */ { } #line 23671 "VParseBison.c" /* yacc.c:1646 */ break; case 502: #line 2075 "VParseBison.y" /* yacc.c:1646 */ { } #line 23677 "VParseBison.c" /* yacc.c:1646 */ break; case 503: #line 2079 "VParseBison.y" /* yacc.c:1646 */ { } #line 23683 "VParseBison.c" /* yacc.c:1646 */ break; case 504: #line 2083 "VParseBison.y" /* yacc.c:1646 */ { } #line 23689 "VParseBison.c" /* yacc.c:1646 */ break; case 505: #line 2084 "VParseBison.y" /* yacc.c:1646 */ { } #line 23695 "VParseBison.c" /* yacc.c:1646 */ break; case 506: #line 2088 "VParseBison.y" /* yacc.c:1646 */ { } #line 23701 "VParseBison.c" /* yacc.c:1646 */ break; case 507: #line 2089 "VParseBison.y" /* yacc.c:1646 */ { } #line 23707 "VParseBison.c" /* yacc.c:1646 */ break; case 508: #line 2093 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-1].fl), (yyvsp[-1].str), "", ""); } #line 23713 "VParseBison.c" /* yacc.c:1646 */ break; case 509: #line 2094 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-3].fl), (yyvsp[-3].str), "", (yyvsp[0].str)); } #line 23719 "VParseBison.c" /* yacc.c:1646 */ break; case 510: #line 2095 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); } #line 23725 "VParseBison.c" /* yacc.c:1646 */ break; case 511: #line 2099 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23731 "VParseBison.c" /* yacc.c:1646 */ break; case 512: #line 2100 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23737 "VParseBison.c" /* yacc.c:1646 */ break; case 513: #line 2104 "VParseBison.y" /* yacc.c:1646 */ { } #line 23743 "VParseBison.c" /* yacc.c:1646 */ break; case 514: #line 2108 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 23749 "VParseBison.c" /* yacc.c:1646 */ break; case 515: #line 2109 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 23755 "VParseBison.c" /* yacc.c:1646 */ break; case 516: #line 2113 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 23761 "VParseBison.c" /* yacc.c:1646 */ break; case 517: #line 2114 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 23767 "VParseBison.c" /* yacc.c:1646 */ break; case 518: #line 2118 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 23773 "VParseBison.c" /* yacc.c:1646 */ break; case 519: #line 2119 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23779 "VParseBison.c" /* yacc.c:1646 */ break; case 520: #line 2123 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = ""; } #line 23785 "VParseBison.c" /* yacc.c:1646 */ break; case 521: #line 2124 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "["+(yyvsp[-1].str)+"]"; } #line 23791 "VParseBison.c" /* yacc.c:1646 */ break; case 522: #line 2131 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "["+(yyvsp[-3].str)+":"+(yyvsp[-1].str)+"]"; } #line 23797 "VParseBison.c" /* yacc.c:1646 */ break; case 523: #line 2135 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 23803 "VParseBison.c" /* yacc.c:1646 */ break; case 524: #line 2136 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23809 "VParseBison.c" /* yacc.c:1646 */ break; case 525: #line 2140 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23815 "VParseBison.c" /* yacc.c:1646 */ break; case 526: #line 2141 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 23821 "VParseBison.c" /* yacc.c:1646 */ break; case 527: #line 2145 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23827 "VParseBison.c" /* yacc.c:1646 */ break; case 528: #line 2146 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="[]"; } #line 23833 "VParseBison.c" /* yacc.c:1646 */ break; case 529: #line 2156 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); } #line 23839 "VParseBison.c" /* yacc.c:1646 */ break; case 530: #line 2159 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); NEED_S09((yyvsp[-2].fl),"optional parameter defaults"); } #line 23845 "VParseBison.c" /* yacc.c:1646 */ break; case 531: #line 2163 "VParseBison.y" /* yacc.c:1646 */ { } #line 23851 "VParseBison.c" /* yacc.c:1646 */ break; case 532: #line 2164 "VParseBison.y" /* yacc.c:1646 */ { } #line 23857 "VParseBison.c" /* yacc.c:1646 */ break; case 533: #line 2168 "VParseBison.y" /* yacc.c:1646 */ { } #line 23863 "VParseBison.c" /* yacc.c:1646 */ break; case 534: #line 2169 "VParseBison.y" /* yacc.c:1646 */ { } #line 23869 "VParseBison.c" /* yacc.c:1646 */ break; case 535: #line 2173 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->defparamCb((yyvsp[-1].fl),"defparam",(yyvsp[-2].str),(yyvsp[0].str)); } #line 23875 "VParseBison.c" /* yacc.c:1646 */ break; case 536: #line 2186 "VParseBison.y" /* yacc.c:1646 */ { INSTPREP((yyvsp[0].str),1,0); } #line 23881 "VParseBison.c" /* yacc.c:1646 */ break; case 537: #line 2186 "VParseBison.y" /* yacc.c:1646 */ { INSTPREP((yyvsp[-3].str),0,1); } #line 23887 "VParseBison.c" /* yacc.c:1646 */ break; case 538: #line 2187 "VParseBison.y" /* yacc.c:1646 */ { INSTDONE(); } #line 23893 "VParseBison.c" /* yacc.c:1646 */ break; case 539: #line 2189 "VParseBison.y" /* yacc.c:1646 */ { INSTPREP((yyvsp[0].str),1,0); } #line 23899 "VParseBison.c" /* yacc.c:1646 */ break; case 540: #line 2189 "VParseBison.y" /* yacc.c:1646 */ {INSTPREP((yyvsp[-3].str),0,0);} #line 23905 "VParseBison.c" /* yacc.c:1646 */ break; case 541: #line 2190 "VParseBison.y" /* yacc.c:1646 */ { INSTDONE(); } #line 23911 "VParseBison.c" /* yacc.c:1646 */ break; case 542: #line 2194 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23917 "VParseBison.c" /* yacc.c:1646 */ break; case 543: #line 2199 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 23923 "VParseBison.c" /* yacc.c:1646 */ break; case 544: #line 2203 "VParseBison.y" /* yacc.c:1646 */ { } #line 23929 "VParseBison.c" /* yacc.c:1646 */ break; case 545: #line 2204 "VParseBison.y" /* yacc.c:1646 */ { } #line 23935 "VParseBison.c" /* yacc.c:1646 */ break; case 546: #line 2208 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endcellCb((yyvsp[0].fl),""); } #line 23941 "VParseBison.c" /* yacc.c:1646 */ break; case 547: #line 2213 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->instantCb((yyvsp[-1].fl), GRAMMARP->m_cellMod, (yyvsp[-1].str), (yyvsp[0].str)); } #line 23947 "VParseBison.c" /* yacc.c:1646 */ break; case 548: #line 2217 "VParseBison.y" /* yacc.c:1646 */ { } #line 23953 "VParseBison.c" /* yacc.c:1646 */ break; case 549: #line 2218 "VParseBison.y" /* yacc.c:1646 */ { } #line 23959 "VParseBison.c" /* yacc.c:1646 */ break; case 550: #line 2222 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endcellCb((yyvsp[0].fl),""); } #line 23965 "VParseBison.c" /* yacc.c:1646 */ break; case 551: #line 2230 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->instantCb((yyvsp[-2].fl), GRAMMARP->m_cellMod, (yyvsp[-2].str), (yyvsp[-1].str)); PINPARAMS(); } #line 23971 "VParseBison.c" /* yacc.c:1646 */ break; case 552: #line 2231 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->instantCb((yyvsp[0].fl), GRAMMARP->m_cellMod, "", (yyvsp[-1].str)); PINPARAMS(); } #line 23977 "VParseBison.c" /* yacc.c:1646 */ break; case 553: #line 2235 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = ""; } #line 23983 "VParseBison.c" /* yacc.c:1646 */ break; case 554: #line 2236 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 23989 "VParseBison.c" /* yacc.c:1646 */ break; case 555: #line 2240 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 23995 "VParseBison.c" /* yacc.c:1646 */ break; case 556: #line 2241 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24001 "VParseBison.c" /* yacc.c:1646 */ break; case 557: #line 2245 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "["+(yyvsp[-1].str)+"]"; } #line 24007 "VParseBison.c" /* yacc.c:1646 */ break; case 558: #line 2246 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "["+(yyvsp[-3].str)+":"+(yyvsp[-1].str)+"]"; } #line 24013 "VParseBison.c" /* yacc.c:1646 */ break; case 559: #line 2250 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_LIST(""); } #line 24019 "VParseBison.c" /* yacc.c:1646 */ break; case 560: #line 2250 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); GRAMMARP->m_withinPin = false; } #line 24025 "VParseBison.c" /* yacc.c:1646 */ break; case 561: #line 2254 "VParseBison.y" /* yacc.c:1646 */ { GRAMMARP->m_portNextNetName.clear(); } #line 24031 "VParseBison.c" /* yacc.c:1646 */ break; case 562: #line 2254 "VParseBison.y" /* yacc.c:1646 */ { } #line 24037 "VParseBison.c" /* yacc.c:1646 */ break; case 563: #line 2255 "VParseBison.y" /* yacc.c:1646 */ { } #line 24043 "VParseBison.c" /* yacc.c:1646 */ break; case 564: #line 2259 "VParseBison.y" /* yacc.c:1646 */ { PINNUMINC(); } #line 24049 "VParseBison.c" /* yacc.c:1646 */ break; case 565: #line 2260 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[0].fl),"*","*");PINNUMINC(); } #line 24055 "VParseBison.c" /* yacc.c:1646 */ break; case 566: #line 2261 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-1].fl),(yyvsp[0].str),(yyvsp[0].str)); PINNUMINC(); } #line 24061 "VParseBison.c" /* yacc.c:1646 */ break; case 567: #line 2262 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-1].fl),(yyvsp[0].str),(yyvsp[0].str)); PINNUMINC(); } #line 24067 "VParseBison.c" /* yacc.c:1646 */ break; case 568: #line 2263 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-3].fl),(yyvsp[-2].str),""); PINNUMINC(); } #line 24073 "VParseBison.c" /* yacc.c:1646 */ break; case 569: #line 2266 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-4].fl),(yyvsp[-3].str),(yyvsp[-1].str)); PINNUMINC(); } #line 24079 "VParseBison.c" /* yacc.c:1646 */ break; case 570: #line 2267 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-6].fl),(yyvsp[-5].str),(yyvsp[-3].str)); PINNUMINC(); } #line 24085 "VParseBison.c" /* yacc.c:1646 */ break; case 571: #line 2268 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-8].fl),(yyvsp[-7].str),(yyvsp[-5].str)); PINNUMINC(); } #line 24091 "VParseBison.c" /* yacc.c:1646 */ break; case 572: #line 2270 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-4].fl),(yyvsp[-3].str),(yyvsp[-1].str)); PINNUMINC(); } #line 24097 "VParseBison.c" /* yacc.c:1646 */ break; case 573: #line 2272 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[0].fl),"",(yyvsp[0].str)); PINNUMINC(); } #line 24103 "VParseBison.c" /* yacc.c:1646 */ break; case 574: #line 2274 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[0].fl),"",(yyvsp[0].str)); PINNUMINC(); } #line 24109 "VParseBison.c" /* yacc.c:1646 */ break; case 575: #line 2275 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-2].fl),"",(yyvsp[-2].str)); PINNUMINC(); } #line 24115 "VParseBison.c" /* yacc.c:1646 */ break; case 576: #line 2276 "VParseBison.y" /* yacc.c:1646 */ { PINDONE((yyvsp[-4].fl),"",(yyvsp[-4].str)); PINNUMINC(); } #line 24121 "VParseBison.c" /* yacc.c:1646 */ break; case 577: #line 2283 "VParseBison.y" /* yacc.c:1646 */ { } #line 24127 "VParseBison.c" /* yacc.c:1646 */ break; case 578: #line 2284 "VParseBison.y" /* yacc.c:1646 */ { } #line 24133 "VParseBison.c" /* yacc.c:1646 */ break; case 579: #line 2285 "VParseBison.y" /* yacc.c:1646 */ { } #line 24139 "VParseBison.c" /* yacc.c:1646 */ break; case 580: #line 2287 "VParseBison.y" /* yacc.c:1646 */ { } #line 24145 "VParseBison.c" /* yacc.c:1646 */ break; case 581: #line 2300 "VParseBison.y" /* yacc.c:1646 */ { } #line 24151 "VParseBison.c" /* yacc.c:1646 */ break; case 582: #line 2301 "VParseBison.y" /* yacc.c:1646 */ { } #line 24157 "VParseBison.c" /* yacc.c:1646 */ break; case 583: #line 2306 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+" "+(yyvsp[0].str); } #line 24163 "VParseBison.c" /* yacc.c:1646 */ break; case 584: #line 2307 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+" "+(yyvsp[-2].str)+" iff "+(yyvsp[0].str); } #line 24169 "VParseBison.c" /* yacc.c:1646 */ break; case 585: #line 2308 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+" "+(yyvsp[0].str); } #line 24175 "VParseBison.c" /* yacc.c:1646 */ break; case 586: #line 2309 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+" "+(yyvsp[-2].str)+" iff "+(yyvsp[0].str); } #line 24181 "VParseBison.c" /* yacc.c:1646 */ break; case 587: #line 2310 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+" "+(yyvsp[0].str); NEED_S09((yyvsp[-1].fl),"edge"); } #line 24187 "VParseBison.c" /* yacc.c:1646 */ break; case 588: #line 2311 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+" "+(yyvsp[-2].str)+" iff "+(yyvsp[0].str); NEED_S09((yyvsp[-3].fl),"edge"); } #line 24193 "VParseBison.c" /* yacc.c:1646 */ break; case 589: #line 2318 "VParseBison.y" /* yacc.c:1646 */ { } #line 24199 "VParseBison.c" /* yacc.c:1646 */ break; case 590: #line 2323 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::BLOCK); } #line 24205 "VParseBison.c" /* yacc.c:1646 */ break; case 591: #line 2324 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::BLOCK); } #line 24211 "VParseBison.c" /* yacc.c:1646 */ break; case 592: #line 2328 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::FORK); } #line 24217 "VParseBison.c" /* yacc.c:1646 */ break; case 593: #line 2329 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::FORK); } #line 24223 "VParseBison.c" /* yacc.c:1646 */ break; case 594: #line 2333 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::BLOCK); } #line 24229 "VParseBison.c" /* yacc.c:1646 */ break; case 595: #line 2334 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::BLOCK,(yyvsp[-2].str)); } #line 24235 "VParseBison.c" /* yacc.c:1646 */ break; case 596: #line 2338 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::FORK); } #line 24241 "VParseBison.c" /* yacc.c:1646 */ break; case 597: #line 2339 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::FORK,(yyvsp[-2].str)); } #line 24247 "VParseBison.c" /* yacc.c:1646 */ break; case 598: #line 2344 "VParseBison.y" /* yacc.c:1646 */ { } #line 24253 "VParseBison.c" /* yacc.c:1646 */ break; case 599: #line 2345 "VParseBison.y" /* yacc.c:1646 */ { } #line 24259 "VParseBison.c" /* yacc.c:1646 */ break; case 600: #line 2346 "VParseBison.y" /* yacc.c:1646 */ { } #line 24265 "VParseBison.c" /* yacc.c:1646 */ break; case 601: #line 2350 "VParseBison.y" /* yacc.c:1646 */ { } #line 24271 "VParseBison.c" /* yacc.c:1646 */ break; case 602: #line 2351 "VParseBison.y" /* yacc.c:1646 */ { } #line 24277 "VParseBison.c" /* yacc.c:1646 */ break; case 603: #line 2355 "VParseBison.y" /* yacc.c:1646 */ { } #line 24283 "VParseBison.c" /* yacc.c:1646 */ break; case 604: #line 2356 "VParseBison.y" /* yacc.c:1646 */ { } #line 24289 "VParseBison.c" /* yacc.c:1646 */ break; case 605: #line 2357 "VParseBison.y" /* yacc.c:1646 */ { } #line 24295 "VParseBison.c" /* yacc.c:1646 */ break; case 606: #line 2358 "VParseBison.y" /* yacc.c:1646 */ { } #line 24301 "VParseBison.c" /* yacc.c:1646 */ break; case 607: #line 2359 "VParseBison.y" /* yacc.c:1646 */ { } #line 24307 "VParseBison.c" /* yacc.c:1646 */ break; case 608: #line 2363 "VParseBison.y" /* yacc.c:1646 */ { } #line 24313 "VParseBison.c" /* yacc.c:1646 */ break; case 609: #line 2364 "VParseBison.y" /* yacc.c:1646 */ { } #line 24319 "VParseBison.c" /* yacc.c:1646 */ break; case 610: #line 2368 "VParseBison.y" /* yacc.c:1646 */ { } #line 24325 "VParseBison.c" /* yacc.c:1646 */ break; case 611: #line 2370 "VParseBison.y" /* yacc.c:1646 */ { } #line 24331 "VParseBison.c" /* yacc.c:1646 */ break; case 612: #line 2372 "VParseBison.y" /* yacc.c:1646 */ { } #line 24337 "VParseBison.c" /* yacc.c:1646 */ break; case 613: #line 2377 "VParseBison.y" /* yacc.c:1646 */ { } #line 24343 "VParseBison.c" /* yacc.c:1646 */ break; case 614: #line 2382 "VParseBison.y" /* yacc.c:1646 */ { } #line 24349 "VParseBison.c" /* yacc.c:1646 */ break; case 615: #line 2383 "VParseBison.y" /* yacc.c:1646 */ { } #line 24355 "VParseBison.c" /* yacc.c:1646 */ break; case 616: #line 2386 "VParseBison.y" /* yacc.c:1646 */ { } #line 24361 "VParseBison.c" /* yacc.c:1646 */ break; case 617: #line 2389 "VParseBison.y" /* yacc.c:1646 */ { } #line 24367 "VParseBison.c" /* yacc.c:1646 */ break; case 618: #line 2390 "VParseBison.y" /* yacc.c:1646 */ { } #line 24373 "VParseBison.c" /* yacc.c:1646 */ break; case 619: #line 2391 "VParseBison.y" /* yacc.c:1646 */ { } #line 24379 "VParseBison.c" /* yacc.c:1646 */ break; case 620: #line 2392 "VParseBison.y" /* yacc.c:1646 */ { } #line 24385 "VParseBison.c" /* yacc.c:1646 */ break; case 621: #line 2395 "VParseBison.y" /* yacc.c:1646 */ { } #line 24391 "VParseBison.c" /* yacc.c:1646 */ break; case 622: #line 2396 "VParseBison.y" /* yacc.c:1646 */ { } #line 24397 "VParseBison.c" /* yacc.c:1646 */ break; case 623: #line 2397 "VParseBison.y" /* yacc.c:1646 */ { } #line 24403 "VParseBison.c" /* yacc.c:1646 */ break; case 624: #line 2400 "VParseBison.y" /* yacc.c:1646 */ { } #line 24409 "VParseBison.c" /* yacc.c:1646 */ break; case 625: #line 2401 "VParseBison.y" /* yacc.c:1646 */ { } #line 24415 "VParseBison.c" /* yacc.c:1646 */ break; case 626: #line 2403 "VParseBison.y" /* yacc.c:1646 */ { } #line 24421 "VParseBison.c" /* yacc.c:1646 */ break; case 627: #line 2408 "VParseBison.y" /* yacc.c:1646 */ { } #line 24427 "VParseBison.c" /* yacc.c:1646 */ break; case 628: #line 2409 "VParseBison.y" /* yacc.c:1646 */ { } #line 24433 "VParseBison.c" /* yacc.c:1646 */ break; case 629: #line 2412 "VParseBison.y" /* yacc.c:1646 */ { } #line 24439 "VParseBison.c" /* yacc.c:1646 */ break; case 630: #line 2413 "VParseBison.y" /* yacc.c:1646 */ { } #line 24445 "VParseBison.c" /* yacc.c:1646 */ break; case 631: #line 2414 "VParseBison.y" /* yacc.c:1646 */ { } #line 24451 "VParseBison.c" /* yacc.c:1646 */ break; case 632: #line 2415 "VParseBison.y" /* yacc.c:1646 */ { } #line 24457 "VParseBison.c" /* yacc.c:1646 */ break; case 633: #line 2420 "VParseBison.y" /* yacc.c:1646 */ { } #line 24463 "VParseBison.c" /* yacc.c:1646 */ break; case 634: #line 2423 "VParseBison.y" /* yacc.c:1646 */ { } #line 24469 "VParseBison.c" /* yacc.c:1646 */ break; case 635: #line 2424 "VParseBison.y" /* yacc.c:1646 */ { } #line 24475 "VParseBison.c" /* yacc.c:1646 */ break; case 636: #line 2426 "VParseBison.y" /* yacc.c:1646 */ { } #line 24481 "VParseBison.c" /* yacc.c:1646 */ break; case 637: #line 2427 "VParseBison.y" /* yacc.c:1646 */ { } #line 24487 "VParseBison.c" /* yacc.c:1646 */ break; case 638: #line 2429 "VParseBison.y" /* yacc.c:1646 */ { } #line 24493 "VParseBison.c" /* yacc.c:1646 */ break; case 639: #line 2430 "VParseBison.y" /* yacc.c:1646 */ { } #line 24499 "VParseBison.c" /* yacc.c:1646 */ break; case 640: #line 2431 "VParseBison.y" /* yacc.c:1646 */ { } #line 24505 "VParseBison.c" /* yacc.c:1646 */ break; case 641: #line 2434 "VParseBison.y" /* yacc.c:1646 */ { } #line 24511 "VParseBison.c" /* yacc.c:1646 */ break; case 642: #line 2436 "VParseBison.y" /* yacc.c:1646 */ { } #line 24517 "VParseBison.c" /* yacc.c:1646 */ break; case 643: #line 2437 "VParseBison.y" /* yacc.c:1646 */ { } #line 24523 "VParseBison.c" /* yacc.c:1646 */ break; case 644: #line 2439 "VParseBison.y" /* yacc.c:1646 */ { } #line 24529 "VParseBison.c" /* yacc.c:1646 */ break; case 645: #line 2442 "VParseBison.y" /* yacc.c:1646 */ { } #line 24535 "VParseBison.c" /* yacc.c:1646 */ break; case 646: #line 2443 "VParseBison.y" /* yacc.c:1646 */ { } #line 24541 "VParseBison.c" /* yacc.c:1646 */ break; case 647: #line 2444 "VParseBison.y" /* yacc.c:1646 */ { } #line 24547 "VParseBison.c" /* yacc.c:1646 */ break; case 648: #line 2445 "VParseBison.y" /* yacc.c:1646 */ { } #line 24553 "VParseBison.c" /* yacc.c:1646 */ break; case 649: #line 2447 "VParseBison.y" /* yacc.c:1646 */ { } #line 24559 "VParseBison.c" /* yacc.c:1646 */ break; case 650: #line 2449 "VParseBison.y" /* yacc.c:1646 */ { } #line 24565 "VParseBison.c" /* yacc.c:1646 */ break; case 651: #line 2450 "VParseBison.y" /* yacc.c:1646 */ { } #line 24571 "VParseBison.c" /* yacc.c:1646 */ break; case 652: #line 2451 "VParseBison.y" /* yacc.c:1646 */ { } #line 24577 "VParseBison.c" /* yacc.c:1646 */ break; case 653: #line 2453 "VParseBison.y" /* yacc.c:1646 */ { } #line 24583 "VParseBison.c" /* yacc.c:1646 */ break; case 654: #line 2456 "VParseBison.y" /* yacc.c:1646 */ { } #line 24589 "VParseBison.c" /* yacc.c:1646 */ break; case 655: #line 2457 "VParseBison.y" /* yacc.c:1646 */ { } #line 24595 "VParseBison.c" /* yacc.c:1646 */ break; case 656: #line 2458 "VParseBison.y" /* yacc.c:1646 */ { } #line 24601 "VParseBison.c" /* yacc.c:1646 */ break; case 657: #line 2461 "VParseBison.y" /* yacc.c:1646 */ { } #line 24607 "VParseBison.c" /* yacc.c:1646 */ break; case 658: #line 2466 "VParseBison.y" /* yacc.c:1646 */ { } #line 24613 "VParseBison.c" /* yacc.c:1646 */ break; case 659: #line 2468 "VParseBison.y" /* yacc.c:1646 */ { } #line 24619 "VParseBison.c" /* yacc.c:1646 */ break; case 660: #line 2471 "VParseBison.y" /* yacc.c:1646 */ { } #line 24625 "VParseBison.c" /* yacc.c:1646 */ break; case 661: #line 2473 "VParseBison.y" /* yacc.c:1646 */ { } #line 24631 "VParseBison.c" /* yacc.c:1646 */ break; case 662: #line 2475 "VParseBison.y" /* yacc.c:1646 */ { } #line 24637 "VParseBison.c" /* yacc.c:1646 */ break; case 663: #line 2479 "VParseBison.y" /* yacc.c:1646 */ { } #line 24643 "VParseBison.c" /* yacc.c:1646 */ break; case 664: #line 2480 "VParseBison.y" /* yacc.c:1646 */ { } #line 24649 "VParseBison.c" /* yacc.c:1646 */ break; case 665: #line 2481 "VParseBison.y" /* yacc.c:1646 */ { } #line 24655 "VParseBison.c" /* yacc.c:1646 */ break; case 666: #line 2482 "VParseBison.y" /* yacc.c:1646 */ { } #line 24661 "VParseBison.c" /* yacc.c:1646 */ break; case 667: #line 2483 "VParseBison.y" /* yacc.c:1646 */ { } #line 24667 "VParseBison.c" /* yacc.c:1646 */ break; case 668: #line 2484 "VParseBison.y" /* yacc.c:1646 */ { } #line 24673 "VParseBison.c" /* yacc.c:1646 */ break; case 669: #line 2485 "VParseBison.y" /* yacc.c:1646 */ { } #line 24679 "VParseBison.c" /* yacc.c:1646 */ break; case 670: #line 2486 "VParseBison.y" /* yacc.c:1646 */ { } #line 24685 "VParseBison.c" /* yacc.c:1646 */ break; case 671: #line 2487 "VParseBison.y" /* yacc.c:1646 */ { } #line 24691 "VParseBison.c" /* yacc.c:1646 */ break; case 672: #line 2488 "VParseBison.y" /* yacc.c:1646 */ { } #line 24697 "VParseBison.c" /* yacc.c:1646 */ break; case 673: #line 2489 "VParseBison.y" /* yacc.c:1646 */ { } #line 24703 "VParseBison.c" /* yacc.c:1646 */ break; case 674: #line 2490 "VParseBison.y" /* yacc.c:1646 */ { } #line 24709 "VParseBison.c" /* yacc.c:1646 */ break; case 675: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24715 "VParseBison.c" /* yacc.c:1646 */ break; case 676: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24721 "VParseBison.c" /* yacc.c:1646 */ break; case 677: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24727 "VParseBison.c" /* yacc.c:1646 */ break; case 678: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24733 "VParseBison.c" /* yacc.c:1646 */ break; case 679: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24739 "VParseBison.c" /* yacc.c:1646 */ break; case 680: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24745 "VParseBison.c" /* yacc.c:1646 */ break; case 681: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24751 "VParseBison.c" /* yacc.c:1646 */ break; case 682: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24757 "VParseBison.c" /* yacc.c:1646 */ break; case 683: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24763 "VParseBison.c" /* yacc.c:1646 */ break; case 684: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24769 "VParseBison.c" /* yacc.c:1646 */ break; case 685: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24775 "VParseBison.c" /* yacc.c:1646 */ break; case 686: #line 2494 "VParseBison.y" /* yacc.c:1646 */ { } #line 24781 "VParseBison.c" /* yacc.c:1646 */ break; case 687: #line 2499 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24787 "VParseBison.c" /* yacc.c:1646 */ break; case 688: #line 2500 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24793 "VParseBison.c" /* yacc.c:1646 */ break; case 689: #line 2502 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24799 "VParseBison.c" /* yacc.c:1646 */ break; case 690: #line 2503 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24805 "VParseBison.c" /* yacc.c:1646 */ break; case 691: #line 2507 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24811 "VParseBison.c" /* yacc.c:1646 */ break; case 692: #line 2507 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24817 "VParseBison.c" /* yacc.c:1646 */ break; case 693: #line 2507 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24823 "VParseBison.c" /* yacc.c:1646 */ break; case 694: #line 2507 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24829 "VParseBison.c" /* yacc.c:1646 */ break; case 695: #line 2511 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24835 "VParseBison.c" /* yacc.c:1646 */ break; case 696: #line 2511 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24841 "VParseBison.c" /* yacc.c:1646 */ break; case 697: #line 2511 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24847 "VParseBison.c" /* yacc.c:1646 */ break; case 698: #line 2511 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24853 "VParseBison.c" /* yacc.c:1646 */ break; case 699: #line 2515 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24859 "VParseBison.c" /* yacc.c:1646 */ break; case 700: #line 2515 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24865 "VParseBison.c" /* yacc.c:1646 */ break; case 701: #line 2515 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24871 "VParseBison.c" /* yacc.c:1646 */ break; case 702: #line 2515 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24877 "VParseBison.c" /* yacc.c:1646 */ break; case 703: #line 2519 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24883 "VParseBison.c" /* yacc.c:1646 */ break; case 704: #line 2519 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24889 "VParseBison.c" /* yacc.c:1646 */ break; case 705: #line 2519 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24895 "VParseBison.c" /* yacc.c:1646 */ break; case 706: #line 2519 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24901 "VParseBison.c" /* yacc.c:1646 */ break; case 707: #line 2523 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24907 "VParseBison.c" /* yacc.c:1646 */ break; case 708: #line 2523 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24913 "VParseBison.c" /* yacc.c:1646 */ break; case 709: #line 2523 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24919 "VParseBison.c" /* yacc.c:1646 */ break; case 710: #line 2523 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 24925 "VParseBison.c" /* yacc.c:1646 */ break; case 711: #line 2528 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 24931 "VParseBison.c" /* yacc.c:1646 */ break; case 712: #line 2529 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+" "+(yyvsp[0].str); } #line 24937 "VParseBison.c" /* yacc.c:1646 */ break; case 713: #line 2531 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 24943 "VParseBison.c" /* yacc.c:1646 */ break; case 714: #line 2535 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+"["+(yyvsp[-1].str)+"]"; } #line 24949 "VParseBison.c" /* yacc.c:1646 */ break; case 715: #line 2536 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str)=(yyvsp[-6].str)+"["+(yyvsp[-4].str)+"]("+(yyvsp[-1].str)+")"; } #line 24955 "VParseBison.c" /* yacc.c:1646 */ break; case 716: #line 2543 "VParseBison.y" /* yacc.c:1646 */ { } #line 24961 "VParseBison.c" /* yacc.c:1646 */ break; case 717: #line 2544 "VParseBison.y" /* yacc.c:1646 */ { } #line 24967 "VParseBison.c" /* yacc.c:1646 */ break; case 718: #line 2545 "VParseBison.y" /* yacc.c:1646 */ { } #line 24973 "VParseBison.c" /* yacc.c:1646 */ break; case 719: #line 2546 "VParseBison.y" /* yacc.c:1646 */ { NEED_S09((yyvsp[0].fl), "unique0"); } #line 24979 "VParseBison.c" /* yacc.c:1646 */ break; case 720: #line 2550 "VParseBison.y" /* yacc.c:1646 */ { } #line 24985 "VParseBison.c" /* yacc.c:1646 */ break; case 721: #line 2551 "VParseBison.y" /* yacc.c:1646 */ { } #line 24991 "VParseBison.c" /* yacc.c:1646 */ break; case 722: #line 2552 "VParseBison.y" /* yacc.c:1646 */ { } #line 24997 "VParseBison.c" /* yacc.c:1646 */ break; case 723: #line 2556 "VParseBison.y" /* yacc.c:1646 */ { } #line 25003 "VParseBison.c" /* yacc.c:1646 */ break; case 724: #line 2557 "VParseBison.y" /* yacc.c:1646 */ { } #line 25009 "VParseBison.c" /* yacc.c:1646 */ break; case 725: #line 2558 "VParseBison.y" /* yacc.c:1646 */ { } #line 25015 "VParseBison.c" /* yacc.c:1646 */ break; case 726: #line 2562 "VParseBison.y" /* yacc.c:1646 */ { } #line 25021 "VParseBison.c" /* yacc.c:1646 */ break; case 727: #line 2567 "VParseBison.y" /* yacc.c:1646 */ { } #line 25027 "VParseBison.c" /* yacc.c:1646 */ break; case 728: #line 2571 "VParseBison.y" /* yacc.c:1646 */ { } #line 25033 "VParseBison.c" /* yacc.c:1646 */ break; case 729: #line 2572 "VParseBison.y" /* yacc.c:1646 */ { } #line 25039 "VParseBison.c" /* yacc.c:1646 */ break; case 730: #line 2576 "VParseBison.y" /* yacc.c:1646 */ { } #line 25045 "VParseBison.c" /* yacc.c:1646 */ break; case 731: #line 2577 "VParseBison.y" /* yacc.c:1646 */ { } #line 25051 "VParseBison.c" /* yacc.c:1646 */ break; case 732: #line 2581 "VParseBison.y" /* yacc.c:1646 */ { } #line 25057 "VParseBison.c" /* yacc.c:1646 */ break; case 733: #line 2582 "VParseBison.y" /* yacc.c:1646 */ { } #line 25063 "VParseBison.c" /* yacc.c:1646 */ break; case 734: #line 2583 "VParseBison.y" /* yacc.c:1646 */ { } #line 25069 "VParseBison.c" /* yacc.c:1646 */ break; case 735: #line 2584 "VParseBison.y" /* yacc.c:1646 */ { } #line 25075 "VParseBison.c" /* yacc.c:1646 */ break; case 736: #line 2585 "VParseBison.y" /* yacc.c:1646 */ { } #line 25081 "VParseBison.c" /* yacc.c:1646 */ break; case 737: #line 2586 "VParseBison.y" /* yacc.c:1646 */ { } #line 25087 "VParseBison.c" /* yacc.c:1646 */ break; case 738: #line 2590 "VParseBison.y" /* yacc.c:1646 */ { } #line 25093 "VParseBison.c" /* yacc.c:1646 */ break; case 739: #line 2591 "VParseBison.y" /* yacc.c:1646 */ { } #line 25099 "VParseBison.c" /* yacc.c:1646 */ break; case 740: #line 2592 "VParseBison.y" /* yacc.c:1646 */ { } #line 25105 "VParseBison.c" /* yacc.c:1646 */ break; case 741: #line 2593 "VParseBison.y" /* yacc.c:1646 */ { } #line 25111 "VParseBison.c" /* yacc.c:1646 */ break; case 742: #line 2594 "VParseBison.y" /* yacc.c:1646 */ { } #line 25117 "VParseBison.c" /* yacc.c:1646 */ break; case 743: #line 2595 "VParseBison.y" /* yacc.c:1646 */ { } #line 25123 "VParseBison.c" /* yacc.c:1646 */ break; case 744: #line 2599 "VParseBison.y" /* yacc.c:1646 */ { } #line 25129 "VParseBison.c" /* yacc.c:1646 */ break; case 745: #line 2600 "VParseBison.y" /* yacc.c:1646 */ { } #line 25135 "VParseBison.c" /* yacc.c:1646 */ break; case 746: #line 2604 "VParseBison.y" /* yacc.c:1646 */ { } #line 25141 "VParseBison.c" /* yacc.c:1646 */ break; case 747: #line 2608 "VParseBison.y" /* yacc.c:1646 */ { } #line 25147 "VParseBison.c" /* yacc.c:1646 */ break; case 748: #line 2609 "VParseBison.y" /* yacc.c:1646 */ { } #line 25153 "VParseBison.c" /* yacc.c:1646 */ break; case 749: #line 2613 "VParseBison.y" /* yacc.c:1646 */ { } #line 25159 "VParseBison.c" /* yacc.c:1646 */ break; case 750: #line 2614 "VParseBison.y" /* yacc.c:1646 */ { } #line 25165 "VParseBison.c" /* yacc.c:1646 */ break; case 751: #line 2618 "VParseBison.y" /* yacc.c:1646 */ { } #line 25171 "VParseBison.c" /* yacc.c:1646 */ break; case 752: #line 2619 "VParseBison.y" /* yacc.c:1646 */ { } #line 25177 "VParseBison.c" /* yacc.c:1646 */ break; case 753: #line 2623 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)="."+(yyvsp[0].str); } #line 25183 "VParseBison.c" /* yacc.c:1646 */ break; case 754: #line 2624 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=".*"; } #line 25189 "VParseBison.c" /* yacc.c:1646 */ break; case 755: #line 2627 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=" tagged "+(yyvsp[-1].str)+" "+(yyvsp[0].str); } #line 25195 "VParseBison.c" /* yacc.c:1646 */ break; case 756: #line 2632 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25201 "VParseBison.c" /* yacc.c:1646 */ break; case 757: #line 2633 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 25207 "VParseBison.c" /* yacc.c:1646 */ break; case 758: #line 2637 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25213 "VParseBison.c" /* yacc.c:1646 */ break; case 759: #line 2638 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str); } #line 25219 "VParseBison.c" /* yacc.c:1646 */ break; case 760: #line 2639 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25225 "VParseBison.c" /* yacc.c:1646 */ break; case 761: #line 2643 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+" : "+(yyvsp[-1].str); } #line 25231 "VParseBison.c" /* yacc.c:1646 */ break; case 762: #line 2644 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+" : "+(yyvsp[-1].str); } #line 25237 "VParseBison.c" /* yacc.c:1646 */ break; case 763: #line 2645 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+","+(yyvsp[-2].str)+":"+(yyvsp[-1].str); } #line 25243 "VParseBison.c" /* yacc.c:1646 */ break; case 764: #line 2646 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+","+(yyvsp[-2].str)+":"+(yyvsp[-1].str); } #line 25249 "VParseBison.c" /* yacc.c:1646 */ break; case 765: #line 2652 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25255 "VParseBison.c" /* yacc.c:1646 */ break; case 766: #line 2654 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25261 "VParseBison.c" /* yacc.c:1646 */ break; case 767: #line 2655 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25267 "VParseBison.c" /* yacc.c:1646 */ break; case 768: #line 2666 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)="'{"+(yyvsp[-1].str)+"}"; } #line 25273 "VParseBison.c" /* yacc.c:1646 */ break; case 769: #line 2670 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)="'{"+(yyvsp[-1].str)+"}"; } #line 25279 "VParseBison.c" /* yacc.c:1646 */ break; case 770: #line 2672 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)="'{}"; } #line 25285 "VParseBison.c" /* yacc.c:1646 */ break; case 771: #line 2678 "VParseBison.y" /* yacc.c:1646 */ { } #line 25291 "VParseBison.c" /* yacc.c:1646 */ break; case 772: #line 2680 "VParseBison.y" /* yacc.c:1646 */ { } #line 25297 "VParseBison.c" /* yacc.c:1646 */ break; case 773: #line 2684 "VParseBison.y" /* yacc.c:1646 */ { } #line 25303 "VParseBison.c" /* yacc.c:1646 */ break; case 774: #line 2685 "VParseBison.y" /* yacc.c:1646 */ { } #line 25309 "VParseBison.c" /* yacc.c:1646 */ break; case 775: #line 2690 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-3].str)); } #line 25315 "VParseBison.c" /* yacc.c:1646 */ break; case 776: #line 2692 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[-4].str)); } #line 25321 "VParseBison.c" /* yacc.c:1646 */ break; case 777: #line 2694 "VParseBison.y" /* yacc.c:1646 */ { } #line 25327 "VParseBison.c" /* yacc.c:1646 */ break; case 778: #line 2698 "VParseBison.y" /* yacc.c:1646 */ { } #line 25333 "VParseBison.c" /* yacc.c:1646 */ break; case 779: #line 2699 "VParseBison.y" /* yacc.c:1646 */ { } #line 25339 "VParseBison.c" /* yacc.c:1646 */ break; case 780: #line 2703 "VParseBison.y" /* yacc.c:1646 */ { } #line 25345 "VParseBison.c" /* yacc.c:1646 */ break; case 781: #line 2704 "VParseBison.y" /* yacc.c:1646 */ { } #line 25351 "VParseBison.c" /* yacc.c:1646 */ break; case 782: #line 2708 "VParseBison.y" /* yacc.c:1646 */ { } #line 25357 "VParseBison.c" /* yacc.c:1646 */ break; case 783: #line 2710 "VParseBison.y" /* yacc.c:1646 */ { } #line 25363 "VParseBison.c" /* yacc.c:1646 */ break; case 784: #line 2712 "VParseBison.y" /* yacc.c:1646 */ { } #line 25369 "VParseBison.c" /* yacc.c:1646 */ break; case 785: #line 2714 "VParseBison.y" /* yacc.c:1646 */ { } #line 25375 "VParseBison.c" /* yacc.c:1646 */ break; case 786: #line 2715 "VParseBison.y" /* yacc.c:1646 */ { } #line 25381 "VParseBison.c" /* yacc.c:1646 */ break; case 787: #line 2719 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25387 "VParseBison.c" /* yacc.c:1646 */ break; case 788: #line 2720 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 25393 "VParseBison.c" /* yacc.c:1646 */ break; case 789: #line 2736 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25399 "VParseBison.c" /* yacc.c:1646 */ break; case 790: #line 2737 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-4].str)+(yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25405 "VParseBison.c" /* yacc.c:1646 */ break; case 791: #line 2738 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25411 "VParseBison.c" /* yacc.c:1646 */ break; case 792: #line 2743 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25417 "VParseBison.c" /* yacc.c:1646 */ break; case 793: #line 2744 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+" "+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 25423 "VParseBison.c" /* yacc.c:1646 */ break; case 794: #line 2745 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25429 "VParseBison.c" /* yacc.c:1646 */ break; case 795: #line 2751 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+" with..."; } #line 25435 "VParseBison.c" /* yacc.c:1646 */ break; case 796: #line 2756 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25441 "VParseBison.c" /* yacc.c:1646 */ break; case 797: #line 2757 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+" "+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 25447 "VParseBison.c" /* yacc.c:1646 */ break; case 798: #line 2758 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25453 "VParseBison.c" /* yacc.c:1646 */ break; case 799: #line 2764 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+" with..."; } #line 25459 "VParseBison.c" /* yacc.c:1646 */ break; case 800: #line 2768 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 25465 "VParseBison.c" /* yacc.c:1646 */ break; case 801: #line 2772 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str); } #line 25471 "VParseBison.c" /* yacc.c:1646 */ break; case 802: #line 2774 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25477 "VParseBison.c" /* yacc.c:1646 */ break; case 803: #line 2777 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str); } #line 25483 "VParseBison.c" /* yacc.c:1646 */ break; case 804: #line 2778 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25489 "VParseBison.c" /* yacc.c:1646 */ break; case 805: #line 2779 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str); } #line 25495 "VParseBison.c" /* yacc.c:1646 */ break; case 806: #line 2780 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25501 "VParseBison.c" /* yacc.c:1646 */ break; case 807: #line 2781 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str); } #line 25507 "VParseBison.c" /* yacc.c:1646 */ break; case 808: #line 2782 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25513 "VParseBison.c" /* yacc.c:1646 */ break; case 809: #line 2783 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str); } #line 25519 "VParseBison.c" /* yacc.c:1646 */ break; case 810: #line 2784 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"("+(yyvsp[-1].str)+")"; } #line 25525 "VParseBison.c" /* yacc.c:1646 */ break; case 811: #line 2789 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str); NEED_S09((yyvsp[-2].fl),"elaboration system tasks"); } #line 25531 "VParseBison.c" /* yacc.c:1646 */ break; case 812: #line 2790 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"("+(yyvsp[-2].str)+")"; NEED_S09((yyvsp[-4].fl),"elaboration system tasks"); } #line 25537 "VParseBison.c" /* yacc.c:1646 */ break; case 813: #line 2791 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str); NEED_S09((yyvsp[-2].fl),"elaboration system tasks"); } #line 25543 "VParseBison.c" /* yacc.c:1646 */ break; case 814: #line 2792 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"("+(yyvsp[-2].str)+")"; NEED_S09((yyvsp[-4].fl),"elaboration system tasks"); } #line 25549 "VParseBison.c" /* yacc.c:1646 */ break; case 815: #line 2793 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str); NEED_S09((yyvsp[-2].fl),"elaboration system tasks"); } #line 25555 "VParseBison.c" /* yacc.c:1646 */ break; case 816: #line 2794 "VParseBison.y" /* yacc.c:1646 */ {(yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"("+(yyvsp[-2].str)+")"; NEED_S09((yyvsp[-4].fl),"elaboration system tasks"); } #line 25561 "VParseBison.c" /* yacc.c:1646 */ break; case 817: #line 2795 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str); NEED_S09((yyvsp[-2].fl),"elaboration system tasks"); } #line 25567 "VParseBison.c" /* yacc.c:1646 */ break; case 818: #line 2796 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"("+(yyvsp[-2].str)+")"; NEED_S09((yyvsp[-4].fl),"elaboration system tasks"); } #line 25573 "VParseBison.c" /* yacc.c:1646 */ break; case 819: #line 2802 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 25579 "VParseBison.c" /* yacc.c:1646 */ break; case 820: #line 2808 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); } #line 25585 "VParseBison.c" /* yacc.c:1646 */ break; case 821: #line 2809 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); } #line 25591 "VParseBison.c" /* yacc.c:1646 */ break; case 822: #line 2814 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endtaskfuncCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::TASK); } #line 25598 "VParseBison.c" /* yacc.c:1646 */ break; case 823: #line 2817 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endtaskfuncCb((yyvsp[-3].fl),"endtask"); PARSEP->symPopScope(VAstType::TASK); } #line 25605 "VParseBison.c" /* yacc.c:1646 */ break; case 824: #line 2824 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::TASK); PARSEP->endtaskfuncCb((yyvsp[-4].fl),"endtask"); } #line 25611 "VParseBison.c" /* yacc.c:1646 */ break; case 825: #line 2825 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::TASK); PARSEP->endtaskfuncCb((yyvsp[-1].fl),"endtask"); } #line 25617 "VParseBison.c" /* yacc.c:1646 */ break; case 826: #line 2829 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); } #line 25623 "VParseBison.c" /* yacc.c:1646 */ break; case 827: #line 2830 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); } #line 25629 "VParseBison.c" /* yacc.c:1646 */ break; case 828: #line 2835 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endtaskfuncCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::FUNCTION); } #line 25636 "VParseBison.c" /* yacc.c:1646 */ break; case 829: #line 2838 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endtaskfuncCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::FUNCTION); } #line 25643 "VParseBison.c" /* yacc.c:1646 */ break; case 830: #line 2841 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endtaskfuncCb((yyvsp[-3].fl),"endfunction"); PARSEP->symPopScope(VAstType::FUNCTION); } #line 25650 "VParseBison.c" /* yacc.c:1646 */ break; case 831: #line 2844 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endtaskfuncCb((yyvsp[-3].fl),"endfunction"); PARSEP->symPopScope(VAstType::FUNCTION); } #line 25657 "VParseBison.c" /* yacc.c:1646 */ break; case 832: #line 2851 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[-4].fl),"endfunction"); } #line 25663 "VParseBison.c" /* yacc.c:1646 */ break; case 833: #line 2852 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[-1].fl),"endfunction"); } #line 25669 "VParseBison.c" /* yacc.c:1646 */ break; case 834: #line 2856 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[-5].fl),"endfunction"); } #line 25675 "VParseBison.c" /* yacc.c:1646 */ break; case 835: #line 2857 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::FUNCTION); PARSEP->endtaskfuncCb((yyvsp[-2].fl),"endfunction"); } #line 25681 "VParseBison.c" /* yacc.c:1646 */ break; case 836: #line 2861 "VParseBison.y" /* yacc.c:1646 */ { } #line 25687 "VParseBison.c" /* yacc.c:1646 */ break; case 837: #line 2862 "VParseBison.y" /* yacc.c:1646 */ { } #line 25693 "VParseBison.c" /* yacc.c:1646 */ break; case 838: #line 2866 "VParseBison.y" /* yacc.c:1646 */ { } #line 25699 "VParseBison.c" /* yacc.c:1646 */ break; case 839: #line 2867 "VParseBison.y" /* yacc.c:1646 */ { } #line 25705 "VParseBison.c" /* yacc.c:1646 */ break; case 840: #line 2872 "VParseBison.y" /* yacc.c:1646 */ { } #line 25711 "VParseBison.c" /* yacc.c:1646 */ break; case 841: #line 2873 "VParseBison.y" /* yacc.c:1646 */ { } #line 25717 "VParseBison.c" /* yacc.c:1646 */ break; case 842: #line 2878 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::TASK, (yyvsp[0].str), (yyvsp[0].scp)); PARSEP->taskCb((yyvsp[0].fl),"task",(yyvsp[0].str)); } #line 25724 "VParseBison.c" /* yacc.c:1646 */ break; case 843: #line 2886 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[0].str), (yyvsp[0].scp)); PARSEP->functionCb((yyvsp[0].fl),"function",(yyvsp[0].str),""); } #line 25731 "VParseBison.c" /* yacc.c:1646 */ break; case 844: #line 2889 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[0].str), (yyvsp[0].scp)); PARSEP->functionCb((yyvsp[0].fl),"function",(yyvsp[0].str),SPACED((yyvsp[-2].str),(yyvsp[-1].str))); } #line 25738 "VParseBison.c" /* yacc.c:1646 */ break; case 845: #line 2892 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[0].str), (yyvsp[0].scp)); PARSEP->functionCb((yyvsp[0].fl),"function",(yyvsp[0].str),(yyvsp[-1].str)); } #line 25745 "VParseBison.c" /* yacc.c:1646 */ break; case 846: #line 2895 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[0].str), (yyvsp[0].scp)); PARSEP->functionCb((yyvsp[0].fl),"function",(yyvsp[0].str),(yyvsp[-1].str)); } #line 25752 "VParseBison.c" /* yacc.c:1646 */ break; case 847: #line 2898 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, (yyvsp[0].str), (yyvsp[0].scp)); PARSEP->functionCb((yyvsp[0].fl),"function",(yyvsp[0].str),(yyvsp[-1].str)); } #line 25759 "VParseBison.c" /* yacc.c:1646 */ break; case 848: #line 2904 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", NULL); PARSEP->functionCb((yyvsp[0].fl),"function","new",""); } #line 25766 "VParseBison.c" /* yacc.c:1646 */ break; case 849: #line 2907 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", NULL); PARSEP->functionCb((yyvsp[0].fl),"function","new",""); } #line 25773 "VParseBison.c" /* yacc.c:1646 */ break; case 850: #line 2910 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewUnder(VAstType::FUNCTION, "new", (yyvsp[-1].scp)); PARSEP->functionCb((yyvsp[0].fl),"function","new",""); } #line 25780 "VParseBison.c" /* yacc.c:1646 */ break; case 851: #line 2916 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.scp)=NULL; (yyval.str) = (yyvsp[0].str); } #line 25786 "VParseBison.c" /* yacc.c:1646 */ break; case 852: #line 2917 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.scp)=NULL; (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[-1].str); } #line 25792 "VParseBison.c" /* yacc.c:1646 */ break; case 853: #line 2918 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.scp)=(yyvsp[0].scp); (yyval.str) = (yyvsp[0].str); } #line 25798 "VParseBison.c" /* yacc.c:1646 */ break; case 854: #line 2922 "VParseBison.y" /* yacc.c:1646 */ { } #line 25804 "VParseBison.c" /* yacc.c:1646 */ break; case 855: #line 2923 "VParseBison.y" /* yacc.c:1646 */ { } #line 25810 "VParseBison.c" /* yacc.c:1646 */ break; case 856: #line 2927 "VParseBison.y" /* yacc.c:1646 */ { } #line 25816 "VParseBison.c" /* yacc.c:1646 */ break; case 857: #line 2928 "VParseBison.y" /* yacc.c:1646 */ { } #line 25822 "VParseBison.c" /* yacc.c:1646 */ break; case 858: #line 2932 "VParseBison.y" /* yacc.c:1646 */ { } #line 25828 "VParseBison.c" /* yacc.c:1646 */ break; case 859: #line 2933 "VParseBison.y" /* yacc.c:1646 */ { } #line 25834 "VParseBison.c" /* yacc.c:1646 */ break; case 860: #line 2934 "VParseBison.y" /* yacc.c:1646 */ { } #line 25840 "VParseBison.c" /* yacc.c:1646 */ break; case 861: #line 2935 "VParseBison.y" /* yacc.c:1646 */ { } #line 25846 "VParseBison.c" /* yacc.c:1646 */ break; case 862: #line 2939 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 25852 "VParseBison.c" /* yacc.c:1646 */ break; case 863: #line 2940 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 25858 "VParseBison.c" /* yacc.c:1646 */ break; case 864: #line 2944 "VParseBison.y" /* yacc.c:1646 */ { } #line 25864 "VParseBison.c" /* yacc.c:1646 */ break; case 865: #line 2945 "VParseBison.y" /* yacc.c:1646 */ { } #line 25870 "VParseBison.c" /* yacc.c:1646 */ break; case 866: #line 2949 "VParseBison.y" /* yacc.c:1646 */ { } #line 25876 "VParseBison.c" /* yacc.c:1646 */ break; case 867: #line 2950 "VParseBison.y" /* yacc.c:1646 */ { } #line 25882 "VParseBison.c" /* yacc.c:1646 */ break; case 868: #line 2955 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_LIST(""); VARIO("input"); } #line 25888 "VParseBison.c" /* yacc.c:1646 */ break; case 869: #line 2956 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); } #line 25894 "VParseBison.c" /* yacc.c:1646 */ break; case 870: #line 2960 "VParseBison.y" /* yacc.c:1646 */ { } #line 25900 "VParseBison.c" /* yacc.c:1646 */ break; case 871: #line 2961 "VParseBison.y" /* yacc.c:1646 */ { } #line 25906 "VParseBison.c" /* yacc.c:1646 */ break; case 872: #line 2966 "VParseBison.y" /* yacc.c:1646 */ { PINNUMINC(); } #line 25912 "VParseBison.c" /* yacc.c:1646 */ break; case 873: #line 2967 "VParseBison.y" /* yacc.c:1646 */ { PINNUMINC(); } #line 25918 "VParseBison.c" /* yacc.c:1646 */ break; case 874: #line 2968 "VParseBison.y" /* yacc.c:1646 */ { PINNUMINC(); } #line 25924 "VParseBison.c" /* yacc.c:1646 */ break; case 875: #line 2972 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25930 "VParseBison.c" /* yacc.c:1646 */ break; case 876: #line 2973 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 25936 "VParseBison.c" /* yacc.c:1646 */ break; case 877: #line 2974 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25942 "VParseBison.c" /* yacc.c:1646 */ break; case 878: #line 2975 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25948 "VParseBison.c" /* yacc.c:1646 */ break; case 879: #line 2976 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25954 "VParseBison.c" /* yacc.c:1646 */ break; case 880: #line 2978 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(""); /*default_nettype-see spec*/ } #line 25960 "VParseBison.c" /* yacc.c:1646 */ break; case 881: #line 2979 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25966 "VParseBison.c" /* yacc.c:1646 */ break; case 882: #line 2980 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 25972 "VParseBison.c" /* yacc.c:1646 */ break; case 883: #line 2981 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25978 "VParseBison.c" /* yacc.c:1646 */ break; case 884: #line 2982 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25984 "VParseBison.c" /* yacc.c:1646 */ break; case 885: #line 2983 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 25990 "VParseBison.c" /* yacc.c:1646 */ break; case 886: #line 2987 "VParseBison.y" /* yacc.c:1646 */ { } #line 25996 "VParseBison.c" /* yacc.c:1646 */ break; case 887: #line 2992 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-2].fl), (yyvsp[-2].str), (yyvsp[-1].str), ""); } #line 26002 "VParseBison.c" /* yacc.c:1646 */ break; case 888: #line 2994 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-4].fl), (yyvsp[-4].str), (yyvsp[-3].str), (yyvsp[0].str)); } #line 26008 "VParseBison.c" /* yacc.c:1646 */ break; case 889: #line 2998 "VParseBison.y" /* yacc.c:1646 */ { } #line 26014 "VParseBison.c" /* yacc.c:1646 */ break; case 890: #line 2999 "VParseBison.y" /* yacc.c:1646 */ { } #line 26020 "VParseBison.c" /* yacc.c:1646 */ break; case 891: #line 3012 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 26026 "VParseBison.c" /* yacc.c:1646 */ break; case 892: #line 3013 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26032 "VParseBison.c" /* yacc.c:1646 */ break; case 893: #line 3019 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 26038 "VParseBison.c" /* yacc.c:1646 */ break; case 894: #line 3020 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26044 "VParseBison.c" /* yacc.c:1646 */ break; case 895: #line 3024 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 26050 "VParseBison.c" /* yacc.c:1646 */ break; case 896: #line 3025 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 26056 "VParseBison.c" /* yacc.c:1646 */ break; case 897: #line 3026 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 26062 "VParseBison.c" /* yacc.c:1646 */ break; case 898: #line 3027 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 26068 "VParseBison.c" /* yacc.c:1646 */ break; case 899: #line 3031 "VParseBison.y" /* yacc.c:1646 */ { } #line 26074 "VParseBison.c" /* yacc.c:1646 */ break; case 900: #line 3032 "VParseBison.y" /* yacc.c:1646 */ { } #line 26080 "VParseBison.c" /* yacc.c:1646 */ break; case 901: #line 3033 "VParseBison.y" /* yacc.c:1646 */ { } #line 26086 "VParseBison.c" /* yacc.c:1646 */ break; case 902: #line 3034 "VParseBison.y" /* yacc.c:1646 */ { } #line 26092 "VParseBison.c" /* yacc.c:1646 */ break; case 903: #line 3038 "VParseBison.y" /* yacc.c:1646 */ { } #line 26098 "VParseBison.c" /* yacc.c:1646 */ break; case 904: #line 3039 "VParseBison.y" /* yacc.c:1646 */ { } #line 26104 "VParseBison.c" /* yacc.c:1646 */ break; case 905: #line 3043 "VParseBison.y" /* yacc.c:1646 */ { } #line 26110 "VParseBison.c" /* yacc.c:1646 */ break; case 906: #line 3044 "VParseBison.y" /* yacc.c:1646 */ { } #line 26116 "VParseBison.c" /* yacc.c:1646 */ break; case 907: #line 3045 "VParseBison.y" /* yacc.c:1646 */ { } #line 26122 "VParseBison.c" /* yacc.c:1646 */ break; case 908: #line 3051 "VParseBison.y" /* yacc.c:1646 */ { } #line 26128 "VParseBison.c" /* yacc.c:1646 */ break; case 909: #line 3055 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="+"; } #line 26134 "VParseBison.c" /* yacc.c:1646 */ break; case 910: #line 3056 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="++"; } #line 26140 "VParseBison.c" /* yacc.c:1646 */ break; case 911: #line 3057 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="-"; } #line 26146 "VParseBison.c" /* yacc.c:1646 */ break; case 912: #line 3058 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="--"; } #line 26152 "VParseBison.c" /* yacc.c:1646 */ break; case 913: #line 3059 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="*"; } #line 26158 "VParseBison.c" /* yacc.c:1646 */ break; case 914: #line 3060 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="**"; } #line 26164 "VParseBison.c" /* yacc.c:1646 */ break; case 915: #line 3061 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="/"; } #line 26170 "VParseBison.c" /* yacc.c:1646 */ break; case 916: #line 3062 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="%"; } #line 26176 "VParseBison.c" /* yacc.c:1646 */ break; case 917: #line 3063 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="=="; } #line 26182 "VParseBison.c" /* yacc.c:1646 */ break; case 918: #line 3064 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="!="; } #line 26188 "VParseBison.c" /* yacc.c:1646 */ break; case 919: #line 3065 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="<"; } #line 26194 "VParseBison.c" /* yacc.c:1646 */ break; case 920: #line 3066 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="<="; } #line 26200 "VParseBison.c" /* yacc.c:1646 */ break; case 921: #line 3067 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=">"; } #line 26206 "VParseBison.c" /* yacc.c:1646 */ break; case 922: #line 3068 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=">="; } #line 26212 "VParseBison.c" /* yacc.c:1646 */ break; case 923: #line 3069 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="="; } #line 26218 "VParseBison.c" /* yacc.c:1646 */ break; case 924: #line 3073 "VParseBison.y" /* yacc.c:1646 */ { } #line 26224 "VParseBison.c" /* yacc.c:1646 */ break; case 925: #line 3074 "VParseBison.y" /* yacc.c:1646 */ { } #line 26230 "VParseBison.c" /* yacc.c:1646 */ break; case 926: #line 3089 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26236 "VParseBison.c" /* yacc.c:1646 */ break; case 927: #line 3096 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26242 "VParseBison.c" /* yacc.c:1646 */ break; case 928: #line 3097 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26248 "VParseBison.c" /* yacc.c:1646 */ break; case 929: #line 3098 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26254 "VParseBison.c" /* yacc.c:1646 */ break; case 930: #line 3099 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26260 "VParseBison.c" /* yacc.c:1646 */ break; case 931: #line 3100 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26266 "VParseBison.c" /* yacc.c:1646 */ break; case 932: #line 3101 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26272 "VParseBison.c" /* yacc.c:1646 */ break; case 933: #line 3102 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26278 "VParseBison.c" /* yacc.c:1646 */ break; case 934: #line 3103 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26284 "VParseBison.c" /* yacc.c:1646 */ break; case 935: #line 3104 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26290 "VParseBison.c" /* yacc.c:1646 */ break; case 936: #line 3105 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26296 "VParseBison.c" /* yacc.c:1646 */ break; case 937: #line 3108 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26302 "VParseBison.c" /* yacc.c:1646 */ break; case 938: #line 3112 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26308 "VParseBison.c" /* yacc.c:1646 */ break; case 939: #line 3113 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26314 "VParseBison.c" /* yacc.c:1646 */ break; case 940: #line 3114 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26320 "VParseBison.c" /* yacc.c:1646 */ break; case 941: #line 3115 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26326 "VParseBison.c" /* yacc.c:1646 */ break; case 942: #line 3116 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26332 "VParseBison.c" /* yacc.c:1646 */ break; case 943: #line 3117 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26338 "VParseBison.c" /* yacc.c:1646 */ break; case 944: #line 3118 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26344 "VParseBison.c" /* yacc.c:1646 */ break; case 945: #line 3119 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26350 "VParseBison.c" /* yacc.c:1646 */ break; case 946: #line 3120 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26356 "VParseBison.c" /* yacc.c:1646 */ break; case 947: #line 3121 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26362 "VParseBison.c" /* yacc.c:1646 */ break; case 948: #line 3122 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26368 "VParseBison.c" /* yacc.c:1646 */ break; case 949: #line 3123 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26374 "VParseBison.c" /* yacc.c:1646 */ break; case 950: #line 3126 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26380 "VParseBison.c" /* yacc.c:1646 */ break; case 951: #line 3127 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26386 "VParseBison.c" /* yacc.c:1646 */ break; case 952: #line 3128 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26392 "VParseBison.c" /* yacc.c:1646 */ break; case 953: #line 3129 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26398 "VParseBison.c" /* yacc.c:1646 */ break; case 954: #line 3130 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26404 "VParseBison.c" /* yacc.c:1646 */ break; case 955: #line 3131 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26410 "VParseBison.c" /* yacc.c:1646 */ break; case 956: #line 3132 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26416 "VParseBison.c" /* yacc.c:1646 */ break; case 957: #line 3133 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26422 "VParseBison.c" /* yacc.c:1646 */ break; case 958: #line 3134 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26428 "VParseBison.c" /* yacc.c:1646 */ break; case 959: #line 3135 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26434 "VParseBison.c" /* yacc.c:1646 */ break; case 960: #line 3136 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26440 "VParseBison.c" /* yacc.c:1646 */ break; case 961: #line 3137 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26446 "VParseBison.c" /* yacc.c:1646 */ break; case 962: #line 3138 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26452 "VParseBison.c" /* yacc.c:1646 */ break; case 963: #line 3139 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26458 "VParseBison.c" /* yacc.c:1646 */ break; case 964: #line 3140 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26464 "VParseBison.c" /* yacc.c:1646 */ break; case 965: #line 3141 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26470 "VParseBison.c" /* yacc.c:1646 */ break; case 966: #line 3142 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26476 "VParseBison.c" /* yacc.c:1646 */ break; case 967: #line 3143 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26482 "VParseBison.c" /* yacc.c:1646 */ break; case 968: #line 3144 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26488 "VParseBison.c" /* yacc.c:1646 */ break; case 969: #line 3145 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26494 "VParseBison.c" /* yacc.c:1646 */ break; case 970: #line 3146 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26500 "VParseBison.c" /* yacc.c:1646 */ break; case 971: #line 3147 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26506 "VParseBison.c" /* yacc.c:1646 */ break; case 972: #line 3148 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26512 "VParseBison.c" /* yacc.c:1646 */ break; case 973: #line 3149 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26518 "VParseBison.c" /* yacc.c:1646 */ break; case 974: #line 3150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26524 "VParseBison.c" /* yacc.c:1646 */ break; case 975: #line 3151 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26530 "VParseBison.c" /* yacc.c:1646 */ break; case 976: #line 3152 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26536 "VParseBison.c" /* yacc.c:1646 */ break; case 977: #line 3158 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26542 "VParseBison.c" /* yacc.c:1646 */ break; case 978: #line 3162 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26548 "VParseBison.c" /* yacc.c:1646 */ break; case 979: #line 3165 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"?"+(yyvsp[-2].str)+":"+(yyvsp[0].str); } #line 26554 "VParseBison.c" /* yacc.c:1646 */ break; case 980: #line 3168 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+" inside {"+(yyvsp[-2].str)+"}"; } #line 26560 "VParseBison.c" /* yacc.c:1646 */ break; case 981: #line 3171 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = " tagged "+(yyvsp[-1].str); } #line 26566 "VParseBison.c" /* yacc.c:1646 */ break; case 982: #line 3172 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = " tagged "+(yyvsp[-2].str)+" "+(yyvsp[-1].str); } #line 26572 "VParseBison.c" /* yacc.c:1646 */ break; case 983: #line 3177 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26578 "VParseBison.c" /* yacc.c:1646 */ break; case 984: #line 3178 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26584 "VParseBison.c" /* yacc.c:1646 */ break; case 985: #line 3179 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26590 "VParseBison.c" /* yacc.c:1646 */ break; case 986: #line 3180 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26596 "VParseBison.c" /* yacc.c:1646 */ break; case 988: #line 3191 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"{"+(yyvsp[-2].str)+"}}"; } #line 26602 "VParseBison.c" /* yacc.c:1646 */ break; case 989: #line 3194 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-8].fl); (yyval.str) = "{"+(yyvsp[-7].str)+"{"+(yyvsp[-5].str)+"}}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-3].fl),"{}[]"); } #line 26608 "VParseBison.c" /* yacc.c:1646 */ break; case 990: #line 3196 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 26614 "VParseBison.c" /* yacc.c:1646 */ break; case 991: #line 3198 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 26620 "VParseBison.c" /* yacc.c:1646 */ break; case 992: #line 3200 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 26626 "VParseBison.c" /* yacc.c:1646 */ break; case 993: #line 3202 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 26632 "VParseBison.c" /* yacc.c:1646 */ break; case 994: #line 3204 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 26638 "VParseBison.c" /* yacc.c:1646 */ break; case 995: #line 3206 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 26644 "VParseBison.c" /* yacc.c:1646 */ break; case 996: #line 3212 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "("+(yyvsp[-1].str)+")"; } #line 26650 "VParseBison.c" /* yacc.c:1646 */ break; case 997: #line 3213 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str) = "("+(yyvsp[-5].str)+":"+(yyvsp[-3].str)+":"+(yyvsp[-2].str)+")"; } #line 26656 "VParseBison.c" /* yacc.c:1646 */ break; case 998: #line 3215 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "_("+(yyvsp[-2].str)+")"; } #line 26662 "VParseBison.c" /* yacc.c:1646 */ break; case 999: #line 3218 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 26668 "VParseBison.c" /* yacc.c:1646 */ break; case 1000: #line 3221 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 26674 "VParseBison.c" /* yacc.c:1646 */ break; case 1001: #line 3230 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = "$"; } #line 26680 "VParseBison.c" /* yacc.c:1646 */ break; case 1002: #line 3231 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26686 "VParseBison.c" /* yacc.c:1646 */ break; case 1003: #line 3238 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26692 "VParseBison.c" /* yacc.c:1646 */ break; case 1004: #line 3244 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + "&&&" + (yyvsp[0].str); } #line 26698 "VParseBison.c" /* yacc.c:1646 */ break; case 1005: #line 3249 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 26704 "VParseBison.c" /* yacc.c:1646 */ break; case 1006: #line 3250 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 26710 "VParseBison.c" /* yacc.c:1646 */ break; case 1007: #line 3254 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str) + " dist " + (yyvsp[-2].str)+"..."+(yyvsp[0].str); } #line 26716 "VParseBison.c" /* yacc.c:1646 */ break; case 1008: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26722 "VParseBison.c" /* yacc.c:1646 */ break; case 1009: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26728 "VParseBison.c" /* yacc.c:1646 */ break; case 1010: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26734 "VParseBison.c" /* yacc.c:1646 */ break; case 1011: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26740 "VParseBison.c" /* yacc.c:1646 */ break; case 1012: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26746 "VParseBison.c" /* yacc.c:1646 */ break; case 1013: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26752 "VParseBison.c" /* yacc.c:1646 */ break; case 1014: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26758 "VParseBison.c" /* yacc.c:1646 */ break; case 1015: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26764 "VParseBison.c" /* yacc.c:1646 */ break; case 1016: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26770 "VParseBison.c" /* yacc.c:1646 */ break; case 1017: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 26776 "VParseBison.c" /* yacc.c:1646 */ break; case 1018: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 26782 "VParseBison.c" /* yacc.c:1646 */ break; case 1019: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26788 "VParseBison.c" /* yacc.c:1646 */ break; case 1020: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26794 "VParseBison.c" /* yacc.c:1646 */ break; case 1021: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26800 "VParseBison.c" /* yacc.c:1646 */ break; case 1022: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26806 "VParseBison.c" /* yacc.c:1646 */ break; case 1023: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26812 "VParseBison.c" /* yacc.c:1646 */ break; case 1024: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26818 "VParseBison.c" /* yacc.c:1646 */ break; case 1025: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26824 "VParseBison.c" /* yacc.c:1646 */ break; case 1026: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26830 "VParseBison.c" /* yacc.c:1646 */ break; case 1027: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26836 "VParseBison.c" /* yacc.c:1646 */ break; case 1028: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26842 "VParseBison.c" /* yacc.c:1646 */ break; case 1029: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26848 "VParseBison.c" /* yacc.c:1646 */ break; case 1030: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 26854 "VParseBison.c" /* yacc.c:1646 */ break; case 1031: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26860 "VParseBison.c" /* yacc.c:1646 */ break; case 1032: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26866 "VParseBison.c" /* yacc.c:1646 */ break; case 1033: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26872 "VParseBison.c" /* yacc.c:1646 */ break; case 1034: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26878 "VParseBison.c" /* yacc.c:1646 */ break; case 1035: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26884 "VParseBison.c" /* yacc.c:1646 */ break; case 1036: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26890 "VParseBison.c" /* yacc.c:1646 */ break; case 1037: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26896 "VParseBison.c" /* yacc.c:1646 */ break; case 1038: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26902 "VParseBison.c" /* yacc.c:1646 */ break; case 1039: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26908 "VParseBison.c" /* yacc.c:1646 */ break; case 1040: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26914 "VParseBison.c" /* yacc.c:1646 */ break; case 1041: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26920 "VParseBison.c" /* yacc.c:1646 */ break; case 1042: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26926 "VParseBison.c" /* yacc.c:1646 */ break; case 1043: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26932 "VParseBison.c" /* yacc.c:1646 */ break; case 1044: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26938 "VParseBison.c" /* yacc.c:1646 */ break; case 1045: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26944 "VParseBison.c" /* yacc.c:1646 */ break; case 1046: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26950 "VParseBison.c" /* yacc.c:1646 */ break; case 1047: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26956 "VParseBison.c" /* yacc.c:1646 */ break; case 1048: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26962 "VParseBison.c" /* yacc.c:1646 */ break; case 1049: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26968 "VParseBison.c" /* yacc.c:1646 */ break; case 1050: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26974 "VParseBison.c" /* yacc.c:1646 */ break; case 1051: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26980 "VParseBison.c" /* yacc.c:1646 */ break; case 1052: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26986 "VParseBison.c" /* yacc.c:1646 */ break; case 1053: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26992 "VParseBison.c" /* yacc.c:1646 */ break; case 1054: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 26998 "VParseBison.c" /* yacc.c:1646 */ break; case 1055: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27004 "VParseBison.c" /* yacc.c:1646 */ break; case 1056: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27010 "VParseBison.c" /* yacc.c:1646 */ break; case 1057: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27016 "VParseBison.c" /* yacc.c:1646 */ break; case 1058: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27022 "VParseBison.c" /* yacc.c:1646 */ break; case 1059: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27028 "VParseBison.c" /* yacc.c:1646 */ break; case 1060: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"?"+(yyvsp[-2].str)+":"+(yyvsp[0].str); } #line 27034 "VParseBison.c" /* yacc.c:1646 */ break; case 1061: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+" inside {"+(yyvsp[-2].str)+"}"; } #line 27040 "VParseBison.c" /* yacc.c:1646 */ break; case 1062: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = " tagged "+(yyvsp[-1].str); } #line 27046 "VParseBison.c" /* yacc.c:1646 */ break; case 1063: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = " tagged "+(yyvsp[-2].str)+" "+(yyvsp[-1].str); } #line 27052 "VParseBison.c" /* yacc.c:1646 */ break; case 1064: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27058 "VParseBison.c" /* yacc.c:1646 */ break; case 1065: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27064 "VParseBison.c" /* yacc.c:1646 */ break; case 1066: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27070 "VParseBison.c" /* yacc.c:1646 */ break; case 1067: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27076 "VParseBison.c" /* yacc.c:1646 */ break; case 1069: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"{"+(yyvsp[-2].str)+"}}"; } #line 27082 "VParseBison.c" /* yacc.c:1646 */ break; case 1070: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-8].fl); (yyval.str) = "{"+(yyvsp[-7].str)+"{"+(yyvsp[-5].str)+"}}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-3].fl),"{}[]"); } #line 27088 "VParseBison.c" /* yacc.c:1646 */ break; case 1071: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 27094 "VParseBison.c" /* yacc.c:1646 */ break; case 1072: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 27100 "VParseBison.c" /* yacc.c:1646 */ break; case 1073: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 27106 "VParseBison.c" /* yacc.c:1646 */ break; case 1074: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 27112 "VParseBison.c" /* yacc.c:1646 */ break; case 1075: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 27118 "VParseBison.c" /* yacc.c:1646 */ break; case 1076: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 27124 "VParseBison.c" /* yacc.c:1646 */ break; case 1077: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "("+(yyvsp[-1].str)+")"; } #line 27130 "VParseBison.c" /* yacc.c:1646 */ break; case 1078: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str) = "("+(yyvsp[-5].str)+":"+(yyvsp[-3].str)+":"+(yyvsp[-2].str)+")"; } #line 27136 "VParseBison.c" /* yacc.c:1646 */ break; case 1079: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "_("+(yyvsp[-2].str)+")"; } #line 27142 "VParseBison.c" /* yacc.c:1646 */ break; case 1080: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 27148 "VParseBison.c" /* yacc.c:1646 */ break; case 1081: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 27154 "VParseBison.c" /* yacc.c:1646 */ break; case 1082: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = "$"; } #line 27160 "VParseBison.c" /* yacc.c:1646 */ break; case 1083: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27166 "VParseBison.c" /* yacc.c:1646 */ break; case 1084: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27172 "VParseBison.c" /* yacc.c:1646 */ break; case 1085: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + "&&&" + (yyvsp[0].str); } #line 27178 "VParseBison.c" /* yacc.c:1646 */ break; case 1086: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 27184 "VParseBison.c" /* yacc.c:1646 */ break; case 1087: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 27190 "VParseBison.c" /* yacc.c:1646 */ break; case 1088: #line 3258 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str) + " dist " + (yyvsp[-2].str)+"..."+(yyvsp[0].str); } #line 27196 "VParseBison.c" /* yacc.c:1646 */ break; case 1089: #line 3266 "VParseBison.y" /* yacc.c:1646 */ { } #line 27202 "VParseBison.c" /* yacc.c:1646 */ break; case 1090: #line 3267 "VParseBison.y" /* yacc.c:1646 */ { } #line 27208 "VParseBison.c" /* yacc.c:1646 */ break; case 1091: #line 3273 "VParseBison.y" /* yacc.c:1646 */ { } #line 27214 "VParseBison.c" /* yacc.c:1646 */ break; case 1092: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27220 "VParseBison.c" /* yacc.c:1646 */ break; case 1093: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27226 "VParseBison.c" /* yacc.c:1646 */ break; case 1094: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27232 "VParseBison.c" /* yacc.c:1646 */ break; case 1095: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27238 "VParseBison.c" /* yacc.c:1646 */ break; case 1096: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27244 "VParseBison.c" /* yacc.c:1646 */ break; case 1097: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27250 "VParseBison.c" /* yacc.c:1646 */ break; case 1098: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27256 "VParseBison.c" /* yacc.c:1646 */ break; case 1099: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27262 "VParseBison.c" /* yacc.c:1646 */ break; case 1100: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27268 "VParseBison.c" /* yacc.c:1646 */ break; case 1101: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 27274 "VParseBison.c" /* yacc.c:1646 */ break; case 1102: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27280 "VParseBison.c" /* yacc.c:1646 */ break; case 1103: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27286 "VParseBison.c" /* yacc.c:1646 */ break; case 1104: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27292 "VParseBison.c" /* yacc.c:1646 */ break; case 1105: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27298 "VParseBison.c" /* yacc.c:1646 */ break; case 1106: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27304 "VParseBison.c" /* yacc.c:1646 */ break; case 1107: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27310 "VParseBison.c" /* yacc.c:1646 */ break; case 1108: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27316 "VParseBison.c" /* yacc.c:1646 */ break; case 1109: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27322 "VParseBison.c" /* yacc.c:1646 */ break; case 1110: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27328 "VParseBison.c" /* yacc.c:1646 */ break; case 1111: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27334 "VParseBison.c" /* yacc.c:1646 */ break; case 1112: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27340 "VParseBison.c" /* yacc.c:1646 */ break; case 1113: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27346 "VParseBison.c" /* yacc.c:1646 */ break; case 1114: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 27352 "VParseBison.c" /* yacc.c:1646 */ break; case 1115: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27358 "VParseBison.c" /* yacc.c:1646 */ break; case 1116: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27364 "VParseBison.c" /* yacc.c:1646 */ break; case 1117: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27370 "VParseBison.c" /* yacc.c:1646 */ break; case 1118: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27376 "VParseBison.c" /* yacc.c:1646 */ break; case 1119: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27382 "VParseBison.c" /* yacc.c:1646 */ break; case 1120: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27388 "VParseBison.c" /* yacc.c:1646 */ break; case 1121: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27394 "VParseBison.c" /* yacc.c:1646 */ break; case 1122: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27400 "VParseBison.c" /* yacc.c:1646 */ break; case 1123: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27406 "VParseBison.c" /* yacc.c:1646 */ break; case 1124: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27412 "VParseBison.c" /* yacc.c:1646 */ break; case 1125: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27418 "VParseBison.c" /* yacc.c:1646 */ break; case 1126: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27424 "VParseBison.c" /* yacc.c:1646 */ break; case 1127: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27430 "VParseBison.c" /* yacc.c:1646 */ break; case 1128: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27436 "VParseBison.c" /* yacc.c:1646 */ break; case 1129: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27442 "VParseBison.c" /* yacc.c:1646 */ break; case 1130: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27448 "VParseBison.c" /* yacc.c:1646 */ break; case 1131: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27454 "VParseBison.c" /* yacc.c:1646 */ break; case 1132: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27460 "VParseBison.c" /* yacc.c:1646 */ break; case 1133: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27466 "VParseBison.c" /* yacc.c:1646 */ break; case 1134: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27472 "VParseBison.c" /* yacc.c:1646 */ break; case 1135: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27478 "VParseBison.c" /* yacc.c:1646 */ break; case 1136: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27484 "VParseBison.c" /* yacc.c:1646 */ break; case 1137: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27490 "VParseBison.c" /* yacc.c:1646 */ break; case 1138: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27496 "VParseBison.c" /* yacc.c:1646 */ break; case 1139: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27502 "VParseBison.c" /* yacc.c:1646 */ break; case 1140: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27508 "VParseBison.c" /* yacc.c:1646 */ break; case 1141: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27514 "VParseBison.c" /* yacc.c:1646 */ break; case 1142: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27520 "VParseBison.c" /* yacc.c:1646 */ break; case 1143: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 27526 "VParseBison.c" /* yacc.c:1646 */ break; case 1144: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"?"+(yyvsp[-2].str)+":"+(yyvsp[0].str); } #line 27532 "VParseBison.c" /* yacc.c:1646 */ break; case 1145: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+" inside {"+(yyvsp[-2].str)+"}"; } #line 27538 "VParseBison.c" /* yacc.c:1646 */ break; case 1146: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = " tagged "+(yyvsp[-1].str); } #line 27544 "VParseBison.c" /* yacc.c:1646 */ break; case 1147: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = " tagged "+(yyvsp[-2].str)+" "+(yyvsp[-1].str); } #line 27550 "VParseBison.c" /* yacc.c:1646 */ break; case 1148: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27556 "VParseBison.c" /* yacc.c:1646 */ break; case 1149: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27562 "VParseBison.c" /* yacc.c:1646 */ break; case 1150: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27568 "VParseBison.c" /* yacc.c:1646 */ break; case 1151: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27574 "VParseBison.c" /* yacc.c:1646 */ break; case 1153: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"{"+(yyvsp[-2].str)+"}}"; } #line 27580 "VParseBison.c" /* yacc.c:1646 */ break; case 1154: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-8].fl); (yyval.str) = "{"+(yyvsp[-7].str)+"{"+(yyvsp[-5].str)+"}}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-3].fl),"{}[]"); } #line 27586 "VParseBison.c" /* yacc.c:1646 */ break; case 1155: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 27592 "VParseBison.c" /* yacc.c:1646 */ break; case 1156: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 27598 "VParseBison.c" /* yacc.c:1646 */ break; case 1157: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 27604 "VParseBison.c" /* yacc.c:1646 */ break; case 1158: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 27610 "VParseBison.c" /* yacc.c:1646 */ break; case 1159: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 27616 "VParseBison.c" /* yacc.c:1646 */ break; case 1160: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 27622 "VParseBison.c" /* yacc.c:1646 */ break; case 1161: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = "("+(yyvsp[-2].str)+")"; } #line 27628 "VParseBison.c" /* yacc.c:1646 */ break; case 1162: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "("+(yyvsp[-6].str)+":"+(yyvsp[-4].str)+":"+(yyvsp[-3].str)+")"; } #line 27634 "VParseBison.c" /* yacc.c:1646 */ break; case 1163: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "_("+(yyvsp[-2].str)+")"; } #line 27640 "VParseBison.c" /* yacc.c:1646 */ break; case 1164: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 27646 "VParseBison.c" /* yacc.c:1646 */ break; case 1165: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 27652 "VParseBison.c" /* yacc.c:1646 */ break; case 1166: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = "$"; } #line 27658 "VParseBison.c" /* yacc.c:1646 */ break; case 1167: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27664 "VParseBison.c" /* yacc.c:1646 */ break; case 1168: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27670 "VParseBison.c" /* yacc.c:1646 */ break; case 1169: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + "&&&" + (yyvsp[0].str); } #line 27676 "VParseBison.c" /* yacc.c:1646 */ break; case 1170: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 27682 "VParseBison.c" /* yacc.c:1646 */ break; case 1171: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 27688 "VParseBison.c" /* yacc.c:1646 */ break; case 1172: #line 3279 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str) + " dist " + (yyvsp[-2].str)+"..."+(yyvsp[0].str); } #line 27694 "VParseBison.c" /* yacc.c:1646 */ break; case 1173: #line 3284 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "(...)"; } #line 27700 "VParseBison.c" /* yacc.c:1646 */ break; case 1174: #line 3287 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str) = "(...)"; } #line 27706 "VParseBison.c" /* yacc.c:1646 */ break; case 1175: #line 3294 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27712 "VParseBison.c" /* yacc.c:1646 */ break; case 1176: #line 3296 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "{"+(yyvsp[-1].str)+"}"; } #line 27718 "VParseBison.c" /* yacc.c:1646 */ break; case 1177: #line 3298 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-2].fl),"{}[]"); } #line 27724 "VParseBison.c" /* yacc.c:1646 */ break; case 1178: #line 3299 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27730 "VParseBison.c" /* yacc.c:1646 */ break; case 1179: #line 3300 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27736 "VParseBison.c" /* yacc.c:1646 */ break; case 1180: #line 3301 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27742 "VParseBison.c" /* yacc.c:1646 */ break; case 1181: #line 3305 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27748 "VParseBison.c" /* yacc.c:1646 */ break; case 1182: #line 3306 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27754 "VParseBison.c" /* yacc.c:1646 */ break; case 1183: #line 3307 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 27760 "VParseBison.c" /* yacc.c:1646 */ break; case 1184: #line 3309 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27766 "VParseBison.c" /* yacc.c:1646 */ break; case 1185: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27772 "VParseBison.c" /* yacc.c:1646 */ break; case 1186: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "{"+(yyvsp[-1].str)+"}"; } #line 27778 "VParseBison.c" /* yacc.c:1646 */ break; case 1187: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-2].fl),"{}[]"); } #line 27784 "VParseBison.c" /* yacc.c:1646 */ break; case 1188: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27790 "VParseBison.c" /* yacc.c:1646 */ break; case 1189: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27796 "VParseBison.c" /* yacc.c:1646 */ break; case 1190: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27802 "VParseBison.c" /* yacc.c:1646 */ break; case 1191: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27808 "VParseBison.c" /* yacc.c:1646 */ break; case 1192: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27814 "VParseBison.c" /* yacc.c:1646 */ break; case 1193: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 27820 "VParseBison.c" /* yacc.c:1646 */ break; case 1194: #line 3313 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27826 "VParseBison.c" /* yacc.c:1646 */ break; case 1195: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27832 "VParseBison.c" /* yacc.c:1646 */ break; case 1196: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "{"+(yyvsp[-1].str)+"}"; } #line 27838 "VParseBison.c" /* yacc.c:1646 */ break; case 1197: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-2].fl),"{}[]"); } #line 27844 "VParseBison.c" /* yacc.c:1646 */ break; case 1198: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27850 "VParseBison.c" /* yacc.c:1646 */ break; case 1199: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27856 "VParseBison.c" /* yacc.c:1646 */ break; case 1200: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27862 "VParseBison.c" /* yacc.c:1646 */ break; case 1201: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27868 "VParseBison.c" /* yacc.c:1646 */ break; case 1202: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27874 "VParseBison.c" /* yacc.c:1646 */ break; case 1203: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 27880 "VParseBison.c" /* yacc.c:1646 */ break; case 1204: #line 3317 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27886 "VParseBison.c" /* yacc.c:1646 */ break; case 1205: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27892 "VParseBison.c" /* yacc.c:1646 */ break; case 1206: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "{"+(yyvsp[-1].str)+"}"; } #line 27898 "VParseBison.c" /* yacc.c:1646 */ break; case 1207: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-2].fl),"{}[]"); } #line 27904 "VParseBison.c" /* yacc.c:1646 */ break; case 1208: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27910 "VParseBison.c" /* yacc.c:1646 */ break; case 1209: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27916 "VParseBison.c" /* yacc.c:1646 */ break; case 1210: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27922 "VParseBison.c" /* yacc.c:1646 */ break; case 1211: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27928 "VParseBison.c" /* yacc.c:1646 */ break; case 1212: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27934 "VParseBison.c" /* yacc.c:1646 */ break; case 1213: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 27940 "VParseBison.c" /* yacc.c:1646 */ break; case 1214: #line 3321 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27946 "VParseBison.c" /* yacc.c:1646 */ break; case 1215: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 27952 "VParseBison.c" /* yacc.c:1646 */ break; case 1216: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "{"+(yyvsp[-1].str)+"}"; } #line 27958 "VParseBison.c" /* yacc.c:1646 */ break; case 1217: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-2].fl),"{}[]"); } #line 27964 "VParseBison.c" /* yacc.c:1646 */ break; case 1218: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27970 "VParseBison.c" /* yacc.c:1646 */ break; case 1219: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27976 "VParseBison.c" /* yacc.c:1646 */ break; case 1220: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 27982 "VParseBison.c" /* yacc.c:1646 */ break; case 1221: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27988 "VParseBison.c" /* yacc.c:1646 */ break; case 1222: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 27994 "VParseBison.c" /* yacc.c:1646 */ break; case 1223: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28000 "VParseBison.c" /* yacc.c:1646 */ break; case 1224: #line 3325 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28006 "VParseBison.c" /* yacc.c:1646 */ break; case 1225: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28012 "VParseBison.c" /* yacc.c:1646 */ break; case 1226: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "{"+(yyvsp[-1].str)+"}"; } #line 28018 "VParseBison.c" /* yacc.c:1646 */ break; case 1227: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-2].fl),"{}[]"); } #line 28024 "VParseBison.c" /* yacc.c:1646 */ break; case 1228: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 28030 "VParseBison.c" /* yacc.c:1646 */ break; case 1229: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 28036 "VParseBison.c" /* yacc.c:1646 */ break; case 1230: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "{"+(yyvsp[-6].str)+"}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-4].fl),"{}[]"); } #line 28042 "VParseBison.c" /* yacc.c:1646 */ break; case 1231: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 28048 "VParseBison.c" /* yacc.c:1646 */ break; case 1232: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 28054 "VParseBison.c" /* yacc.c:1646 */ break; case 1233: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28060 "VParseBison.c" /* yacc.c:1646 */ break; case 1234: #line 3329 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28066 "VParseBison.c" /* yacc.c:1646 */ break; case 1235: #line 3333 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28072 "VParseBison.c" /* yacc.c:1646 */ break; case 1236: #line 3337 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28078 "VParseBison.c" /* yacc.c:1646 */ break; case 1237: #line 3348 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28084 "VParseBison.c" /* yacc.c:1646 */ break; case 1238: #line 3349 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28090 "VParseBison.c" /* yacc.c:1646 */ break; case 1239: #line 3350 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28096 "VParseBison.c" /* yacc.c:1646 */ break; case 1240: #line 3351 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28102 "VParseBison.c" /* yacc.c:1646 */ break; case 1241: #line 3352 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); PORTNET((yyvsp[-2].fl), (yyval.str)); } #line 28108 "VParseBison.c" /* yacc.c:1646 */ break; case 1242: #line 3354 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 28114 "VParseBison.c" /* yacc.c:1646 */ break; case 1243: #line 3356 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28120 "VParseBison.c" /* yacc.c:1646 */ break; case 1244: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28126 "VParseBison.c" /* yacc.c:1646 */ break; case 1245: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28132 "VParseBison.c" /* yacc.c:1646 */ break; case 1246: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28138 "VParseBison.c" /* yacc.c:1646 */ break; case 1247: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28144 "VParseBison.c" /* yacc.c:1646 */ break; case 1248: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); PORTNET((yyvsp[-2].fl), (yyval.str)); } #line 28150 "VParseBison.c" /* yacc.c:1646 */ break; case 1249: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 28156 "VParseBison.c" /* yacc.c:1646 */ break; case 1250: #line 3360 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28162 "VParseBison.c" /* yacc.c:1646 */ break; case 1251: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28168 "VParseBison.c" /* yacc.c:1646 */ break; case 1252: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28174 "VParseBison.c" /* yacc.c:1646 */ break; case 1253: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28180 "VParseBison.c" /* yacc.c:1646 */ break; case 1254: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28186 "VParseBison.c" /* yacc.c:1646 */ break; case 1255: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); PORTNET((yyvsp[-2].fl), (yyval.str)); } #line 28192 "VParseBison.c" /* yacc.c:1646 */ break; case 1256: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 28198 "VParseBison.c" /* yacc.c:1646 */ break; case 1257: #line 3364 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28204 "VParseBison.c" /* yacc.c:1646 */ break; case 1258: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28210 "VParseBison.c" /* yacc.c:1646 */ break; case 1259: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28216 "VParseBison.c" /* yacc.c:1646 */ break; case 1260: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28222 "VParseBison.c" /* yacc.c:1646 */ break; case 1261: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28228 "VParseBison.c" /* yacc.c:1646 */ break; case 1262: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); PORTNET((yyvsp[-2].fl), (yyval.str)); } #line 28234 "VParseBison.c" /* yacc.c:1646 */ break; case 1263: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 28240 "VParseBison.c" /* yacc.c:1646 */ break; case 1264: #line 3368 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28246 "VParseBison.c" /* yacc.c:1646 */ break; case 1265: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28252 "VParseBison.c" /* yacc.c:1646 */ break; case 1266: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28258 "VParseBison.c" /* yacc.c:1646 */ break; case 1267: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28264 "VParseBison.c" /* yacc.c:1646 */ break; case 1268: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28270 "VParseBison.c" /* yacc.c:1646 */ break; case 1269: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); PORTNET((yyvsp[-2].fl), (yyval.str)); } #line 28276 "VParseBison.c" /* yacc.c:1646 */ break; case 1270: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 28282 "VParseBison.c" /* yacc.c:1646 */ break; case 1271: #line 3372 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28288 "VParseBison.c" /* yacc.c:1646 */ break; case 1272: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28294 "VParseBison.c" /* yacc.c:1646 */ break; case 1273: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28300 "VParseBison.c" /* yacc.c:1646 */ break; case 1274: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28306 "VParseBison.c" /* yacc.c:1646 */ break; case 1275: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 28312 "VParseBison.c" /* yacc.c:1646 */ break; case 1276: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); PORTNET((yyvsp[-2].fl), (yyval.str)); } #line 28318 "VParseBison.c" /* yacc.c:1646 */ break; case 1277: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 28324 "VParseBison.c" /* yacc.c:1646 */ break; case 1278: #line 3376 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28330 "VParseBison.c" /* yacc.c:1646 */ break; case 1279: #line 3381 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28336 "VParseBison.c" /* yacc.c:1646 */ break; case 1280: #line 3383 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28342 "VParseBison.c" /* yacc.c:1646 */ break; case 1281: #line 3385 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = "event_control"; } #line 28348 "VParseBison.c" /* yacc.c:1646 */ break; case 1282: #line 3389 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28354 "VParseBison.c" /* yacc.c:1646 */ break; case 1283: #line 3390 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 28360 "VParseBison.c" /* yacc.c:1646 */ break; case 1284: #line 3392 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28366 "VParseBison.c" /* yacc.c:1646 */ break; case 1285: #line 3394 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = "event_control"; } #line 28372 "VParseBison.c" /* yacc.c:1646 */ break; case 1286: #line 3400 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); PIN_CONCAT_APPEND((yyvsp[0].str)); } #line 28378 "VParseBison.c" /* yacc.c:1646 */ break; case 1287: #line 3401 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); PIN_CONCAT_APPEND((yyvsp[0].str)); } #line 28384 "VParseBison.c" /* yacc.c:1646 */ break; case 1288: #line 3405 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28390 "VParseBison.c" /* yacc.c:1646 */ break; case 1289: #line 3406 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28396 "VParseBison.c" /* yacc.c:1646 */ break; case 1290: #line 3407 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+","; } #line 28402 "VParseBison.c" /* yacc.c:1646 */ break; case 1291: #line 3412 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28408 "VParseBison.c" /* yacc.c:1646 */ break; case 1292: #line 3413 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28414 "VParseBison.c" /* yacc.c:1646 */ break; case 1293: #line 3414 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28420 "VParseBison.c" /* yacc.c:1646 */ break; case 1294: #line 3419 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28426 "VParseBison.c" /* yacc.c:1646 */ break; case 1295: #line 3420 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28432 "VParseBison.c" /* yacc.c:1646 */ break; case 1296: #line 3421 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28438 "VParseBison.c" /* yacc.c:1646 */ break; case 1297: #line 3425 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28444 "VParseBison.c" /* yacc.c:1646 */ break; case 1298: #line 3426 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28450 "VParseBison.c" /* yacc.c:1646 */ break; case 1299: #line 3430 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28456 "VParseBison.c" /* yacc.c:1646 */ break; case 1300: #line 3431 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28462 "VParseBison.c" /* yacc.c:1646 */ break; case 1301: #line 3435 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28468 "VParseBison.c" /* yacc.c:1646 */ break; case 1302: #line 3436 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28474 "VParseBison.c" /* yacc.c:1646 */ break; case 1303: #line 3440 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = ""; } #line 28480 "VParseBison.c" /* yacc.c:1646 */ break; case 1304: #line 3441 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28486 "VParseBison.c" /* yacc.c:1646 */ break; case 1305: #line 3445 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = ""; } #line 28492 "VParseBison.c" /* yacc.c:1646 */ break; case 1306: #line 3446 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 28498 "VParseBison.c" /* yacc.c:1646 */ break; case 1307: #line 3450 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28504 "VParseBison.c" /* yacc.c:1646 */ break; case 1308: #line 3451 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28510 "VParseBison.c" /* yacc.c:1646 */ break; case 1309: #line 3455 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28516 "VParseBison.c" /* yacc.c:1646 */ break; case 1310: #line 3456 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28522 "VParseBison.c" /* yacc.c:1646 */ break; case 1311: #line 3460 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 28528 "VParseBison.c" /* yacc.c:1646 */ break; case 1312: #line 3461 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 28534 "VParseBison.c" /* yacc.c:1646 */ break; case 1313: #line 3465 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)=(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 28540 "VParseBison.c" /* yacc.c:1646 */ break; case 1314: #line 3466 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str)+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 28546 "VParseBison.c" /* yacc.c:1646 */ break; case 1315: #line 3477 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)="{<<"+(yyvsp[-1].str)+"}"; } #line 28552 "VParseBison.c" /* yacc.c:1646 */ break; case 1316: #line 3478 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str)="{>>"+(yyvsp[-1].str)+"}"; } #line 28558 "VParseBison.c" /* yacc.c:1646 */ break; case 1317: #line 3479 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)="{<<"+(yyvsp[-2].str)+" "+(yyvsp[-1].str)+"}"; } #line 28564 "VParseBison.c" /* yacc.c:1646 */ break; case 1318: #line 3480 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)="{>>"+(yyvsp[-2].str)+" "+(yyvsp[-1].str)+"}"; } #line 28570 "VParseBison.c" /* yacc.c:1646 */ break; case 1319: #line 3484 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28576 "VParseBison.c" /* yacc.c:1646 */ break; case 1320: #line 3485 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28582 "VParseBison.c" /* yacc.c:1646 */ break; case 1321: #line 3492 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)="{"+(yyvsp[-1].str)+"}"; } #line 28588 "VParseBison.c" /* yacc.c:1646 */ break; case 1322: #line 3496 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28594 "VParseBison.c" /* yacc.c:1646 */ break; case 1323: #line 3497 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+","+(yyvsp[0].str); } #line 28600 "VParseBison.c" /* yacc.c:1646 */ break; case 1324: #line 3502 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 28606 "VParseBison.c" /* yacc.c:1646 */ break; case 1325: #line 3503 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str)=(yyvsp[-4].str); } #line 28612 "VParseBison.c" /* yacc.c:1646 */ break; case 1326: #line 3504 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str)=(yyvsp[-6].str); } #line 28618 "VParseBison.c" /* yacc.c:1646 */ break; case 1327: #line 3505 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str)=(yyvsp[-6].str); } #line 28624 "VParseBison.c" /* yacc.c:1646 */ break; case 1328: #line 3506 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-6].fl); (yyval.str)=(yyvsp[-6].str); } #line 28630 "VParseBison.c" /* yacc.c:1646 */ break; case 1329: #line 3520 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28636 "VParseBison.c" /* yacc.c:1646 */ break; case 1330: #line 3521 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28642 "VParseBison.c" /* yacc.c:1646 */ break; case 1331: #line 3522 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28648 "VParseBison.c" /* yacc.c:1646 */ break; case 1332: #line 3523 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28654 "VParseBison.c" /* yacc.c:1646 */ break; case 1333: #line 3524 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28660 "VParseBison.c" /* yacc.c:1646 */ break; case 1334: #line 3525 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28666 "VParseBison.c" /* yacc.c:1646 */ break; case 1335: #line 3526 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28672 "VParseBison.c" /* yacc.c:1646 */ break; case 1336: #line 3527 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28678 "VParseBison.c" /* yacc.c:1646 */ break; case 1337: #line 3528 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); INSTPREP((yyvsp[0].str),0,0); } #line 28684 "VParseBison.c" /* yacc.c:1646 */ break; case 1338: #line 3533 "VParseBison.y" /* yacc.c:1646 */ { } #line 28690 "VParseBison.c" /* yacc.c:1646 */ break; case 1339: #line 3534 "VParseBison.y" /* yacc.c:1646 */ { } #line 28696 "VParseBison.c" /* yacc.c:1646 */ break; case 1340: #line 3535 "VParseBison.y" /* yacc.c:1646 */ { } #line 28702 "VParseBison.c" /* yacc.c:1646 */ break; case 1341: #line 3539 "VParseBison.y" /* yacc.c:1646 */ { } #line 28708 "VParseBison.c" /* yacc.c:1646 */ break; case 1342: #line 3540 "VParseBison.y" /* yacc.c:1646 */ { } #line 28714 "VParseBison.c" /* yacc.c:1646 */ break; case 1343: #line 3544 "VParseBison.y" /* yacc.c:1646 */ { } #line 28720 "VParseBison.c" /* yacc.c:1646 */ break; case 1344: #line 3545 "VParseBison.y" /* yacc.c:1646 */ { } #line 28726 "VParseBison.c" /* yacc.c:1646 */ break; case 1345: #line 3552 "VParseBison.y" /* yacc.c:1646 */ { } #line 28732 "VParseBison.c" /* yacc.c:1646 */ break; case 1346: #line 3556 "VParseBison.y" /* yacc.c:1646 */ { } #line 28738 "VParseBison.c" /* yacc.c:1646 */ break; case 1347: #line 3557 "VParseBison.y" /* yacc.c:1646 */ { } #line 28744 "VParseBison.c" /* yacc.c:1646 */ break; case 1348: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28750 "VParseBison.c" /* yacc.c:1646 */ break; case 1349: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28756 "VParseBison.c" /* yacc.c:1646 */ break; case 1350: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28762 "VParseBison.c" /* yacc.c:1646 */ break; case 1351: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28768 "VParseBison.c" /* yacc.c:1646 */ break; case 1352: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28774 "VParseBison.c" /* yacc.c:1646 */ break; case 1353: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28780 "VParseBison.c" /* yacc.c:1646 */ break; case 1354: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28786 "VParseBison.c" /* yacc.c:1646 */ break; case 1355: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28792 "VParseBison.c" /* yacc.c:1646 */ break; case 1356: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28798 "VParseBison.c" /* yacc.c:1646 */ break; case 1357: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28804 "VParseBison.c" /* yacc.c:1646 */ break; case 1358: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28810 "VParseBison.c" /* yacc.c:1646 */ break; case 1359: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28816 "VParseBison.c" /* yacc.c:1646 */ break; case 1360: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28822 "VParseBison.c" /* yacc.c:1646 */ break; case 1361: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28828 "VParseBison.c" /* yacc.c:1646 */ break; case 1362: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28834 "VParseBison.c" /* yacc.c:1646 */ break; case 1363: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28840 "VParseBison.c" /* yacc.c:1646 */ break; case 1364: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28846 "VParseBison.c" /* yacc.c:1646 */ break; case 1365: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28852 "VParseBison.c" /* yacc.c:1646 */ break; case 1366: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28858 "VParseBison.c" /* yacc.c:1646 */ break; case 1367: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28864 "VParseBison.c" /* yacc.c:1646 */ break; case 1368: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28870 "VParseBison.c" /* yacc.c:1646 */ break; case 1369: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28876 "VParseBison.c" /* yacc.c:1646 */ break; case 1370: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28882 "VParseBison.c" /* yacc.c:1646 */ break; case 1371: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28888 "VParseBison.c" /* yacc.c:1646 */ break; case 1372: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28894 "VParseBison.c" /* yacc.c:1646 */ break; case 1373: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28900 "VParseBison.c" /* yacc.c:1646 */ break; case 1374: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28906 "VParseBison.c" /* yacc.c:1646 */ break; case 1375: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28912 "VParseBison.c" /* yacc.c:1646 */ break; case 1376: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28918 "VParseBison.c" /* yacc.c:1646 */ break; case 1377: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28924 "VParseBison.c" /* yacc.c:1646 */ break; case 1378: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28930 "VParseBison.c" /* yacc.c:1646 */ break; case 1379: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28936 "VParseBison.c" /* yacc.c:1646 */ break; case 1380: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28942 "VParseBison.c" /* yacc.c:1646 */ break; case 1381: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28948 "VParseBison.c" /* yacc.c:1646 */ break; case 1382: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28954 "VParseBison.c" /* yacc.c:1646 */ break; case 1383: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28960 "VParseBison.c" /* yacc.c:1646 */ break; case 1384: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28966 "VParseBison.c" /* yacc.c:1646 */ break; case 1385: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28972 "VParseBison.c" /* yacc.c:1646 */ break; case 1386: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28978 "VParseBison.c" /* yacc.c:1646 */ break; case 1387: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28984 "VParseBison.c" /* yacc.c:1646 */ break; case 1388: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28990 "VParseBison.c" /* yacc.c:1646 */ break; case 1389: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 28996 "VParseBison.c" /* yacc.c:1646 */ break; case 1390: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29002 "VParseBison.c" /* yacc.c:1646 */ break; case 1391: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29008 "VParseBison.c" /* yacc.c:1646 */ break; case 1392: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29014 "VParseBison.c" /* yacc.c:1646 */ break; case 1393: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29020 "VParseBison.c" /* yacc.c:1646 */ break; case 1394: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29026 "VParseBison.c" /* yacc.c:1646 */ break; case 1395: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29032 "VParseBison.c" /* yacc.c:1646 */ break; case 1396: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29038 "VParseBison.c" /* yacc.c:1646 */ break; case 1397: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29044 "VParseBison.c" /* yacc.c:1646 */ break; case 1398: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29050 "VParseBison.c" /* yacc.c:1646 */ break; case 1399: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29056 "VParseBison.c" /* yacc.c:1646 */ break; case 1400: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29062 "VParseBison.c" /* yacc.c:1646 */ break; case 1401: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29068 "VParseBison.c" /* yacc.c:1646 */ break; case 1402: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29074 "VParseBison.c" /* yacc.c:1646 */ break; case 1403: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29080 "VParseBison.c" /* yacc.c:1646 */ break; case 1404: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29086 "VParseBison.c" /* yacc.c:1646 */ break; case 1405: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29092 "VParseBison.c" /* yacc.c:1646 */ break; case 1406: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29098 "VParseBison.c" /* yacc.c:1646 */ break; case 1407: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29104 "VParseBison.c" /* yacc.c:1646 */ break; case 1408: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29110 "VParseBison.c" /* yacc.c:1646 */ break; case 1409: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29116 "VParseBison.c" /* yacc.c:1646 */ break; case 1410: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29122 "VParseBison.c" /* yacc.c:1646 */ break; case 1411: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29128 "VParseBison.c" /* yacc.c:1646 */ break; case 1412: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29134 "VParseBison.c" /* yacc.c:1646 */ break; case 1413: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29140 "VParseBison.c" /* yacc.c:1646 */ break; case 1414: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29146 "VParseBison.c" /* yacc.c:1646 */ break; case 1415: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29152 "VParseBison.c" /* yacc.c:1646 */ break; case 1416: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29158 "VParseBison.c" /* yacc.c:1646 */ break; case 1417: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29164 "VParseBison.c" /* yacc.c:1646 */ break; case 1418: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29170 "VParseBison.c" /* yacc.c:1646 */ break; case 1419: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29176 "VParseBison.c" /* yacc.c:1646 */ break; case 1420: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29182 "VParseBison.c" /* yacc.c:1646 */ break; case 1421: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29188 "VParseBison.c" /* yacc.c:1646 */ break; case 1422: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29194 "VParseBison.c" /* yacc.c:1646 */ break; case 1423: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29200 "VParseBison.c" /* yacc.c:1646 */ break; case 1424: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29206 "VParseBison.c" /* yacc.c:1646 */ break; case 1425: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29212 "VParseBison.c" /* yacc.c:1646 */ break; case 1426: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29218 "VParseBison.c" /* yacc.c:1646 */ break; case 1427: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29224 "VParseBison.c" /* yacc.c:1646 */ break; case 1428: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29230 "VParseBison.c" /* yacc.c:1646 */ break; case 1429: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29236 "VParseBison.c" /* yacc.c:1646 */ break; case 1430: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29242 "VParseBison.c" /* yacc.c:1646 */ break; case 1431: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29248 "VParseBison.c" /* yacc.c:1646 */ break; case 1432: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29254 "VParseBison.c" /* yacc.c:1646 */ break; case 1433: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29260 "VParseBison.c" /* yacc.c:1646 */ break; case 1434: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29266 "VParseBison.c" /* yacc.c:1646 */ break; case 1435: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29272 "VParseBison.c" /* yacc.c:1646 */ break; case 1436: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29278 "VParseBison.c" /* yacc.c:1646 */ break; case 1437: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29284 "VParseBison.c" /* yacc.c:1646 */ break; case 1438: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29290 "VParseBison.c" /* yacc.c:1646 */ break; case 1439: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29296 "VParseBison.c" /* yacc.c:1646 */ break; case 1440: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29302 "VParseBison.c" /* yacc.c:1646 */ break; case 1441: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29308 "VParseBison.c" /* yacc.c:1646 */ break; case 1442: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29314 "VParseBison.c" /* yacc.c:1646 */ break; case 1443: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29320 "VParseBison.c" /* yacc.c:1646 */ break; case 1444: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29326 "VParseBison.c" /* yacc.c:1646 */ break; case 1445: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29332 "VParseBison.c" /* yacc.c:1646 */ break; case 1446: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29338 "VParseBison.c" /* yacc.c:1646 */ break; case 1447: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29344 "VParseBison.c" /* yacc.c:1646 */ break; case 1448: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29350 "VParseBison.c" /* yacc.c:1646 */ break; case 1449: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29356 "VParseBison.c" /* yacc.c:1646 */ break; case 1450: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29362 "VParseBison.c" /* yacc.c:1646 */ break; case 1451: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29368 "VParseBison.c" /* yacc.c:1646 */ break; case 1452: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29374 "VParseBison.c" /* yacc.c:1646 */ break; case 1453: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29380 "VParseBison.c" /* yacc.c:1646 */ break; case 1454: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29386 "VParseBison.c" /* yacc.c:1646 */ break; case 1455: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29392 "VParseBison.c" /* yacc.c:1646 */ break; case 1456: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29398 "VParseBison.c" /* yacc.c:1646 */ break; case 1457: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29404 "VParseBison.c" /* yacc.c:1646 */ break; case 1458: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29410 "VParseBison.c" /* yacc.c:1646 */ break; case 1459: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29416 "VParseBison.c" /* yacc.c:1646 */ break; case 1460: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29422 "VParseBison.c" /* yacc.c:1646 */ break; case 1461: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29428 "VParseBison.c" /* yacc.c:1646 */ break; case 1462: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29434 "VParseBison.c" /* yacc.c:1646 */ break; case 1463: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29440 "VParseBison.c" /* yacc.c:1646 */ break; case 1464: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29446 "VParseBison.c" /* yacc.c:1646 */ break; case 1465: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29452 "VParseBison.c" /* yacc.c:1646 */ break; case 1466: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29458 "VParseBison.c" /* yacc.c:1646 */ break; case 1467: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29464 "VParseBison.c" /* yacc.c:1646 */ break; case 1468: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29470 "VParseBison.c" /* yacc.c:1646 */ break; case 1469: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29476 "VParseBison.c" /* yacc.c:1646 */ break; case 1470: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29482 "VParseBison.c" /* yacc.c:1646 */ break; case 1471: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29488 "VParseBison.c" /* yacc.c:1646 */ break; case 1472: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29494 "VParseBison.c" /* yacc.c:1646 */ break; case 1473: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29500 "VParseBison.c" /* yacc.c:1646 */ break; case 1474: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29506 "VParseBison.c" /* yacc.c:1646 */ break; case 1475: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29512 "VParseBison.c" /* yacc.c:1646 */ break; case 1476: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29518 "VParseBison.c" /* yacc.c:1646 */ break; case 1477: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29524 "VParseBison.c" /* yacc.c:1646 */ break; case 1478: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29530 "VParseBison.c" /* yacc.c:1646 */ break; case 1479: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29536 "VParseBison.c" /* yacc.c:1646 */ break; case 1480: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29542 "VParseBison.c" /* yacc.c:1646 */ break; case 1481: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29548 "VParseBison.c" /* yacc.c:1646 */ break; case 1482: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29554 "VParseBison.c" /* yacc.c:1646 */ break; case 1483: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29560 "VParseBison.c" /* yacc.c:1646 */ break; case 1484: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29566 "VParseBison.c" /* yacc.c:1646 */ break; case 1485: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29572 "VParseBison.c" /* yacc.c:1646 */ break; case 1486: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29578 "VParseBison.c" /* yacc.c:1646 */ break; case 1487: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29584 "VParseBison.c" /* yacc.c:1646 */ break; case 1488: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29590 "VParseBison.c" /* yacc.c:1646 */ break; case 1489: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29596 "VParseBison.c" /* yacc.c:1646 */ break; case 1490: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29602 "VParseBison.c" /* yacc.c:1646 */ break; case 1491: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29608 "VParseBison.c" /* yacc.c:1646 */ break; case 1492: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29614 "VParseBison.c" /* yacc.c:1646 */ break; case 1493: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29620 "VParseBison.c" /* yacc.c:1646 */ break; case 1494: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29626 "VParseBison.c" /* yacc.c:1646 */ break; case 1495: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29632 "VParseBison.c" /* yacc.c:1646 */ break; case 1496: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29638 "VParseBison.c" /* yacc.c:1646 */ break; case 1497: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29644 "VParseBison.c" /* yacc.c:1646 */ break; case 1498: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29650 "VParseBison.c" /* yacc.c:1646 */ break; case 1499: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29656 "VParseBison.c" /* yacc.c:1646 */ break; case 1500: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29662 "VParseBison.c" /* yacc.c:1646 */ break; case 1501: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29668 "VParseBison.c" /* yacc.c:1646 */ break; case 1502: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29674 "VParseBison.c" /* yacc.c:1646 */ break; case 1503: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29680 "VParseBison.c" /* yacc.c:1646 */ break; case 1504: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29686 "VParseBison.c" /* yacc.c:1646 */ break; case 1505: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29692 "VParseBison.c" /* yacc.c:1646 */ break; case 1506: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29698 "VParseBison.c" /* yacc.c:1646 */ break; case 1507: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29704 "VParseBison.c" /* yacc.c:1646 */ break; case 1508: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29710 "VParseBison.c" /* yacc.c:1646 */ break; case 1509: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29716 "VParseBison.c" /* yacc.c:1646 */ break; case 1510: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29722 "VParseBison.c" /* yacc.c:1646 */ break; case 1511: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29728 "VParseBison.c" /* yacc.c:1646 */ break; case 1512: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29734 "VParseBison.c" /* yacc.c:1646 */ break; case 1513: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29740 "VParseBison.c" /* yacc.c:1646 */ break; case 1514: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29746 "VParseBison.c" /* yacc.c:1646 */ break; case 1515: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29752 "VParseBison.c" /* yacc.c:1646 */ break; case 1516: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29758 "VParseBison.c" /* yacc.c:1646 */ break; case 1517: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29764 "VParseBison.c" /* yacc.c:1646 */ break; case 1518: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29770 "VParseBison.c" /* yacc.c:1646 */ break; case 1519: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29776 "VParseBison.c" /* yacc.c:1646 */ break; case 1520: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29782 "VParseBison.c" /* yacc.c:1646 */ break; case 1521: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29788 "VParseBison.c" /* yacc.c:1646 */ break; case 1522: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29794 "VParseBison.c" /* yacc.c:1646 */ break; case 1523: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29800 "VParseBison.c" /* yacc.c:1646 */ break; case 1524: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29806 "VParseBison.c" /* yacc.c:1646 */ break; case 1525: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29812 "VParseBison.c" /* yacc.c:1646 */ break; case 1526: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29818 "VParseBison.c" /* yacc.c:1646 */ break; case 1527: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29824 "VParseBison.c" /* yacc.c:1646 */ break; case 1528: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29830 "VParseBison.c" /* yacc.c:1646 */ break; case 1529: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29836 "VParseBison.c" /* yacc.c:1646 */ break; case 1530: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29842 "VParseBison.c" /* yacc.c:1646 */ break; case 1531: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29848 "VParseBison.c" /* yacc.c:1646 */ break; case 1532: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29854 "VParseBison.c" /* yacc.c:1646 */ break; case 1533: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29860 "VParseBison.c" /* yacc.c:1646 */ break; case 1534: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29866 "VParseBison.c" /* yacc.c:1646 */ break; case 1535: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29872 "VParseBison.c" /* yacc.c:1646 */ break; case 1536: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29878 "VParseBison.c" /* yacc.c:1646 */ break; case 1537: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29884 "VParseBison.c" /* yacc.c:1646 */ break; case 1538: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29890 "VParseBison.c" /* yacc.c:1646 */ break; case 1539: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29896 "VParseBison.c" /* yacc.c:1646 */ break; case 1540: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29902 "VParseBison.c" /* yacc.c:1646 */ break; case 1541: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29908 "VParseBison.c" /* yacc.c:1646 */ break; case 1542: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29914 "VParseBison.c" /* yacc.c:1646 */ break; case 1543: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29920 "VParseBison.c" /* yacc.c:1646 */ break; case 1544: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29926 "VParseBison.c" /* yacc.c:1646 */ break; case 1545: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29932 "VParseBison.c" /* yacc.c:1646 */ break; case 1546: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29938 "VParseBison.c" /* yacc.c:1646 */ break; case 1547: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29944 "VParseBison.c" /* yacc.c:1646 */ break; case 1548: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29950 "VParseBison.c" /* yacc.c:1646 */ break; case 1549: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29956 "VParseBison.c" /* yacc.c:1646 */ break; case 1550: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29962 "VParseBison.c" /* yacc.c:1646 */ break; case 1551: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29968 "VParseBison.c" /* yacc.c:1646 */ break; case 1552: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29974 "VParseBison.c" /* yacc.c:1646 */ break; case 1553: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29980 "VParseBison.c" /* yacc.c:1646 */ break; case 1554: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29986 "VParseBison.c" /* yacc.c:1646 */ break; case 1555: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29992 "VParseBison.c" /* yacc.c:1646 */ break; case 1556: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 29998 "VParseBison.c" /* yacc.c:1646 */ break; case 1557: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30004 "VParseBison.c" /* yacc.c:1646 */ break; case 1558: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30010 "VParseBison.c" /* yacc.c:1646 */ break; case 1559: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30016 "VParseBison.c" /* yacc.c:1646 */ break; case 1560: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30022 "VParseBison.c" /* yacc.c:1646 */ break; case 1561: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30028 "VParseBison.c" /* yacc.c:1646 */ break; case 1562: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30034 "VParseBison.c" /* yacc.c:1646 */ break; case 1563: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30040 "VParseBison.c" /* yacc.c:1646 */ break; case 1564: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30046 "VParseBison.c" /* yacc.c:1646 */ break; case 1565: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30052 "VParseBison.c" /* yacc.c:1646 */ break; case 1566: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30058 "VParseBison.c" /* yacc.c:1646 */ break; case 1567: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30064 "VParseBison.c" /* yacc.c:1646 */ break; case 1568: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30070 "VParseBison.c" /* yacc.c:1646 */ break; case 1569: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30076 "VParseBison.c" /* yacc.c:1646 */ break; case 1570: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30082 "VParseBison.c" /* yacc.c:1646 */ break; case 1571: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30088 "VParseBison.c" /* yacc.c:1646 */ break; case 1572: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30094 "VParseBison.c" /* yacc.c:1646 */ break; case 1573: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30100 "VParseBison.c" /* yacc.c:1646 */ break; case 1574: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30106 "VParseBison.c" /* yacc.c:1646 */ break; case 1575: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30112 "VParseBison.c" /* yacc.c:1646 */ break; case 1576: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30118 "VParseBison.c" /* yacc.c:1646 */ break; case 1577: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30124 "VParseBison.c" /* yacc.c:1646 */ break; case 1578: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30130 "VParseBison.c" /* yacc.c:1646 */ break; case 1579: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30136 "VParseBison.c" /* yacc.c:1646 */ break; case 1580: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30142 "VParseBison.c" /* yacc.c:1646 */ break; case 1581: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30148 "VParseBison.c" /* yacc.c:1646 */ break; case 1582: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30154 "VParseBison.c" /* yacc.c:1646 */ break; case 1583: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30160 "VParseBison.c" /* yacc.c:1646 */ break; case 1584: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30166 "VParseBison.c" /* yacc.c:1646 */ break; case 1585: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30172 "VParseBison.c" /* yacc.c:1646 */ break; case 1586: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30178 "VParseBison.c" /* yacc.c:1646 */ break; case 1587: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30184 "VParseBison.c" /* yacc.c:1646 */ break; case 1588: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30190 "VParseBison.c" /* yacc.c:1646 */ break; case 1589: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30196 "VParseBison.c" /* yacc.c:1646 */ break; case 1590: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30202 "VParseBison.c" /* yacc.c:1646 */ break; case 1591: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30208 "VParseBison.c" /* yacc.c:1646 */ break; case 1592: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30214 "VParseBison.c" /* yacc.c:1646 */ break; case 1593: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30220 "VParseBison.c" /* yacc.c:1646 */ break; case 1594: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30226 "VParseBison.c" /* yacc.c:1646 */ break; case 1595: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30232 "VParseBison.c" /* yacc.c:1646 */ break; case 1596: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30238 "VParseBison.c" /* yacc.c:1646 */ break; case 1597: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30244 "VParseBison.c" /* yacc.c:1646 */ break; case 1598: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30250 "VParseBison.c" /* yacc.c:1646 */ break; case 1599: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30256 "VParseBison.c" /* yacc.c:1646 */ break; case 1600: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30262 "VParseBison.c" /* yacc.c:1646 */ break; case 1601: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30268 "VParseBison.c" /* yacc.c:1646 */ break; case 1602: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30274 "VParseBison.c" /* yacc.c:1646 */ break; case 1603: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30280 "VParseBison.c" /* yacc.c:1646 */ break; case 1604: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30286 "VParseBison.c" /* yacc.c:1646 */ break; case 1605: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30292 "VParseBison.c" /* yacc.c:1646 */ break; case 1606: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30298 "VParseBison.c" /* yacc.c:1646 */ break; case 1607: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30304 "VParseBison.c" /* yacc.c:1646 */ break; case 1608: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30310 "VParseBison.c" /* yacc.c:1646 */ break; case 1609: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30316 "VParseBison.c" /* yacc.c:1646 */ break; case 1610: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30322 "VParseBison.c" /* yacc.c:1646 */ break; case 1611: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30328 "VParseBison.c" /* yacc.c:1646 */ break; case 1612: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30334 "VParseBison.c" /* yacc.c:1646 */ break; case 1613: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30340 "VParseBison.c" /* yacc.c:1646 */ break; case 1614: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30346 "VParseBison.c" /* yacc.c:1646 */ break; case 1615: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30352 "VParseBison.c" /* yacc.c:1646 */ break; case 1616: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30358 "VParseBison.c" /* yacc.c:1646 */ break; case 1617: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30364 "VParseBison.c" /* yacc.c:1646 */ break; case 1618: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30370 "VParseBison.c" /* yacc.c:1646 */ break; case 1619: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30376 "VParseBison.c" /* yacc.c:1646 */ break; case 1620: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30382 "VParseBison.c" /* yacc.c:1646 */ break; case 1621: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30388 "VParseBison.c" /* yacc.c:1646 */ break; case 1622: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30394 "VParseBison.c" /* yacc.c:1646 */ break; case 1623: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30400 "VParseBison.c" /* yacc.c:1646 */ break; case 1624: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30406 "VParseBison.c" /* yacc.c:1646 */ break; case 1625: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30412 "VParseBison.c" /* yacc.c:1646 */ break; case 1626: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30418 "VParseBison.c" /* yacc.c:1646 */ break; case 1627: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30424 "VParseBison.c" /* yacc.c:1646 */ break; case 1628: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30430 "VParseBison.c" /* yacc.c:1646 */ break; case 1629: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30436 "VParseBison.c" /* yacc.c:1646 */ break; case 1630: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30442 "VParseBison.c" /* yacc.c:1646 */ break; case 1631: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30448 "VParseBison.c" /* yacc.c:1646 */ break; case 1632: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30454 "VParseBison.c" /* yacc.c:1646 */ break; case 1633: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30460 "VParseBison.c" /* yacc.c:1646 */ break; case 1634: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30466 "VParseBison.c" /* yacc.c:1646 */ break; case 1635: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30472 "VParseBison.c" /* yacc.c:1646 */ break; case 1636: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30478 "VParseBison.c" /* yacc.c:1646 */ break; case 1637: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30484 "VParseBison.c" /* yacc.c:1646 */ break; case 1638: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30490 "VParseBison.c" /* yacc.c:1646 */ break; case 1639: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30496 "VParseBison.c" /* yacc.c:1646 */ break; case 1640: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30502 "VParseBison.c" /* yacc.c:1646 */ break; case 1641: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30508 "VParseBison.c" /* yacc.c:1646 */ break; case 1642: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30514 "VParseBison.c" /* yacc.c:1646 */ break; case 1643: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30520 "VParseBison.c" /* yacc.c:1646 */ break; case 1644: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30526 "VParseBison.c" /* yacc.c:1646 */ break; case 1645: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30532 "VParseBison.c" /* yacc.c:1646 */ break; case 1646: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30538 "VParseBison.c" /* yacc.c:1646 */ break; case 1647: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30544 "VParseBison.c" /* yacc.c:1646 */ break; case 1648: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30550 "VParseBison.c" /* yacc.c:1646 */ break; case 1649: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30556 "VParseBison.c" /* yacc.c:1646 */ break; case 1650: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30562 "VParseBison.c" /* yacc.c:1646 */ break; case 1651: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30568 "VParseBison.c" /* yacc.c:1646 */ break; case 1652: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30574 "VParseBison.c" /* yacc.c:1646 */ break; case 1653: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30580 "VParseBison.c" /* yacc.c:1646 */ break; case 1654: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30586 "VParseBison.c" /* yacc.c:1646 */ break; case 1655: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30592 "VParseBison.c" /* yacc.c:1646 */ break; case 1656: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30598 "VParseBison.c" /* yacc.c:1646 */ break; case 1657: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30604 "VParseBison.c" /* yacc.c:1646 */ break; case 1658: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30610 "VParseBison.c" /* yacc.c:1646 */ break; case 1659: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30616 "VParseBison.c" /* yacc.c:1646 */ break; case 1660: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30622 "VParseBison.c" /* yacc.c:1646 */ break; case 1661: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30628 "VParseBison.c" /* yacc.c:1646 */ break; case 1662: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30634 "VParseBison.c" /* yacc.c:1646 */ break; case 1663: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30640 "VParseBison.c" /* yacc.c:1646 */ break; case 1664: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30646 "VParseBison.c" /* yacc.c:1646 */ break; case 1665: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30652 "VParseBison.c" /* yacc.c:1646 */ break; case 1666: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30658 "VParseBison.c" /* yacc.c:1646 */ break; case 1667: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30664 "VParseBison.c" /* yacc.c:1646 */ break; case 1668: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30670 "VParseBison.c" /* yacc.c:1646 */ break; case 1669: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30676 "VParseBison.c" /* yacc.c:1646 */ break; case 1670: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30682 "VParseBison.c" /* yacc.c:1646 */ break; case 1671: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30688 "VParseBison.c" /* yacc.c:1646 */ break; case 1672: #line 3561 "VParseBison.y" /* yacc.c:1646 */ { } #line 30694 "VParseBison.c" /* yacc.c:1646 */ break; case 1673: #line 3562 "VParseBison.y" /* yacc.c:1646 */ { } #line 30700 "VParseBison.c" /* yacc.c:1646 */ break; case 1674: #line 3563 "VParseBison.y" /* yacc.c:1646 */ {} #line 30706 "VParseBison.c" /* yacc.c:1646 */ break; case 1675: #line 3570 "VParseBison.y" /* yacc.c:1646 */ { } #line 30712 "VParseBison.c" /* yacc.c:1646 */ break; case 1676: #line 3571 "VParseBison.y" /* yacc.c:1646 */ { } #line 30718 "VParseBison.c" /* yacc.c:1646 */ break; case 1677: #line 3575 "VParseBison.y" /* yacc.c:1646 */ { } #line 30724 "VParseBison.c" /* yacc.c:1646 */ break; case 1678: #line 3576 "VParseBison.y" /* yacc.c:1646 */ { } #line 30730 "VParseBison.c" /* yacc.c:1646 */ break; case 1679: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30736 "VParseBison.c" /* yacc.c:1646 */ break; case 1680: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30742 "VParseBison.c" /* yacc.c:1646 */ break; case 1681: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30748 "VParseBison.c" /* yacc.c:1646 */ break; case 1682: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30754 "VParseBison.c" /* yacc.c:1646 */ break; case 1683: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30760 "VParseBison.c" /* yacc.c:1646 */ break; case 1684: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30766 "VParseBison.c" /* yacc.c:1646 */ break; case 1685: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30772 "VParseBison.c" /* yacc.c:1646 */ break; case 1686: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30778 "VParseBison.c" /* yacc.c:1646 */ break; case 1687: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30784 "VParseBison.c" /* yacc.c:1646 */ break; case 1688: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30790 "VParseBison.c" /* yacc.c:1646 */ break; case 1689: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30796 "VParseBison.c" /* yacc.c:1646 */ break; case 1690: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30802 "VParseBison.c" /* yacc.c:1646 */ break; case 1691: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30808 "VParseBison.c" /* yacc.c:1646 */ break; case 1692: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30814 "VParseBison.c" /* yacc.c:1646 */ break; case 1693: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30820 "VParseBison.c" /* yacc.c:1646 */ break; case 1694: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30826 "VParseBison.c" /* yacc.c:1646 */ break; case 1695: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30832 "VParseBison.c" /* yacc.c:1646 */ break; case 1696: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30838 "VParseBison.c" /* yacc.c:1646 */ break; case 1697: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30844 "VParseBison.c" /* yacc.c:1646 */ break; case 1698: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30850 "VParseBison.c" /* yacc.c:1646 */ break; case 1699: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30856 "VParseBison.c" /* yacc.c:1646 */ break; case 1700: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30862 "VParseBison.c" /* yacc.c:1646 */ break; case 1701: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30868 "VParseBison.c" /* yacc.c:1646 */ break; case 1702: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30874 "VParseBison.c" /* yacc.c:1646 */ break; case 1703: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30880 "VParseBison.c" /* yacc.c:1646 */ break; case 1704: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30886 "VParseBison.c" /* yacc.c:1646 */ break; case 1705: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30892 "VParseBison.c" /* yacc.c:1646 */ break; case 1706: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30898 "VParseBison.c" /* yacc.c:1646 */ break; case 1707: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30904 "VParseBison.c" /* yacc.c:1646 */ break; case 1708: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30910 "VParseBison.c" /* yacc.c:1646 */ break; case 1709: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30916 "VParseBison.c" /* yacc.c:1646 */ break; case 1710: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30922 "VParseBison.c" /* yacc.c:1646 */ break; case 1711: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30928 "VParseBison.c" /* yacc.c:1646 */ break; case 1712: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30934 "VParseBison.c" /* yacc.c:1646 */ break; case 1713: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30940 "VParseBison.c" /* yacc.c:1646 */ break; case 1714: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30946 "VParseBison.c" /* yacc.c:1646 */ break; case 1715: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30952 "VParseBison.c" /* yacc.c:1646 */ break; case 1716: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30958 "VParseBison.c" /* yacc.c:1646 */ break; case 1717: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30964 "VParseBison.c" /* yacc.c:1646 */ break; case 1718: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30970 "VParseBison.c" /* yacc.c:1646 */ break; case 1719: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30976 "VParseBison.c" /* yacc.c:1646 */ break; case 1720: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30982 "VParseBison.c" /* yacc.c:1646 */ break; case 1721: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30988 "VParseBison.c" /* yacc.c:1646 */ break; case 1722: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 30994 "VParseBison.c" /* yacc.c:1646 */ break; case 1723: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31000 "VParseBison.c" /* yacc.c:1646 */ break; case 1724: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31006 "VParseBison.c" /* yacc.c:1646 */ break; case 1725: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31012 "VParseBison.c" /* yacc.c:1646 */ break; case 1726: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31018 "VParseBison.c" /* yacc.c:1646 */ break; case 1727: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31024 "VParseBison.c" /* yacc.c:1646 */ break; case 1728: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31030 "VParseBison.c" /* yacc.c:1646 */ break; case 1729: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31036 "VParseBison.c" /* yacc.c:1646 */ break; case 1730: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31042 "VParseBison.c" /* yacc.c:1646 */ break; case 1731: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31048 "VParseBison.c" /* yacc.c:1646 */ break; case 1732: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31054 "VParseBison.c" /* yacc.c:1646 */ break; case 1733: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31060 "VParseBison.c" /* yacc.c:1646 */ break; case 1734: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31066 "VParseBison.c" /* yacc.c:1646 */ break; case 1735: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31072 "VParseBison.c" /* yacc.c:1646 */ break; case 1736: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31078 "VParseBison.c" /* yacc.c:1646 */ break; case 1737: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31084 "VParseBison.c" /* yacc.c:1646 */ break; case 1738: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31090 "VParseBison.c" /* yacc.c:1646 */ break; case 1739: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31096 "VParseBison.c" /* yacc.c:1646 */ break; case 1740: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31102 "VParseBison.c" /* yacc.c:1646 */ break; case 1741: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31108 "VParseBison.c" /* yacc.c:1646 */ break; case 1742: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31114 "VParseBison.c" /* yacc.c:1646 */ break; case 1743: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31120 "VParseBison.c" /* yacc.c:1646 */ break; case 1744: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31126 "VParseBison.c" /* yacc.c:1646 */ break; case 1745: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31132 "VParseBison.c" /* yacc.c:1646 */ break; case 1746: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31138 "VParseBison.c" /* yacc.c:1646 */ break; case 1747: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31144 "VParseBison.c" /* yacc.c:1646 */ break; case 1748: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31150 "VParseBison.c" /* yacc.c:1646 */ break; case 1749: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31156 "VParseBison.c" /* yacc.c:1646 */ break; case 1750: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31162 "VParseBison.c" /* yacc.c:1646 */ break; case 1751: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31168 "VParseBison.c" /* yacc.c:1646 */ break; case 1752: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31174 "VParseBison.c" /* yacc.c:1646 */ break; case 1753: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31180 "VParseBison.c" /* yacc.c:1646 */ break; case 1754: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31186 "VParseBison.c" /* yacc.c:1646 */ break; case 1755: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31192 "VParseBison.c" /* yacc.c:1646 */ break; case 1756: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31198 "VParseBison.c" /* yacc.c:1646 */ break; case 1757: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31204 "VParseBison.c" /* yacc.c:1646 */ break; case 1758: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31210 "VParseBison.c" /* yacc.c:1646 */ break; case 1759: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31216 "VParseBison.c" /* yacc.c:1646 */ break; case 1760: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31222 "VParseBison.c" /* yacc.c:1646 */ break; case 1761: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31228 "VParseBison.c" /* yacc.c:1646 */ break; case 1762: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31234 "VParseBison.c" /* yacc.c:1646 */ break; case 1763: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31240 "VParseBison.c" /* yacc.c:1646 */ break; case 1764: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31246 "VParseBison.c" /* yacc.c:1646 */ break; case 1765: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31252 "VParseBison.c" /* yacc.c:1646 */ break; case 1766: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31258 "VParseBison.c" /* yacc.c:1646 */ break; case 1767: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31264 "VParseBison.c" /* yacc.c:1646 */ break; case 1768: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31270 "VParseBison.c" /* yacc.c:1646 */ break; case 1769: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31276 "VParseBison.c" /* yacc.c:1646 */ break; case 1770: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31282 "VParseBison.c" /* yacc.c:1646 */ break; case 1771: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31288 "VParseBison.c" /* yacc.c:1646 */ break; case 1772: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31294 "VParseBison.c" /* yacc.c:1646 */ break; case 1773: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31300 "VParseBison.c" /* yacc.c:1646 */ break; case 1774: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31306 "VParseBison.c" /* yacc.c:1646 */ break; case 1775: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31312 "VParseBison.c" /* yacc.c:1646 */ break; case 1776: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31318 "VParseBison.c" /* yacc.c:1646 */ break; case 1777: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31324 "VParseBison.c" /* yacc.c:1646 */ break; case 1778: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31330 "VParseBison.c" /* yacc.c:1646 */ break; case 1779: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31336 "VParseBison.c" /* yacc.c:1646 */ break; case 1780: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31342 "VParseBison.c" /* yacc.c:1646 */ break; case 1781: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31348 "VParseBison.c" /* yacc.c:1646 */ break; case 1782: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31354 "VParseBison.c" /* yacc.c:1646 */ break; case 1783: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31360 "VParseBison.c" /* yacc.c:1646 */ break; case 1784: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31366 "VParseBison.c" /* yacc.c:1646 */ break; case 1785: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31372 "VParseBison.c" /* yacc.c:1646 */ break; case 1786: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31378 "VParseBison.c" /* yacc.c:1646 */ break; case 1787: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31384 "VParseBison.c" /* yacc.c:1646 */ break; case 1788: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31390 "VParseBison.c" /* yacc.c:1646 */ break; case 1789: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31396 "VParseBison.c" /* yacc.c:1646 */ break; case 1790: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31402 "VParseBison.c" /* yacc.c:1646 */ break; case 1791: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31408 "VParseBison.c" /* yacc.c:1646 */ break; case 1792: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31414 "VParseBison.c" /* yacc.c:1646 */ break; case 1793: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31420 "VParseBison.c" /* yacc.c:1646 */ break; case 1794: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31426 "VParseBison.c" /* yacc.c:1646 */ break; case 1795: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31432 "VParseBison.c" /* yacc.c:1646 */ break; case 1796: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31438 "VParseBison.c" /* yacc.c:1646 */ break; case 1797: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31444 "VParseBison.c" /* yacc.c:1646 */ break; case 1798: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31450 "VParseBison.c" /* yacc.c:1646 */ break; case 1799: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31456 "VParseBison.c" /* yacc.c:1646 */ break; case 1800: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31462 "VParseBison.c" /* yacc.c:1646 */ break; case 1801: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31468 "VParseBison.c" /* yacc.c:1646 */ break; case 1802: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31474 "VParseBison.c" /* yacc.c:1646 */ break; case 1803: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31480 "VParseBison.c" /* yacc.c:1646 */ break; case 1804: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31486 "VParseBison.c" /* yacc.c:1646 */ break; case 1805: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31492 "VParseBison.c" /* yacc.c:1646 */ break; case 1806: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31498 "VParseBison.c" /* yacc.c:1646 */ break; case 1807: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31504 "VParseBison.c" /* yacc.c:1646 */ break; case 1808: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31510 "VParseBison.c" /* yacc.c:1646 */ break; case 1809: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31516 "VParseBison.c" /* yacc.c:1646 */ break; case 1810: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31522 "VParseBison.c" /* yacc.c:1646 */ break; case 1811: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31528 "VParseBison.c" /* yacc.c:1646 */ break; case 1812: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31534 "VParseBison.c" /* yacc.c:1646 */ break; case 1813: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31540 "VParseBison.c" /* yacc.c:1646 */ break; case 1814: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31546 "VParseBison.c" /* yacc.c:1646 */ break; case 1815: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31552 "VParseBison.c" /* yacc.c:1646 */ break; case 1816: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31558 "VParseBison.c" /* yacc.c:1646 */ break; case 1817: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31564 "VParseBison.c" /* yacc.c:1646 */ break; case 1818: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31570 "VParseBison.c" /* yacc.c:1646 */ break; case 1819: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31576 "VParseBison.c" /* yacc.c:1646 */ break; case 1820: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31582 "VParseBison.c" /* yacc.c:1646 */ break; case 1821: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31588 "VParseBison.c" /* yacc.c:1646 */ break; case 1822: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31594 "VParseBison.c" /* yacc.c:1646 */ break; case 1823: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31600 "VParseBison.c" /* yacc.c:1646 */ break; case 1824: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31606 "VParseBison.c" /* yacc.c:1646 */ break; case 1825: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31612 "VParseBison.c" /* yacc.c:1646 */ break; case 1826: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31618 "VParseBison.c" /* yacc.c:1646 */ break; case 1827: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31624 "VParseBison.c" /* yacc.c:1646 */ break; case 1828: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31630 "VParseBison.c" /* yacc.c:1646 */ break; case 1829: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31636 "VParseBison.c" /* yacc.c:1646 */ break; case 1830: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31642 "VParseBison.c" /* yacc.c:1646 */ break; case 1831: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31648 "VParseBison.c" /* yacc.c:1646 */ break; case 1832: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31654 "VParseBison.c" /* yacc.c:1646 */ break; case 1833: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31660 "VParseBison.c" /* yacc.c:1646 */ break; case 1834: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31666 "VParseBison.c" /* yacc.c:1646 */ break; case 1835: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31672 "VParseBison.c" /* yacc.c:1646 */ break; case 1836: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31678 "VParseBison.c" /* yacc.c:1646 */ break; case 1837: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31684 "VParseBison.c" /* yacc.c:1646 */ break; case 1838: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31690 "VParseBison.c" /* yacc.c:1646 */ break; case 1839: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31696 "VParseBison.c" /* yacc.c:1646 */ break; case 1840: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31702 "VParseBison.c" /* yacc.c:1646 */ break; case 1841: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31708 "VParseBison.c" /* yacc.c:1646 */ break; case 1842: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31714 "VParseBison.c" /* yacc.c:1646 */ break; case 1843: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31720 "VParseBison.c" /* yacc.c:1646 */ break; case 1844: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31726 "VParseBison.c" /* yacc.c:1646 */ break; case 1845: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31732 "VParseBison.c" /* yacc.c:1646 */ break; case 1846: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31738 "VParseBison.c" /* yacc.c:1646 */ break; case 1847: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31744 "VParseBison.c" /* yacc.c:1646 */ break; case 1848: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31750 "VParseBison.c" /* yacc.c:1646 */ break; case 1849: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31756 "VParseBison.c" /* yacc.c:1646 */ break; case 1850: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31762 "VParseBison.c" /* yacc.c:1646 */ break; case 1851: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31768 "VParseBison.c" /* yacc.c:1646 */ break; case 1852: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31774 "VParseBison.c" /* yacc.c:1646 */ break; case 1853: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31780 "VParseBison.c" /* yacc.c:1646 */ break; case 1854: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31786 "VParseBison.c" /* yacc.c:1646 */ break; case 1855: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31792 "VParseBison.c" /* yacc.c:1646 */ break; case 1856: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31798 "VParseBison.c" /* yacc.c:1646 */ break; case 1857: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31804 "VParseBison.c" /* yacc.c:1646 */ break; case 1858: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31810 "VParseBison.c" /* yacc.c:1646 */ break; case 1859: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31816 "VParseBison.c" /* yacc.c:1646 */ break; case 1860: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31822 "VParseBison.c" /* yacc.c:1646 */ break; case 1861: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31828 "VParseBison.c" /* yacc.c:1646 */ break; case 1862: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31834 "VParseBison.c" /* yacc.c:1646 */ break; case 1863: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31840 "VParseBison.c" /* yacc.c:1646 */ break; case 1864: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31846 "VParseBison.c" /* yacc.c:1646 */ break; case 1865: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31852 "VParseBison.c" /* yacc.c:1646 */ break; case 1866: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31858 "VParseBison.c" /* yacc.c:1646 */ break; case 1867: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31864 "VParseBison.c" /* yacc.c:1646 */ break; case 1868: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31870 "VParseBison.c" /* yacc.c:1646 */ break; case 1869: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31876 "VParseBison.c" /* yacc.c:1646 */ break; case 1870: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31882 "VParseBison.c" /* yacc.c:1646 */ break; case 1871: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31888 "VParseBison.c" /* yacc.c:1646 */ break; case 1872: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31894 "VParseBison.c" /* yacc.c:1646 */ break; case 1873: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31900 "VParseBison.c" /* yacc.c:1646 */ break; case 1874: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31906 "VParseBison.c" /* yacc.c:1646 */ break; case 1875: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31912 "VParseBison.c" /* yacc.c:1646 */ break; case 1876: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31918 "VParseBison.c" /* yacc.c:1646 */ break; case 1877: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31924 "VParseBison.c" /* yacc.c:1646 */ break; case 1878: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31930 "VParseBison.c" /* yacc.c:1646 */ break; case 1879: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31936 "VParseBison.c" /* yacc.c:1646 */ break; case 1880: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31942 "VParseBison.c" /* yacc.c:1646 */ break; case 1881: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31948 "VParseBison.c" /* yacc.c:1646 */ break; case 1882: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31954 "VParseBison.c" /* yacc.c:1646 */ break; case 1883: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31960 "VParseBison.c" /* yacc.c:1646 */ break; case 1884: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31966 "VParseBison.c" /* yacc.c:1646 */ break; case 1885: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31972 "VParseBison.c" /* yacc.c:1646 */ break; case 1886: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31978 "VParseBison.c" /* yacc.c:1646 */ break; case 1887: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31984 "VParseBison.c" /* yacc.c:1646 */ break; case 1888: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31990 "VParseBison.c" /* yacc.c:1646 */ break; case 1889: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 31996 "VParseBison.c" /* yacc.c:1646 */ break; case 1890: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32002 "VParseBison.c" /* yacc.c:1646 */ break; case 1891: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32008 "VParseBison.c" /* yacc.c:1646 */ break; case 1892: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32014 "VParseBison.c" /* yacc.c:1646 */ break; case 1893: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32020 "VParseBison.c" /* yacc.c:1646 */ break; case 1894: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32026 "VParseBison.c" /* yacc.c:1646 */ break; case 1895: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32032 "VParseBison.c" /* yacc.c:1646 */ break; case 1896: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32038 "VParseBison.c" /* yacc.c:1646 */ break; case 1897: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32044 "VParseBison.c" /* yacc.c:1646 */ break; case 1898: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32050 "VParseBison.c" /* yacc.c:1646 */ break; case 1899: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32056 "VParseBison.c" /* yacc.c:1646 */ break; case 1900: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32062 "VParseBison.c" /* yacc.c:1646 */ break; case 1901: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32068 "VParseBison.c" /* yacc.c:1646 */ break; case 1902: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32074 "VParseBison.c" /* yacc.c:1646 */ break; case 1903: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32080 "VParseBison.c" /* yacc.c:1646 */ break; case 1904: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32086 "VParseBison.c" /* yacc.c:1646 */ break; case 1905: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32092 "VParseBison.c" /* yacc.c:1646 */ break; case 1906: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32098 "VParseBison.c" /* yacc.c:1646 */ break; case 1907: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32104 "VParseBison.c" /* yacc.c:1646 */ break; case 1908: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32110 "VParseBison.c" /* yacc.c:1646 */ break; case 1909: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32116 "VParseBison.c" /* yacc.c:1646 */ break; case 1910: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32122 "VParseBison.c" /* yacc.c:1646 */ break; case 1911: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32128 "VParseBison.c" /* yacc.c:1646 */ break; case 1912: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32134 "VParseBison.c" /* yacc.c:1646 */ break; case 1913: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32140 "VParseBison.c" /* yacc.c:1646 */ break; case 1914: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32146 "VParseBison.c" /* yacc.c:1646 */ break; case 1915: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32152 "VParseBison.c" /* yacc.c:1646 */ break; case 1916: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32158 "VParseBison.c" /* yacc.c:1646 */ break; case 1917: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32164 "VParseBison.c" /* yacc.c:1646 */ break; case 1918: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32170 "VParseBison.c" /* yacc.c:1646 */ break; case 1919: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32176 "VParseBison.c" /* yacc.c:1646 */ break; case 1920: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32182 "VParseBison.c" /* yacc.c:1646 */ break; case 1921: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32188 "VParseBison.c" /* yacc.c:1646 */ break; case 1922: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32194 "VParseBison.c" /* yacc.c:1646 */ break; case 1923: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32200 "VParseBison.c" /* yacc.c:1646 */ break; case 1924: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32206 "VParseBison.c" /* yacc.c:1646 */ break; case 1925: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32212 "VParseBison.c" /* yacc.c:1646 */ break; case 1926: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32218 "VParseBison.c" /* yacc.c:1646 */ break; case 1927: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32224 "VParseBison.c" /* yacc.c:1646 */ break; case 1928: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32230 "VParseBison.c" /* yacc.c:1646 */ break; case 1929: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32236 "VParseBison.c" /* yacc.c:1646 */ break; case 1930: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32242 "VParseBison.c" /* yacc.c:1646 */ break; case 1931: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32248 "VParseBison.c" /* yacc.c:1646 */ break; case 1932: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32254 "VParseBison.c" /* yacc.c:1646 */ break; case 1933: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32260 "VParseBison.c" /* yacc.c:1646 */ break; case 1934: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32266 "VParseBison.c" /* yacc.c:1646 */ break; case 1935: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32272 "VParseBison.c" /* yacc.c:1646 */ break; case 1936: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32278 "VParseBison.c" /* yacc.c:1646 */ break; case 1937: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32284 "VParseBison.c" /* yacc.c:1646 */ break; case 1938: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32290 "VParseBison.c" /* yacc.c:1646 */ break; case 1939: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32296 "VParseBison.c" /* yacc.c:1646 */ break; case 1940: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32302 "VParseBison.c" /* yacc.c:1646 */ break; case 1941: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32308 "VParseBison.c" /* yacc.c:1646 */ break; case 1942: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32314 "VParseBison.c" /* yacc.c:1646 */ break; case 1943: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32320 "VParseBison.c" /* yacc.c:1646 */ break; case 1944: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32326 "VParseBison.c" /* yacc.c:1646 */ break; case 1945: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32332 "VParseBison.c" /* yacc.c:1646 */ break; case 1946: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32338 "VParseBison.c" /* yacc.c:1646 */ break; case 1947: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32344 "VParseBison.c" /* yacc.c:1646 */ break; case 1948: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32350 "VParseBison.c" /* yacc.c:1646 */ break; case 1949: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32356 "VParseBison.c" /* yacc.c:1646 */ break; case 1950: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32362 "VParseBison.c" /* yacc.c:1646 */ break; case 1951: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32368 "VParseBison.c" /* yacc.c:1646 */ break; case 1952: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32374 "VParseBison.c" /* yacc.c:1646 */ break; case 1953: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32380 "VParseBison.c" /* yacc.c:1646 */ break; case 1954: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32386 "VParseBison.c" /* yacc.c:1646 */ break; case 1955: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32392 "VParseBison.c" /* yacc.c:1646 */ break; case 1956: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32398 "VParseBison.c" /* yacc.c:1646 */ break; case 1957: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32404 "VParseBison.c" /* yacc.c:1646 */ break; case 1958: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32410 "VParseBison.c" /* yacc.c:1646 */ break; case 1959: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32416 "VParseBison.c" /* yacc.c:1646 */ break; case 1960: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32422 "VParseBison.c" /* yacc.c:1646 */ break; case 1961: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32428 "VParseBison.c" /* yacc.c:1646 */ break; case 1962: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32434 "VParseBison.c" /* yacc.c:1646 */ break; case 1963: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32440 "VParseBison.c" /* yacc.c:1646 */ break; case 1964: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32446 "VParseBison.c" /* yacc.c:1646 */ break; case 1965: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32452 "VParseBison.c" /* yacc.c:1646 */ break; case 1966: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32458 "VParseBison.c" /* yacc.c:1646 */ break; case 1967: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32464 "VParseBison.c" /* yacc.c:1646 */ break; case 1968: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32470 "VParseBison.c" /* yacc.c:1646 */ break; case 1969: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32476 "VParseBison.c" /* yacc.c:1646 */ break; case 1970: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32482 "VParseBison.c" /* yacc.c:1646 */ break; case 1971: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32488 "VParseBison.c" /* yacc.c:1646 */ break; case 1972: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32494 "VParseBison.c" /* yacc.c:1646 */ break; case 1973: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32500 "VParseBison.c" /* yacc.c:1646 */ break; case 1974: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32506 "VParseBison.c" /* yacc.c:1646 */ break; case 1975: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32512 "VParseBison.c" /* yacc.c:1646 */ break; case 1976: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32518 "VParseBison.c" /* yacc.c:1646 */ break; case 1977: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32524 "VParseBison.c" /* yacc.c:1646 */ break; case 1978: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32530 "VParseBison.c" /* yacc.c:1646 */ break; case 1979: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32536 "VParseBison.c" /* yacc.c:1646 */ break; case 1980: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32542 "VParseBison.c" /* yacc.c:1646 */ break; case 1981: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32548 "VParseBison.c" /* yacc.c:1646 */ break; case 1982: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32554 "VParseBison.c" /* yacc.c:1646 */ break; case 1983: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32560 "VParseBison.c" /* yacc.c:1646 */ break; case 1984: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32566 "VParseBison.c" /* yacc.c:1646 */ break; case 1985: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32572 "VParseBison.c" /* yacc.c:1646 */ break; case 1986: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32578 "VParseBison.c" /* yacc.c:1646 */ break; case 1987: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32584 "VParseBison.c" /* yacc.c:1646 */ break; case 1988: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32590 "VParseBison.c" /* yacc.c:1646 */ break; case 1989: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32596 "VParseBison.c" /* yacc.c:1646 */ break; case 1990: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32602 "VParseBison.c" /* yacc.c:1646 */ break; case 1991: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32608 "VParseBison.c" /* yacc.c:1646 */ break; case 1992: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32614 "VParseBison.c" /* yacc.c:1646 */ break; case 1993: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32620 "VParseBison.c" /* yacc.c:1646 */ break; case 1994: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32626 "VParseBison.c" /* yacc.c:1646 */ break; case 1995: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32632 "VParseBison.c" /* yacc.c:1646 */ break; case 1996: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32638 "VParseBison.c" /* yacc.c:1646 */ break; case 1997: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32644 "VParseBison.c" /* yacc.c:1646 */ break; case 1998: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32650 "VParseBison.c" /* yacc.c:1646 */ break; case 1999: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32656 "VParseBison.c" /* yacc.c:1646 */ break; case 2000: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32662 "VParseBison.c" /* yacc.c:1646 */ break; case 2001: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32668 "VParseBison.c" /* yacc.c:1646 */ break; case 2002: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32674 "VParseBison.c" /* yacc.c:1646 */ break; case 2003: #line 3580 "VParseBison.y" /* yacc.c:1646 */ { } #line 32680 "VParseBison.c" /* yacc.c:1646 */ break; case 2004: #line 3581 "VParseBison.y" /* yacc.c:1646 */ { } #line 32686 "VParseBison.c" /* yacc.c:1646 */ break; case 2005: #line 3582 "VParseBison.y" /* yacc.c:1646 */ {} #line 32692 "VParseBison.c" /* yacc.c:1646 */ break; case 2006: #line 3586 "VParseBison.y" /* yacc.c:1646 */ { } #line 32698 "VParseBison.c" /* yacc.c:1646 */ break; case 2007: #line 3590 "VParseBison.y" /* yacc.c:1646 */ { } #line 32704 "VParseBison.c" /* yacc.c:1646 */ break; case 2008: #line 3591 "VParseBison.y" /* yacc.c:1646 */ { } #line 32710 "VParseBison.c" /* yacc.c:1646 */ break; case 2009: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32716 "VParseBison.c" /* yacc.c:1646 */ break; case 2010: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32722 "VParseBison.c" /* yacc.c:1646 */ break; case 2011: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32728 "VParseBison.c" /* yacc.c:1646 */ break; case 2012: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32734 "VParseBison.c" /* yacc.c:1646 */ break; case 2013: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32740 "VParseBison.c" /* yacc.c:1646 */ break; case 2014: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32746 "VParseBison.c" /* yacc.c:1646 */ break; case 2015: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32752 "VParseBison.c" /* yacc.c:1646 */ break; case 2016: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32758 "VParseBison.c" /* yacc.c:1646 */ break; case 2017: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32764 "VParseBison.c" /* yacc.c:1646 */ break; case 2018: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32770 "VParseBison.c" /* yacc.c:1646 */ break; case 2019: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32776 "VParseBison.c" /* yacc.c:1646 */ break; case 2020: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32782 "VParseBison.c" /* yacc.c:1646 */ break; case 2021: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32788 "VParseBison.c" /* yacc.c:1646 */ break; case 2022: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32794 "VParseBison.c" /* yacc.c:1646 */ break; case 2023: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32800 "VParseBison.c" /* yacc.c:1646 */ break; case 2024: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32806 "VParseBison.c" /* yacc.c:1646 */ break; case 2025: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32812 "VParseBison.c" /* yacc.c:1646 */ break; case 2026: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32818 "VParseBison.c" /* yacc.c:1646 */ break; case 2027: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32824 "VParseBison.c" /* yacc.c:1646 */ break; case 2028: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32830 "VParseBison.c" /* yacc.c:1646 */ break; case 2029: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32836 "VParseBison.c" /* yacc.c:1646 */ break; case 2030: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32842 "VParseBison.c" /* yacc.c:1646 */ break; case 2031: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32848 "VParseBison.c" /* yacc.c:1646 */ break; case 2032: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32854 "VParseBison.c" /* yacc.c:1646 */ break; case 2033: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32860 "VParseBison.c" /* yacc.c:1646 */ break; case 2034: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32866 "VParseBison.c" /* yacc.c:1646 */ break; case 2035: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32872 "VParseBison.c" /* yacc.c:1646 */ break; case 2036: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32878 "VParseBison.c" /* yacc.c:1646 */ break; case 2037: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32884 "VParseBison.c" /* yacc.c:1646 */ break; case 2038: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32890 "VParseBison.c" /* yacc.c:1646 */ break; case 2039: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32896 "VParseBison.c" /* yacc.c:1646 */ break; case 2040: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32902 "VParseBison.c" /* yacc.c:1646 */ break; case 2041: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32908 "VParseBison.c" /* yacc.c:1646 */ break; case 2042: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32914 "VParseBison.c" /* yacc.c:1646 */ break; case 2043: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32920 "VParseBison.c" /* yacc.c:1646 */ break; case 2044: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32926 "VParseBison.c" /* yacc.c:1646 */ break; case 2045: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32932 "VParseBison.c" /* yacc.c:1646 */ break; case 2046: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32938 "VParseBison.c" /* yacc.c:1646 */ break; case 2047: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32944 "VParseBison.c" /* yacc.c:1646 */ break; case 2048: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32950 "VParseBison.c" /* yacc.c:1646 */ break; case 2049: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32956 "VParseBison.c" /* yacc.c:1646 */ break; case 2050: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32962 "VParseBison.c" /* yacc.c:1646 */ break; case 2051: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32968 "VParseBison.c" /* yacc.c:1646 */ break; case 2052: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32974 "VParseBison.c" /* yacc.c:1646 */ break; case 2053: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32980 "VParseBison.c" /* yacc.c:1646 */ break; case 2054: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32986 "VParseBison.c" /* yacc.c:1646 */ break; case 2055: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32992 "VParseBison.c" /* yacc.c:1646 */ break; case 2056: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 32998 "VParseBison.c" /* yacc.c:1646 */ break; case 2057: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33004 "VParseBison.c" /* yacc.c:1646 */ break; case 2058: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33010 "VParseBison.c" /* yacc.c:1646 */ break; case 2059: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33016 "VParseBison.c" /* yacc.c:1646 */ break; case 2060: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33022 "VParseBison.c" /* yacc.c:1646 */ break; case 2061: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33028 "VParseBison.c" /* yacc.c:1646 */ break; case 2062: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33034 "VParseBison.c" /* yacc.c:1646 */ break; case 2063: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33040 "VParseBison.c" /* yacc.c:1646 */ break; case 2064: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33046 "VParseBison.c" /* yacc.c:1646 */ break; case 2065: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33052 "VParseBison.c" /* yacc.c:1646 */ break; case 2066: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33058 "VParseBison.c" /* yacc.c:1646 */ break; case 2067: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33064 "VParseBison.c" /* yacc.c:1646 */ break; case 2068: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33070 "VParseBison.c" /* yacc.c:1646 */ break; case 2069: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33076 "VParseBison.c" /* yacc.c:1646 */ break; case 2070: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33082 "VParseBison.c" /* yacc.c:1646 */ break; case 2071: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33088 "VParseBison.c" /* yacc.c:1646 */ break; case 2072: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33094 "VParseBison.c" /* yacc.c:1646 */ break; case 2073: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33100 "VParseBison.c" /* yacc.c:1646 */ break; case 2074: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33106 "VParseBison.c" /* yacc.c:1646 */ break; case 2075: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33112 "VParseBison.c" /* yacc.c:1646 */ break; case 2076: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33118 "VParseBison.c" /* yacc.c:1646 */ break; case 2077: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33124 "VParseBison.c" /* yacc.c:1646 */ break; case 2078: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33130 "VParseBison.c" /* yacc.c:1646 */ break; case 2079: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33136 "VParseBison.c" /* yacc.c:1646 */ break; case 2080: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33142 "VParseBison.c" /* yacc.c:1646 */ break; case 2081: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33148 "VParseBison.c" /* yacc.c:1646 */ break; case 2082: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33154 "VParseBison.c" /* yacc.c:1646 */ break; case 2083: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33160 "VParseBison.c" /* yacc.c:1646 */ break; case 2084: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33166 "VParseBison.c" /* yacc.c:1646 */ break; case 2085: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33172 "VParseBison.c" /* yacc.c:1646 */ break; case 2086: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33178 "VParseBison.c" /* yacc.c:1646 */ break; case 2087: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33184 "VParseBison.c" /* yacc.c:1646 */ break; case 2088: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33190 "VParseBison.c" /* yacc.c:1646 */ break; case 2089: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33196 "VParseBison.c" /* yacc.c:1646 */ break; case 2090: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33202 "VParseBison.c" /* yacc.c:1646 */ break; case 2091: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33208 "VParseBison.c" /* yacc.c:1646 */ break; case 2092: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33214 "VParseBison.c" /* yacc.c:1646 */ break; case 2093: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33220 "VParseBison.c" /* yacc.c:1646 */ break; case 2094: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33226 "VParseBison.c" /* yacc.c:1646 */ break; case 2095: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33232 "VParseBison.c" /* yacc.c:1646 */ break; case 2096: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33238 "VParseBison.c" /* yacc.c:1646 */ break; case 2097: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33244 "VParseBison.c" /* yacc.c:1646 */ break; case 2098: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33250 "VParseBison.c" /* yacc.c:1646 */ break; case 2099: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33256 "VParseBison.c" /* yacc.c:1646 */ break; case 2100: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33262 "VParseBison.c" /* yacc.c:1646 */ break; case 2101: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33268 "VParseBison.c" /* yacc.c:1646 */ break; case 2102: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33274 "VParseBison.c" /* yacc.c:1646 */ break; case 2103: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33280 "VParseBison.c" /* yacc.c:1646 */ break; case 2104: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33286 "VParseBison.c" /* yacc.c:1646 */ break; case 2105: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33292 "VParseBison.c" /* yacc.c:1646 */ break; case 2106: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33298 "VParseBison.c" /* yacc.c:1646 */ break; case 2107: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33304 "VParseBison.c" /* yacc.c:1646 */ break; case 2108: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33310 "VParseBison.c" /* yacc.c:1646 */ break; case 2109: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33316 "VParseBison.c" /* yacc.c:1646 */ break; case 2110: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33322 "VParseBison.c" /* yacc.c:1646 */ break; case 2111: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33328 "VParseBison.c" /* yacc.c:1646 */ break; case 2112: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33334 "VParseBison.c" /* yacc.c:1646 */ break; case 2113: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33340 "VParseBison.c" /* yacc.c:1646 */ break; case 2114: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33346 "VParseBison.c" /* yacc.c:1646 */ break; case 2115: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33352 "VParseBison.c" /* yacc.c:1646 */ break; case 2116: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33358 "VParseBison.c" /* yacc.c:1646 */ break; case 2117: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33364 "VParseBison.c" /* yacc.c:1646 */ break; case 2118: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33370 "VParseBison.c" /* yacc.c:1646 */ break; case 2119: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33376 "VParseBison.c" /* yacc.c:1646 */ break; case 2120: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33382 "VParseBison.c" /* yacc.c:1646 */ break; case 2121: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33388 "VParseBison.c" /* yacc.c:1646 */ break; case 2122: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33394 "VParseBison.c" /* yacc.c:1646 */ break; case 2123: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33400 "VParseBison.c" /* yacc.c:1646 */ break; case 2124: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33406 "VParseBison.c" /* yacc.c:1646 */ break; case 2125: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33412 "VParseBison.c" /* yacc.c:1646 */ break; case 2126: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33418 "VParseBison.c" /* yacc.c:1646 */ break; case 2127: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33424 "VParseBison.c" /* yacc.c:1646 */ break; case 2128: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33430 "VParseBison.c" /* yacc.c:1646 */ break; case 2129: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33436 "VParseBison.c" /* yacc.c:1646 */ break; case 2130: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33442 "VParseBison.c" /* yacc.c:1646 */ break; case 2131: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33448 "VParseBison.c" /* yacc.c:1646 */ break; case 2132: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33454 "VParseBison.c" /* yacc.c:1646 */ break; case 2133: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33460 "VParseBison.c" /* yacc.c:1646 */ break; case 2134: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33466 "VParseBison.c" /* yacc.c:1646 */ break; case 2135: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33472 "VParseBison.c" /* yacc.c:1646 */ break; case 2136: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33478 "VParseBison.c" /* yacc.c:1646 */ break; case 2137: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33484 "VParseBison.c" /* yacc.c:1646 */ break; case 2138: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33490 "VParseBison.c" /* yacc.c:1646 */ break; case 2139: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33496 "VParseBison.c" /* yacc.c:1646 */ break; case 2140: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33502 "VParseBison.c" /* yacc.c:1646 */ break; case 2141: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33508 "VParseBison.c" /* yacc.c:1646 */ break; case 2142: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33514 "VParseBison.c" /* yacc.c:1646 */ break; case 2143: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33520 "VParseBison.c" /* yacc.c:1646 */ break; case 2144: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33526 "VParseBison.c" /* yacc.c:1646 */ break; case 2145: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33532 "VParseBison.c" /* yacc.c:1646 */ break; case 2146: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33538 "VParseBison.c" /* yacc.c:1646 */ break; case 2147: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33544 "VParseBison.c" /* yacc.c:1646 */ break; case 2148: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33550 "VParseBison.c" /* yacc.c:1646 */ break; case 2149: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33556 "VParseBison.c" /* yacc.c:1646 */ break; case 2150: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33562 "VParseBison.c" /* yacc.c:1646 */ break; case 2151: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33568 "VParseBison.c" /* yacc.c:1646 */ break; case 2152: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33574 "VParseBison.c" /* yacc.c:1646 */ break; case 2153: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33580 "VParseBison.c" /* yacc.c:1646 */ break; case 2154: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33586 "VParseBison.c" /* yacc.c:1646 */ break; case 2155: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33592 "VParseBison.c" /* yacc.c:1646 */ break; case 2156: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33598 "VParseBison.c" /* yacc.c:1646 */ break; case 2157: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33604 "VParseBison.c" /* yacc.c:1646 */ break; case 2158: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33610 "VParseBison.c" /* yacc.c:1646 */ break; case 2159: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33616 "VParseBison.c" /* yacc.c:1646 */ break; case 2160: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33622 "VParseBison.c" /* yacc.c:1646 */ break; case 2161: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33628 "VParseBison.c" /* yacc.c:1646 */ break; case 2162: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33634 "VParseBison.c" /* yacc.c:1646 */ break; case 2163: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33640 "VParseBison.c" /* yacc.c:1646 */ break; case 2164: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33646 "VParseBison.c" /* yacc.c:1646 */ break; case 2165: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33652 "VParseBison.c" /* yacc.c:1646 */ break; case 2166: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33658 "VParseBison.c" /* yacc.c:1646 */ break; case 2167: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33664 "VParseBison.c" /* yacc.c:1646 */ break; case 2168: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33670 "VParseBison.c" /* yacc.c:1646 */ break; case 2169: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33676 "VParseBison.c" /* yacc.c:1646 */ break; case 2170: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33682 "VParseBison.c" /* yacc.c:1646 */ break; case 2171: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33688 "VParseBison.c" /* yacc.c:1646 */ break; case 2172: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33694 "VParseBison.c" /* yacc.c:1646 */ break; case 2173: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33700 "VParseBison.c" /* yacc.c:1646 */ break; case 2174: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33706 "VParseBison.c" /* yacc.c:1646 */ break; case 2175: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33712 "VParseBison.c" /* yacc.c:1646 */ break; case 2176: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33718 "VParseBison.c" /* yacc.c:1646 */ break; case 2177: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33724 "VParseBison.c" /* yacc.c:1646 */ break; case 2178: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33730 "VParseBison.c" /* yacc.c:1646 */ break; case 2179: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33736 "VParseBison.c" /* yacc.c:1646 */ break; case 2180: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33742 "VParseBison.c" /* yacc.c:1646 */ break; case 2181: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33748 "VParseBison.c" /* yacc.c:1646 */ break; case 2182: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33754 "VParseBison.c" /* yacc.c:1646 */ break; case 2183: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33760 "VParseBison.c" /* yacc.c:1646 */ break; case 2184: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33766 "VParseBison.c" /* yacc.c:1646 */ break; case 2185: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33772 "VParseBison.c" /* yacc.c:1646 */ break; case 2186: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33778 "VParseBison.c" /* yacc.c:1646 */ break; case 2187: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33784 "VParseBison.c" /* yacc.c:1646 */ break; case 2188: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33790 "VParseBison.c" /* yacc.c:1646 */ break; case 2189: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33796 "VParseBison.c" /* yacc.c:1646 */ break; case 2190: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33802 "VParseBison.c" /* yacc.c:1646 */ break; case 2191: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33808 "VParseBison.c" /* yacc.c:1646 */ break; case 2192: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33814 "VParseBison.c" /* yacc.c:1646 */ break; case 2193: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33820 "VParseBison.c" /* yacc.c:1646 */ break; case 2194: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33826 "VParseBison.c" /* yacc.c:1646 */ break; case 2195: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33832 "VParseBison.c" /* yacc.c:1646 */ break; case 2196: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33838 "VParseBison.c" /* yacc.c:1646 */ break; case 2197: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33844 "VParseBison.c" /* yacc.c:1646 */ break; case 2198: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33850 "VParseBison.c" /* yacc.c:1646 */ break; case 2199: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33856 "VParseBison.c" /* yacc.c:1646 */ break; case 2200: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33862 "VParseBison.c" /* yacc.c:1646 */ break; case 2201: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33868 "VParseBison.c" /* yacc.c:1646 */ break; case 2202: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33874 "VParseBison.c" /* yacc.c:1646 */ break; case 2203: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33880 "VParseBison.c" /* yacc.c:1646 */ break; case 2204: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33886 "VParseBison.c" /* yacc.c:1646 */ break; case 2205: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33892 "VParseBison.c" /* yacc.c:1646 */ break; case 2206: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33898 "VParseBison.c" /* yacc.c:1646 */ break; case 2207: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33904 "VParseBison.c" /* yacc.c:1646 */ break; case 2208: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33910 "VParseBison.c" /* yacc.c:1646 */ break; case 2209: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33916 "VParseBison.c" /* yacc.c:1646 */ break; case 2210: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33922 "VParseBison.c" /* yacc.c:1646 */ break; case 2211: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33928 "VParseBison.c" /* yacc.c:1646 */ break; case 2212: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33934 "VParseBison.c" /* yacc.c:1646 */ break; case 2213: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33940 "VParseBison.c" /* yacc.c:1646 */ break; case 2214: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33946 "VParseBison.c" /* yacc.c:1646 */ break; case 2215: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33952 "VParseBison.c" /* yacc.c:1646 */ break; case 2216: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33958 "VParseBison.c" /* yacc.c:1646 */ break; case 2217: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33964 "VParseBison.c" /* yacc.c:1646 */ break; case 2218: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33970 "VParseBison.c" /* yacc.c:1646 */ break; case 2219: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33976 "VParseBison.c" /* yacc.c:1646 */ break; case 2220: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33982 "VParseBison.c" /* yacc.c:1646 */ break; case 2221: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33988 "VParseBison.c" /* yacc.c:1646 */ break; case 2222: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 33994 "VParseBison.c" /* yacc.c:1646 */ break; case 2223: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34000 "VParseBison.c" /* yacc.c:1646 */ break; case 2224: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34006 "VParseBison.c" /* yacc.c:1646 */ break; case 2225: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34012 "VParseBison.c" /* yacc.c:1646 */ break; case 2226: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34018 "VParseBison.c" /* yacc.c:1646 */ break; case 2227: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34024 "VParseBison.c" /* yacc.c:1646 */ break; case 2228: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34030 "VParseBison.c" /* yacc.c:1646 */ break; case 2229: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34036 "VParseBison.c" /* yacc.c:1646 */ break; case 2230: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34042 "VParseBison.c" /* yacc.c:1646 */ break; case 2231: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34048 "VParseBison.c" /* yacc.c:1646 */ break; case 2232: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34054 "VParseBison.c" /* yacc.c:1646 */ break; case 2233: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34060 "VParseBison.c" /* yacc.c:1646 */ break; case 2234: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34066 "VParseBison.c" /* yacc.c:1646 */ break; case 2235: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34072 "VParseBison.c" /* yacc.c:1646 */ break; case 2236: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34078 "VParseBison.c" /* yacc.c:1646 */ break; case 2237: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34084 "VParseBison.c" /* yacc.c:1646 */ break; case 2238: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34090 "VParseBison.c" /* yacc.c:1646 */ break; case 2239: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34096 "VParseBison.c" /* yacc.c:1646 */ break; case 2240: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34102 "VParseBison.c" /* yacc.c:1646 */ break; case 2241: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34108 "VParseBison.c" /* yacc.c:1646 */ break; case 2242: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34114 "VParseBison.c" /* yacc.c:1646 */ break; case 2243: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34120 "VParseBison.c" /* yacc.c:1646 */ break; case 2244: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34126 "VParseBison.c" /* yacc.c:1646 */ break; case 2245: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34132 "VParseBison.c" /* yacc.c:1646 */ break; case 2246: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34138 "VParseBison.c" /* yacc.c:1646 */ break; case 2247: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34144 "VParseBison.c" /* yacc.c:1646 */ break; case 2248: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34150 "VParseBison.c" /* yacc.c:1646 */ break; case 2249: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34156 "VParseBison.c" /* yacc.c:1646 */ break; case 2250: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34162 "VParseBison.c" /* yacc.c:1646 */ break; case 2251: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34168 "VParseBison.c" /* yacc.c:1646 */ break; case 2252: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34174 "VParseBison.c" /* yacc.c:1646 */ break; case 2253: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34180 "VParseBison.c" /* yacc.c:1646 */ break; case 2254: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34186 "VParseBison.c" /* yacc.c:1646 */ break; case 2255: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34192 "VParseBison.c" /* yacc.c:1646 */ break; case 2256: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34198 "VParseBison.c" /* yacc.c:1646 */ break; case 2257: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34204 "VParseBison.c" /* yacc.c:1646 */ break; case 2258: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34210 "VParseBison.c" /* yacc.c:1646 */ break; case 2259: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34216 "VParseBison.c" /* yacc.c:1646 */ break; case 2260: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34222 "VParseBison.c" /* yacc.c:1646 */ break; case 2261: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34228 "VParseBison.c" /* yacc.c:1646 */ break; case 2262: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34234 "VParseBison.c" /* yacc.c:1646 */ break; case 2263: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34240 "VParseBison.c" /* yacc.c:1646 */ break; case 2264: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34246 "VParseBison.c" /* yacc.c:1646 */ break; case 2265: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34252 "VParseBison.c" /* yacc.c:1646 */ break; case 2266: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34258 "VParseBison.c" /* yacc.c:1646 */ break; case 2267: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34264 "VParseBison.c" /* yacc.c:1646 */ break; case 2268: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34270 "VParseBison.c" /* yacc.c:1646 */ break; case 2269: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34276 "VParseBison.c" /* yacc.c:1646 */ break; case 2270: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34282 "VParseBison.c" /* yacc.c:1646 */ break; case 2271: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34288 "VParseBison.c" /* yacc.c:1646 */ break; case 2272: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34294 "VParseBison.c" /* yacc.c:1646 */ break; case 2273: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34300 "VParseBison.c" /* yacc.c:1646 */ break; case 2274: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34306 "VParseBison.c" /* yacc.c:1646 */ break; case 2275: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34312 "VParseBison.c" /* yacc.c:1646 */ break; case 2276: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34318 "VParseBison.c" /* yacc.c:1646 */ break; case 2277: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34324 "VParseBison.c" /* yacc.c:1646 */ break; case 2278: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34330 "VParseBison.c" /* yacc.c:1646 */ break; case 2279: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34336 "VParseBison.c" /* yacc.c:1646 */ break; case 2280: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34342 "VParseBison.c" /* yacc.c:1646 */ break; case 2281: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34348 "VParseBison.c" /* yacc.c:1646 */ break; case 2282: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34354 "VParseBison.c" /* yacc.c:1646 */ break; case 2283: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34360 "VParseBison.c" /* yacc.c:1646 */ break; case 2284: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34366 "VParseBison.c" /* yacc.c:1646 */ break; case 2285: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34372 "VParseBison.c" /* yacc.c:1646 */ break; case 2286: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34378 "VParseBison.c" /* yacc.c:1646 */ break; case 2287: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34384 "VParseBison.c" /* yacc.c:1646 */ break; case 2288: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34390 "VParseBison.c" /* yacc.c:1646 */ break; case 2289: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34396 "VParseBison.c" /* yacc.c:1646 */ break; case 2290: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34402 "VParseBison.c" /* yacc.c:1646 */ break; case 2291: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34408 "VParseBison.c" /* yacc.c:1646 */ break; case 2292: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34414 "VParseBison.c" /* yacc.c:1646 */ break; case 2293: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34420 "VParseBison.c" /* yacc.c:1646 */ break; case 2294: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34426 "VParseBison.c" /* yacc.c:1646 */ break; case 2295: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34432 "VParseBison.c" /* yacc.c:1646 */ break; case 2296: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34438 "VParseBison.c" /* yacc.c:1646 */ break; case 2297: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34444 "VParseBison.c" /* yacc.c:1646 */ break; case 2298: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34450 "VParseBison.c" /* yacc.c:1646 */ break; case 2299: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34456 "VParseBison.c" /* yacc.c:1646 */ break; case 2300: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34462 "VParseBison.c" /* yacc.c:1646 */ break; case 2301: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34468 "VParseBison.c" /* yacc.c:1646 */ break; case 2302: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34474 "VParseBison.c" /* yacc.c:1646 */ break; case 2303: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34480 "VParseBison.c" /* yacc.c:1646 */ break; case 2304: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34486 "VParseBison.c" /* yacc.c:1646 */ break; case 2305: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34492 "VParseBison.c" /* yacc.c:1646 */ break; case 2306: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34498 "VParseBison.c" /* yacc.c:1646 */ break; case 2307: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34504 "VParseBison.c" /* yacc.c:1646 */ break; case 2308: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34510 "VParseBison.c" /* yacc.c:1646 */ break; case 2309: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34516 "VParseBison.c" /* yacc.c:1646 */ break; case 2310: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34522 "VParseBison.c" /* yacc.c:1646 */ break; case 2311: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34528 "VParseBison.c" /* yacc.c:1646 */ break; case 2312: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34534 "VParseBison.c" /* yacc.c:1646 */ break; case 2313: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34540 "VParseBison.c" /* yacc.c:1646 */ break; case 2314: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34546 "VParseBison.c" /* yacc.c:1646 */ break; case 2315: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34552 "VParseBison.c" /* yacc.c:1646 */ break; case 2316: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34558 "VParseBison.c" /* yacc.c:1646 */ break; case 2317: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34564 "VParseBison.c" /* yacc.c:1646 */ break; case 2318: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34570 "VParseBison.c" /* yacc.c:1646 */ break; case 2319: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34576 "VParseBison.c" /* yacc.c:1646 */ break; case 2320: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34582 "VParseBison.c" /* yacc.c:1646 */ break; case 2321: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34588 "VParseBison.c" /* yacc.c:1646 */ break; case 2322: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34594 "VParseBison.c" /* yacc.c:1646 */ break; case 2323: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34600 "VParseBison.c" /* yacc.c:1646 */ break; case 2324: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34606 "VParseBison.c" /* yacc.c:1646 */ break; case 2325: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34612 "VParseBison.c" /* yacc.c:1646 */ break; case 2326: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34618 "VParseBison.c" /* yacc.c:1646 */ break; case 2327: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34624 "VParseBison.c" /* yacc.c:1646 */ break; case 2328: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34630 "VParseBison.c" /* yacc.c:1646 */ break; case 2329: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34636 "VParseBison.c" /* yacc.c:1646 */ break; case 2330: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34642 "VParseBison.c" /* yacc.c:1646 */ break; case 2331: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34648 "VParseBison.c" /* yacc.c:1646 */ break; case 2332: #line 3595 "VParseBison.y" /* yacc.c:1646 */ { } #line 34654 "VParseBison.c" /* yacc.c:1646 */ break; case 2333: #line 3596 "VParseBison.y" /* yacc.c:1646 */ {} #line 34660 "VParseBison.c" /* yacc.c:1646 */ break; case 2334: #line 3603 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 34666 "VParseBison.c" /* yacc.c:1646 */ break; case 2335: #line 3607 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 34672 "VParseBison.c" /* yacc.c:1646 */ break; case 2336: #line 3608 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 34678 "VParseBison.c" /* yacc.c:1646 */ break; case 2337: #line 3609 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 34684 "VParseBison.c" /* yacc.c:1646 */ break; case 2338: #line 3614 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); ERRSVKWD((yyvsp[0].fl),(yyval.str)); } #line 34690 "VParseBison.c" /* yacc.c:1646 */ break; case 2339: #line 3615 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); ERRSVKWD((yyvsp[0].fl),(yyval.str)); } #line 34696 "VParseBison.c" /* yacc.c:1646 */ break; case 2340: #line 3620 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34702 "VParseBison.c" /* yacc.c:1646 */ break; case 2341: #line 3621 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 34708 "VParseBison.c" /* yacc.c:1646 */ break; case 2342: #line 3624 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+" "+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 34714 "VParseBison.c" /* yacc.c:1646 */ break; case 2343: #line 3625 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+" "+(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 34720 "VParseBison.c" /* yacc.c:1646 */ break; case 2344: #line 3626 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 34726 "VParseBison.c" /* yacc.c:1646 */ break; case 2345: #line 3627 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34732 "VParseBison.c" /* yacc.c:1646 */ break; case 2346: #line 3631 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34738 "VParseBison.c" /* yacc.c:1646 */ break; case 2347: #line 3632 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); } #line 34744 "VParseBison.c" /* yacc.c:1646 */ break; case 2348: #line 3636 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34750 "VParseBison.c" /* yacc.c:1646 */ break; case 2349: #line 3637 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+","+(yyvsp[0].str); } #line 34756 "VParseBison.c" /* yacc.c:1646 */ break; case 2350: #line 3641 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34762 "VParseBison.c" /* yacc.c:1646 */ break; case 2351: #line 3643 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "this."+(yyvsp[0].str); } #line 34768 "VParseBison.c" /* yacc.c:1646 */ break; case 2352: #line 3644 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "super."+(yyvsp[0].str); } #line 34774 "VParseBison.c" /* yacc.c:1646 */ break; case 2353: #line 3645 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "this.super."+(yyvsp[-2].str); } #line 34780 "VParseBison.c" /* yacc.c:1646 */ break; case 2354: #line 3647 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 34786 "VParseBison.c" /* yacc.c:1646 */ break; case 2355: #line 3648 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 34792 "VParseBison.c" /* yacc.c:1646 */ break; case 2356: #line 3654 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34798 "VParseBison.c" /* yacc.c:1646 */ break; case 2357: #line 3656 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "this."+(yyvsp[0].str); } #line 34804 "VParseBison.c" /* yacc.c:1646 */ break; case 2358: #line 3657 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = "super."+(yyvsp[0].str); } #line 34810 "VParseBison.c" /* yacc.c:1646 */ break; case 2359: #line 3658 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "this.super."+(yyvsp[-2].str); } #line 34816 "VParseBison.c" /* yacc.c:1646 */ break; case 2360: #line 3660 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 34822 "VParseBison.c" /* yacc.c:1646 */ break; case 2361: #line 3661 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 34828 "VParseBison.c" /* yacc.c:1646 */ break; case 2362: #line 3665 "VParseBison.y" /* yacc.c:1646 */ { } #line 34834 "VParseBison.c" /* yacc.c:1646 */ break; case 2363: #line 3666 "VParseBison.y" /* yacc.c:1646 */ { } #line 34840 "VParseBison.c" /* yacc.c:1646 */ break; case 2364: #line 3671 "VParseBison.y" /* yacc.c:1646 */ { } #line 34846 "VParseBison.c" /* yacc.c:1646 */ break; case 2365: #line 3677 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34852 "VParseBison.c" /* yacc.c:1646 */ break; case 2366: #line 3681 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 34858 "VParseBison.c" /* yacc.c:1646 */ break; case 2367: #line 3682 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34864 "VParseBison.c" /* yacc.c:1646 */ break; case 2368: #line 3686 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 34870 "VParseBison.c" /* yacc.c:1646 */ break; case 2369: #line 3687 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34876 "VParseBison.c" /* yacc.c:1646 */ break; case 2370: #line 3691 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34882 "VParseBison.c" /* yacc.c:1646 */ break; case 2371: #line 3692 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 34888 "VParseBison.c" /* yacc.c:1646 */ break; case 2372: #line 3696 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34894 "VParseBison.c" /* yacc.c:1646 */ break; case 2373: #line 3697 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 34900 "VParseBison.c" /* yacc.c:1646 */ break; case 2374: #line 3706 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); PORTNET((yyvsp[0].fl), (yyvsp[0].str));} #line 34906 "VParseBison.c" /* yacc.c:1646 */ break; case 2375: #line 3708 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"["+(yyvsp[-1].str)+"]"; PORTRANGE((yyvsp[-1].str), (yyvsp[-1].str));} #line 34912 "VParseBison.c" /* yacc.c:1646 */ break; case 2376: #line 3709 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+":"+(yyvsp[-1].str)+"]"; PORTRANGE((yyvsp[-3].str), (yyvsp[-1].str));} #line 34918 "VParseBison.c" /* yacc.c:1646 */ break; case 2377: #line 3711 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+"+:"+(yyvsp[-1].str)+"]"; } #line 34924 "VParseBison.c" /* yacc.c:1646 */ break; case 2378: #line 3712 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+"-:"+(yyvsp[-1].str)+"]"; } #line 34930 "VParseBison.c" /* yacc.c:1646 */ break; case 2379: #line 3717 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34936 "VParseBison.c" /* yacc.c:1646 */ break; case 2380: #line 3719 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = (yyvsp[-3].str)+"["+(yyvsp[-1].str)+"]"; } #line 34942 "VParseBison.c" /* yacc.c:1646 */ break; case 2381: #line 3720 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+":"+(yyvsp[-1].str)+"]"; } #line 34948 "VParseBison.c" /* yacc.c:1646 */ break; case 2382: #line 3722 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+"+:"+(yyvsp[-1].str)+"]"; } #line 34954 "VParseBison.c" /* yacc.c:1646 */ break; case 2383: #line 3723 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+"-:"+(yyvsp[-1].str)+"]"; } #line 34960 "VParseBison.c" /* yacc.c:1646 */ break; case 2384: #line 3725 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = (yyvsp[-5].str)+"["+(yyvsp[-3].str)+","+(yyvsp[-1].str)+"]"; } #line 34966 "VParseBison.c" /* yacc.c:1646 */ break; case 2385: #line 3729 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 34972 "VParseBison.c" /* yacc.c:1646 */ break; case 2386: #line 3733 "VParseBison.y" /* yacc.c:1646 */ { } #line 34978 "VParseBison.c" /* yacc.c:1646 */ break; case 2387: #line 3734 "VParseBison.y" /* yacc.c:1646 */ { } #line 34984 "VParseBison.c" /* yacc.c:1646 */ break; case 2388: #line 3735 "VParseBison.y" /* yacc.c:1646 */ { } #line 34990 "VParseBison.c" /* yacc.c:1646 */ break; case 2389: #line 3743 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::CLOCKING); } #line 34996 "VParseBison.c" /* yacc.c:1646 */ break; case 2390: #line 3748 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::CLOCKING); } #line 35002 "VParseBison.c" /* yacc.c:1646 */ break; case 2391: #line 3749 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::CLOCKING,(yyvsp[0].str)); } #line 35008 "VParseBison.c" /* yacc.c:1646 */ break; case 2392: #line 3750 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::CLOCKING); } #line 35014 "VParseBison.c" /* yacc.c:1646 */ break; case 2393: #line 3751 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::CLOCKING,(yyvsp[0].str)); } #line 35020 "VParseBison.c" /* yacc.c:1646 */ break; case 2394: #line 3752 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNewAnon(VAstType::CLOCKING); } #line 35026 "VParseBison.c" /* yacc.c:1646 */ break; case 2395: #line 3753 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::CLOCKING,(yyvsp[0].str)); } #line 35032 "VParseBison.c" /* yacc.c:1646 */ break; case 2396: #line 3757 "VParseBison.y" /* yacc.c:1646 */ { } #line 35038 "VParseBison.c" /* yacc.c:1646 */ break; case 2397: #line 3758 "VParseBison.y" /* yacc.c:1646 */ { } #line 35044 "VParseBison.c" /* yacc.c:1646 */ break; case 2398: #line 3762 "VParseBison.y" /* yacc.c:1646 */ { } #line 35050 "VParseBison.c" /* yacc.c:1646 */ break; case 2399: #line 3763 "VParseBison.y" /* yacc.c:1646 */ { } #line 35056 "VParseBison.c" /* yacc.c:1646 */ break; case 2400: #line 3767 "VParseBison.y" /* yacc.c:1646 */ { } #line 35062 "VParseBison.c" /* yacc.c:1646 */ break; case 2401: #line 3768 "VParseBison.y" /* yacc.c:1646 */ { } #line 35068 "VParseBison.c" /* yacc.c:1646 */ break; case 2402: #line 3772 "VParseBison.y" /* yacc.c:1646 */ { } #line 35074 "VParseBison.c" /* yacc.c:1646 */ break; case 2403: #line 3773 "VParseBison.y" /* yacc.c:1646 */ { } #line 35080 "VParseBison.c" /* yacc.c:1646 */ break; case 2404: #line 3774 "VParseBison.y" /* yacc.c:1646 */ { } #line 35086 "VParseBison.c" /* yacc.c:1646 */ break; case 2405: #line 3778 "VParseBison.y" /* yacc.c:1646 */ { } #line 35092 "VParseBison.c" /* yacc.c:1646 */ break; case 2406: #line 3779 "VParseBison.y" /* yacc.c:1646 */ { } #line 35098 "VParseBison.c" /* yacc.c:1646 */ break; case 2407: #line 3780 "VParseBison.y" /* yacc.c:1646 */ { } #line 35104 "VParseBison.c" /* yacc.c:1646 */ break; case 2408: #line 3784 "VParseBison.y" /* yacc.c:1646 */ { } #line 35110 "VParseBison.c" /* yacc.c:1646 */ break; case 2409: #line 3785 "VParseBison.y" /* yacc.c:1646 */ { } #line 35116 "VParseBison.c" /* yacc.c:1646 */ break; case 2410: #line 3786 "VParseBison.y" /* yacc.c:1646 */ { } #line 35122 "VParseBison.c" /* yacc.c:1646 */ break; case 2411: #line 3787 "VParseBison.y" /* yacc.c:1646 */ { } #line 35128 "VParseBison.c" /* yacc.c:1646 */ break; case 2412: #line 3791 "VParseBison.y" /* yacc.c:1646 */ { } #line 35134 "VParseBison.c" /* yacc.c:1646 */ break; case 2413: #line 3792 "VParseBison.y" /* yacc.c:1646 */ { } #line 35140 "VParseBison.c" /* yacc.c:1646 */ break; case 2414: #line 3796 "VParseBison.y" /* yacc.c:1646 */ { } #line 35146 "VParseBison.c" /* yacc.c:1646 */ break; case 2415: #line 3797 "VParseBison.y" /* yacc.c:1646 */ { } #line 35152 "VParseBison.c" /* yacc.c:1646 */ break; case 2416: #line 3801 "VParseBison.y" /* yacc.c:1646 */ { } #line 35158 "VParseBison.c" /* yacc.c:1646 */ break; case 2417: #line 3802 "VParseBison.y" /* yacc.c:1646 */ { } #line 35164 "VParseBison.c" /* yacc.c:1646 */ break; case 2418: #line 3806 "VParseBison.y" /* yacc.c:1646 */ { } #line 35170 "VParseBison.c" /* yacc.c:1646 */ break; case 2419: #line 3807 "VParseBison.y" /* yacc.c:1646 */ { } #line 35176 "VParseBison.c" /* yacc.c:1646 */ break; case 2420: #line 3808 "VParseBison.y" /* yacc.c:1646 */ { } #line 35182 "VParseBison.c" /* yacc.c:1646 */ break; case 2421: #line 3809 "VParseBison.y" /* yacc.c:1646 */ { } #line 35188 "VParseBison.c" /* yacc.c:1646 */ break; case 2422: #line 3810 "VParseBison.y" /* yacc.c:1646 */ { NEED_S09((yyvsp[0].fl),"edge"); } #line 35194 "VParseBison.c" /* yacc.c:1646 */ break; case 2423: #line 3811 "VParseBison.y" /* yacc.c:1646 */ { NEED_S09((yyvsp[-1].fl),"edge"); } #line 35200 "VParseBison.c" /* yacc.c:1646 */ break; case 2424: #line 3812 "VParseBison.y" /* yacc.c:1646 */ { } #line 35206 "VParseBison.c" /* yacc.c:1646 */ break; case 2425: #line 3816 "VParseBison.y" /* yacc.c:1646 */ { } #line 35212 "VParseBison.c" /* yacc.c:1646 */ break; case 2426: #line 3817 "VParseBison.y" /* yacc.c:1646 */ { } #line 35218 "VParseBison.c" /* yacc.c:1646 */ break; case 2427: #line 3818 "VParseBison.y" /* yacc.c:1646 */ { } #line 35224 "VParseBison.c" /* yacc.c:1646 */ break; case 2428: #line 3825 "VParseBison.y" /* yacc.c:1646 */ { } #line 35230 "VParseBison.c" /* yacc.c:1646 */ break; case 2429: #line 3826 "VParseBison.y" /* yacc.c:1646 */ { } #line 35236 "VParseBison.c" /* yacc.c:1646 */ break; case 2430: #line 3827 "VParseBison.y" /* yacc.c:1646 */ { } #line 35242 "VParseBison.c" /* yacc.c:1646 */ break; case 2431: #line 3831 "VParseBison.y" /* yacc.c:1646 */ { } #line 35248 "VParseBison.c" /* yacc.c:1646 */ break; case 2432: #line 3832 "VParseBison.y" /* yacc.c:1646 */ { } #line 35254 "VParseBison.c" /* yacc.c:1646 */ break; case 2433: #line 3836 "VParseBison.y" /* yacc.c:1646 */ { } #line 35260 "VParseBison.c" /* yacc.c:1646 */ break; case 2434: #line 3837 "VParseBison.y" /* yacc.c:1646 */ { } #line 35266 "VParseBison.c" /* yacc.c:1646 */ break; case 2435: #line 3841 "VParseBison.y" /* yacc.c:1646 */ { } #line 35272 "VParseBison.c" /* yacc.c:1646 */ break; case 2436: #line 3842 "VParseBison.y" /* yacc.c:1646 */ { } #line 35278 "VParseBison.c" /* yacc.c:1646 */ break; case 2437: #line 3845 "VParseBison.y" /* yacc.c:1646 */ { } #line 35284 "VParseBison.c" /* yacc.c:1646 */ break; case 2438: #line 3849 "VParseBison.y" /* yacc.c:1646 */ { } #line 35290 "VParseBison.c" /* yacc.c:1646 */ break; case 2439: #line 3850 "VParseBison.y" /* yacc.c:1646 */ { } #line 35296 "VParseBison.c" /* yacc.c:1646 */ break; case 2440: #line 3855 "VParseBison.y" /* yacc.c:1646 */ { } #line 35302 "VParseBison.c" /* yacc.c:1646 */ break; case 2441: #line 3857 "VParseBison.y" /* yacc.c:1646 */ { } #line 35308 "VParseBison.c" /* yacc.c:1646 */ break; case 2442: #line 3859 "VParseBison.y" /* yacc.c:1646 */ { } #line 35314 "VParseBison.c" /* yacc.c:1646 */ break; case 2443: #line 3863 "VParseBison.y" /* yacc.c:1646 */ { } #line 35320 "VParseBison.c" /* yacc.c:1646 */ break; case 2444: #line 3865 "VParseBison.y" /* yacc.c:1646 */ { } #line 35326 "VParseBison.c" /* yacc.c:1646 */ break; case 2445: #line 3870 "VParseBison.y" /* yacc.c:1646 */ { } #line 35332 "VParseBison.c" /* yacc.c:1646 */ break; case 2446: #line 3872 "VParseBison.y" /* yacc.c:1646 */ { } #line 35338 "VParseBison.c" /* yacc.c:1646 */ break; case 2447: #line 3874 "VParseBison.y" /* yacc.c:1646 */ { } #line 35344 "VParseBison.c" /* yacc.c:1646 */ break; case 2448: #line 3878 "VParseBison.y" /* yacc.c:1646 */ { } #line 35350 "VParseBison.c" /* yacc.c:1646 */ break; case 2449: #line 3882 "VParseBison.y" /* yacc.c:1646 */ { } #line 35356 "VParseBison.c" /* yacc.c:1646 */ break; case 2450: #line 3883 "VParseBison.y" /* yacc.c:1646 */ { } #line 35362 "VParseBison.c" /* yacc.c:1646 */ break; case 2451: #line 3890 "VParseBison.y" /* yacc.c:1646 */ { } #line 35368 "VParseBison.c" /* yacc.c:1646 */ break; case 2452: #line 3892 "VParseBison.y" /* yacc.c:1646 */ { } #line 35374 "VParseBison.c" /* yacc.c:1646 */ break; case 2453: #line 3894 "VParseBison.y" /* yacc.c:1646 */ { } #line 35380 "VParseBison.c" /* yacc.c:1646 */ break; case 2454: #line 3896 "VParseBison.y" /* yacc.c:1646 */ { } #line 35386 "VParseBison.c" /* yacc.c:1646 */ break; case 2455: #line 3899 "VParseBison.y" /* yacc.c:1646 */ { } #line 35392 "VParseBison.c" /* yacc.c:1646 */ break; case 2456: #line 3900 "VParseBison.y" /* yacc.c:1646 */ { } #line 35398 "VParseBison.c" /* yacc.c:1646 */ break; case 2457: #line 3902 "VParseBison.y" /* yacc.c:1646 */ { } #line 35404 "VParseBison.c" /* yacc.c:1646 */ break; case 2458: #line 3908 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::PROPERTY); } #line 35410 "VParseBison.c" /* yacc.c:1646 */ break; case 2459: #line 3913 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::PROPERTY,(yyvsp[0].str)); } #line 35416 "VParseBison.c" /* yacc.c:1646 */ break; case 2460: #line 3917 "VParseBison.y" /* yacc.c:1646 */ { } #line 35422 "VParseBison.c" /* yacc.c:1646 */ break; case 2461: #line 3918 "VParseBison.y" /* yacc.c:1646 */ {VARRESET_LIST(""); VARIO("input"); } #line 35428 "VParseBison.c" /* yacc.c:1646 */ break; case 2462: #line 3919 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); } #line 35434 "VParseBison.c" /* yacc.c:1646 */ break; case 2463: #line 3923 "VParseBison.y" /* yacc.c:1646 */ { } #line 35440 "VParseBison.c" /* yacc.c:1646 */ break; case 2464: #line 3924 "VParseBison.y" /* yacc.c:1646 */ { } #line 35446 "VParseBison.c" /* yacc.c:1646 */ break; case 2465: #line 3934 "VParseBison.y" /* yacc.c:1646 */ { } #line 35452 "VParseBison.c" /* yacc.c:1646 */ break; case 2466: #line 3939 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 35458 "VParseBison.c" /* yacc.c:1646 */ break; case 2467: #line 3941 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 35464 "VParseBison.c" /* yacc.c:1646 */ break; case 2468: #line 3942 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 35470 "VParseBison.c" /* yacc.c:1646 */ break; case 2469: #line 3943 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE((yyvsp[0].str)); } #line 35476 "VParseBison.c" /* yacc.c:1646 */ break; case 2470: #line 3944 "VParseBison.y" /* yacc.c:1646 */ { VARDTYPE(SPACED((yyvsp[-1].str),(yyvsp[0].str))); } #line 35482 "VParseBison.c" /* yacc.c:1646 */ break; case 2471: #line 3945 "VParseBison.y" /* yacc.c:1646 */ { /*VARDTYPE-same*/ } #line 35488 "VParseBison.c" /* yacc.c:1646 */ break; case 2472: #line 3949 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-1].fl), (yyvsp[-1].str), (yyvsp[0].str), ""); PINNUMINC(); } #line 35494 "VParseBison.c" /* yacc.c:1646 */ break; case 2473: #line 3951 "VParseBison.y" /* yacc.c:1646 */ { VARDONE((yyvsp[-3].fl), (yyvsp[-3].str), (yyvsp[-2].str), (yyvsp[0].str)); PINNUMINC(); } #line 35500 "VParseBison.c" /* yacc.c:1646 */ break; case 2474: #line 3955 "VParseBison.y" /* yacc.c:1646 */ { } #line 35506 "VParseBison.c" /* yacc.c:1646 */ break; case 2475: #line 3956 "VParseBison.y" /* yacc.c:1646 */ { } #line 35512 "VParseBison.c" /* yacc.c:1646 */ break; case 2476: #line 3957 "VParseBison.y" /* yacc.c:1646 */ { } #line 35518 "VParseBison.c" /* yacc.c:1646 */ break; case 2477: #line 3961 "VParseBison.y" /* yacc.c:1646 */ { } #line 35524 "VParseBison.c" /* yacc.c:1646 */ break; case 2478: #line 3964 "VParseBison.y" /* yacc.c:1646 */ { } #line 35530 "VParseBison.c" /* yacc.c:1646 */ break; case 2479: #line 3968 "VParseBison.y" /* yacc.c:1646 */ { } #line 35536 "VParseBison.c" /* yacc.c:1646 */ break; case 2480: #line 3969 "VParseBison.y" /* yacc.c:1646 */ { } #line 35542 "VParseBison.c" /* yacc.c:1646 */ break; case 2481: #line 3975 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::SEQUENCE); } #line 35548 "VParseBison.c" /* yacc.c:1646 */ break; case 2482: #line 3980 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::SEQUENCE,(yyvsp[0].str)); } #line 35554 "VParseBison.c" /* yacc.c:1646 */ break; case 2483: #line 3990 "VParseBison.y" /* yacc.c:1646 */ { } #line 35560 "VParseBison.c" /* yacc.c:1646 */ break; case 2484: #line 3994 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 35566 "VParseBison.c" /* yacc.c:1646 */ break; case 2485: #line 3995 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = "property"; } #line 35572 "VParseBison.c" /* yacc.c:1646 */ break; case 2486: #line 4001 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = "sequence"; } #line 35578 "VParseBison.c" /* yacc.c:1646 */ break; case 2487: #line 4004 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = "untyped"; } #line 35584 "VParseBison.c" /* yacc.c:1646 */ break; case 2488: #line 4009 "VParseBison.y" /* yacc.c:1646 */ { } #line 35590 "VParseBison.c" /* yacc.c:1646 */ break; case 2489: #line 4010 "VParseBison.y" /* yacc.c:1646 */ { } #line 35596 "VParseBison.c" /* yacc.c:1646 */ break; case 2490: #line 4011 "VParseBison.y" /* yacc.c:1646 */ { } #line 35602 "VParseBison.c" /* yacc.c:1646 */ break; case 2491: #line 4012 "VParseBison.y" /* yacc.c:1646 */ { } #line 35608 "VParseBison.c" /* yacc.c:1646 */ break; case 2492: #line 4018 "VParseBison.y" /* yacc.c:1646 */ { } #line 35614 "VParseBison.c" /* yacc.c:1646 */ break; case 2493: #line 4019 "VParseBison.y" /* yacc.c:1646 */ { } #line 35620 "VParseBison.c" /* yacc.c:1646 */ break; case 2494: #line 4024 "VParseBison.y" /* yacc.c:1646 */ { } #line 35626 "VParseBison.c" /* yacc.c:1646 */ break; case 2495: #line 4025 "VParseBison.y" /* yacc.c:1646 */ { } #line 35632 "VParseBison.c" /* yacc.c:1646 */ break; case 2496: #line 4030 "VParseBison.y" /* yacc.c:1646 */ { } #line 35638 "VParseBison.c" /* yacc.c:1646 */ break; case 2497: #line 4031 "VParseBison.y" /* yacc.c:1646 */ { } #line 35644 "VParseBison.c" /* yacc.c:1646 */ break; case 2498: #line 4036 "VParseBison.y" /* yacc.c:1646 */ { } #line 35650 "VParseBison.c" /* yacc.c:1646 */ break; case 2499: #line 4039 "VParseBison.y" /* yacc.c:1646 */ { } #line 35656 "VParseBison.c" /* yacc.c:1646 */ break; case 2500: #line 4043 "VParseBison.y" /* yacc.c:1646 */ { } #line 35662 "VParseBison.c" /* yacc.c:1646 */ break; case 2501: #line 4044 "VParseBison.y" /* yacc.c:1646 */ { } #line 35668 "VParseBison.c" /* yacc.c:1646 */ break; case 2502: #line 4045 "VParseBison.y" /* yacc.c:1646 */ { } #line 35674 "VParseBison.c" /* yacc.c:1646 */ break; case 2503: #line 4046 "VParseBison.y" /* yacc.c:1646 */ { } #line 35680 "VParseBison.c" /* yacc.c:1646 */ break; case 2504: #line 4050 "VParseBison.y" /* yacc.c:1646 */ { } #line 35686 "VParseBison.c" /* yacc.c:1646 */ break; case 2505: #line 4051 "VParseBison.y" /* yacc.c:1646 */ { } #line 35692 "VParseBison.c" /* yacc.c:1646 */ break; case 2506: #line 4058 "VParseBison.y" /* yacc.c:1646 */ { } #line 35698 "VParseBison.c" /* yacc.c:1646 */ break; case 2507: #line 4059 "VParseBison.y" /* yacc.c:1646 */ { } #line 35704 "VParseBison.c" /* yacc.c:1646 */ break; case 2508: #line 4060 "VParseBison.y" /* yacc.c:1646 */ { } #line 35710 "VParseBison.c" /* yacc.c:1646 */ break; case 2509: #line 4061 "VParseBison.y" /* yacc.c:1646 */ { } #line 35716 "VParseBison.c" /* yacc.c:1646 */ break; case 2510: #line 4078 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[0].str); } #line 35722 "VParseBison.c" /* yacc.c:1646 */ break; case 2511: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35728 "VParseBison.c" /* yacc.c:1646 */ break; case 2512: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35734 "VParseBison.c" /* yacc.c:1646 */ break; case 2513: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35740 "VParseBison.c" /* yacc.c:1646 */ break; case 2514: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35746 "VParseBison.c" /* yacc.c:1646 */ break; case 2515: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35752 "VParseBison.c" /* yacc.c:1646 */ break; case 2516: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35758 "VParseBison.c" /* yacc.c:1646 */ break; case 2517: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35764 "VParseBison.c" /* yacc.c:1646 */ break; case 2518: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35770 "VParseBison.c" /* yacc.c:1646 */ break; case 2519: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35776 "VParseBison.c" /* yacc.c:1646 */ break; case 2520: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35782 "VParseBison.c" /* yacc.c:1646 */ break; case 2521: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35788 "VParseBison.c" /* yacc.c:1646 */ break; case 2522: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35794 "VParseBison.c" /* yacc.c:1646 */ break; case 2523: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35800 "VParseBison.c" /* yacc.c:1646 */ break; case 2524: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35806 "VParseBison.c" /* yacc.c:1646 */ break; case 2525: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35812 "VParseBison.c" /* yacc.c:1646 */ break; case 2526: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35818 "VParseBison.c" /* yacc.c:1646 */ break; case 2527: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35824 "VParseBison.c" /* yacc.c:1646 */ break; case 2528: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35830 "VParseBison.c" /* yacc.c:1646 */ break; case 2529: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35836 "VParseBison.c" /* yacc.c:1646 */ break; case 2530: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35842 "VParseBison.c" /* yacc.c:1646 */ break; case 2531: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35848 "VParseBison.c" /* yacc.c:1646 */ break; case 2532: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35854 "VParseBison.c" /* yacc.c:1646 */ break; case 2533: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35860 "VParseBison.c" /* yacc.c:1646 */ break; case 2534: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35866 "VParseBison.c" /* yacc.c:1646 */ break; case 2535: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35872 "VParseBison.c" /* yacc.c:1646 */ break; case 2536: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35878 "VParseBison.c" /* yacc.c:1646 */ break; case 2537: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35884 "VParseBison.c" /* yacc.c:1646 */ break; case 2538: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35890 "VParseBison.c" /* yacc.c:1646 */ break; case 2539: #line 4081 "VParseBison.y" /* yacc.c:1646 */ { } #line 35896 "VParseBison.c" /* yacc.c:1646 */ break; case 2540: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35902 "VParseBison.c" /* yacc.c:1646 */ break; case 2541: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35908 "VParseBison.c" /* yacc.c:1646 */ break; case 2542: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35914 "VParseBison.c" /* yacc.c:1646 */ break; case 2543: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 35920 "VParseBison.c" /* yacc.c:1646 */ break; case 2544: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35926 "VParseBison.c" /* yacc.c:1646 */ break; case 2545: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 35932 "VParseBison.c" /* yacc.c:1646 */ break; case 2546: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 35938 "VParseBison.c" /* yacc.c:1646 */ break; case 2547: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 35944 "VParseBison.c" /* yacc.c:1646 */ break; case 2548: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35950 "VParseBison.c" /* yacc.c:1646 */ break; case 2549: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35956 "VParseBison.c" /* yacc.c:1646 */ break; case 2550: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35962 "VParseBison.c" /* yacc.c:1646 */ break; case 2551: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 35968 "VParseBison.c" /* yacc.c:1646 */ break; case 2552: #line 4084 "VParseBison.y" /* yacc.c:1646 */ { } #line 35974 "VParseBison.c" /* yacc.c:1646 */ break; case 2553: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 35980 "VParseBison.c" /* yacc.c:1646 */ break; case 2554: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 35986 "VParseBison.c" /* yacc.c:1646 */ break; case 2555: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 35992 "VParseBison.c" /* yacc.c:1646 */ break; case 2556: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 35998 "VParseBison.c" /* yacc.c:1646 */ break; case 2557: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36004 "VParseBison.c" /* yacc.c:1646 */ break; case 2558: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36010 "VParseBison.c" /* yacc.c:1646 */ break; case 2559: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36016 "VParseBison.c" /* yacc.c:1646 */ break; case 2560: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36022 "VParseBison.c" /* yacc.c:1646 */ break; case 2561: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36028 "VParseBison.c" /* yacc.c:1646 */ break; case 2562: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36034 "VParseBison.c" /* yacc.c:1646 */ break; case 2563: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36040 "VParseBison.c" /* yacc.c:1646 */ break; case 2564: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36046 "VParseBison.c" /* yacc.c:1646 */ break; case 2565: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36052 "VParseBison.c" /* yacc.c:1646 */ break; case 2566: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36058 "VParseBison.c" /* yacc.c:1646 */ break; case 2567: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36064 "VParseBison.c" /* yacc.c:1646 */ break; case 2568: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36070 "VParseBison.c" /* yacc.c:1646 */ break; case 2569: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36076 "VParseBison.c" /* yacc.c:1646 */ break; case 2570: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36082 "VParseBison.c" /* yacc.c:1646 */ break; case 2571: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36088 "VParseBison.c" /* yacc.c:1646 */ break; case 2572: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36094 "VParseBison.c" /* yacc.c:1646 */ break; case 2573: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36100 "VParseBison.c" /* yacc.c:1646 */ break; case 2574: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36106 "VParseBison.c" /* yacc.c:1646 */ break; case 2575: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36112 "VParseBison.c" /* yacc.c:1646 */ break; case 2576: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36118 "VParseBison.c" /* yacc.c:1646 */ break; case 2577: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36124 "VParseBison.c" /* yacc.c:1646 */ break; case 2578: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36130 "VParseBison.c" /* yacc.c:1646 */ break; case 2579: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36136 "VParseBison.c" /* yacc.c:1646 */ break; case 2580: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36142 "VParseBison.c" /* yacc.c:1646 */ break; case 2581: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36148 "VParseBison.c" /* yacc.c:1646 */ break; case 2582: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36154 "VParseBison.c" /* yacc.c:1646 */ break; case 2583: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36160 "VParseBison.c" /* yacc.c:1646 */ break; case 2584: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36166 "VParseBison.c" /* yacc.c:1646 */ break; case 2585: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36172 "VParseBison.c" /* yacc.c:1646 */ break; case 2586: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36178 "VParseBison.c" /* yacc.c:1646 */ break; case 2587: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36184 "VParseBison.c" /* yacc.c:1646 */ break; case 2588: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36190 "VParseBison.c" /* yacc.c:1646 */ break; case 2589: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36196 "VParseBison.c" /* yacc.c:1646 */ break; case 2590: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36202 "VParseBison.c" /* yacc.c:1646 */ break; case 2591: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36208 "VParseBison.c" /* yacc.c:1646 */ break; case 2592: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36214 "VParseBison.c" /* yacc.c:1646 */ break; case 2593: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36220 "VParseBison.c" /* yacc.c:1646 */ break; case 2594: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36226 "VParseBison.c" /* yacc.c:1646 */ break; case 2595: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36232 "VParseBison.c" /* yacc.c:1646 */ break; case 2596: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36238 "VParseBison.c" /* yacc.c:1646 */ break; case 2597: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36244 "VParseBison.c" /* yacc.c:1646 */ break; case 2598: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36250 "VParseBison.c" /* yacc.c:1646 */ break; case 2599: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36256 "VParseBison.c" /* yacc.c:1646 */ break; case 2600: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36262 "VParseBison.c" /* yacc.c:1646 */ break; case 2601: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36268 "VParseBison.c" /* yacc.c:1646 */ break; case 2602: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36274 "VParseBison.c" /* yacc.c:1646 */ break; case 2603: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36280 "VParseBison.c" /* yacc.c:1646 */ break; case 2604: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36286 "VParseBison.c" /* yacc.c:1646 */ break; case 2605: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"?"+(yyvsp[-2].str)+":"+(yyvsp[0].str); } #line 36292 "VParseBison.c" /* yacc.c:1646 */ break; case 2606: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+" inside {"+(yyvsp[-2].str)+"}"; } #line 36298 "VParseBison.c" /* yacc.c:1646 */ break; case 2607: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = " tagged "+(yyvsp[-1].str); } #line 36304 "VParseBison.c" /* yacc.c:1646 */ break; case 2608: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = " tagged "+(yyvsp[-2].str)+" "+(yyvsp[-1].str); } #line 36310 "VParseBison.c" /* yacc.c:1646 */ break; case 2609: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36316 "VParseBison.c" /* yacc.c:1646 */ break; case 2610: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36322 "VParseBison.c" /* yacc.c:1646 */ break; case 2611: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36328 "VParseBison.c" /* yacc.c:1646 */ break; case 2612: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36334 "VParseBison.c" /* yacc.c:1646 */ break; case 2614: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"{"+(yyvsp[-2].str)+"}}"; } #line 36340 "VParseBison.c" /* yacc.c:1646 */ break; case 2615: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-8].fl); (yyval.str) = "{"+(yyvsp[-7].str)+"{"+(yyvsp[-5].str)+"}}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-3].fl),"{}[]"); } #line 36346 "VParseBison.c" /* yacc.c:1646 */ break; case 2616: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 36352 "VParseBison.c" /* yacc.c:1646 */ break; case 2617: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 36358 "VParseBison.c" /* yacc.c:1646 */ break; case 2618: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 36364 "VParseBison.c" /* yacc.c:1646 */ break; case 2619: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 36370 "VParseBison.c" /* yacc.c:1646 */ break; case 2620: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 36376 "VParseBison.c" /* yacc.c:1646 */ break; case 2621: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 36382 "VParseBison.c" /* yacc.c:1646 */ break; case 2622: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = "("+(yyvsp[-2].str)+")"; } #line 36388 "VParseBison.c" /* yacc.c:1646 */ break; case 2623: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "("+(yyvsp[-6].str)+":"+(yyvsp[-4].str)+":"+(yyvsp[-3].str)+")"; } #line 36394 "VParseBison.c" /* yacc.c:1646 */ break; case 2624: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "_("+(yyvsp[-2].str)+")"; } #line 36400 "VParseBison.c" /* yacc.c:1646 */ break; case 2625: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 36406 "VParseBison.c" /* yacc.c:1646 */ break; case 2626: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 36412 "VParseBison.c" /* yacc.c:1646 */ break; case 2627: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = "$"; } #line 36418 "VParseBison.c" /* yacc.c:1646 */ break; case 2628: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36424 "VParseBison.c" /* yacc.c:1646 */ break; case 2629: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36430 "VParseBison.c" /* yacc.c:1646 */ break; case 2630: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + "&&&" + (yyvsp[0].str); } #line 36436 "VParseBison.c" /* yacc.c:1646 */ break; case 2631: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 36442 "VParseBison.c" /* yacc.c:1646 */ break; case 2632: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 36448 "VParseBison.c" /* yacc.c:1646 */ break; case 2633: #line 4087 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str) + " dist " + (yyvsp[-2].str)+"..."+(yyvsp[0].str); } #line 36454 "VParseBison.c" /* yacc.c:1646 */ break; case 2634: #line 4098 "VParseBison.y" /* yacc.c:1646 */ { } #line 36460 "VParseBison.c" /* yacc.c:1646 */ break; case 2635: #line 4099 "VParseBison.y" /* yacc.c:1646 */ { } #line 36466 "VParseBison.c" /* yacc.c:1646 */ break; case 2636: #line 4100 "VParseBison.y" /* yacc.c:1646 */ { } #line 36472 "VParseBison.c" /* yacc.c:1646 */ break; case 2637: #line 4107 "VParseBison.y" /* yacc.c:1646 */ { } #line 36478 "VParseBison.c" /* yacc.c:1646 */ break; case 2638: #line 4108 "VParseBison.y" /* yacc.c:1646 */ { } #line 36484 "VParseBison.c" /* yacc.c:1646 */ break; case 2639: #line 4112 "VParseBison.y" /* yacc.c:1646 */ { } #line 36490 "VParseBison.c" /* yacc.c:1646 */ break; case 2640: #line 4114 "VParseBison.y" /* yacc.c:1646 */ { } #line 36496 "VParseBison.c" /* yacc.c:1646 */ break; case 2641: #line 4115 "VParseBison.y" /* yacc.c:1646 */ { } #line 36502 "VParseBison.c" /* yacc.c:1646 */ break; case 2642: #line 4116 "VParseBison.y" /* yacc.c:1646 */ { } #line 36508 "VParseBison.c" /* yacc.c:1646 */ break; case 2643: #line 4117 "VParseBison.y" /* yacc.c:1646 */ { } #line 36514 "VParseBison.c" /* yacc.c:1646 */ break; case 2644: #line 4118 "VParseBison.y" /* yacc.c:1646 */ { } #line 36520 "VParseBison.c" /* yacc.c:1646 */ break; case 2645: #line 4119 "VParseBison.y" /* yacc.c:1646 */ { } #line 36526 "VParseBison.c" /* yacc.c:1646 */ break; case 2646: #line 4120 "VParseBison.y" /* yacc.c:1646 */ { } #line 36532 "VParseBison.c" /* yacc.c:1646 */ break; case 2647: #line 4121 "VParseBison.y" /* yacc.c:1646 */ { } #line 36538 "VParseBison.c" /* yacc.c:1646 */ break; case 2648: #line 4122 "VParseBison.y" /* yacc.c:1646 */ { } #line 36544 "VParseBison.c" /* yacc.c:1646 */ break; case 2649: #line 4123 "VParseBison.y" /* yacc.c:1646 */ { } #line 36550 "VParseBison.c" /* yacc.c:1646 */ break; case 2650: #line 4124 "VParseBison.y" /* yacc.c:1646 */ { } #line 36556 "VParseBison.c" /* yacc.c:1646 */ break; case 2651: #line 4125 "VParseBison.y" /* yacc.c:1646 */ { } #line 36562 "VParseBison.c" /* yacc.c:1646 */ break; case 2652: #line 4126 "VParseBison.y" /* yacc.c:1646 */ { } #line 36568 "VParseBison.c" /* yacc.c:1646 */ break; case 2653: #line 4127 "VParseBison.y" /* yacc.c:1646 */ { } #line 36574 "VParseBison.c" /* yacc.c:1646 */ break; case 2654: #line 4128 "VParseBison.y" /* yacc.c:1646 */ { } #line 36580 "VParseBison.c" /* yacc.c:1646 */ break; case 2655: #line 4129 "VParseBison.y" /* yacc.c:1646 */ { } #line 36586 "VParseBison.c" /* yacc.c:1646 */ break; case 2656: #line 4130 "VParseBison.y" /* yacc.c:1646 */ { } #line 36592 "VParseBison.c" /* yacc.c:1646 */ break; case 2657: #line 4132 "VParseBison.y" /* yacc.c:1646 */ { } #line 36598 "VParseBison.c" /* yacc.c:1646 */ break; case 2658: #line 4133 "VParseBison.y" /* yacc.c:1646 */ { } #line 36604 "VParseBison.c" /* yacc.c:1646 */ break; case 2659: #line 4134 "VParseBison.y" /* yacc.c:1646 */ { } #line 36610 "VParseBison.c" /* yacc.c:1646 */ break; case 2660: #line 4135 "VParseBison.y" /* yacc.c:1646 */ { } #line 36616 "VParseBison.c" /* yacc.c:1646 */ break; case 2661: #line 4136 "VParseBison.y" /* yacc.c:1646 */ { } #line 36622 "VParseBison.c" /* yacc.c:1646 */ break; case 2662: #line 4144 "VParseBison.y" /* yacc.c:1646 */ { } #line 36628 "VParseBison.c" /* yacc.c:1646 */ break; case 2663: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36634 "VParseBison.c" /* yacc.c:1646 */ break; case 2664: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36640 "VParseBison.c" /* yacc.c:1646 */ break; case 2665: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36646 "VParseBison.c" /* yacc.c:1646 */ break; case 2666: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36652 "VParseBison.c" /* yacc.c:1646 */ break; case 2667: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36658 "VParseBison.c" /* yacc.c:1646 */ break; case 2668: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36664 "VParseBison.c" /* yacc.c:1646 */ break; case 2669: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36670 "VParseBison.c" /* yacc.c:1646 */ break; case 2670: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36676 "VParseBison.c" /* yacc.c:1646 */ break; case 2671: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36682 "VParseBison.c" /* yacc.c:1646 */ break; case 2672: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36688 "VParseBison.c" /* yacc.c:1646 */ break; case 2673: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36694 "VParseBison.c" /* yacc.c:1646 */ break; case 2674: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36700 "VParseBison.c" /* yacc.c:1646 */ break; case 2675: #line 4147 "VParseBison.y" /* yacc.c:1646 */ { } #line 36706 "VParseBison.c" /* yacc.c:1646 */ break; case 2676: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36712 "VParseBison.c" /* yacc.c:1646 */ break; case 2677: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36718 "VParseBison.c" /* yacc.c:1646 */ break; case 2678: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36724 "VParseBison.c" /* yacc.c:1646 */ break; case 2679: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36730 "VParseBison.c" /* yacc.c:1646 */ break; case 2680: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36736 "VParseBison.c" /* yacc.c:1646 */ break; case 2681: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36742 "VParseBison.c" /* yacc.c:1646 */ break; case 2682: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36748 "VParseBison.c" /* yacc.c:1646 */ break; case 2683: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36754 "VParseBison.c" /* yacc.c:1646 */ break; case 2684: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36760 "VParseBison.c" /* yacc.c:1646 */ break; case 2685: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 36766 "VParseBison.c" /* yacc.c:1646 */ break; case 2686: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 36772 "VParseBison.c" /* yacc.c:1646 */ break; case 2687: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36778 "VParseBison.c" /* yacc.c:1646 */ break; case 2688: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36784 "VParseBison.c" /* yacc.c:1646 */ break; case 2689: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36790 "VParseBison.c" /* yacc.c:1646 */ break; case 2690: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36796 "VParseBison.c" /* yacc.c:1646 */ break; case 2691: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36802 "VParseBison.c" /* yacc.c:1646 */ break; case 2692: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36808 "VParseBison.c" /* yacc.c:1646 */ break; case 2693: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36814 "VParseBison.c" /* yacc.c:1646 */ break; case 2694: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36820 "VParseBison.c" /* yacc.c:1646 */ break; case 2695: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36826 "VParseBison.c" /* yacc.c:1646 */ break; case 2696: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36832 "VParseBison.c" /* yacc.c:1646 */ break; case 2697: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36838 "VParseBison.c" /* yacc.c:1646 */ break; case 2698: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 36844 "VParseBison.c" /* yacc.c:1646 */ break; case 2699: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36850 "VParseBison.c" /* yacc.c:1646 */ break; case 2700: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36856 "VParseBison.c" /* yacc.c:1646 */ break; case 2701: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36862 "VParseBison.c" /* yacc.c:1646 */ break; case 2702: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36868 "VParseBison.c" /* yacc.c:1646 */ break; case 2703: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36874 "VParseBison.c" /* yacc.c:1646 */ break; case 2704: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36880 "VParseBison.c" /* yacc.c:1646 */ break; case 2705: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36886 "VParseBison.c" /* yacc.c:1646 */ break; case 2706: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36892 "VParseBison.c" /* yacc.c:1646 */ break; case 2707: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36898 "VParseBison.c" /* yacc.c:1646 */ break; case 2708: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36904 "VParseBison.c" /* yacc.c:1646 */ break; case 2709: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36910 "VParseBison.c" /* yacc.c:1646 */ break; case 2710: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36916 "VParseBison.c" /* yacc.c:1646 */ break; case 2711: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36922 "VParseBison.c" /* yacc.c:1646 */ break; case 2712: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36928 "VParseBison.c" /* yacc.c:1646 */ break; case 2713: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36934 "VParseBison.c" /* yacc.c:1646 */ break; case 2714: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36940 "VParseBison.c" /* yacc.c:1646 */ break; case 2715: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36946 "VParseBison.c" /* yacc.c:1646 */ break; case 2716: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36952 "VParseBison.c" /* yacc.c:1646 */ break; case 2717: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36958 "VParseBison.c" /* yacc.c:1646 */ break; case 2718: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36964 "VParseBison.c" /* yacc.c:1646 */ break; case 2719: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36970 "VParseBison.c" /* yacc.c:1646 */ break; case 2720: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36976 "VParseBison.c" /* yacc.c:1646 */ break; case 2721: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36982 "VParseBison.c" /* yacc.c:1646 */ break; case 2722: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36988 "VParseBison.c" /* yacc.c:1646 */ break; case 2723: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 36994 "VParseBison.c" /* yacc.c:1646 */ break; case 2724: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37000 "VParseBison.c" /* yacc.c:1646 */ break; case 2725: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37006 "VParseBison.c" /* yacc.c:1646 */ break; case 2726: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37012 "VParseBison.c" /* yacc.c:1646 */ break; case 2727: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37018 "VParseBison.c" /* yacc.c:1646 */ break; case 2728: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"?"+(yyvsp[-2].str)+":"+(yyvsp[0].str); } #line 37024 "VParseBison.c" /* yacc.c:1646 */ break; case 2729: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+" inside {"+(yyvsp[-2].str)+"}"; } #line 37030 "VParseBison.c" /* yacc.c:1646 */ break; case 2730: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = " tagged "+(yyvsp[-1].str); } #line 37036 "VParseBison.c" /* yacc.c:1646 */ break; case 2731: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = " tagged "+(yyvsp[-2].str)+" "+(yyvsp[-1].str); } #line 37042 "VParseBison.c" /* yacc.c:1646 */ break; case 2732: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37048 "VParseBison.c" /* yacc.c:1646 */ break; case 2733: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37054 "VParseBison.c" /* yacc.c:1646 */ break; case 2734: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37060 "VParseBison.c" /* yacc.c:1646 */ break; case 2735: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37066 "VParseBison.c" /* yacc.c:1646 */ break; case 2737: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"{"+(yyvsp[-2].str)+"}}"; } #line 37072 "VParseBison.c" /* yacc.c:1646 */ break; case 2738: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-8].fl); (yyval.str) = "{"+(yyvsp[-7].str)+"{"+(yyvsp[-5].str)+"}}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-3].fl),"{}[]"); } #line 37078 "VParseBison.c" /* yacc.c:1646 */ break; case 2739: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 37084 "VParseBison.c" /* yacc.c:1646 */ break; case 2740: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 37090 "VParseBison.c" /* yacc.c:1646 */ break; case 2741: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 37096 "VParseBison.c" /* yacc.c:1646 */ break; case 2742: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 37102 "VParseBison.c" /* yacc.c:1646 */ break; case 2743: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 37108 "VParseBison.c" /* yacc.c:1646 */ break; case 2744: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 37114 "VParseBison.c" /* yacc.c:1646 */ break; case 2745: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = "("+(yyvsp[-2].str)+")"; } #line 37120 "VParseBison.c" /* yacc.c:1646 */ break; case 2746: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "("+(yyvsp[-6].str)+":"+(yyvsp[-4].str)+":"+(yyvsp[-3].str)+")"; } #line 37126 "VParseBison.c" /* yacc.c:1646 */ break; case 2747: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "_("+(yyvsp[-2].str)+")"; } #line 37132 "VParseBison.c" /* yacc.c:1646 */ break; case 2748: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 37138 "VParseBison.c" /* yacc.c:1646 */ break; case 2749: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 37144 "VParseBison.c" /* yacc.c:1646 */ break; case 2750: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = "$"; } #line 37150 "VParseBison.c" /* yacc.c:1646 */ break; case 2751: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37156 "VParseBison.c" /* yacc.c:1646 */ break; case 2752: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37162 "VParseBison.c" /* yacc.c:1646 */ break; case 2753: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + "&&&" + (yyvsp[0].str); } #line 37168 "VParseBison.c" /* yacc.c:1646 */ break; case 2754: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 37174 "VParseBison.c" /* yacc.c:1646 */ break; case 2755: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 37180 "VParseBison.c" /* yacc.c:1646 */ break; case 2756: #line 4150 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str) + " dist " + (yyvsp[-2].str)+"..."+(yyvsp[0].str); } #line 37186 "VParseBison.c" /* yacc.c:1646 */ break; case 2757: #line 4161 "VParseBison.y" /* yacc.c:1646 */ { } #line 37192 "VParseBison.c" /* yacc.c:1646 */ break; case 2758: #line 4162 "VParseBison.y" /* yacc.c:1646 */ { } #line 37198 "VParseBison.c" /* yacc.c:1646 */ break; case 2759: #line 4167 "VParseBison.y" /* yacc.c:1646 */ { } #line 37204 "VParseBison.c" /* yacc.c:1646 */ break; case 2760: #line 4178 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37210 "VParseBison.c" /* yacc.c:1646 */ break; case 2761: #line 4179 "VParseBison.y" /* yacc.c:1646 */ { } #line 37216 "VParseBison.c" /* yacc.c:1646 */ break; case 2762: #line 4182 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37222 "VParseBison.c" /* yacc.c:1646 */ break; case 2763: #line 4183 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37228 "VParseBison.c" /* yacc.c:1646 */ break; case 2764: #line 4185 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37234 "VParseBison.c" /* yacc.c:1646 */ break; case 2765: #line 4187 "VParseBison.y" /* yacc.c:1646 */ { } #line 37240 "VParseBison.c" /* yacc.c:1646 */ break; case 2766: #line 4188 "VParseBison.y" /* yacc.c:1646 */ { } #line 37246 "VParseBison.c" /* yacc.c:1646 */ break; case 2767: #line 4189 "VParseBison.y" /* yacc.c:1646 */ { } #line 37252 "VParseBison.c" /* yacc.c:1646 */ break; case 2768: #line 4192 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37258 "VParseBison.c" /* yacc.c:1646 */ break; case 2769: #line 4194 "VParseBison.y" /* yacc.c:1646 */ { } #line 37264 "VParseBison.c" /* yacc.c:1646 */ break; case 2770: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37270 "VParseBison.c" /* yacc.c:1646 */ break; case 2771: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37276 "VParseBison.c" /* yacc.c:1646 */ break; case 2772: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37282 "VParseBison.c" /* yacc.c:1646 */ break; case 2773: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37288 "VParseBison.c" /* yacc.c:1646 */ break; case 2774: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37294 "VParseBison.c" /* yacc.c:1646 */ break; case 2775: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37300 "VParseBison.c" /* yacc.c:1646 */ break; case 2776: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37306 "VParseBison.c" /* yacc.c:1646 */ break; case 2777: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37312 "VParseBison.c" /* yacc.c:1646 */ break; case 2778: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37318 "VParseBison.c" /* yacc.c:1646 */ break; case 2779: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = (yyvsp[-1].str)+(yyvsp[0].str); } #line 37324 "VParseBison.c" /* yacc.c:1646 */ break; case 2780: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37330 "VParseBison.c" /* yacc.c:1646 */ break; case 2781: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37336 "VParseBison.c" /* yacc.c:1646 */ break; case 2782: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37342 "VParseBison.c" /* yacc.c:1646 */ break; case 2783: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37348 "VParseBison.c" /* yacc.c:1646 */ break; case 2784: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37354 "VParseBison.c" /* yacc.c:1646 */ break; case 2785: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37360 "VParseBison.c" /* yacc.c:1646 */ break; case 2786: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37366 "VParseBison.c" /* yacc.c:1646 */ break; case 2787: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37372 "VParseBison.c" /* yacc.c:1646 */ break; case 2788: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37378 "VParseBison.c" /* yacc.c:1646 */ break; case 2789: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37384 "VParseBison.c" /* yacc.c:1646 */ break; case 2790: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37390 "VParseBison.c" /* yacc.c:1646 */ break; case 2791: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37396 "VParseBison.c" /* yacc.c:1646 */ break; case 2792: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = "("+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+")"; } #line 37402 "VParseBison.c" /* yacc.c:1646 */ break; case 2793: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37408 "VParseBison.c" /* yacc.c:1646 */ break; case 2794: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37414 "VParseBison.c" /* yacc.c:1646 */ break; case 2795: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37420 "VParseBison.c" /* yacc.c:1646 */ break; case 2796: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37426 "VParseBison.c" /* yacc.c:1646 */ break; case 2797: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37432 "VParseBison.c" /* yacc.c:1646 */ break; case 2798: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37438 "VParseBison.c" /* yacc.c:1646 */ break; case 2799: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37444 "VParseBison.c" /* yacc.c:1646 */ break; case 2800: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37450 "VParseBison.c" /* yacc.c:1646 */ break; case 2801: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37456 "VParseBison.c" /* yacc.c:1646 */ break; case 2802: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37462 "VParseBison.c" /* yacc.c:1646 */ break; case 2803: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37468 "VParseBison.c" /* yacc.c:1646 */ break; case 2804: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37474 "VParseBison.c" /* yacc.c:1646 */ break; case 2805: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37480 "VParseBison.c" /* yacc.c:1646 */ break; case 2806: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37486 "VParseBison.c" /* yacc.c:1646 */ break; case 2807: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37492 "VParseBison.c" /* yacc.c:1646 */ break; case 2808: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37498 "VParseBison.c" /* yacc.c:1646 */ break; case 2809: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37504 "VParseBison.c" /* yacc.c:1646 */ break; case 2810: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37510 "VParseBison.c" /* yacc.c:1646 */ break; case 2811: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37516 "VParseBison.c" /* yacc.c:1646 */ break; case 2812: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37522 "VParseBison.c" /* yacc.c:1646 */ break; case 2813: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37528 "VParseBison.c" /* yacc.c:1646 */ break; case 2814: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37534 "VParseBison.c" /* yacc.c:1646 */ break; case 2815: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37540 "VParseBison.c" /* yacc.c:1646 */ break; case 2816: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37546 "VParseBison.c" /* yacc.c:1646 */ break; case 2817: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37552 "VParseBison.c" /* yacc.c:1646 */ break; case 2818: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37558 "VParseBison.c" /* yacc.c:1646 */ break; case 2819: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37564 "VParseBison.c" /* yacc.c:1646 */ break; case 2820: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37570 "VParseBison.c" /* yacc.c:1646 */ break; case 2821: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 37576 "VParseBison.c" /* yacc.c:1646 */ break; case 2822: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"?"+(yyvsp[-2].str)+":"+(yyvsp[0].str); } #line 37582 "VParseBison.c" /* yacc.c:1646 */ break; case 2823: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+" inside {"+(yyvsp[-2].str)+"}"; } #line 37588 "VParseBison.c" /* yacc.c:1646 */ break; case 2824: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str) = " tagged "+(yyvsp[-1].str); } #line 37594 "VParseBison.c" /* yacc.c:1646 */ break; case 2825: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = " tagged "+(yyvsp[-2].str)+" "+(yyvsp[-1].str); } #line 37600 "VParseBison.c" /* yacc.c:1646 */ break; case 2826: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37606 "VParseBison.c" /* yacc.c:1646 */ break; case 2827: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37612 "VParseBison.c" /* yacc.c:1646 */ break; case 2828: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37618 "VParseBison.c" /* yacc.c:1646 */ break; case 2829: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37624 "VParseBison.c" /* yacc.c:1646 */ break; case 2831: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "{"+(yyvsp[-4].str)+"{"+(yyvsp[-2].str)+"}}"; } #line 37630 "VParseBison.c" /* yacc.c:1646 */ break; case 2832: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-8].fl); (yyval.str) = "{"+(yyvsp[-7].str)+"{"+(yyvsp[-5].str)+"}}["+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-3].fl),"{}[]"); } #line 37636 "VParseBison.c" /* yacc.c:1646 */ break; case 2833: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 37642 "VParseBison.c" /* yacc.c:1646 */ break; case 2834: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 37648 "VParseBison.c" /* yacc.c:1646 */ break; case 2835: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-10].fl); (yyval.str) = "{"+(yyvsp[-9].str)+"{"+(yyvsp[-7].str)+"}}["+(yyvsp[-3].str)+(yyvsp[-2].str)+(yyvsp[-1].str)+"]"; NEED_S09((yyvsp[-5].fl),"{}[]"); } #line 37654 "VParseBison.c" /* yacc.c:1646 */ break; case 2836: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str) = (yyvsp[0].str); } #line 37660 "VParseBison.c" /* yacc.c:1646 */ break; case 2837: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 37666 "VParseBison.c" /* yacc.c:1646 */ break; case 2838: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str)+"."+(yyvsp[0].str); } #line 37672 "VParseBison.c" /* yacc.c:1646 */ break; case 2839: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-3].fl); (yyval.str) = "("+(yyvsp[-2].str)+")"; } #line 37678 "VParseBison.c" /* yacc.c:1646 */ break; case 2840: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-7].fl); (yyval.str) = "("+(yyvsp[-6].str)+":"+(yyvsp[-4].str)+":"+(yyvsp[-3].str)+")"; } #line 37684 "VParseBison.c" /* yacc.c:1646 */ break; case 2841: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-5].fl); (yyval.str) = "_("+(yyvsp[-2].str)+")"; } #line 37690 "VParseBison.c" /* yacc.c:1646 */ break; case 2842: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 37696 "VParseBison.c" /* yacc.c:1646 */ break; case 2843: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str)+"'("+(yyvsp[-1].str)+")"; } #line 37702 "VParseBison.c" /* yacc.c:1646 */ break; case 2844: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = "$"; } #line 37708 "VParseBison.c" /* yacc.c:1646 */ break; case 2845: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37714 "VParseBison.c" /* yacc.c:1646 */ break; case 2846: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37720 "VParseBison.c" /* yacc.c:1646 */ break; case 2847: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + "&&&" + (yyvsp[0].str); } #line 37726 "VParseBison.c" /* yacc.c:1646 */ break; case 2848: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 37732 "VParseBison.c" /* yacc.c:1646 */ break; case 2849: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str) = (yyvsp[-2].str) + " matches " + (yyvsp[0].str); } #line 37738 "VParseBison.c" /* yacc.c:1646 */ break; case 2850: #line 4197 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-4].fl); (yyval.str) = (yyvsp[-4].str) + " dist " + (yyvsp[-2].str)+"..."+(yyvsp[0].str); } #line 37744 "VParseBison.c" /* yacc.c:1646 */ break; case 2851: #line 4202 "VParseBison.y" /* yacc.c:1646 */ { } #line 37750 "VParseBison.c" /* yacc.c:1646 */ break; case 2852: #line 4203 "VParseBison.y" /* yacc.c:1646 */ { } #line 37756 "VParseBison.c" /* yacc.c:1646 */ break; case 2853: #line 4204 "VParseBison.y" /* yacc.c:1646 */ { } #line 37762 "VParseBison.c" /* yacc.c:1646 */ break; case 2854: #line 4210 "VParseBison.y" /* yacc.c:1646 */ { } #line 37768 "VParseBison.c" /* yacc.c:1646 */ break; case 2855: #line 4211 "VParseBison.y" /* yacc.c:1646 */ { } #line 37774 "VParseBison.c" /* yacc.c:1646 */ break; case 2856: #line 4212 "VParseBison.y" /* yacc.c:1646 */ { } #line 37780 "VParseBison.c" /* yacc.c:1646 */ break; case 2857: #line 4216 "VParseBison.y" /* yacc.c:1646 */ { } #line 37786 "VParseBison.c" /* yacc.c:1646 */ break; case 2858: #line 4217 "VParseBison.y" /* yacc.c:1646 */ { } #line 37792 "VParseBison.c" /* yacc.c:1646 */ break; case 2859: #line 4225 "VParseBison.y" /* yacc.c:1646 */ { } #line 37798 "VParseBison.c" /* yacc.c:1646 */ break; case 2860: #line 4230 "VParseBison.y" /* yacc.c:1646 */ { } #line 37804 "VParseBison.c" /* yacc.c:1646 */ break; case 2861: #line 4231 "VParseBison.y" /* yacc.c:1646 */ { } #line 37810 "VParseBison.c" /* yacc.c:1646 */ break; case 2862: #line 4232 "VParseBison.y" /* yacc.c:1646 */ { } #line 37816 "VParseBison.c" /* yacc.c:1646 */ break; case 2863: #line 4234 "VParseBison.y" /* yacc.c:1646 */ { } #line 37822 "VParseBison.c" /* yacc.c:1646 */ break; case 2864: #line 4236 "VParseBison.y" /* yacc.c:1646 */ { } #line 37828 "VParseBison.c" /* yacc.c:1646 */ break; case 2865: #line 4240 "VParseBison.y" /* yacc.c:1646 */ { } #line 37834 "VParseBison.c" /* yacc.c:1646 */ break; case 2866: #line 4241 "VParseBison.y" /* yacc.c:1646 */ { } #line 37840 "VParseBison.c" /* yacc.c:1646 */ break; case 2867: #line 4246 "VParseBison.y" /* yacc.c:1646 */ { } #line 37846 "VParseBison.c" /* yacc.c:1646 */ break; case 2868: #line 4251 "VParseBison.y" /* yacc.c:1646 */ { } #line 37852 "VParseBison.c" /* yacc.c:1646 */ break; case 2869: #line 4259 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::LET); } #line 37858 "VParseBison.c" /* yacc.c:1646 */ break; case 2870: #line 4264 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::LET,(yyvsp[0].str)); } #line 37864 "VParseBison.c" /* yacc.c:1646 */ break; case 2872: #line 4272 "VParseBison.y" /* yacc.c:1646 */ { VARRESET_NONLIST(""); } #line 37870 "VParseBison.c" /* yacc.c:1646 */ break; case 2873: #line 4281 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endgroupCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::COVERGROUP); } #line 37877 "VParseBison.c" /* yacc.c:1646 */ break; case 2874: #line 4285 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endgroupCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::COVERGROUP); } #line 37884 "VParseBison.c" /* yacc.c:1646 */ break; case 2875: #line 4291 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::COVERGROUP,(yyvsp[0].str)); PARSEP->covergroupCb((yyvsp[-1].fl),(yyvsp[-1].str),(yyvsp[0].str)); } #line 37891 "VParseBison.c" /* yacc.c:1646 */ break; case 2876: #line 4296 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str) = (yyvsp[0].str); } #line 37897 "VParseBison.c" /* yacc.c:1646 */ break; case 2877: #line 4300 "VParseBison.y" /* yacc.c:1646 */ { } #line 37903 "VParseBison.c" /* yacc.c:1646 */ break; case 2878: #line 4301 "VParseBison.y" /* yacc.c:1646 */ { } #line 37909 "VParseBison.c" /* yacc.c:1646 */ break; case 2879: #line 4305 "VParseBison.y" /* yacc.c:1646 */ { } #line 37915 "VParseBison.c" /* yacc.c:1646 */ break; case 2880: #line 4306 "VParseBison.y" /* yacc.c:1646 */ { } #line 37921 "VParseBison.c" /* yacc.c:1646 */ break; case 2881: #line 4311 "VParseBison.y" /* yacc.c:1646 */ { } #line 37927 "VParseBison.c" /* yacc.c:1646 */ break; case 2882: #line 4312 "VParseBison.y" /* yacc.c:1646 */ { } #line 37933 "VParseBison.c" /* yacc.c:1646 */ break; case 2883: #line 4313 "VParseBison.y" /* yacc.c:1646 */ { } #line 37939 "VParseBison.c" /* yacc.c:1646 */ break; case 2884: #line 4314 "VParseBison.y" /* yacc.c:1646 */ { } #line 37945 "VParseBison.c" /* yacc.c:1646 */ break; case 2885: #line 4319 "VParseBison.y" /* yacc.c:1646 */ { } #line 37951 "VParseBison.c" /* yacc.c:1646 */ break; case 2886: #line 4323 "VParseBison.y" /* yacc.c:1646 */ { } #line 37957 "VParseBison.c" /* yacc.c:1646 */ break; case 2887: #line 4325 "VParseBison.y" /* yacc.c:1646 */ { } #line 37963 "VParseBison.c" /* yacc.c:1646 */ break; case 2888: #line 4326 "VParseBison.y" /* yacc.c:1646 */ { } #line 37969 "VParseBison.c" /* yacc.c:1646 */ break; case 2889: #line 4327 "VParseBison.y" /* yacc.c:1646 */ { } #line 37975 "VParseBison.c" /* yacc.c:1646 */ break; case 2890: #line 4328 "VParseBison.y" /* yacc.c:1646 */ { } #line 37981 "VParseBison.c" /* yacc.c:1646 */ break; case 2891: #line 4329 "VParseBison.y" /* yacc.c:1646 */ { } #line 37987 "VParseBison.c" /* yacc.c:1646 */ break; case 2892: #line 4331 "VParseBison.y" /* yacc.c:1646 */ { } #line 37993 "VParseBison.c" /* yacc.c:1646 */ break; case 2893: #line 4335 "VParseBison.y" /* yacc.c:1646 */ { } #line 37999 "VParseBison.c" /* yacc.c:1646 */ break; case 2894: #line 4336 "VParseBison.y" /* yacc.c:1646 */ { } #line 38005 "VParseBison.c" /* yacc.c:1646 */ break; case 2895: #line 4340 "VParseBison.y" /* yacc.c:1646 */ { } #line 38011 "VParseBison.c" /* yacc.c:1646 */ break; case 2896: #line 4341 "VParseBison.y" /* yacc.c:1646 */ { } #line 38017 "VParseBison.c" /* yacc.c:1646 */ break; case 2897: #line 4342 "VParseBison.y" /* yacc.c:1646 */ { } #line 38023 "VParseBison.c" /* yacc.c:1646 */ break; case 2898: #line 4346 "VParseBison.y" /* yacc.c:1646 */ { } #line 38029 "VParseBison.c" /* yacc.c:1646 */ break; case 2899: #line 4347 "VParseBison.y" /* yacc.c:1646 */ { } #line 38035 "VParseBison.c" /* yacc.c:1646 */ break; case 2900: #line 4352 "VParseBison.y" /* yacc.c:1646 */ { } #line 38041 "VParseBison.c" /* yacc.c:1646 */ break; case 2901: #line 4354 "VParseBison.y" /* yacc.c:1646 */ { } #line 38047 "VParseBison.c" /* yacc.c:1646 */ break; case 2902: #line 4355 "VParseBison.y" /* yacc.c:1646 */ { } #line 38053 "VParseBison.c" /* yacc.c:1646 */ break; case 2903: #line 4356 "VParseBison.y" /* yacc.c:1646 */ { } #line 38059 "VParseBison.c" /* yacc.c:1646 */ break; case 2904: #line 4357 "VParseBison.y" /* yacc.c:1646 */ { } #line 38065 "VParseBison.c" /* yacc.c:1646 */ break; case 2905: #line 4361 "VParseBison.y" /* yacc.c:1646 */ { } #line 38071 "VParseBison.c" /* yacc.c:1646 */ break; case 2906: #line 4362 "VParseBison.y" /* yacc.c:1646 */ { } #line 38077 "VParseBison.c" /* yacc.c:1646 */ break; case 2907: #line 4364 "VParseBison.y" /* yacc.c:1646 */ { } #line 38083 "VParseBison.c" /* yacc.c:1646 */ break; case 2908: #line 4366 "VParseBison.y" /* yacc.c:1646 */ { } #line 38089 "VParseBison.c" /* yacc.c:1646 */ break; case 2909: #line 4370 "VParseBison.y" /* yacc.c:1646 */ { } #line 38095 "VParseBison.c" /* yacc.c:1646 */ break; case 2910: #line 4371 "VParseBison.y" /* yacc.c:1646 */ { } #line 38101 "VParseBison.c" /* yacc.c:1646 */ break; case 2911: #line 4372 "VParseBison.y" /* yacc.c:1646 */ { } #line 38107 "VParseBison.c" /* yacc.c:1646 */ break; case 2912: #line 4376 "VParseBison.y" /* yacc.c:1646 */ { } #line 38113 "VParseBison.c" /* yacc.c:1646 */ break; case 2913: #line 4377 "VParseBison.y" /* yacc.c:1646 */ { } #line 38119 "VParseBison.c" /* yacc.c:1646 */ break; case 2914: #line 4378 "VParseBison.y" /* yacc.c:1646 */ { } #line 38125 "VParseBison.c" /* yacc.c:1646 */ break; case 2915: #line 4382 "VParseBison.y" /* yacc.c:1646 */ { } #line 38131 "VParseBison.c" /* yacc.c:1646 */ break; case 2916: #line 4383 "VParseBison.y" /* yacc.c:1646 */ { } #line 38137 "VParseBison.c" /* yacc.c:1646 */ break; case 2917: #line 4387 "VParseBison.y" /* yacc.c:1646 */ { } #line 38143 "VParseBison.c" /* yacc.c:1646 */ break; case 2918: #line 4388 "VParseBison.y" /* yacc.c:1646 */ { } #line 38149 "VParseBison.c" /* yacc.c:1646 */ break; case 2919: #line 4392 "VParseBison.y" /* yacc.c:1646 */ { } #line 38155 "VParseBison.c" /* yacc.c:1646 */ break; case 2920: #line 4394 "VParseBison.y" /* yacc.c:1646 */ { } #line 38161 "VParseBison.c" /* yacc.c:1646 */ break; case 2921: #line 4398 "VParseBison.y" /* yacc.c:1646 */ { } #line 38167 "VParseBison.c" /* yacc.c:1646 */ break; case 2922: #line 4399 "VParseBison.y" /* yacc.c:1646 */ { } #line 38173 "VParseBison.c" /* yacc.c:1646 */ break; case 2923: #line 4400 "VParseBison.y" /* yacc.c:1646 */ { } #line 38179 "VParseBison.c" /* yacc.c:1646 */ break; case 2924: #line 4401 "VParseBison.y" /* yacc.c:1646 */ { } #line 38185 "VParseBison.c" /* yacc.c:1646 */ break; case 2925: #line 4405 "VParseBison.y" /* yacc.c:1646 */ { } #line 38191 "VParseBison.c" /* yacc.c:1646 */ break; case 2926: #line 4409 "VParseBison.y" /* yacc.c:1646 */ { } #line 38197 "VParseBison.c" /* yacc.c:1646 */ break; case 2927: #line 4410 "VParseBison.y" /* yacc.c:1646 */ { } #line 38203 "VParseBison.c" /* yacc.c:1646 */ break; case 2928: #line 4414 "VParseBison.y" /* yacc.c:1646 */ { } #line 38209 "VParseBison.c" /* yacc.c:1646 */ break; case 2929: #line 4415 "VParseBison.y" /* yacc.c:1646 */ { } #line 38215 "VParseBison.c" /* yacc.c:1646 */ break; case 2930: #line 4419 "VParseBison.y" /* yacc.c:1646 */ { } #line 38221 "VParseBison.c" /* yacc.c:1646 */ break; case 2931: #line 4420 "VParseBison.y" /* yacc.c:1646 */ { } #line 38227 "VParseBison.c" /* yacc.c:1646 */ break; case 2933: #line 4425 "VParseBison.y" /* yacc.c:1646 */ { } #line 38233 "VParseBison.c" /* yacc.c:1646 */ break; case 2934: #line 4429 "VParseBison.y" /* yacc.c:1646 */ { } #line 38239 "VParseBison.c" /* yacc.c:1646 */ break; case 2935: #line 4433 "VParseBison.y" /* yacc.c:1646 */ { } #line 38245 "VParseBison.c" /* yacc.c:1646 */ break; case 2936: #line 4435 "VParseBison.y" /* yacc.c:1646 */ { } #line 38251 "VParseBison.c" /* yacc.c:1646 */ break; case 2937: #line 4436 "VParseBison.y" /* yacc.c:1646 */ { } #line 38257 "VParseBison.c" /* yacc.c:1646 */ break; case 2938: #line 4440 "VParseBison.y" /* yacc.c:1646 */ { } #line 38263 "VParseBison.c" /* yacc.c:1646 */ break; case 2939: #line 4441 "VParseBison.y" /* yacc.c:1646 */ { } #line 38269 "VParseBison.c" /* yacc.c:1646 */ break; case 2940: #line 4446 "VParseBison.y" /* yacc.c:1646 */ { } #line 38275 "VParseBison.c" /* yacc.c:1646 */ break; case 2941: #line 4447 "VParseBison.y" /* yacc.c:1646 */ { } #line 38281 "VParseBison.c" /* yacc.c:1646 */ break; case 2942: #line 4451 "VParseBison.y" /* yacc.c:1646 */ { } #line 38287 "VParseBison.c" /* yacc.c:1646 */ break; case 2943: #line 4452 "VParseBison.y" /* yacc.c:1646 */ { } #line 38293 "VParseBison.c" /* yacc.c:1646 */ break; case 2944: #line 4456 "VParseBison.y" /* yacc.c:1646 */ { } #line 38299 "VParseBison.c" /* yacc.c:1646 */ break; case 2945: #line 4461 "VParseBison.y" /* yacc.c:1646 */ { } #line 38305 "VParseBison.c" /* yacc.c:1646 */ break; case 2946: #line 4462 "VParseBison.y" /* yacc.c:1646 */ { } #line 38311 "VParseBison.c" /* yacc.c:1646 */ break; case 2947: #line 4463 "VParseBison.y" /* yacc.c:1646 */ { } #line 38317 "VParseBison.c" /* yacc.c:1646 */ break; case 2948: #line 4466 "VParseBison.y" /* yacc.c:1646 */ { } #line 38323 "VParseBison.c" /* yacc.c:1646 */ break; case 2949: #line 4467 "VParseBison.y" /* yacc.c:1646 */ { } #line 38329 "VParseBison.c" /* yacc.c:1646 */ break; case 2950: #line 4468 "VParseBison.y" /* yacc.c:1646 */ { } #line 38335 "VParseBison.c" /* yacc.c:1646 */ break; case 2951: #line 4471 "VParseBison.y" /* yacc.c:1646 */ { } #line 38341 "VParseBison.c" /* yacc.c:1646 */ break; case 2952: #line 4472 "VParseBison.y" /* yacc.c:1646 */ { } #line 38347 "VParseBison.c" /* yacc.c:1646 */ break; case 2953: #line 4473 "VParseBison.y" /* yacc.c:1646 */ { } #line 38353 "VParseBison.c" /* yacc.c:1646 */ break; case 2954: #line 4482 "VParseBison.y" /* yacc.c:1646 */ { } #line 38359 "VParseBison.c" /* yacc.c:1646 */ break; case 2955: #line 4483 "VParseBison.y" /* yacc.c:1646 */ { } #line 38365 "VParseBison.c" /* yacc.c:1646 */ break; case 2956: #line 4487 "VParseBison.y" /* yacc.c:1646 */ { } #line 38371 "VParseBison.c" /* yacc.c:1646 */ break; case 2957: #line 4488 "VParseBison.y" /* yacc.c:1646 */ { } #line 38377 "VParseBison.c" /* yacc.c:1646 */ break; case 2958: #line 4489 "VParseBison.y" /* yacc.c:1646 */ { } #line 38383 "VParseBison.c" /* yacc.c:1646 */ break; case 2959: #line 4490 "VParseBison.y" /* yacc.c:1646 */ { } #line 38389 "VParseBison.c" /* yacc.c:1646 */ break; case 2960: #line 4494 "VParseBison.y" /* yacc.c:1646 */ { } #line 38395 "VParseBison.c" /* yacc.c:1646 */ break; case 2961: #line 4495 "VParseBison.y" /* yacc.c:1646 */ { } #line 38401 "VParseBison.c" /* yacc.c:1646 */ break; case 2962: #line 4499 "VParseBison.y" /* yacc.c:1646 */ { } #line 38407 "VParseBison.c" /* yacc.c:1646 */ break; case 2963: #line 4500 "VParseBison.y" /* yacc.c:1646 */ { } #line 38413 "VParseBison.c" /* yacc.c:1646 */ break; case 2964: #line 4505 "VParseBison.y" /* yacc.c:1646 */ { } #line 38419 "VParseBison.c" /* yacc.c:1646 */ break; case 2965: #line 4507 "VParseBison.y" /* yacc.c:1646 */ { } #line 38425 "VParseBison.c" /* yacc.c:1646 */ break; case 2966: #line 4508 "VParseBison.y" /* yacc.c:1646 */ { } #line 38431 "VParseBison.c" /* yacc.c:1646 */ break; case 2967: #line 4515 "VParseBison.y" /* yacc.c:1646 */ { } #line 38437 "VParseBison.c" /* yacc.c:1646 */ break; case 2968: #line 4516 "VParseBison.y" /* yacc.c:1646 */ { } #line 38443 "VParseBison.c" /* yacc.c:1646 */ break; case 2969: #line 4520 "VParseBison.y" /* yacc.c:1646 */ { } #line 38449 "VParseBison.c" /* yacc.c:1646 */ break; case 2970: #line 4521 "VParseBison.y" /* yacc.c:1646 */ { } #line 38455 "VParseBison.c" /* yacc.c:1646 */ break; case 2971: #line 4525 "VParseBison.y" /* yacc.c:1646 */ { } #line 38461 "VParseBison.c" /* yacc.c:1646 */ break; case 2972: #line 4529 "VParseBison.y" /* yacc.c:1646 */ { } #line 38467 "VParseBison.c" /* yacc.c:1646 */ break; case 2973: #line 4530 "VParseBison.y" /* yacc.c:1646 */ { } #line 38473 "VParseBison.c" /* yacc.c:1646 */ break; case 2974: #line 4531 "VParseBison.y" /* yacc.c:1646 */ { } #line 38479 "VParseBison.c" /* yacc.c:1646 */ break; case 2975: #line 4532 "VParseBison.y" /* yacc.c:1646 */ { } #line 38485 "VParseBison.c" /* yacc.c:1646 */ break; case 2976: #line 4536 "VParseBison.y" /* yacc.c:1646 */ { } #line 38491 "VParseBison.c" /* yacc.c:1646 */ break; case 2977: #line 4537 "VParseBison.y" /* yacc.c:1646 */ { } #line 38497 "VParseBison.c" /* yacc.c:1646 */ break; case 2978: #line 4541 "VParseBison.y" /* yacc.c:1646 */ { } #line 38503 "VParseBison.c" /* yacc.c:1646 */ break; case 2979: #line 4542 "VParseBison.y" /* yacc.c:1646 */ { } #line 38509 "VParseBison.c" /* yacc.c:1646 */ break; case 2980: #line 4543 "VParseBison.y" /* yacc.c:1646 */ { } #line 38515 "VParseBison.c" /* yacc.c:1646 */ break; case 2981: #line 4547 "VParseBison.y" /* yacc.c:1646 */ { } #line 38521 "VParseBison.c" /* yacc.c:1646 */ break; case 2982: #line 4548 "VParseBison.y" /* yacc.c:1646 */ { } #line 38527 "VParseBison.c" /* yacc.c:1646 */ break; case 2983: #line 4549 "VParseBison.y" /* yacc.c:1646 */ { } #line 38533 "VParseBison.c" /* yacc.c:1646 */ break; case 2984: #line 4553 "VParseBison.y" /* yacc.c:1646 */ { } #line 38539 "VParseBison.c" /* yacc.c:1646 */ break; case 2985: #line 4554 "VParseBison.y" /* yacc.c:1646 */ { } #line 38545 "VParseBison.c" /* yacc.c:1646 */ break; case 2986: #line 4555 "VParseBison.y" /* yacc.c:1646 */ { } #line 38551 "VParseBison.c" /* yacc.c:1646 */ break; case 2987: #line 4559 "VParseBison.y" /* yacc.c:1646 */ { } #line 38557 "VParseBison.c" /* yacc.c:1646 */ break; case 2988: #line 4560 "VParseBison.y" /* yacc.c:1646 */ { } #line 38563 "VParseBison.c" /* yacc.c:1646 */ break; case 2989: #line 4564 "VParseBison.y" /* yacc.c:1646 */ { } #line 38569 "VParseBison.c" /* yacc.c:1646 */ break; case 2990: #line 4565 "VParseBison.y" /* yacc.c:1646 */ { } #line 38575 "VParseBison.c" /* yacc.c:1646 */ break; case 2991: #line 4569 "VParseBison.y" /* yacc.c:1646 */ { } #line 38581 "VParseBison.c" /* yacc.c:1646 */ break; case 2992: #line 4570 "VParseBison.y" /* yacc.c:1646 */ { } #line 38587 "VParseBison.c" /* yacc.c:1646 */ break; case 2993: #line 4574 "VParseBison.y" /* yacc.c:1646 */ { } #line 38593 "VParseBison.c" /* yacc.c:1646 */ break; case 2994: #line 4575 "VParseBison.y" /* yacc.c:1646 */ { } #line 38599 "VParseBison.c" /* yacc.c:1646 */ break; case 2995: #line 4579 "VParseBison.y" /* yacc.c:1646 */ { } #line 38605 "VParseBison.c" /* yacc.c:1646 */ break; case 2996: #line 4580 "VParseBison.y" /* yacc.c:1646 */ { } #line 38611 "VParseBison.c" /* yacc.c:1646 */ break; case 2997: #line 4582 "VParseBison.y" /* yacc.c:1646 */ { } #line 38617 "VParseBison.c" /* yacc.c:1646 */ break; case 2998: #line 4583 "VParseBison.y" /* yacc.c:1646 */ { } #line 38623 "VParseBison.c" /* yacc.c:1646 */ break; case 2999: #line 4585 "VParseBison.y" /* yacc.c:1646 */ { } #line 38629 "VParseBison.c" /* yacc.c:1646 */ break; case 3000: #line 4587 "VParseBison.y" /* yacc.c:1646 */ { } #line 38635 "VParseBison.c" /* yacc.c:1646 */ break; case 3001: #line 4591 "VParseBison.y" /* yacc.c:1646 */ { } #line 38641 "VParseBison.c" /* yacc.c:1646 */ break; case 3002: #line 4592 "VParseBison.y" /* yacc.c:1646 */ { } #line 38647 "VParseBison.c" /* yacc.c:1646 */ break; case 3003: #line 4596 "VParseBison.y" /* yacc.c:1646 */ { } #line 38653 "VParseBison.c" /* yacc.c:1646 */ break; case 3004: #line 4597 "VParseBison.y" /* yacc.c:1646 */ { } #line 38659 "VParseBison.c" /* yacc.c:1646 */ break; case 3005: #line 4601 "VParseBison.y" /* yacc.c:1646 */ { } #line 38665 "VParseBison.c" /* yacc.c:1646 */ break; case 3006: #line 4602 "VParseBison.y" /* yacc.c:1646 */ { } #line 38671 "VParseBison.c" /* yacc.c:1646 */ break; case 3007: #line 4606 "VParseBison.y" /* yacc.c:1646 */ { } #line 38677 "VParseBison.c" /* yacc.c:1646 */ break; case 3008: #line 4607 "VParseBison.y" /* yacc.c:1646 */ { } #line 38683 "VParseBison.c" /* yacc.c:1646 */ break; case 3009: #line 4608 "VParseBison.y" /* yacc.c:1646 */ { } #line 38689 "VParseBison.c" /* yacc.c:1646 */ break; case 3010: #line 4617 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPopScope(VAstType::CHECKER); } #line 38695 "VParseBison.c" /* yacc.c:1646 */ break; case 3011: #line 4622 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::CHECKER, (yyvsp[0].str)); } #line 38701 "VParseBison.c" /* yacc.c:1646 */ break; case 3012: #line 4628 "VParseBison.y" /* yacc.c:1646 */ { } #line 38707 "VParseBison.c" /* yacc.c:1646 */ break; case 3013: #line 4632 "VParseBison.y" /* yacc.c:1646 */ { } #line 38713 "VParseBison.c" /* yacc.c:1646 */ break; case 3014: #line 4633 "VParseBison.y" /* yacc.c:1646 */ { } #line 38719 "VParseBison.c" /* yacc.c:1646 */ break; case 3015: #line 4637 "VParseBison.y" /* yacc.c:1646 */ { } #line 38725 "VParseBison.c" /* yacc.c:1646 */ break; case 3016: #line 4638 "VParseBison.y" /* yacc.c:1646 */ { } #line 38731 "VParseBison.c" /* yacc.c:1646 */ break; case 3017: #line 4642 "VParseBison.y" /* yacc.c:1646 */ { } #line 38737 "VParseBison.c" /* yacc.c:1646 */ break; case 3018: #line 4643 "VParseBison.y" /* yacc.c:1646 */ { } #line 38743 "VParseBison.c" /* yacc.c:1646 */ break; case 3019: #line 4645 "VParseBison.y" /* yacc.c:1646 */ { } #line 38749 "VParseBison.c" /* yacc.c:1646 */ break; case 3020: #line 4646 "VParseBison.y" /* yacc.c:1646 */ { } #line 38755 "VParseBison.c" /* yacc.c:1646 */ break; case 3021: #line 4647 "VParseBison.y" /* yacc.c:1646 */ { } #line 38761 "VParseBison.c" /* yacc.c:1646 */ break; case 3022: #line 4648 "VParseBison.y" /* yacc.c:1646 */ { } #line 38767 "VParseBison.c" /* yacc.c:1646 */ break; case 3023: #line 4649 "VParseBison.y" /* yacc.c:1646 */ { } #line 38773 "VParseBison.c" /* yacc.c:1646 */ break; case 3024: #line 4653 "VParseBison.y" /* yacc.c:1646 */ { } #line 38779 "VParseBison.c" /* yacc.c:1646 */ break; case 3025: #line 4654 "VParseBison.y" /* yacc.c:1646 */ { } #line 38785 "VParseBison.c" /* yacc.c:1646 */ break; case 3026: #line 4655 "VParseBison.y" /* yacc.c:1646 */ { } #line 38791 "VParseBison.c" /* yacc.c:1646 */ break; case 3027: #line 4656 "VParseBison.y" /* yacc.c:1646 */ { } #line 38797 "VParseBison.c" /* yacc.c:1646 */ break; case 3028: #line 4657 "VParseBison.y" /* yacc.c:1646 */ { } #line 38803 "VParseBison.c" /* yacc.c:1646 */ break; case 3029: #line 4658 "VParseBison.y" /* yacc.c:1646 */ { } #line 38809 "VParseBison.c" /* yacc.c:1646 */ break; case 3030: #line 4659 "VParseBison.y" /* yacc.c:1646 */ { } #line 38815 "VParseBison.c" /* yacc.c:1646 */ break; case 3031: #line 4660 "VParseBison.y" /* yacc.c:1646 */ { } #line 38821 "VParseBison.c" /* yacc.c:1646 */ break; case 3032: #line 4661 "VParseBison.y" /* yacc.c:1646 */ { } #line 38827 "VParseBison.c" /* yacc.c:1646 */ break; case 3033: #line 4662 "VParseBison.y" /* yacc.c:1646 */ { } #line 38833 "VParseBison.c" /* yacc.c:1646 */ break; case 3034: #line 4663 "VParseBison.y" /* yacc.c:1646 */ { } #line 38839 "VParseBison.c" /* yacc.c:1646 */ break; case 3035: #line 4664 "VParseBison.y" /* yacc.c:1646 */ { } #line 38845 "VParseBison.c" /* yacc.c:1646 */ break; case 3036: #line 4669 "VParseBison.y" /* yacc.c:1646 */ { } #line 38851 "VParseBison.c" /* yacc.c:1646 */ break; case 3037: #line 4670 "VParseBison.y" /* yacc.c:1646 */ { } #line 38857 "VParseBison.c" /* yacc.c:1646 */ break; case 3038: #line 4671 "VParseBison.y" /* yacc.c:1646 */ { } #line 38863 "VParseBison.c" /* yacc.c:1646 */ break; case 3039: #line 4673 "VParseBison.y" /* yacc.c:1646 */ { } #line 38869 "VParseBison.c" /* yacc.c:1646 */ break; case 3040: #line 4680 "VParseBison.y" /* yacc.c:1646 */ { } #line 38875 "VParseBison.c" /* yacc.c:1646 */ break; case 3041: #line 4692 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->endclassCb((yyvsp[-1].fl),(yyvsp[-1].str)); PARSEP->symPopScope(VAstType::CLASS); } #line 38882 "VParseBison.c" /* yacc.c:1646 */ break; case 3042: #line 4698 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::CLASS, (yyvsp[0].str)); PARSEP->classCb((yyvsp[-2].fl),(yyvsp[-2].str),(yyvsp[0].str),(yyvsp[-3].str)); } #line 38889 "VParseBison.c" /* yacc.c:1646 */ break; case 3043: #line 4702 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symPushNew(VAstType::CLASS, (yyvsp[0].str)); PARSEP->classCb((yyvsp[-2].fl),(yyvsp[-2].str),(yyvsp[0].str),(yyvsp[-3].str)); } #line 38896 "VParseBison.c" /* yacc.c:1646 */ break; case 3044: #line 4707 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 38902 "VParseBison.c" /* yacc.c:1646 */ break; case 3045: #line 4708 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 38908 "VParseBison.c" /* yacc.c:1646 */ break; case 3046: #line 4714 "VParseBison.y" /* yacc.c:1646 */ { } #line 38914 "VParseBison.c" /* yacc.c:1646 */ break; case 3047: #line 4715 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().import((yyvsp[-1].fl),(yyvsp[0].str),(yyvsp[0].scp),"*"); } #line 38920 "VParseBison.c" /* yacc.c:1646 */ break; case 3048: #line 4716 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().import((yyvsp[-4].fl),(yyvsp[-3].str),(yyvsp[-3].scp),"*"); } #line 38926 "VParseBison.c" /* yacc.c:1646 */ break; case 3049: #line 4721 "VParseBison.y" /* yacc.c:1646 */ { } #line 38932 "VParseBison.c" /* yacc.c:1646 */ break; case 3050: #line 4722 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->syms().import((yyvsp[-1].fl),(yyvsp[0].str),(yyvsp[0].scp),"*"); } #line 38938 "VParseBison.c" /* yacc.c:1646 */ break; case 3051: #line 4727 "VParseBison.y" /* yacc.c:1646 */ { } #line 38944 "VParseBison.c" /* yacc.c:1646 */ break; case 3052: #line 4728 "VParseBison.y" /* yacc.c:1646 */ { } #line 38950 "VParseBison.c" /* yacc.c:1646 */ break; case 3053: #line 4737 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 38956 "VParseBison.c" /* yacc.c:1646 */ break; case 3054: #line 4741 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.scp)=(yyvsp[-1].scp); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 38962 "VParseBison.c" /* yacc.c:1646 */ break; case 3055: #line 4748 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.scp)=(yyvsp[0].scp); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 38968 "VParseBison.c" /* yacc.c:1646 */ break; case 3056: #line 4753 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.scp)=(yyvsp[0].scp); (yyval.str)=(yyvsp[0].str); PARSEP->symTableNextId(NULL); } #line 38974 "VParseBison.c" /* yacc.c:1646 */ break; case 3057: #line 4760 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.scp)=(yyvsp[0].scp); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 38980 "VParseBison.c" /* yacc.c:1646 */ break; case 3058: #line 4764 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.scp)=(yyvsp[-1].scp); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); PARSEP->symTableNextId((yyvsp[-1].scp)); } #line 38986 "VParseBison.c" /* yacc.c:1646 */ break; case 3059: #line 4770 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.scp)=(yyvsp[0].scp); (yyval.str)=(yyvsp[0].str); } #line 38992 "VParseBison.c" /* yacc.c:1646 */ break; case 3060: #line 4771 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.scp)=(yyvsp[0].scp); (yyval.str)=(yyvsp[-1].str)+(yyvsp[0].str); } #line 38998 "VParseBison.c" /* yacc.c:1646 */ break; case 3061: #line 4778 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.scp)=(yyvsp[-1].scp); (yyval.str)=(yyvsp[-1].str); } #line 39004 "VParseBison.c" /* yacc.c:1646 */ break; case 3062: #line 4783 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=""; } #line 39010 "VParseBison.c" /* yacc.c:1646 */ break; case 3063: #line 4784 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39016 "VParseBison.c" /* yacc.c:1646 */ break; case 3064: #line 4791 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symTableNextId(PARSEP->syms().netlistSymp()); } #line 39022 "VParseBison.c" /* yacc.c:1646 */ break; case 3065: #line 4792 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[0].str); } #line 39028 "VParseBison.c" /* yacc.c:1646 */ break; case 3066: #line 4793 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symTableNextId((yyvsp[0].scp)); } #line 39034 "VParseBison.c" /* yacc.c:1646 */ break; case 3067: #line 4794 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[0].str); } #line 39040 "VParseBison.c" /* yacc.c:1646 */ break; case 3068: #line 4795 "VParseBison.y" /* yacc.c:1646 */ { PARSEP->symTableNextId((yyvsp[0].scp)); } #line 39046 "VParseBison.c" /* yacc.c:1646 */ break; case 3069: #line 4796 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-2].fl); (yyval.str)=(yyvsp[-2].str)+(yyvsp[0].str); } #line 39052 "VParseBison.c" /* yacc.c:1646 */ break; case 3070: #line 4802 "VParseBison.y" /* yacc.c:1646 */ { } #line 39058 "VParseBison.c" /* yacc.c:1646 */ break; case 3071: #line 4803 "VParseBison.y" /* yacc.c:1646 */ { } #line 39064 "VParseBison.c" /* yacc.c:1646 */ break; case 3072: #line 4807 "VParseBison.y" /* yacc.c:1646 */ { } #line 39070 "VParseBison.c" /* yacc.c:1646 */ break; case 3073: #line 4808 "VParseBison.y" /* yacc.c:1646 */ { } #line 39076 "VParseBison.c" /* yacc.c:1646 */ break; case 3074: #line 4812 "VParseBison.y" /* yacc.c:1646 */ { } #line 39082 "VParseBison.c" /* yacc.c:1646 */ break; case 3075: #line 4813 "VParseBison.y" /* yacc.c:1646 */ { } #line 39088 "VParseBison.c" /* yacc.c:1646 */ break; case 3076: #line 4814 "VParseBison.y" /* yacc.c:1646 */ { } #line 39094 "VParseBison.c" /* yacc.c:1646 */ break; case 3077: #line 4816 "VParseBison.y" /* yacc.c:1646 */ { } #line 39100 "VParseBison.c" /* yacc.c:1646 */ break; case 3078: #line 4817 "VParseBison.y" /* yacc.c:1646 */ { } #line 39106 "VParseBison.c" /* yacc.c:1646 */ break; case 3079: #line 4818 "VParseBison.y" /* yacc.c:1646 */ { } #line 39112 "VParseBison.c" /* yacc.c:1646 */ break; case 3080: #line 4819 "VParseBison.y" /* yacc.c:1646 */ { } #line 39118 "VParseBison.c" /* yacc.c:1646 */ break; case 3081: #line 4820 "VParseBison.y" /* yacc.c:1646 */ { } #line 39124 "VParseBison.c" /* yacc.c:1646 */ break; case 3082: #line 4821 "VParseBison.y" /* yacc.c:1646 */ { } #line 39130 "VParseBison.c" /* yacc.c:1646 */ break; case 3083: #line 4823 "VParseBison.y" /* yacc.c:1646 */ { } #line 39136 "VParseBison.c" /* yacc.c:1646 */ break; case 3084: #line 4827 "VParseBison.y" /* yacc.c:1646 */ { } #line 39142 "VParseBison.c" /* yacc.c:1646 */ break; case 3085: #line 4828 "VParseBison.y" /* yacc.c:1646 */ { } #line 39148 "VParseBison.c" /* yacc.c:1646 */ break; case 3086: #line 4830 "VParseBison.y" /* yacc.c:1646 */ { } #line 39154 "VParseBison.c" /* yacc.c:1646 */ break; case 3087: #line 4833 "VParseBison.y" /* yacc.c:1646 */ { } #line 39160 "VParseBison.c" /* yacc.c:1646 */ break; case 3088: #line 4841 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39166 "VParseBison.c" /* yacc.c:1646 */ break; case 3089: #line 4842 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39172 "VParseBison.c" /* yacc.c:1646 */ break; case 3090: #line 4843 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39178 "VParseBison.c" /* yacc.c:1646 */ break; case 3091: #line 4849 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDTYPE(""); } #line 39184 "VParseBison.c" /* yacc.c:1646 */ break; case 3092: #line 4850 "VParseBison.y" /* yacc.c:1646 */ { VARRESET(); VARDTYPE((yyvsp[0].str)); } #line 39190 "VParseBison.c" /* yacc.c:1646 */ break; case 3093: #line 4854 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39196 "VParseBison.c" /* yacc.c:1646 */ break; case 3094: #line 4855 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=SPACED((yyvsp[-1].str),(yyvsp[0].str)); } #line 39202 "VParseBison.c" /* yacc.c:1646 */ break; case 3095: #line 4860 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39208 "VParseBison.c" /* yacc.c:1646 */ break; case 3096: #line 4862 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39214 "VParseBison.c" /* yacc.c:1646 */ break; case 3097: #line 4864 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[-1].fl); (yyval.str)=(yyvsp[-1].str)+" "+(yyvsp[0].str); } #line 39220 "VParseBison.c" /* yacc.c:1646 */ break; case 3098: #line 4866 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39226 "VParseBison.c" /* yacc.c:1646 */ break; case 3099: #line 4868 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39232 "VParseBison.c" /* yacc.c:1646 */ break; case 3100: #line 4870 "VParseBison.y" /* yacc.c:1646 */ { (yyval.fl)=(yyvsp[0].fl); (yyval.str)=(yyvsp[0].str); } #line 39238 "VParseBison.c" /* yacc.c:1646 */ break; case 3101: #line 4878 "VParseBison.y" /* yacc.c:1646 */ { } #line 39244 "VParseBison.c" /* yacc.c:1646 */ break; case 3102: #line 4880 "VParseBison.y" /* yacc.c:1646 */ { } #line 39250 "VParseBison.c" /* yacc.c:1646 */ break; case 3103: #line 4881 "VParseBison.y" /* yacc.c:1646 */ { } #line 39256 "VParseBison.c" /* yacc.c:1646 */ break; case 3104: #line 4882 "VParseBison.y" /* yacc.c:1646 */ { } #line 39262 "VParseBison.c" /* yacc.c:1646 */ break; case 3105: #line 4886 "VParseBison.y" /* yacc.c:1646 */ { } #line 39268 "VParseBison.c" /* yacc.c:1646 */ break; case 3106: #line 4890 "VParseBison.y" /* yacc.c:1646 */ { } #line 39274 "VParseBison.c" /* yacc.c:1646 */ break; case 3107: #line 4891 "VParseBison.y" /* yacc.c:1646 */ { } #line 39280 "VParseBison.c" /* yacc.c:1646 */ break; case 3108: #line 4895 "VParseBison.y" /* yacc.c:1646 */ { } #line 39286 "VParseBison.c" /* yacc.c:1646 */ break; case 3109: #line 4896 "VParseBison.y" /* yacc.c:1646 */ { } #line 39292 "VParseBison.c" /* yacc.c:1646 */ break; case 3110: #line 4900 "VParseBison.y" /* yacc.c:1646 */ { } #line 39298 "VParseBison.c" /* yacc.c:1646 */ break; case 3111: #line 4901 "VParseBison.y" /* yacc.c:1646 */ { } #line 39304 "VParseBison.c" /* yacc.c:1646 */ break; case 3112: #line 4906 "VParseBison.y" /* yacc.c:1646 */ { } #line 39310 "VParseBison.c" /* yacc.c:1646 */ break; case 3113: #line 4910 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[0].str); } #line 39316 "VParseBison.c" /* yacc.c:1646 */ break; case 3114: #line 4911 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-1].str)+" "+(yyvsp[0].str); } #line 39322 "VParseBison.c" /* yacc.c:1646 */ break; case 3115: #line 4915 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-1].str); } #line 39328 "VParseBison.c" /* yacc.c:1646 */ break; case 3116: #line 4917 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="soft "+(yyvsp[-2].str); } #line 39334 "VParseBison.c" /* yacc.c:1646 */ break; case 3117: #line 4920 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="unique {...}"; } #line 39340 "VParseBison.c" /* yacc.c:1646 */ break; case 3118: #line 4924 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-4].str); } #line 39346 "VParseBison.c" /* yacc.c:1646 */ break; case 3119: #line 4925 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-6].str);} #line 39352 "VParseBison.c" /* yacc.c:1646 */ break; case 3120: #line 4927 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-4].str); } #line 39358 "VParseBison.c" /* yacc.c:1646 */ break; case 3121: #line 4929 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)="disable soft "+(yyvsp[-3].str); } #line 39364 "VParseBison.c" /* yacc.c:1646 */ break; case 3122: #line 4933 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[0].str); } #line 39370 "VParseBison.c" /* yacc.c:1646 */ break; case 3123: #line 4934 "VParseBison.y" /* yacc.c:1646 */ { (yyval.str)=(yyvsp[-2].str)+(yyvsp[-1].str)+(yyvsp[0].str); } #line 39376 "VParseBison.c" /* yacc.c:1646 */ break; case 3124: #line 4938 "VParseBison.y" /* yacc.c:1646 */ { } #line 39382 "VParseBison.c" /* yacc.c:1646 */ break; case 3125: #line 4939 "VParseBison.y" /* yacc.c:1646 */ { } #line 39388 "VParseBison.c" /* yacc.c:1646 */ break; case 3126: #line 4943 "VParseBison.y" /* yacc.c:1646 */ { } #line 39394 "VParseBison.c" /* yacc.c:1646 */ break; case 3127: #line 4944 "VParseBison.y" /* yacc.c:1646 */ { } #line 39400 "VParseBison.c" /* yacc.c:1646 */ break; case 3128: #line 4945 "VParseBison.y" /* yacc.c:1646 */ { } #line 39406 "VParseBison.c" /* yacc.c:1646 */ break; case 3129: #line 4949 "VParseBison.y" /* yacc.c:1646 */ { } #line 39412 "VParseBison.c" /* yacc.c:1646 */ break; case 3130: #line 4953 "VParseBison.y" /* yacc.c:1646 */ { } #line 39418 "VParseBison.c" /* yacc.c:1646 */ break; case 3131: #line 4954 "VParseBison.y" /* yacc.c:1646 */ { } #line 39424 "VParseBison.c" /* yacc.c:1646 */ break; #line 39428 "VParseBison.c" /* yacc.c:1646 */ 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 whose 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); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* 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 whose 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 return yyresult; } #line 4958 "VParseBison.y" /* yacc.c:1906 */ 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__aPACKAGE"; case 262: return "yaID__aTYPE"; case 263: return "yaINTNUM"; case 264: return "yaTIMENUM"; case 265: return "yaSTRING"; case 266: return "yaSTRING__IGNORE"; case 267: return "yaTIMINGSPEC"; case 268: return "ygenGATE"; case 269: return "ygenCONFIGKEYWORD"; case 270: return "ygenOPERATOR"; case 271: return "ygenSTRENGTH"; case 272: return "ygenSYSCALL"; case 273: return "yACCEPT_ON"; case 274: return "yALIAS"; case 275: return "yALWAYS"; case 276: return "yAND"; case 277: return "yASSERT"; case 278: return "yASSIGN"; case 279: return "yASSUME"; case 280: return "yAUTOMATIC"; case 281: return "yBEFORE"; case 282: return "yBEGIN"; case 283: return "yBIND"; case 284: return "yBINS"; case 285: return "yBINSOF"; case 286: return "yBIT"; case 287: return "yBREAK"; case 288: return "yBUF"; case 289: return "yBYTE"; case 290: return "yCASE"; case 291: return "yCASEX"; case 292: return "yCASEZ"; case 293: return "yCHANDLE"; case 294: return "yCHECKER"; case 295: return "yCLASS"; case 296: return "yCLOCK"; case 297: return "yCLOCKING"; case 298: return "yCONSTRAINT"; case 299: return "yCONST__ETC"; case 300: return "yCONST__LEX"; case 301: return "yCONST__LOCAL"; case 302: return "yCONST__REF"; case 303: return "yCONTEXT"; case 304: return "yCONTINUE"; case 305: return "yCOVER"; case 306: return "yCOVERGROUP"; case 307: return "yCOVERPOINT"; case 308: return "yCROSS"; case 309: return "yDEASSIGN"; case 310: return "yDEFAULT"; case 311: return "yDEFPARAM"; case 312: return "yDISABLE"; case 313: return "yDIST"; case 314: return "yDO"; case 315: return "yEDGE"; case 316: return "yELSE"; case 317: return "yEND"; case 318: return "yENDCASE"; case 319: return "yENDCHECKER"; case 320: return "yENDCLASS"; case 321: return "yENDCLOCKING"; case 322: return "yENDFUNCTION"; case 323: return "yENDGENERATE"; case 324: return "yENDGROUP"; case 325: return "yENDINTERFACE"; case 326: return "yENDMODULE"; case 327: return "yENDPACKAGE"; case 328: return "yENDPROGRAM"; case 329: return "yENDPROPERTY"; case 330: return "yENDSEQUENCE"; case 331: return "yENDSPECIFY"; case 332: return "yENDTABLE"; case 333: return "yENDTASK"; case 334: return "yENUM"; case 335: return "yEVENT"; case 336: return "yEVENTUALLY"; case 337: return "yEXPECT"; case 338: return "yEXPORT"; case 339: return "yEXTENDS"; case 340: return "yEXTERN"; case 341: return "yFINAL"; case 342: return "yFIRST_MATCH"; case 343: return "yFOR"; case 344: return "yFORCE"; case 345: return "yFOREACH"; case 346: return "yFOREVER"; case 347: return "yFORK"; case 348: return "yFORKJOIN"; case 349: return "yFUNCTION__ETC"; case 350: return "yFUNCTION__LEX"; case 351: return "yFUNCTION__aPUREV"; case 352: return "yGENERATE"; case 353: return "yGENVAR"; case 354: return "yGLOBAL__CLOCKING"; case 355: return "yGLOBAL__LEX"; case 356: return "yIF"; case 357: return "yIFF"; case 358: return "yIGNORE_BINS"; case 359: return "yILLEGAL_BINS"; case 360: return "yIMPLEMENTS"; case 361: return "yIMPLIES"; case 362: return "yIMPORT"; case 363: return "yINITIAL"; case 364: return "yINOUT"; case 365: return "yINPUT"; case 366: return "yINSIDE"; case 367: return "yINT"; case 368: return "yINTEGER"; case 369: return "yINTERCONNECT"; case 370: return "yINTERFACE"; case 371: return "yINTERSECT"; case 372: return "yJOIN"; case 373: return "yLET"; case 374: return "yLOCALPARAM"; case 375: return "yLOCAL__COLONCOLON"; case 376: return "yLOCAL__ETC"; case 377: return "yLOCAL__LEX"; case 378: return "yLOGIC"; case 379: return "yLONGINT"; case 380: return "yMATCHES"; case 381: return "yMODPORT"; case 382: return "yMODULE"; case 383: return "yNAND"; case 384: return "yNEGEDGE"; case 385: return "yNETTYPE"; case 386: return "yNEW__ETC"; case 387: return "yNEW__LEX"; case 388: return "yNEW__PAREN"; case 389: return "yNEXTTIME"; case 390: return "yNOR"; case 391: return "yNOT"; case 392: return "yNULL"; case 393: return "yOR"; case 394: return "yOUTPUT"; case 395: return "yPACKAGE"; case 396: return "yPACKED"; case 397: return "yPARAMETER"; case 398: return "yPOSEDGE"; case 399: return "yPRIORITY"; case 400: return "yPROGRAM"; case 401: return "yPROPERTY"; case 402: return "yPROTECTED"; case 403: return "yPURE"; case 404: return "yRAND"; case 405: return "yRANDC"; case 406: return "yRANDCASE"; case 407: return "yRANDSEQUENCE"; case 408: return "yREAL"; case 409: return "yREALTIME"; case 410: return "yREF"; case 411: return "yREG"; case 412: return "yREJECT_ON"; case 413: return "yRELEASE"; case 414: return "yREPEAT"; case 415: return "yRESTRICT"; case 416: return "yRETURN"; case 417: return "ySCALARED"; case 418: return "ySEQUENCE"; case 419: return "ySHORTINT"; case 420: return "ySHORTREAL"; case 421: return "ySIGNED"; case 422: return "ySOFT"; case 423: return "ySOLVE"; case 424: return "ySPECIFY"; case 425: return "ySPECPARAM"; case 426: return "ySTATIC__CONSTRAINT"; case 427: return "ySTATIC__ETC"; case 428: return "ySTATIC__LEX"; case 429: return "ySTRING"; case 430: return "ySTRONG"; case 431: return "ySTRUCT"; case 432: return "ySUPER"; case 433: return "ySUPPLY0"; case 434: return "ySUPPLY1"; case 435: return "ySYNC_ACCEPT_ON"; case 436: return "ySYNC_REJECT_ON"; case 437: return "yS_ALWAYS"; case 438: return "yS_EVENTUALLY"; case 439: return "yS_NEXTTIME"; case 440: return "yS_UNTIL"; case 441: return "yS_UNTIL_WITH"; case 442: return "yTABLE"; case 443: return "yTAGGED"; case 444: return "yTASK__ETC"; case 445: return "yTASK__LEX"; case 446: return "yTASK__aPUREV"; case 447: return "yTHIS"; case 448: return "yTHROUGHOUT"; case 449: return "yTIME"; case 450: return "yTIMEPRECISION"; case 451: return "yTIMEUNIT"; case 452: return "yTRI"; case 453: return "yTRI0"; case 454: return "yTRI1"; case 455: return "yTRIAND"; case 456: return "yTRIOR"; case 457: return "yTRIREG"; case 458: return "yTYPE"; case 459: return "yTYPEDEF"; case 460: return "yUNION"; case 461: return "yUNIQUE"; case 462: return "yUNIQUE0"; case 463: return "yUNSIGNED"; case 464: return "yUNTIL"; case 465: return "yUNTIL_WITH"; case 466: return "yUNTYPED"; case 467: return "yVAR"; case 468: return "yVECTORED"; case 469: return "yVIRTUAL__CLASS"; case 470: return "yVIRTUAL__ETC"; case 471: return "yVIRTUAL__INTERFACE"; case 472: return "yVIRTUAL__LEX"; case 473: return "yVIRTUAL__anyID"; case 474: return "yVOID"; case 475: return "yWAIT"; case 476: return "yWAIT_ORDER"; case 477: return "yWAND"; case 478: return "yWEAK"; case 479: return "yWHILE"; case 480: return "yWILDCARD"; case 481: return "yWIRE"; case 482: return "yWITHIN"; case 483: return "yWITH__BRA"; case 484: return "yWITH__CUR"; case 485: return "yWITH__ETC"; case 486: return "yWITH__LEX"; case 487: return "yWITH__PAREN"; case 488: return "yWOR"; case 489: return "yXNOR"; case 490: return "yXOR"; case 491: return "yD_ERROR"; case 492: return "yD_FATAL"; case 493: return "yD_INFO"; case 494: return "yD_ROOT"; case 495: return "yD_UNIT"; case 496: return "yD_WARNING"; case 497: return "yP_TICK"; case 498: return "yP_TICKBRA"; case 499: return "yP_OROR"; case 500: return "yP_ANDAND"; case 501: return "yP_NOR"; case 502: return "yP_XNOR"; case 503: return "yP_NAND"; case 504: return "yP_EQUAL"; case 505: return "yP_NOTEQUAL"; case 506: return "yP_CASEEQUAL"; case 507: return "yP_CASENOTEQUAL"; case 508: return "yP_WILDEQUAL"; case 509: return "yP_WILDNOTEQUAL"; case 510: return "yP_GTE"; case 511: return "yP_LTE"; case 512: return "yP_LTE__IGNORE"; case 513: return "yP_SLEFT"; case 514: return "yP_SRIGHT"; case 515: return "yP_SSRIGHT"; case 516: return "yP_POW"; case 517: return "yP_PAR__IGNORE"; case 518: return "yP_PAR__STRENGTH"; case 519: return "yP_LTMINUSGT"; case 520: return "yP_PLUSCOLON"; case 521: return "yP_MINUSCOLON"; case 522: return "yP_MINUSGT"; case 523: return "yP_MINUSGTGT"; case 524: return "yP_EQGT"; case 525: return "yP_ASTGT"; case 526: return "yP_ANDANDAND"; case 527: return "yP_POUNDPOUND"; case 528: return "yP_POUNDMINUSPD"; case 529: return "yP_POUNDEQPD"; case 530: return "yP_DOTSTAR"; case 531: return "yP_ATAT"; case 532: return "yP_COLONCOLON"; case 533: return "yP_COLONEQ"; case 534: return "yP_COLONDIV"; case 535: return "yP_ORMINUSGT"; case 536: return "yP_OREQGT"; case 537: return "yP_BRASTAR"; case 538: return "yP_BRAEQ"; case 539: return "yP_BRAMINUSGT"; case 540: return "yP_BRAPLUSKET"; case 541: return "yP_PLUSPLUS"; case 542: return "yP_MINUSMINUS"; case 543: return "yP_PLUSEQ"; case 544: return "yP_MINUSEQ"; case 545: return "yP_TIMESEQ"; case 546: return "yP_DIVEQ"; case 547: return "yP_MODEQ"; case 548: return "yP_ANDEQ"; case 549: return "yP_OREQ"; case 550: return "yP_XOREQ"; case 551: return "yP_SLEFTEQ"; case 552: return "yP_SRIGHTEQ"; case 553: return "yP_SSRIGHTEQ"; case 554: return "prUNARYARITH"; case 555: return "prREDUCTION"; case 556: return "prNEGATION"; case 557: return "prEVENTBEGIN"; case 558: return "prTAGGED"; case 559: return "prSEQ_CLOCKING"; case 560: return "prPOUNDPOUND_MULTI"; case 561: 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.470/Parser/.gitignore0000644000177100017500000000030713234726611017242 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.470/Parser/VParse.cpp0000644000177100017500000001060713604734313017161 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2020 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, bool usePinselects) : m_syms(filelinep, symsp) { m_inFilelinep = filelinep; m_sigParser = sigParser; m_useUnreadback = useUnreadbackFlag; m_useProtected = useProtected; m_usePinselects = usePinselects; 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.470/Parser/bisonpre0000755000177100017500000004041513604734313017024 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.470'; 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-2020 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.470/Parser/VSymTable.cpp0000644000177100017500000001312113604734313017621 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2020 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.470/Parser/Makefile.PL0000644000177100017500000001165413604734313017232 0ustar wsnyderwsnyder# DESCRIPTION: Perl ExtUtils: Type 'perl Makefile.PL' to create a Makefile for this package # # Copyright 2000-2020 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}); } elsif ($^V < 'v5.26.3') { $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 -Wno-sign-compare -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.470/Parser/VParseLex.l0000644000177100017500000012450013604734313017301 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-2020 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 S17 // 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 S17 %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]*?[''][sS]?[bcodhBCODH][ \t\n]*[A-Fa-f0-9xXzZ_?]* vnum2 [0-9]*?[''][sS]?[01xXzZ] vnum3 [0-9][_0-9]*[ \t\n]*[''][Ss]?[bcodhBCODH]?[ \t\n]*[A-Fa-f0-9xXzZ_?]+ vnum4 [0-9][_0-9]*[ \t\n]*[''][sS]?[bcodhBCODH] vnum5 [0-9][_0-9]*[ \t\n]*[''][sS] 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; } } /* System Verilog 2017 */ /* No new keywords */ /* 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_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(); } "`pragma"{ws}+"protect"{ws}+"end_protected" { FL; VALTEXT; CALLBACK(preprocCb); yy_pop_state(); } "//"{ws}*"pragma"{ws}+"protect"{ws}+"end_protected" { 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}+"protect"{ws}+"begin_protected" { FL; VALTEXT; CALLBACK(preprocCb); yy_push_state(PROTMODE); } "`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); } "`begin_keywords"[ \t]*\"1800-2017\" { yy_push_state(S17); 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); } } "//"{ws}*"pragma"{ws}+"protect"{ws}+"begin_protected" { FL; CALLBACK(preprocCb); yy_push_state(PROTMODE); } "//"[^\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_pinselects => 0, # 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_pinselects}, # Undocumented as for use in SigParser only ); $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 and "`pragma protect 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 involved) 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-2020 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.470/Parser/VAst.h0000644000177100017500000001117513604734313016304 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2020 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.470/Parser/VSymTable.h0000644000177100017500000001023213604734313017266 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2020 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.470/Parser/SigParser.pm0000644000177100017500000003357213604734313017520 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.470'; 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 pinselects 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, use_pinselects => 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 pinselects { my $self = shift; my $name = shift; my $conns = 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 an instant is defined and "use_pinselects" is not set (the default, see pinselects() below. 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->pinselects($name, $connections, $index) If "$self->new (... use_pinselects=>1 ...)" is used this function is called instead of "$self->pin (...)". The difference is that the second parameter ("$connections") is a Perl hash that contains all connected nets in the case of concatenations including the MSB and LSB bounds used at these locations. =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-2020 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.470/Parser/callbackgen0000755000177100017500000003072713604734313017436 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.470'; # 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']}, pinselects => {which=>'SigParser', args => [name=>'string', conns=>'hash', 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 'hash') { $args .= ", unsigned int arraycnt${n}, unsigned int elemcnt${n}, const VParseHashElem* $arg${n}"; } 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 'hash') { $callargs .= ", hasharray_param, arraycnt${n}, elemcnt${n}, ${arg}${n}"; } 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-2020 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.470/Parser/VAst.cpp0000644000177100017500000001533013604734313016634 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2009-2020 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.470/Parser/Parser.xs0000644000177100017500000004164613604734313017074 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-2020 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 // This is a global constant pointer initialized to its own address to // produce a unique address to distinguish hashes (pointers to // struct VParseHashElem) from the strings (character pointers) used by // callbackgen in its variadic parameters for VParserXs::call(). static void *hasharray_param = &hasharray_param; 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_pinselects: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, bool usePinselects) : VParse(filelinep, symsp, sigparser, useUnreadback, useProtected, usePinselects) , 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_pinselects = 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 pinselectsCb(VFileLine* fl, const string& name, unsigned int arraycnt2, unsigned int elemcnt2, const VParseHashElem* conns2, 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* textp = va_arg(ap, char *); if (textp == hasharray_param) { // First hasharray param defines number of array elements unsigned int arrcnt = va_arg(ap, unsigned int); AV* av = newAV(); av_extend(av, arrcnt); // Second hasharray param defines how many keys are within one hash unsigned int elemcnt = va_arg(ap, unsigned int); // Followed by the hash array pointer... const VParseHashElem* arrp = va_arg(ap, const VParseHashElem*); // [arrcnt][elemcnt] for (unsigned int i = 0; i < arrcnt; i++) { HV* hv = newHV(); const VParseHashElem* elemp = arrp + elemcnt*i; for (unsigned int j = 0; j < elemcnt; j++) { if (!elemp[j].keyp) continue; SV* sv; switch (elemp[j].val_type) { case VParseHashElem::ELEM_INT: sv = newSViv(elemp[j].val_int); break; case VParseHashElem::ELEM_STR: default: sv = newSVpv(elemp[j].val_str.c_str(), 0); break; } hv_store(hv, elemp[j].keyp, strlen(elemp[j].keyp), sv, 0); } av_store(av, i, newRV_noinc((SV*)hv)); elemp++; } XPUSHs(sv_2mortal(newRV_noinc((SV*)av))); } else if (textp) { // Non hasharray_param, so is text XPUSHs(sv_2mortal(newSVpv(textp, 0))); } else { XPUSHs(&PL_sv_undef); } } 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, bool usePinselects) 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, usePinselects); 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.470/Parser/VParseBison.y0000644000177100017500000054610413604734313017650 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-2020 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 #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,withinInst) { GRAMMARP->pinNum(1); GRAMMARP->m_cellMod=(cellmod); GRAMMARP->m_cellParam=(cellparam); GRAMMARP->m_withinInst = 1; } #define INSTDONE() { GRAMMARP->m_withinInst = 0; } enum net_idx {NI_NETNAME = 0, NI_MSB, NI_LSB}; 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 parse_net_constants(VFileLine* fl, VParseHashElem nets[][3]) { VParseHashElem (*net)[3] = &nets[0]; VParseHashElem* nhp = net[0]; std::deque::iterator it = GRAMMARP->m_portStack.begin(); while (it != GRAMMARP->m_portStack.end()) { // Default net name is simply the complete token const char* netnamep = it->m_name.c_str(); size_t delim = it->m_name.find_first_of("'"); if (it->m_name[0] != '\\' && it->m_msb.empty() && delim != string::npos && it->m_name[delim] == '\'') { // Handle sized integer constants (e.g., 7'b0) specifically but ignore replications (e.g., {4{w}}) if (delim != 0 && netnamep[0] != '{') { // Handle the first part that indicates the width for sized constants (guaranteed to be a decimal) char* endp; errno = 0; long l = strtol(netnamep, &endp, 10); if ((errno == ERANGE && l == LONG_MAX) || l > INT_MAX || l <= 0) { fl->error((string)"Unexpected length in size of integer constant: \""+netnamep+"\"."); return; } // Skip whitespace while (endp < netnamep + delim && isspace(*endp)) { endp++; } if (endp != netnamep + delim) { fl->error((string)"Could not convert size of integer constant: \""+netnamep+"\"."); return; } int count = l; // Skip characters up to the delimiter ' to determine new netnamep netnamep += delim; // Test for legal base specifiers: // d, D, h, H, o, O , b, or B for the decimal, hexadecimal, octal, and binary bases, respectively char base = netnamep[1]; // 's' indicates a signed constant, is followed by the actual base; currently ignored if (base == 's' || base == 'S') { base = netnamep[2]; } if (strchr("dDhHoObB", base) == NULL) { fl->error((string)"Base specifier \""+base+"\" is not valid in integer constant \""+it->m_name.c_str()+"\"."); return; } // These assignments could be prettified with C++11 nhp[NI_MSB].keyp = "msb"; nhp[NI_MSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_MSB].val_int = count - 1; nhp[NI_LSB].keyp = "lsb"; nhp[NI_LSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_LSB].val_int = 0; } else { // fl->error increases the error count which would create regressions for no good reasons. // There is no ->warn or similar though but we could print, e.g., to stderr in these cases //fl->error((string)"Neither unsized integer constant nor replications are not fully supported in nets (\""+netnamep+"\")."); //fprintf(stderr, "Neither unsized integer constant nor replications are not fully supported in nets (\"%s\").\n", netnamep); } } else { // Ordinary net names might have a range attached or not. // If it does then parse its bounds into proper integers. const char *msbstr = it->m_msb.c_str(); if (msbstr[0] != '\0') { { // Parse NI_MSB char* endp; errno = 0; long l = strtol(msbstr, &endp, 10); // Test for range within int, and proper parsing if ((errno == ERANGE && l == LONG_MAX) || l > INT_MAX || l < 0 || (endp && l == 0 && errno == ERANGE)) { fl->error((string)"Unexpected length in msb specification of \""+netnamep+"\" (endp="+endp+", errno="+strerror(errno)+")."); return; } nhp[NI_MSB].keyp = "msb"; nhp[NI_MSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_MSB].val_int = (int)l; } { // Parse NI_LSB char* endp; errno = 0; long l = strtol(it->m_lsb.c_str(), &endp, 10); if ((errno == ERANGE && l == LONG_MAX) || l > INT_MAX || l < 0 || (endp && l == 0 && errno == ERANGE)) { fl->error((string)"Unexpected length in lsb specification of \""+netnamep+"\"."); return; } nhp[NI_LSB].keyp = "lsb"; nhp[NI_LSB].val_type = VParseHashElem::ELEM_INT; nhp[NI_LSB].val_int = (int)l; } } else { nhp[NI_MSB].keyp = NULL; nhp[NI_LSB].keyp = NULL; } } nhp[NI_NETNAME].keyp = "netname"; nhp[NI_NETNAME].val_type = VParseHashElem::ELEM_STR; nhp[NI_NETNAME].val_str = netnamep; *it++; nhp += 3; // We operate on three elements in each iteration } } 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()); if (PARSEP->usePinSelects()) { if (GRAMMARP->m_portStack.empty()) { string netname; if (GRAMMARP->m_portNextNetName.empty()) { netname = expr; } else { netname = GRAMMARP->m_portNextNetName; } size_t elem_cnt = GRAMMARP->m_portNextNetMsb.empty() ? 1 : 3; VParseHashElem nets[elem_cnt]; // These assignments could be prettified with C++11 nets[NI_NETNAME].keyp = "netname"; nets[NI_NETNAME].val_type = VParseHashElem::ELEM_STR; nets[NI_NETNAME].val_str = netname; if (elem_cnt > 1) { nets[NI_MSB].keyp = "msb"; nets[NI_MSB].val_type = VParseHashElem::ELEM_STR; nets[NI_MSB].val_str = GRAMMARP->m_portNextNetMsb; nets[NI_LSB].keyp = "lsb"; nets[NI_LSB].val_type = VParseHashElem::ELEM_STR; nets[NI_LSB].val_str = GRAMMARP->m_portNextNetLsb; } PARSEP->pinselectsCb(fl, name, 1, elem_cnt, &nets[0], GRAMMARP->pinNum()); } else { // Connection with multiple pins was parsed completely. // There might be one net left in the pipe... if (GRAMMARP->m_portNextNetValid) { GRAMMARP->m_portStack.push_front(VParseNet(GRAMMARP->m_portNextNetName, GRAMMARP->m_portNextNetMsb, GRAMMARP->m_portNextNetLsb)); } unsigned int arraycnt = GRAMMARP->m_portStack.size(); VParseHashElem nets[arraycnt][3]; parse_net_constants(fl, nets); PARSEP->pinselectsCb(fl, name, arraycnt, 3, &nets[0][0], GRAMMARP->pinNum()); } // Clear all pin-related fields GRAMMARP->m_portNextNetValid = false; GRAMMARP->m_portNextNetName.clear(); GRAMMARP->m_portStack.clear(); GRAMMARP->m_portNextNetMsb.clear(); GRAMMARP->m_portNextNetLsb.clear(); } } } 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(); } GRAMMARP->m_withinPin = true; } static void PORTNET(VFileLine* fl, const string& name) { if (!GRAMMARP->m_withinInst) { return; } GRAMMARP->m_portNextNetValid = true; GRAMMARP->m_portNextNetName = name; GRAMMARP->m_portNextNetMsb.clear(); GRAMMARP->m_portNextNetLsb.clear(); } static void PORTRANGE(const string& msb, const string& lsb) { if (!GRAMMARP->m_withinInst) { return; } GRAMMARP->m_portNextNetMsb = msb; GRAMMARP->m_portNextNetLsb = lsb; } static void PIN_CONCAT_APPEND(const string& expr) { if (!GRAMMARP->m_withinPin) { return; } if (!GRAMMARP->m_portNextNetValid) { // Only while not within a valid net term the expression is part // of a replication constant. If that's detected ignore the // previous expression (that is actually just the contained // concatenation) in favor of the full replication expression. if (expr[0] == '{') { if (expr.find_first_of("{", 1) != string::npos) { // fprintf(stderr, "%d: ignoring \"%s\" in favor of \"%s\".\n", __LINE__, GRAMMARP->m_portStack.front().m_name.c_str(), expr.c_str()); GRAMMARP->m_portStack.pop_front(); GRAMMARP->m_portStack.push_front(VParseNet(expr)); } } else { GRAMMARP->m_portStack.push_front(VParseNet(expr)); } } else { GRAMMARP->m_portStack.push_front(VParseNet(GRAMMARP->m_portNextNetName, GRAMMARP->m_portNextNetMsb, GRAMMARP->m_portNextNetLsb)); } GRAMMARP->m_portNextNetValid = false; } /* 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 --language 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__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 signing '.' 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 signing 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 signing 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 { } // // IEEE 1800-2017: modport_item // // See instead old 2012 position in interface_or_generate_item | 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 // // IEEE 1800-2017 removes modport_declaration here // // but for 2012 compatibility we retain it 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; $$=SPACED($1,$2); } | integer_vector_type signingE regrangeE { $$=$1; $$=SPACED($1,SPACED($2,$3)); } // // below can be idAny or yaID__aTYPE // // IEEE requires a type, though no shift conflict if idAny | idAny regrangeE { $$=$1; $$=SPACED($1,$2); } ; 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*/ ';' { PARSEP->syms().replaceInsert(VAstType::TYPE, $3); } // // package_scope part of data_type | yNETTYPE data_type idAny yWITH__ETC package_scopeIdFollowsE id/*tf_identifier*/ ';' { PARSEP->syms().replaceInsert(VAstType::TYPE, $3); } | yNETTYPE package_scopeIdFollowsE id/*net_type_identifier*/ idAny/*net_type_identifier*/ ';' { PARSEP->syms().replaceInsert(VAstType::TYPE, $4); } ; 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,0); } strengthSpecE parameter_value_assignmentE { INSTPREP($1,0,1); } instnameList ';' { INSTDONE(); } // // IEEE: interface_identifier' .' modport_identifier list_of_interface_identifiers | instName { INSTPREP($1,1,0); } '.' id {INSTPREP($1,0,0);} mpInstnameList ';' { INSTDONE(); } ; 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 instRangeListE { PARSEP->instantCb($1, GRAMMARP->m_cellMod, $1, $2); } ; 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 instRangeListE '(' { PARSEP->instantCb($1, GRAMMARP->m_cellMod, $1, $2); PINPARAMS(); } | instRangeListE '(' { PARSEP->instantCb($2, GRAMMARP->m_cellMod, "", $1); PINPARAMS(); } // UDP ; instRangeListE: /* empty */ { $$ = ""; } | instRangeList { $$=$1; $$ = $1; } ; instRangeList: instRange { $$=$1; $$ = $1; } | instRangeList instRange { $$=$1; $$ = $1+$2; } ; instRange: '[' constExpr ']' { $$=$1; $$ = "["+$2+"]"; } | '[' constExpr ':' constExpr ']' { $$=$1; $$ = "["+$2+":"+$4+"]"; } ; cellpinList: { VARRESET_LIST(""); } cellpinItList { VARRESET_NONLIST(""); GRAMMARP->m_withinPin = false; } ; cellpinItList: // IEEE: list_of_port_connections + list_of_parameter_assignmente { GRAMMARP->m_portNextNetName.clear(); } 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 { } // // S05 block creation rule | id/*block_identifier*/ ':' statement_item { } // // 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 { } | yFOR '(' for_initialization ';' 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 ';' { } // // IEEE: 1800-2017 empty initialization | ';' { } ; 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 // // OLD: Overloads deprecated in IEEE 1800-2017 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 1800-2017 empty_unpacked_array_concatenation) | '{' '}' // // // 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; PORTNET($1, $$); } // // 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; PIN_CONCAT_APPEND($1); } | cateList ',' stream_expression { $$=$1; $$ = $1+","+$3; PIN_CONCAT_APPEND($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,0); } | yAND { $$=$1; INSTPREP($1,0,0); } | yBUF { $$=$1; INSTPREP($1,0,0); } | yNAND { $$=$1; INSTPREP($1,0,0); } | yNOR { $$=$1; INSTPREP($1,0,0); } | yNOT { $$=$1; INSTPREP($1,0,0); } | yOR { $$=$1; INSTPREP($1,0,0); } | yXNOR { $$=$1; INSTPREP($1,0,0); } | yXOR { $$=$1; INSTPREP($1,0,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; PORTNET($1, $1);} // // IEEE: part_select_range/constant_part_select_range | idArrayed '[' expr ']' { $$=$1; $$ = $1+"["+$3+"]"; PORTRANGE($3, $3);} | idArrayed '[' constExpr ':' constExpr ']' { $$=$1; $$ = $1+"["+$3+":"+$5+"]"; PORTRANGE($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 { } ; final_zero: // IEEE: part of deferred_immediate_assertion_statement '#' yaINTNUM { } // yaINTNUM is always a '0' // // 1800-2012: | yFINAL { } ; deferred_immediate_assertion_statement: // ==IEEE: deferred_immediate_assertion_statement // // IEEE: deferred_immediate_assert_statement yASSERT final_zero '(' expr ')' action_block { } // // IEEE: deferred_immediate_assume_statement | yASSUME final_zero '(' expr ')' action_block { } // // IEEE: deferred_immediate_cover_statement | yCOVER final_zero '(' expr ')' stmt { } ; 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 { } // // IEEE-2012: Incorectly hasyCOVER ySEQUENCE then property_spec here. // // Fixed in IEEE 1800-2017 | 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 // // IEEE 1800-2012 changed from property_statement to property_expr // // IEEE 1800-2017 changed to require the semicolon 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($2,$2,$4,$1); } // // IEEE: part of interface_class_declaration | yINTERFACE yCLASS lifetimeE idAny/*class_identifier*/ { PARSEP->symPushNew(VAstType::CLASS, $4); PARSEP->classCb($2,$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.470/Parser/VParse.h0000644000177100017500000003074513604734313016633 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2020 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; struct VParseHashElem { const char* keyp; enum {ELEM_STR, ELEM_INT} val_type; string val_str; // When val_type==ELEM_STR int val_int; // When val_type==ELEM_INT VParseHashElem() { keyp = NULL; } ~VParseHashElem() {} }; //********************************************************************** // 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 bool m_usePinselects;///< Need bit-select parsing 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, bool usePinselects); 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; } bool usePinSelects() const { return m_usePinselects; } 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 pinselectsCb(VFileLine* fl, const string& name, unsigned int arraycnt2, unsigned int elemcnt2, const VParseHashElem* conns2, 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.470/Parser/VParseLex.h0000644000177100017500000001073013604734313017274 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2020 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.470/Parser/VParseGrammar.h0000644000177100017500000000714613604734313020141 0ustar wsnyderwsnyder// -*- C++ -*- //************************************************************************* // // Copyright 2000-2020 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" //============================================================================ // Containers 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) {} }; struct VParseNet { string m_name; string m_msb; string m_lsb; VParseNet(const string& net, const string& msb, const string& lsb) : m_name(net), m_msb(msb), m_lsb(lsb) {} VParseNet(const string& net) : m_name(net), m_msb(""), m_lsb("") {} }; //============================================================================ // 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; bool m_portNextNetValid; string m_portNextNetName; string m_portNextNetMsb; string m_portNextNetLsb; bool m_withinPin; bool m_withinInst; deque m_pinStack; deque m_portStack; 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; m_portNextNetValid = false; m_withinInst = false; m_withinPin = 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.470/vrename0000755000177100017500000004655213604734313015414 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.470'; ###################################################################### # 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 $hit; my $signs = $sig; if ($signs =~ /\\.* $/) { # Escaped $signs =~ s/ $//; my $sig_quoted = quotemeta $signs; $hit = 1 if $filestrg =~ s/$sig_quoted(?=[ \t\n\r])/$magic/g; } else { # Unescaped my $sig_quoted = quotemeta $signs; $hit = 1 if $filestrg =~ s/([^a-zA-Z0-9_\$\%\'\\])$sig_quoted(?=[^a-zA-Z0-9_])/$1$magic/g; # Consume leading \; either getting removed or part of replacement $hit = 1 if $filestrg =~ s/(\\)$sig_quoted(?=[ \t\n\r])/$magic/g; } if ($hit) { 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 ($new =~ / $/) { # new has trailing whitespace (due to escape) then # try to remove a space from original file also if we can, # so spacing remains the same $magic .= ' ?'; } 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 [...] [....] Note that in the signals.vrename file any signal names including special characters must follow Verilog naming rules in that they must be escaped with a leading backslash and trailing space. Vrename will attempt to preserve spacing when changing escaped to non-escaped names and vice-versa, however in some cases extra whitespace may be inserted to ensure proper downstream parsing. =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|1800-2017> 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-2020 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.470/verilog/0000755000177100017500000000000013604734430015464 5ustar wsnyderwsnyderVerilog-Perl-3.470/verilog/v_hier_sub.v0000644000177100017500000000163013234726611020001 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.470/verilog/example.v0000644000177100017500000000710013234726611017305 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.470/verilog/parser_sv09.v0000644000177100017500000000247213264012701020025 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 // msg2546 module def_cov_point; logic [7:0] data; logic [7:0] addr; covergroup c; ADDRESS : coverpoint addr { bins low[] = {[0:10]}; bins med[] = {[11:20]}; } endgroup // Can't handle this due to package parsing yaID__ETC //covergroup d; // d : coverpoint data { // bins low[] = {[0:10]}; // bins med[] = {[11:20]}; // } //endgroup endmodule Verilog-Perl-3.470/verilog/v_comments.v0000644000177100017500000000145513234726611020033 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.470/verilog/v_hier_noport.v0000644000177100017500000000036613422450702020530 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; parameter P; reg internal; endmodule Verilog-Perl-3.470/verilog/inc_ifdef.v0000644000177100017500000000134313234726611017563 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.470/verilog/parser_sv.v0000644000177100017500000002252313376653432017673 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.470/verilog/inc_nonl.v0000644000177100017500000000011613234726611017451 0ustar wsnyderwsnyder// The lack of a newline on the next line is intentional blah-no-newline-here>Verilog-Perl-3.470/verilog/v_hier_subsub.v0000644000177100017500000000167113234726611020520 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; // Test protected `pragma protect begin_protected `pragma protect encrypt_agent = "Whatever agent" `pragma protect encrypt_agent_info = "1.2.3" `pragma protect data_method = "aes128-cbc" `pragma protect key_keyowner = "Someone" `pragma protect key_keyname = "somekey", key_method = "rsa" `pragma protect key_block encoding = (enctype = "base64") wefjosdfjklajklasjkl `pragma protect data_block encoding = (enctype = "base64", bytes = 1059) 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] `pragma protect end_protected `pragma reset protect //" endmodule Verilog-Perl-3.470/verilog/v_recursive.v0000644000177100017500000000025313234726611020210 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.470/verilog/v_sv_pgm.v0000644000177100017500000000034113234726611017472 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.470/verilog/t_86_vhier_tick_sub.v0000644000177100017500000000031713234726611021515 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.470/verilog/v_hier_top.v0000644000177100017500000000173413234726611020017 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 .avec ({avec[3],avec[2:0]}), .clk (1'b0)); 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.470/verilog/t_80_foo.v0000644000177100017500000000047313234726611017275 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.470/verilog/v_hier_top2.v0000644000177100017500000000104513422450702020066 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 (); v_hier_noport #(.P(1)) noportp (); //bug1393 v_hier_noport #(.P(1)) noporta[1:0] (); 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.470/verilog/v_hier_subprim.v0000644000177100017500000000106513234726611020673 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.470/verilog/v_sv_intf.v0000644000177100017500000000062713234726611017656 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.470/verilog/test.v0000644000177100017500000000074113462165506016640 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.470/verilog/inc_def09.v0000644000177100017500000000341413234726611017416 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.470/verilog/test.vrename0000644000177100017500000000066013604734313020024 0ustar wsnyderwsnyder# DESCRIPTION: vrename: For test.pl testing of vrename # # Copyright 2000-2020 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.470/verilog/parser_sv17.v0000644000177100017500000000023113251622371020021 0ustar wsnyderwsnyder// 1800-2017 module sv17; integer i; initial begin for (i=0;;) break; for (;i!=0;) begin end for (;;++i) break; end endmodule Verilog-Perl-3.470/verilog/v_sv_mod.v0000644000177100017500000000072713234726611017476 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.470/verilog/v_sv_pkg.v0000644000177100017500000000045313234726611017474 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.470/verilog/v_v2k.v0000644000177100017500000000113013234726611016676 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 // Multidim, bug1206 wire [1:2] [3:4] netmd; v_v2k_sub sub (.net1 (netmd[1])); endmodule module v_v2k_sub ( input [3:4] net1 ); endmodule Verilog-Perl-3.470/verilog/t_80_foo.f0000644000177100017500000000005513234726611017251 0ustar wsnyderwsnyderverilog/t_80_foo.v -F verilog/t_80_bar/bar.f Verilog-Perl-3.470/verilog/t_preproc_inc3.vh0000644000177100017500000000070213234726611020734 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.470/verilog/pli.v0000644000177100017500000000207313234726611016442 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.470/verilog/inc2.v0000644000177100017500000000035113234726611016506 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.470/verilog/parser_vectors.v0000644000177100017500000000214013234726611020712 0ustar wsnyderwsnyder/* This file contains some instantiations of an unknown module that use bit vectors. */ module top(i,o); input [31:0] i; output [31:0] o; wire [3:0] somebus, someotherbus; wire somenet_1,somenet_2,somenet_3; wire [29:0] somewidebus; parameter SOMEPARAM = 10; assign somewidebus=i[31:2]; assign o[1]=somenet_1; assign o[2]=somenet_2; assign o[0]=1'b0; assign o[3]=someotherbus[2]; assign o[28:4]=25'b0; assign o[31]=~somenet_1; mod instmod_1 ( .a(somebus), .y(somenet_1) ); mod instmod_2 ( .a(somebus), .y(someotherbus[2]) ); mod instmod_3 ( .a(somewidebus[24:21]), .y(somenet_2) ); mod instmod_4 ( .a(i[31:27]), .y(o[29]) ); mod instmod_5 ( .a({somenet_1,3'b101,someotherbus[2],somewidebus[2:1]}), .y(o[30]) ); mod instmod_6 ( .a({somenet_1,3'b101,{someotherbus[2],someotherbus[2]},somewidebus[2:1]}), .y(o[30]) ); mod instmod_7 ( .a(somebus[{SOMEPARAM_3[1],SOMEPARAM_3[0]}]), .y(someotherbus[2]) ); endmodule Verilog-Perl-3.470/verilog/inc1.v0000644000177100017500000004636713337115303016520 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 module prot2(); `pragma protect begin_protected `pragma protect encrypt_agent = "Whatever agent" `pragma protect encrypt_agent_info = "1.2.3" `pragma protect data_method = "aes128-cbc" `pragma protect key_keyowner = "Someone" `pragma protect key_keyname = "somekey", key_method = "rsa" `pragma protect key_block encoding = (enctype = "base64") wefjosdfjklajklasjkl `pragma protect data_block encoding = (enctype = "base64", bytes = 1059) 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] `pragma protect end_protected `pragma reset protect endmodule module prot3(); //pragma protect begin_protected //pragma protect key_keyowner=Cadence Design Systems. //pragma protect key_keyname=CDS_KEY //pragma protect key_method=RC5 //pragma protect key_block zzZzZ/4ZzzZZZzzz4zZzZzZZZZzZzZ/Zz+33zZ2zz/zzzzzzzzZZZzZ4z+ZZZZz1 Z1ZzzzZZzZZzz9ZZZZ37zzZzZzZzzz9ZZzzZzZz9Zz64+z8Z7ZzZZZzzzzZZZzZz zzZzZZZzZ0463zzzzzZzZ6z00z4zZzzZZzzZzzzZZ8zzz09ZzZZZZZ== //pragma protect end_key_block //pragma protect digest_block ZzZZzzZ9ZZZZz2ZzzzZz/Zzzz8Z= //pragma protect end_digest_block //pragma protect data_block ZZZ8zZzz6ZZ/zZZ5zZZzzz3ZzzzZzZZZ6ZzZzZZZZZz1zzZZZZ7ZZZZz3Zzz+9zz 4zzz+8zZzzzzZzZZzzzZzz1Z7ZzZz+zZz8ZZZZzZ6ZzzZzZZzzZZzzZzzZzZzZzZ ZzzzzZ0zZz1ZzzZzzZzZzz== //pragma protect end_data_block //pragma protect digest_block Z4Z6zZzZ3Z7ZZ6zzZZZZzzzzZZZ= //pragma protect end_digest_block //pragma protect end_protected 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 //====================================================================== //bug1225 `define X_ITEM(SUB,UNIT) `X_STRING(SUB``UNIT) `define X_STRING(A) `"A`" $display(`X_ITEM(RAM,0)); $display(`X_ITEM(CPU,)); `define EMPTY `define EMPTYP(foo) `define SOME some `define SOMEP(foo) foo `define XXE_FAMILY XXE_```EMPTY XXE_FAMILY = `XXE_FAMILY `define XXE_```EMPTY `ifdef XXE_ $display("XXE_ is defined"); `endif `define XYE_FAMILY XYE_```EMPTYP(foo) XYE_FAMILY = `XYE_FAMILY `define XYE_```EMPTYP(foo) `ifdef XYE_ $display("XYE_ is defined"); `endif `define XXS_FAMILY XXS_```SOME XXS_FAMILY = `XXS_FAMILY `define XXS_```SOME `ifdef XXS_some $display("XXS_some is defined"); `endif `define XYS_FAMILY XYS_```SOMEP(foo) XYS_FAMILY = `XYS_FAMILY `define XYS_```SOMEP(foo) `ifdef XYS_foo $display("XYS_foo is defined"); `endif //==== `ifdef NEVER `define NXE_FAMILY NXE_```EMPTY NXE_FAMILY = `NXE_FAMILY `define NXE_```EMPTY `ifdef NXE_ $display("NXE_ is defined"); `endif `define NYE_FAMILY NYE_```EMPTYP(foo) NYE_FAMILY = `NYE_FAMILY `define NYE_```EMPTYP(foo) `ifdef NYE_ $display("NYE_ is defined"); `endif `define NXS_FAMILY NXS_```SOME NXS_FAMILY = `NXS_FAMILY `define NXS_```SOME `ifdef NXS_some $display("NXS_some is defined"); `endif `define NYS_FAMILY NYS_```SOMEP(foo) NYS_FAMILY = `NYS_FAMILY `define NYS_```SOMEP(foo) `ifdef NYS_foo $display("NYS_foo is defined"); `endif `include `EMPTY `endif // NEVER //bug1227 `define INSTANCE(NAME) (.mySig (myInterface.``NAME), `INSTANCE(pa5) //====================================================================== // Stringify bug `define hack(GRP) `dbg_hdl(UVM_LOW, (`"Functional coverage enabled: GRP`")); `hack(paramgrp) `define dbg_hdl(LVL, MSG) $display ("DEBUG : %s [%m]", $sformatf MSG) `define svfcov_new(GRP) \ initial do begin `dbg_hdl(UVM_LOW, (`"Functional coverage enabled: GRP`")); end while(0) `define simple_svfcov_clk(LBL, CLK, RST, ARG) \ covergroup LBL @(posedge CLK); \ c: coverpoint ARG iff ((RST) === 1'b1); endgroup \ LBL u_``LBL; `svfcov_new(u_``LBL) module pcc2_cfg; generate `simple_svfcov_clk(a, b, c, d); endgenerate 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.470/verilog/t_80_bar/0000755000177100017500000000000013604734430017062 5ustar wsnyderwsnyderVerilog-Perl-3.470/verilog/t_80_bar/bar.v0000644000177100017500000000042713234726611020021 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.470/verilog/t_80_bar/bar.f0000644000177100017500000000000613234726611017772 0ustar wsnyderwsnyderbar.v Verilog-Perl-3.470/verilog/t_86_vhier_tick.v0000644000177100017500000000043413234726611020644 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.470/verilog/v_gate.v0000644000177100017500000000023013234726611017114 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.470/verilog/t_preproc_inc4.vh0000644000177100017500000000030013234726611020727 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.470/verilog/pinorder.v0000644000177100017500000000165513234726611017505 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.470/verilog/parser_bugs.v0000644000177100017500000003137213536545407020205 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 module msg2540 (output signed foo); endmodule 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 module prot2(); `pragma protect begin_protected `pragma protect encrypt_agent = "Whatever agent" `pragma protect encrypt_agent_info = "1.2.3" `pragma protect data_method = "aes128-cbc" `pragma protect key_keyowner = "Someone" `pragma protect key_keyname = "somekey", key_method = "rsa" `pragma protect key_block encoding = (enctype = "base64") wefjosdfjklajklasjkl `pragma protect data_block encoding = (enctype = "base64", bytes = 1059) 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] `pragma protect end_protected `pragma reset protect endmodule module prot3(); //pragma protect begin_protected //pragma protect key_keyowner=Cadence Design Systems. //pragma protect key_keyname=CDS_KEY //pragma protect key_method=RC5 //pragma protect key_block zzZzZ/4ZzzZZZzzz4zZzZzZZZZzZzZ/Zz+33zZ2zz/zzzzzzzzZZZzZ4z+ZZZZz1 Z1ZzzzZZzZZzz9ZZZZ37zzZzZzZzzz9ZZzzZzZz9Zz64+z8Z7ZzZZZzzzzZZZzZz zzZzZZZzZ0463zzzzzZzZ6z00z4zZzzZZzzZzzzZZ8zzz09ZzZZZZZ== //pragma protect end_key_block //pragma protect digest_block ZzZZzzZ9ZZZZz2ZzzzZz/Zzzz8Z= //pragma protect end_digest_block //pragma protect data_block ZZZ8zZzz6ZZ/zZZ5zZZzzz3ZzzzZzZZZ6ZzZzZZZZZz1zzZZZZ7ZZZZz3Zzz+9zz 4zzz+8zZzzzzZzZZzzzZzz1Z7ZzZz+zZz8ZZZZzZ6ZzzZzZZzzZZzzZzzZzZzZzZ ZzzzzZ0zZz1ZzzZzzZzZzz== //pragma protect end_data_block //pragma protect digest_block Z4Z6zZzZ3Z7ZZ6zzZZZZzzzzZZZ= //pragma protect end_digest_block //pragma protect end_protected endmodule module bug1340; parameter B= 8 'b 1 ; endmodule module msg2931; nettype int net1_t; net1_t mynet1; nettype int net2_t with resolvefunc; net2_t mynet2; nettype net_t net3_t; net3_t mynet3; endmodule module bug1505; sub i_suba (); sub i_subb[1:2] (); sub i_subc[1:2][3:4][5:6] (); endmodule Verilog-Perl-3.470/vhier0000755000177100017500000003720413604734313015066 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.470'; ###################################################################### # 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_skiplist; my @Opt_Skiplist_Names; 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, "skiplist=s" => \$opt_skiplist, "sv!" => sub { shift; Verilog::Language::language_standard("1800-2017"); }, "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; } read_skiplist($opt_skiplist) if $opt_skiplist; 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; # check if mod name has match in regex list to skip if (grep { $name =~ $_ } @Opt_Skiplist_Names) { print "Debug: Skipping module $name" if $Debug; return; } 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}; } sub read_skiplist { my $filename = shift; my $fh = IO::File->new("<$filename") or die "%Error: $! $filename,"; while (<$fh>) { chomp; push @Opt_Skiplist_Names, $_; } $fh->close; if ($Debug) { print "Debug: skiplist:\n"; foreach (@Opt_Skiplist_Names) { print "\t$_\n"; } } } ###################################################################### ###################################################################### ###################################################################### __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-2017". 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|1800-2017> 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 --no-missing Do not complain about references to missing modules. =item --missing-modules With --nomissing, show all modules that are not found. =item --skiplist I Given file contains a list of regular expressions, one per line. If a module name in the design hierarchy matches one of these expressions, skip showing that module and any sub-hierarchy. =item --synthesis Define SYNTHESIS, and ignore text between "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-2020 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.470/Verilog-Perl.pod0000644000177100017500000002570313604734313017037 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 2017 grammar (1800-2017 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 2017. =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 2017 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). Long term the authors would be interested in collaborating on a general parser, but for now, applications can leverate the C++ code or use Verilator's XML output (below). =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 2017 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 2017 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). =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 and can create XML output showing the abstract syntax tree. Verilator also understands how to elaborate and connect complex pins and types, but supports mostly only the synthesis subset of SystemVerilog. If you're looking to parse only synthesizable code this is the recommended route. =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-2020 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.470/COPYING0000644000177100017500000002156113234726611015056 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.470/README0000644000177100017500000002642013604734313014701 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 2017 grammar (1800-2017 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 2017. 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 2017 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). Long term the authors would be interested in collaborating on a general parser, but for now, applications can leverage the C++ code or use Verilator's XML output (below). 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 2017 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 2017 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). 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 and can create XML output showing the abstract syntax tree. Verilator also understands how to elaborate and connect complex pins and types, but supports mostly only the synthesis subset of SystemVerilog. If you're looking to parse only synthesizable code this is the recommended route. 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-2020 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.470/vsplitmodule0000755000177100017500000000641113422450702016467 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.470/Changes0000644000177100017500000011577313604734342015330 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.470 2020-01-06 **** Fix capital S for signed numbers, [Piotr Binkowski] **** Fix // in filenames, bug1610. [Peter Nelson] * Verilog::Language 3.468 2019-09-12 **** Support ${} for env vars in file lists, msg3065. **** Fix multidimensional cell/interfaces, bug1505. [Anderson Ignacio Da Silva] * Verilog::Language 3.466 2019-05-04 **** Fix Mac OS-X Perl 5.26.3 issues, bug1428. [Jack Langsdorf] * Verilog::Language 3.464 2019-05-01 **** Fix vrename with escaped names, bug1420. [Kerry Imming] * Verilog::Language 3.462 2019-04-09 *** Fix legacy $pin->netlist accessor. *** Fix nettype declarations, msg2931. [Andreas Sunardi] * Verilog::Language 3.460 2019-01-26 *** Fix Verilog::Std being empty on fork, bug1394. [Corey Teffetalor] * Verilog::Language 3.458 2019-01-24 *** Add Verilog::Cell::range accessor, bug1393. [Ed Carstens] **** For write_verilog, print any cell parameters. * Verilog::Language 3.456 2018-10-28 **** Fix number parsing with newline after radix, bug1340. [George Cuan] * Verilog::Language 3.454 2018-08-21 **** Support parsing around Cadence protected meta-comments. **** Fix define argument stringification (`"), broke since 3.446. [Joe DErrico] **** Fix to ignore Unicode UTF-8 BOM sequences, msg2576. [HyungKi Jeong] * Verilog::Language 3.452 2018-04-12 **** Fix parsing "output signed" in V2K port list, msg2540. [James Jung] **** Fix GLIBC assertion failure, bug1299. [Filipe Rosset] * Verilog::Language 3.450 2018-03-12 ** Support SystemVerilog 1800-2017. ** Moving forward, use the git "stable" branch to track the latest release, and git "v#.###" tags for specific releases. * Verilog::Language 3.448 2018-01-02 **** Workaround comment bug in flex 2.6.4, bug1252. [Rob Stoddard] * Verilog::Language 3.446 2017-11-08 **** Fix `` expansion of `defines, bug1225, bug1227, bug1228. [Odd Magne Reitan] * Verilog::Language 3.444 2017-09-21 **** Fix replication handling error, bug1205. [Leon Medpum] **** Fix compile error on MAC OS X/clang 8.1.0, msg2337. [Kunal Bansal] * Verilog::Language 3.442 2017-09-08 **** Fix new concatenation handling error, bug1200. [by Stefan Tauner] **** Fix unreferenced scalar warning, bug1200. [by Stefan Tauner] * Verilog::Language 3.440 2017-08-31 ** Support for buses and concats in Netlist, msg1626. [by Stefan Tauner] ** Support pragma protect begin_protected/end_protected, msg2313. [George Cuan] * Verilog::Language 3.430 2017-07-24 ** Support Verilog::SigParser pin select parsing, msg1626. [by Stefan Tauner] * Verilog::Language 3.426 2017-06-06 **** Fix lineno with class callbacks, bug1162. [Dave Storrar] * Verilog::Language 3.423 2017-04-26 **** Fix tests '.' for Perl 5.26.0, rt121025. [Dan Collins] * Verilog::Language 3.422 2016-11-24 **** Add additional tests, msg1982. [by Stefan Tauner] **** Fix passing enum types in SigParser, bug1107. [by Lalit Chhabra] * Verilog::Language 3.420 2016-07-30 *** Add vhier --skiplist option. [John Busco] **** Fix duplicate cells when delete cells, bug1049. [by Stefan Tauner] **** Fix core dump on Storable store/retrieve, bug1063. [G Aydos] * 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-2020 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.470/vpassert0000755000177100017500000014412313604734313015617 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.470'; ###################################################################### # 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|1800-2017> 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 acknowledgment. =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