]b4_position_type[
class, denote a point in the input.
- * Locations represent a part of the input through the beginning
- * and ending positions. */
- public class ]b4_location_type[ {
- /** The first, inclusive, position in the range. */
- public ]b4_position_type[ begin;
-
- /** The first position beyond the range. */
- public ]b4_position_type[ end;
-
- /**
- * Create a ]b4_location_type[
denoting an empty range located at
- * a given point.
- * @@param loc The position at which the range is anchored. */
- public ]b4_location_type[ (]b4_position_type[ loc) {
- this.begin = this.end = loc;
- }
-
- /**
- * Create a ]b4_location_type[
from the endpoints of the range.
- * @@param begin The first position included in the range.
- * @@param end The first position beyond the range. */
- public ]b4_location_type[ (]b4_position_type[ begin, ]b4_position_type[ end) {
- this.begin = begin;
- this.end = end;
- }
-
- /**
- * Print a representation of the location. For this to be correct,
- * ]b4_position_type[
should override the equals
- * method. */
- public String toString () {
- if (begin.equals (end))
- return begin.toString ();
- else
- return begin.toString () + "-" + end.toString ();
- }
- }
-
-]])
-
-[ /** Token returned by the scanner to signal the end of its input. */
- public static final int EOF = 0;]
-
-b4_token_enums(b4_tokens)
-
- b4_locations_if([[
- private ]b4_location_type[ yylloc (YYStack rhs, int n)
- {
- if (n > 0)
- return new ]b4_location_type[ (rhs.locationAt (n-1).begin, rhs.locationAt (0).end);
- else
- return new ]b4_location_type[ (rhs.locationAt (0).end);
- }]])[
-
- /**
- * Communication interface between the scanner and the Bison-generated
- * parser ]b4_parser_class_name[.
- */
- public interface Lexer {
- ]b4_locations_if([[/**
- * Method to retrieve the beginning position of the last scanned token.
- * @@return the position at which the last scanned token starts. */
- ]b4_position_type[ getStartPos ();
-
- /**
- * Method to retrieve the ending position of the last scanned token.
- * @@return the first position beyond the last scanned token. */
- ]b4_position_type[ getEndPos ();]])[
-
- /**
- * Method to retrieve the semantic value of the last scanned token.
- * @@return the semantic value of the last scanned token. */
- ]b4_yystype[ getLVal ();
-
- /**
- * Entry point for the scanner. Returns the token identifier corresponding
- * to the next token and prepares to return the semantic value
- * ]b4_locations_if([and beginning/ending positions ])[of the token.
- * @@return the token identifier corresponding to the next token. */
- int yylex () ]b4_maybe_throws([b4_lex_throws])[;
-
- /**
- * Entry point for error reporting. Emits an error
- * ]b4_locations_if([referring to the given location ])[in a user-defined way.
- *
- * ]b4_locations_if([[@@param loc The location of the element to which the
- * error message is related]])[
- * @@param s The string for the error message. */
- void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String s);]
- }
-
- b4_lexer_if([[private class YYLexer implements Lexer {
-]b4_percent_code_get([[lexer]])[
- }
-
- ]])[/** The object doing lexical analysis for us. */
- private Lexer yylexer;
- ]
- b4_parse_param_vars
-
-b4_lexer_if([[
- /**
- * Instantiates the Bison-generated parser.
- */
- public ]b4_parser_class_name (b4_parse_param_decl([b4_lex_param_decl])[) {
- this.yylexer = new YYLexer(]b4_lex_param_call[);
- ]b4_parse_param_cons[
- }
-]])
-
- /**
- * Instantiates the Bison-generated parser.
- * @@param yylexer The scanner that will supply tokens to the parser.
- */
- b4_lexer_if([[protected]], [[public]]) b4_parser_class_name[ (]b4_parse_param_decl([[Lexer yylexer]])[) {
- this.yylexer = yylexer;
- ]b4_parse_param_cons[
- }
-
- private java.io.PrintStream yyDebugStream = System.err;
-
- /**
- * Return the PrintStream on which the debugging output is
- * printed.
- */
- public final java.io.PrintStream getDebugStream () { return yyDebugStream; }
-
- /**
- * Set the PrintStream on which the debug output is printed.
- * @@param s The stream that is used for debugging output.
- */
- public final void setDebugStream(java.io.PrintStream s) { yyDebugStream = s; }
-
- private int yydebug = 0;
-
- /**
- * Answer the verbosity of the debugging output; 0 means that all kinds of
- * output from the parser are suppressed.
- */
- public final int getDebugLevel() { return yydebug; }
-
- /**
- * Set the verbosity of the debugging output; 0 means that all kinds of
- * output from the parser are suppressed.
- * @@param level The verbosity level for debugging output.
- */
- public final void setDebugLevel(int level) { yydebug = level; }
-
- private final int yylex () ]b4_maybe_throws([b4_lex_throws]) [{
- return yylexer.yylex ();
- }
- protected final void yyerror (]b4_locations_if([b4_location_type[ loc, ]])[String s) {
- yylexer.yyerror (]b4_locations_if([loc, ])[s);
- }
-
- ]b4_locations_if([
- protected final void yyerror (String s) {
- yylexer.yyerror ((]b4_location_type[)null, s);
- }
- protected final void yyerror (]b4_position_type[ loc, String s) {
- yylexer.yyerror (new ]b4_location_type[ (loc), s);
- }])
-
- [protected final void yycdebug (String s) {
- if (yydebug > 0)
- yyDebugStream.println (s);
- }
-
- private final class YYStack {
- private int[] stateStack = new int[16];
- ]b4_locations_if([[private ]b4_location_type[[] locStack = new ]b4_location_type[[16];]])[
- private ]b4_yystype[[] valueStack = new ]b4_yystype[[16];
-
- public int size = 16;
- public int height = -1;
-
- public final void push (int state, ]b4_yystype[ value]dnl
- b4_locations_if([, ]b4_location_type[ loc])[) {
- height++;
- if (size == height)
- {
- int[] newStateStack = new int[size * 2];
- System.arraycopy (stateStack, 0, newStateStack, 0, height);
- stateStack = newStateStack;
- ]b4_locations_if([[
- ]b4_location_type[[] newLocStack = new ]b4_location_type[[size * 2];
- System.arraycopy (locStack, 0, newLocStack, 0, height);
- locStack = newLocStack;]])
-
- b4_yystype[[] newValueStack = new ]b4_yystype[[size * 2];
- System.arraycopy (valueStack, 0, newValueStack, 0, height);
- valueStack = newValueStack;
-
- size *= 2;
- }
-
- stateStack[height] = state;
- ]b4_locations_if([[locStack[height] = loc;]])[
- valueStack[height] = value;
- }
-
- public final void pop () {
- pop (1);
- }
-
- public final void pop (int num) {
- // Avoid memory leaks... garbage collection is a white lie!
- if (num > 0) {
- java.util.Arrays.fill (valueStack, height - num + 1, height + 1, null);
- ]b4_locations_if([[java.util.Arrays.fill (locStack, height - num + 1, height + 1, null);]])[
- }
- height -= num;
- }
-
- public final int stateAt (int i) {
- return stateStack[height - i];
- }
-
- ]b4_locations_if([[public final ]b4_location_type[ locationAt (int i) {
- return locStack[height - i];
- }
-
- ]])[public final ]b4_yystype[ valueAt (int i) {
- return valueStack[height - i];
- }
-
- // Print the state stack on the debug stream.
- public void print (java.io.PrintStream out)
- {
- out.print ("Stack now");
-
- for (int i = 0; i <= height; i++)
- {
- out.print (' ');
- out.print (stateStack[i]);
- }
- out.println ();
- }
- }
-
- /**
- * Returned by a Bison action in order to stop the parsing process and
- * return success (true). */
- public static final int YYACCEPT = 0;
-
- /**
- * Returned by a Bison action in order to stop the parsing process and
- * return failure (false). */
- public static final int YYABORT = 1;
-
- /**
- * Returned by a Bison action in order to start error recovery without
- * printing an error message. */
- public static final int YYERROR = 2;
-
- // Internal return codes that are not supported for user semantic
- // actions.
- private static final int YYERRLAB = 3;
- private static final int YYNEWSTATE = 4;
- private static final int YYDEFAULT = 5;
- private static final int YYREDUCE = 6;
- private static final int YYERRLAB1 = 7;
- private static final int YYRETURN = 8;
-
- private int yyerrstatus_ = 0;
-
- /**
- * Return whether error recovery is being done. In this state, the parser
- * reads token until it reaches a known state, and then restarts normal
- * operation. */
- public final boolean recovering ()
- {
- return yyerrstatus_ == 0;
- }
-
- private int yyaction (int yyn, YYStack yystack, int yylen) ]b4_maybe_throws([b4_throws])[
- {
- ]b4_yystype[ yyval;
- ]b4_locations_if([b4_location_type[ yyloc = yylloc (yystack, yylen);]])[
-
- /* If YYLEN is nonzero, implement the default value of the action:
- `$$ = $1'. Otherwise, use the top of the stack.
-
- Otherwise, the following line sets YYVAL to garbage.
- This behavior is undocumented and Bison
- users should not rely upon it. */
- if (yylen > 0)
- yyval = yystack.valueAt (yylen - 1);
- else
- yyval = yystack.valueAt (0);
-
- yy_reduce_print (yyn, yystack);
-
- switch (yyn)
- {
- ]b4_user_actions[
- default: break;
- }
-
- yy_symbol_print ("-> $$ =", yyr1_[yyn], yyval]b4_locations_if([, yyloc])[);
-
- yystack.pop (yylen);
- yylen = 0;
-
- /* Shift the result of the reduction. */
- yyn = yyr1_[yyn];
- int yystate = yypgoto_[yyn - yyntokens_] + yystack.stateAt (0);
- if (0 <= yystate && yystate <= yylast_
- && yycheck_[yystate] == yystack.stateAt (0))
- yystate = yytable_[yystate];
- else
- yystate = yydefgoto_[yyn - yyntokens_];
-
- yystack.push (yystate, yyval]b4_locations_if([, yyloc])[);
- return YYNEWSTATE;
- }
-
- /* Return 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. */
- private final String yytnamerr_ (String yystr)
- {
- if (yystr.charAt (0) == '"')
- {
- StringBuffer yyr = new StringBuffer ();
- strip_quotes: for (int i = 1; i < yystr.length (); i++)
- switch (yystr.charAt (i))
- {
- case '\'':
- case ',':
- break strip_quotes;
-
- case '\\':
- if (yystr.charAt(++i) != '\\')
- break strip_quotes;
- /* Fall through. */
- default:
- yyr.append (yystr.charAt (i));
- break;
-
- case '"':
- return yyr.toString ();
- }
- }
- else if (yystr.equals ("$end"))
- return "end of input";
-
- return yystr;
- }
-
- /*--------------------------------.
- | Print this symbol on YYOUTPUT. |
- `--------------------------------*/
-
- private void yy_symbol_print (String s, int yytype,
- ]b4_yystype[ yyvaluep]dnl
- b4_locations_if([, Object yylocationp])[)
- {
- if (yydebug > 0)
- yycdebug (s + (yytype < yyntokens_ ? " token " : " nterm ")
- + yytname_[yytype] + " ("]b4_locations_if([
- + yylocationp + ": "])[
- + (yyvaluep == null ? "(null)" : yyvaluep.toString ()) + ")");
- }
-
- /**
- * Parse input from the scanner that was specified at object construction
- * time. Return whether the end of the input was reached successfully.
- *
- * @@return true if the parsing succeeds. Note that this does not
- * imply that there were no syntax errors.
- */
- public boolean parse () ]b4_maybe_throws([b4_list2([b4_lex_throws], [b4_throws])])[
- {
- /// Lookahead and lookahead in internal form.
- int yychar = yyempty_;
- int yytoken = 0;
-
- /* State. */
- int yyn = 0;
- int yylen = 0;
- int yystate = 0;
-
- YYStack yystack = new YYStack ();
-
- /* Error handling. */
- int yynerrs_ = 0;
- ]b4_locations_if([/// The location where the error started.
- ]b4_location_type[ yyerrloc = null;
-
- /// ]b4_location_type[ of the lookahead.
- ]b4_location_type[ yylloc = new ]b4_location_type[ (null, null);
-
- /// @@$.
- ]b4_location_type[ yyloc;])
-
- /// Semantic value of the lookahead.
- b4_yystype[ yylval = null;
-
- yycdebug ("Starting parse\n");
- yyerrstatus_ = 0;
-
-]m4_ifdef([b4_initial_action], [
-b4_dollar_pushdef([yylval], [], [yylloc])dnl
-/* User initialization code. */
-b4_user_initial_action
-b4_dollar_popdef])[]dnl
-
- [ /* Initialize the stack. */
- yystack.push (yystate, yylval]b4_locations_if([, yylloc])[);
-
- int label = YYNEWSTATE;
- for (;;)
- switch (label)
- {
- /* New state. Unlike in the C/C++ skeletons, the state is already
- pushed when we come here. */
- case YYNEWSTATE:
- yycdebug ("Entering state " + yystate + "\n");
- if (yydebug > 0)
- yystack.print (yyDebugStream);
-
- /* Accept? */
- if (yystate == yyfinal_)
- return true;
-
- /* Take a decision. First try without lookahead. */
- yyn = yypact_[yystate];
- if (yy_pact_value_is_default_ (yyn))
- {
- label = YYDEFAULT;
- break;
- }
-
- /* Read a lookahead token. */
- if (yychar == yyempty_)
- {
- yycdebug ("Reading a token: ");
- yychar = yylex ();]
- b4_locations_if([[
- yylloc = new ]b4_location_type[(yylexer.getStartPos (),
- yylexer.getEndPos ());]])
- yylval = yylexer.getLVal ();[
- }
-
- /* Convert token to internal form. */
- if (yychar <= EOF)
- {
- yychar = yytoken = EOF;
- yycdebug ("Now at end of input.\n");
- }
- else
- {
- yytoken = yytranslate_ (yychar);
- yy_symbol_print ("Next token is", yytoken,
- yylval]b4_locations_if([, 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)
- label = YYDEFAULT;
-
- /* <= 0 means reduce or error. */
- else if ((yyn = yytable_[yyn]) <= 0)
- {
- if (yy_table_value_is_error_ (yyn))
- label = YYERRLAB;
- else
- {
- yyn = -yyn;
- label = YYREDUCE;
- }
- }
-
- else
- {
- /* Shift the lookahead token. */
- yy_symbol_print ("Shifting", yytoken,
- yylval]b4_locations_if([, yylloc])[);
-
- /* Discard the token being shifted. */
- yychar = yyempty_;
-
- /* Count tokens shifted since error; after three, turn off error
- status. */
- if (yyerrstatus_ > 0)
- --yyerrstatus_;
-
- yystate = yyn;
- yystack.push (yystate, yylval]b4_locations_if([, yylloc])[);
- label = YYNEWSTATE;
- }
- break;
-
- /*-----------------------------------------------------------.
- | yydefault -- do the default action for the current state. |
- `-----------------------------------------------------------*/
- case YYDEFAULT:
- yyn = yydefact_[yystate];
- if (yyn == 0)
- label = YYERRLAB;
- else
- label = YYREDUCE;
- break;
-
- /*-----------------------------.
- | yyreduce -- Do a reduction. |
- `-----------------------------*/
- case YYREDUCE:
- yylen = yyr2_[yyn];
- label = yyaction (yyn, yystack, yylen);
- yystate = yystack.stateAt (0);
- break;
-
- /*------------------------------------.
- | yyerrlab -- here on detecting error |
- `------------------------------------*/
- case YYERRLAB:
- /* If not already recovering from an error, report this error. */
- if (yyerrstatus_ == 0)
- {
- ++yynerrs_;
- if (yychar == yyempty_)
- yytoken = yyempty_;
- yyerror (]b4_locations_if([yylloc, ])[yysyntax_error (yystate, yytoken));
- }
-
- ]b4_locations_if([yyerrloc = yylloc;])[
- if (yyerrstatus_ == 3)
- {
- /* If just tried and failed to reuse lookahead token after an
- error, discard it. */
-
- if (yychar <= EOF)
- {
- /* Return failure if at end of input. */
- if (yychar == EOF)
- return false;
- }
- else
- yychar = yyempty_;
- }
-
- /* Else will try to reuse lookahead token after shifting the error
- token. */
- label = YYERRLAB1;
- break;
-
- /*---------------------------------------------------.
- | errorlab -- error raised explicitly by YYERROR. |
- `---------------------------------------------------*/
- case YYERROR:
-
- ]b4_locations_if([yyerrloc = yystack.locationAt (yylen - 1);])[
- /* Do not reclaim the symbols of the rule which action triggered
- this YYERROR. */
- yystack.pop (yylen);
- yylen = 0;
- yystate = yystack.stateAt (0);
- label = YYERRLAB1;
- break;
-
- /*-------------------------------------------------------------.
- | yyerrlab1 -- common code for both syntax error and YYERROR. |
- `-------------------------------------------------------------*/
- case YYERRLAB1:
- yyerrstatus_ = 3; /* Each real token shifted decrements this. */
-
- for (;;)
- {
- yyn = yypact_[yystate];
- if (!yy_pact_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 (yystack.height == 0)
- return false;
-
- ]b4_locations_if([yyerrloc = yystack.locationAt (0);])[
- yystack.pop ();
- yystate = yystack.stateAt (0);
- if (yydebug > 0)
- yystack.print (yyDebugStream);
- }
-
- ]b4_locations_if([
- /* Muck with the stack to setup for yylloc. */
- yystack.push (0, null, yylloc);
- yystack.push (0, null, yyerrloc);
- yyloc = yylloc (yystack, 2);
- yystack.pop (2);])[
-
- /* Shift the error token. */
- yy_symbol_print ("Shifting", yystos_[yyn],
- yylval]b4_locations_if([, yyloc])[);
-
- yystate = yyn;
- yystack.push (yyn, yylval]b4_locations_if([, yyloc])[);
- label = YYNEWSTATE;
- break;
-
- /* Accept. */
- case YYACCEPT:
- return true;
-
- /* Abort. */
- case YYABORT:
- return false;
- }
- }
-
- // Generate an error message.
- private String yysyntax_error (int yystate, int tok)
- {
- if (errorVerbose)
- {
- /* There are many possibilities here to consider:
- - Assume YYFAIL is not used. It's too flawed to consider.
- See
- yypact_
value indicates a defaulted state.
- * @@param yyvalue the value to check
- */
- private static boolean yy_pact_value_is_default_ (int yyvalue)
- {
- return yyvalue == yypact_ninf_;
- }
-
- /**
- * Whether the given yytable_
value indicates a syntax error.
- * @@param yyvalue the value to check
- */
- private static boolean yy_table_value_is_error_ (int yyvalue)
- {
- return yyvalue == yytable_ninf_;
- }
-
- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
- STATE-NUM. */
- private static final ]b4_int_type_for([b4_pact])[ yypact_ninf_ = ]b4_pact_ninf[;
- private static final ]b4_int_type_for([b4_pact])[ yypact_[] =
- {
- ]b4_pact[
- };
-
- /* YYDEFACT[S] -- default reduction number in state S. Performed when
- YYTABLE doesn't specify something else to do. Zero means the
- default is an error. */
- private static final ]b4_int_type_for([b4_defact])[ yydefact_[] =
- {
- ]b4_defact[
- };
-
- /* YYPGOTO[NTERM-NUM]. */
- private static final ]b4_int_type_for([b4_pgoto])[ yypgoto_[] =
- {
- ]b4_pgoto[
- };
-
- /* YYDEFGOTO[NTERM-NUM]. */
- private static final ]b4_int_type_for([b4_defgoto])[
- yydefgoto_[] =
- {
- ]b4_defgoto[
- };
-
- /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
- positive, shift that token. If negative, reduce the rule which
- number is the opposite. If YYTABLE_NINF_, syntax error. */
- private static final ]b4_int_type_for([b4_table])[ yytable_ninf_ = ]b4_table_ninf[;
- private static final ]b4_int_type_for([b4_table])[
- yytable_[] =
- {
- ]b4_table[
- };
-
- /* YYCHECK. */
- private static final ]b4_int_type_for([b4_check])[
- yycheck_[] =
- {
- ]b4_check[
- };
-
- /* STOS_[STATE-NUM] -- The (internal number of the) accessing
- symbol of state STATE-NUM. */
- private static final ]b4_int_type_for([b4_stos])[
- yystos_[] =
- {
- ]b4_stos[
- };
-
- /* TOKEN_NUMBER_[YYLEX-NUM] -- Internal symbol number corresponding
- to YYLEX-NUM. */
- private static final ]b4_int_type_for([b4_toknum])[
- yytoken_number_[] =
- {
- ]b4_toknum[
- };
-
- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
- private static final ]b4_int_type_for([b4_r1])[
- yyr1_[] =
- {
- ]b4_r1[
- };
-
- /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
- private static final ]b4_int_type_for([b4_r2])[
- yyr2_[] =
- {
- ]b4_r2[
- };
-
- /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
- First, the terminals, then, starting at \a yyntokens_, nonterminals. */
- private static final String yytname_[] =
- {
- ]b4_tname[
- };
-
- /* YYRHS -- A `-1'-separated list of the rules' RHS. */
- private static final ]b4_int_type_for([b4_rhs])[ yyrhs_[] =
- {
- ]b4_rhs[
- };
-
- /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
- YYRHS. */
- private static final ]b4_int_type_for([b4_prhs])[ yyprhs_[] =
- {
- ]b4_prhs[
- };
-
- /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
- private static final ]b4_int_type_for([b4_rline])[ yyrline_[] =
- {
- ]b4_rline[
- };
-
- // Report on the debug stream that the rule yyrule is going to be reduced.
- private void yy_reduce_print (int yyrule, YYStack yystack)
- {
- if (yydebug == 0)
- return;
-
- int yylno = yyrline_[yyrule];
- int yynrhs = yyr2_[yyrule];
- /* Print the symbols being reduced, and their result. */
- yycdebug ("Reducing stack by rule " + (yyrule - 1)
- + " (line " + yylno + "), ");
-
- /* The symbols being reduced. */
- for (int yyi = 0; yyi < yynrhs; yyi++)
- yy_symbol_print (" $" + (yyi + 1) + " =",
- yyrhs_[yyprhs_[yyrule] + yyi],
- ]b4_rhs_value(yynrhs, yyi + 1)b4_locations_if([,
- b4_rhs_location(yynrhs, yyi + 1)])[);
- }
-
- /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
- private static final ]b4_int_type_for([b4_translate])[ yytranslate_table_[] =
- {
- ]b4_translate[
- };
-
- private static final ]b4_int_type_for([b4_translate])[ yytranslate_ (int t)
- {
- if (t >= 0 && t <= yyuser_token_number_max_)
- return yytranslate_table_[t];
- else
- return yyundef_token_;
- }
-
- private static final int yylast_ = ]b4_last[;
- private static final int yynnts_ = ]b4_nterms_number[;
- private static final int yyempty_ = -2;
- private static final int yyfinal_ = ]b4_final_state_number[;
- private static final int yyterror_ = 1;
- private static final int yyerrcode_ = 256;
- private static final int yyntokens_ = ]b4_tokens_number[;
-
- private static final int yyuser_token_number_max_ = ]b4_user_token_number_max[;
- private static final int yyundef_token_ = ]b4_undef_token_number[;
-
-]/* User implementation code. */
-b4_percent_code_get[]dnl
-
-}
-
-b4_epilogue
-b4_output_end()
diff --git a/src/data/location.cc b/src/data/location.cc
deleted file mode 100644
index 4082e09..0000000
--- a/src/data/location.cc
+++ /dev/null
@@ -1,299 +0,0 @@
-# C++ skeleton for Bison
-
-# Copyright (C) 2002-2007, 2009-2012 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
- input grammar:
-
-
-
-
-
-
-
-
-
>K-u| zF{eRBlLSrkO$E!`fHHh*PD> z&2>=Aegfpmf4m~j)YLHxZ{x+V5(?gV&2c84goi$IV)Zqr(0s7t_M!YuZ&Mk2$H%_X z9_s-M4%mI{(AEHmiht5iBU@>tDk=>59RaSB;b>qcv%Mr{IrOw#fUlmCE*9ch5@pcB z9Hlji?s|+~+30A-CYCq56q+s*RiQ0~?k}reah+_Be-sU(KP}j6Oej |CAZ1>WC4u2L@)D4+tSC (AnE6~1Vu=+oX^h|8p=1JP%x^#>_7 zn{X;@(;&X@uy&zeox_k2qrXRy3#Bby6mwT0ehU8<>0-g&MR%sF_QX(63fs9fP91If zLS0>CU!oq)vGW_A6`8?>rmiB3P)he@jgtWYB;2HinP9G-j#7UeS_yuXDbsrS>&L{L z;I9|qte0P8#55s>B~3yBn1wC9&>W^RGX!i!yQ16aZd;M&XULP@=JjuoWq$B`eI~nA zlxc5|r_A(+Maywz{sx(Bn~^L}Rt;!=iy#(+)TUq&WGN_^pN}}{!t+@>;`X97ky10^ zZ@oDe662}#-Jw%)Rmrv0SDd~on24WfT3{iHx=t^h=D_C^YU)f8V)OE=_X_xc!YL=? z{Q%7zxa^y7IaU?}Tn FM^j;Ez>afwfXHRKu_C#uS@N!fFVa*)4G@421 z_ixhM503`4)XVdZ3e>m7Zvy3-+u|vk`I^C=kMV=jMk?r;w1C$r`?6=wD)uI$*zR|S z78~(6^^(2OVA{48zz`|1^4~}; -s}t#K zv+qZjn*tXDP}e~N%JYy-2T`^~5|9!|<-Y|2sZrE@M)Hp^x9M#jY>j|NqBrha$tB~r zI(q+j @)7lTs-N{&ijjdv>-`_ZCcCm?;7p_J*$XqNki}jme4>Ehj3Yg 7cZ^Pnu2B3b(;=tt$85s4L0Djgu-WROelygRO|jTVDR%5JG3}&nCF8G_)JgMi zUYtArI9^tyumf8~K?iO_QV}ULl=_dLn0dTw2_y^3gK6CyPelp%YqQr8RZ8VW)V;MC zXkkh-v-5u~HiPm2ry~b&4j>OdPr`{geQOJ)v-AB(BwO!gSdtno^7Cz!)n6aW_by~( zHr9$Pl$G3WwIn;fB6-Q~cpF|s3q%#FXaPma45j`*qL_L7`_uvo7A>HnL<=Ahq%Tm| z3>a^E+zYJB9jw^K-llb(j9;>3^`!$^GMvps&nePFp|ZzyFl&suu@Gx0ky#4qA6LMd zGAe7e5=>}EXPHcSSW0t`ss5zvyGWyMR0n%dt IIqLhjilGNbqlVqHXE9JJET|nVlHxzfvqepV@zzi_i%MphQdpzjF;hW1T2E+ls^x zfxK*n-RQ)BRSxgOvB-%`UB7_5#nzLhE7V0EQdoBtFP{NT^b%G8%utFaWlmE3f*4JA zKtmkFmw#t0;t!-c>cpPcKR2ERZaNcB!->5S@SKS(D>asg-5Vp?OAQc*jEN7f zBb+=JOJf$$O2SV4cEbLVfc9*{o Pc{d{d%}$OkId>;taN~d8$(JnDJ9&_!EwZH zsgoayb#khJ_TTE{QUUGRoqX#J-_*(fOYT*V!6vv@0S4nY@~<0*a;`P!=3G}V8`eoL z$2#d!MEskbbnPwY?xZSst`47eVjSz&=NN<`_(Pt}u^ziq2XIIiT|+7TPsF-t71F@1 zQcfA)J`SJ1nP5G;i`o{S*+uD#6!#(;By-L&NQ5vU2T74zh$L`-4)%5333YOzv?lOB zW8qcGi=@4^Vnsu2IUwICY&(FYLrZr-uG?zWFkG+XtOh~D&hoGz=W2mKjKz#B%j)Yf z)kW@A*mx3L*aaBdxon=|7LHLhGlp7u&XZQ2A)XDRg_#E~dNMb}7ikg9f#)4ccblu9 z?@o|$@P@lu-S|3sXB#XGQ8>?}A4U?aYr%g-EP&*Mnn}np1+FBSY?Ng?RPwTDhMnb3 z5;H7xH3z1Wh^H5FYY%&yr=ApID{Uu`z c;-Ssn;S``I!)NLP{t1) zhXN?QE8xm_R1MQEh%#u2Joh05h8vMmyPArR6hf^UwI~5Tys%KF$O^P&aAYJQhqb21 zAHlC$w+>}Ta?QHDbdlIrAw{OgZv;I^xI~^d5@;xMBjwD+ilw_Fm>5dx$5$L1OY&Cw z*thU(B6+Hj;}Mx=CHEzo_4lPGQJi}>{D;-K*_2w#rqZ-*Do!g-Wl6+I2r>n~Lm(4! zkPexcs+A#-Q62#qy);tJLCBo=0%VjweXI%3CZg^}2Oh&Aqc{UHO08v6X<9ZFrxmBM zAgA76T`c+)U5X76u`W%f)>#|(pb>3~)eJKMGEqWUj+#r!bQIk$Hbh*FaUjsy-K;Np z@Qa=vX7MV6agA)lh0?gD-rtMP5eBw*-b2S@JsfV8==hUr_$XpvWGmyv4 UrjRw! >9uM>9 z{n&7W>V+HBXcku?*34yT#4KVva$bhV1^LIUzC S6`R*$ko|EU|vRRE3)CqbK&S68t& z*&(QPw8^9dT&aiTcXHt~yd&lEcHcRdx8d0h=f%Q0IN$e5m&nQ0+e6W~>T$I-QLF$* z1zW(%Fu0=yE1><|7QA77gs4^BunPPToW1o-8xZNopy_v}U^^7`G)%C&)Qz-|>l6BE zBheC@wpk1w?3JpWHrW(dT;ZRZTLj9!e3#J1Uo>N-_yk$`u{Ph&`=S1Ws4fO;JkRI# z@4-x0#w{YLz561se*gj9BN40m{3)WGk2^#;5`-7ch3?O**DbC)7)UOY%aD1m5b0Ts zMb#k&1et|=LkRNKQw5v?$cZdTz;1hi{}=$tuPF!Nu!#^40V^78fycn-)g7!|S}}nS z86N7fV?D@qR4;hCv7SRi^vv=TW97eSwj81I|1LrZp?dkX*_V--O{?j}yczsHe7rAV zW3NZoz(XK#vA+Ol;0^yEEGTd!&_oobHSx HnpG?S;)Y!9k1?w%tY!# zt?tSJ^`Vx!4mCU((+yfcC7+H4$02RdakAAa_8qI99qh=-R(miGW{UPvJEZPR>8^Gk z4qj!LxBly7>sj`?mmU^_-^< 1rcWg3JV~ E+TCb4?5ZawBkM-C;-W2mGlQL44pD>yB%0;Zos2d^=$WY zyTB*Jg}$tkUYX)$N^vBX;xjmvfvyIZxA#;;GX)cF#fl`$B#wk0Im=w$Bw~ptoGUg= zv0|E~*xg^gBTXKQK%W;jiaD4zbEw$C(M0oV6HT$*qiI8j)W`Wk5(u%VMsuFbPm?0D zk88ByMeGGhrtCENHCgf4A##fe;rBAPZZs6*8+iZXXSAk2fR^)r5qN?vfa7VE1Nstb zgf?-UYq7Z*S $KIIUK&hM8)p2 z^c@k~8fMn2l+b4jv^Z^a=u<0lt~!cV4u_X~aD)&t9}pO;d;)-vs8eaBZ-=HpTB21? zLYM%=k}cW{9MO&(^2TZXB+kd}R7OmK#U=*Y!h@CZ3Vt8TkdlcggO+mL`)cMuJE-hS zZ F=ZqjRIRq#QKpkMw^1kV5}jJz*d ~kO1WMb `>$$^OA=3ad~2W=IzKTv*jxvAM;ne3kLunt(E=+E%)+pJz9=s9UCUr^$D1TgQu`; zoc?*_p6L1_a}mD#* Ye^kL`&%NI|vFV NnYTnG*ZM zkkAk}pL=8|^um4}>g)~m6wAG}JGBC50rppZKCgn`xJC9gHcSO?Q|(E&&jq(QtlHzN z@uH5N?ZiUc@^@@Y)YaHUSK!13y7q@%U#!Y>bmJ}|d_aG|RsQsA_Ewb{-z*RG{e zN;j2TZ-)Td%NK$UD*V>GB2#oSY~@p+Qj?a_&SpDj!})g)58eR)Vk^%Q=Wrv0z?NIV zkGv!hiLM{*PeB<=A^h^sgsN++;4Z)po`Tr(`4>RBf09wnn=*;9q$oV|w&fsJu1Bs< zx$45;g>^>*=dCX`Up3PlOoq#1XnS1Uu3)FDr91wjmQV+l{nT(1h?b4No#w$E=dm}% zavbapvHp+T1zG&kLlTA5(PFsF#dsCN<)L+Ge3_5m?uB|Li`khH+L6*UA4D&Tlm4Q^ z%lqrWGs;tp@(T3wQc)hT*mOOLL7(qn`-T#w0IGos8LCL^lw-JzN5cThSH|C-3!wH1 zP~=MEa46=USpb>sg(mWbUck?(fFx>)0Sh}&iyc+pZK%C!RnXEFcT*lVss>L`SaNOF zH3%~2=i&=NQ$az2@6~2eI zQ)G@IpaT#C-oSTivu--0Y00%y^M|ww`VTe4Obr2lArgI;zXaR=(#yS?g}?nGfDYPd z2CuPd33Bf+C_RUDq>l=nQdV5KR0*{V_zOVPUjCXGCpN^7V+n}hihs6 n=&?o0`vHzO;_35}AM>3cKYk7Pdm|-*{*w;B(*80p&-@s+ zh?Qm^zhpmv1+&L?1dISM`|+^j2xk9aNHLXx?_wy!&4i7m5`e5W RjOszQ-#^06< G #25rX)B`I=i9C?cEWBd7scx6eHqKUA{w=ak@ zbuZE->8<3f0N(iD2;4d!^dQqbPHC> bPB!a(o<;A9eZ5xpx|10ce-SPZt6x>9prg99SK9TL^!LMQs tIvyD(zpNs;Qfhf@r!^^ zHt|MNFbjFZl(&QOf|&itD@%5@EYZyMxyXB+$ZLLL5#`N|(~>AJEFeTEKzZJ9_F7gU z80-(J)S(P^3`!RK@$p*8U{}l(jA7A2?5j#5eDIfH8m-L^ R(?r(<|R*|ah%YA7C-VHstJqYM }sHam7RfFu;X<60{ntGZG416AvRl?@{&IO?N^OP zeFssW*L+o}E)TTE)g2rr50K+Jc90vD+PPCy`2 7@0Vb_MP2;&PYJoj-$EIG_21${v*<&=NE4;3(FJO9M2utzdoP&lbnqf~8NXE) z;A&~2Hc?wrgfuaH29NBPEQ#cj3o#bY?=Gq+ DPZg8dr!}JANLcw( z5hla2)Dq%mNmRq)MOwiF1A;SgZv*;t7Cj2_kR1zsSJ3x?CZY*JDQ)6akmYOQRS?`} z@k)fvpBAq)3iu=9Rq(H$;*|`Msacr>!Rm{p{fK~ok&Q1yG)!!;<56t&C(%rb;nyG- zp@z68?1%6ltAKwMeukN`;@*^REE6;;5u`Pf|?E5YI>19!Z~#FFyt@S3UqU z8>T~2P+vf2`1hdKyu1~TRzj&G2Hr>%6|^t4`1d2Sj8CG-@_{dpTttR}&?o;BYPUob z+6Pd^I%u|V3o#g-u oElW3>&f;R%$e1McY|bXF4fvY;RBU+(`- zLO0$5aKp!2+=v7L5L}LbI0T~bU1*{)mz3C%cZ4`zMwheEU*w%7r0ntj=0f2fcRu79 zRO{uBZxQ-%R{#vne;kqgIT*Tt$i5JzuzCHaA_RT` i;pD+ULGZFY}8OZcNIJ8}X&O MOg| zS6W~pKskZ$<)S{kv>uO7Z>?>n@=X!(!wQ@!!N=ct3($8@!AEKnLBv``%6LlHMA8e) z*t4DUp@05sF~%y!Mev?CdXUFZf#*9@hA6=}FlLAnJoy`y;51T#CmTv|F}GC4p+pb7 zJgwdeS_0iE-B+(tR~wIHIKil 1K#!fT^8-x5$K_?IOSexj# zky97UccuZBN&bcfpq%HZ+0P)3KY%HVC2b}ZzMqX1*`SUGoOW$2m4z%RS`sn75O%=U z{S`hAus5uUhNzeB*T@^_mHVH%CC3zXhNt0YX?7`pOSsip(dk%^3Rv4rrW|@_nN;A` zX}%)U9DZRAszuqr0pg}^Bgs??IH$3laOOn-&;gr7dx0~D<~`MpAbiXgAHw0cz*#I% zhV|fR0ZwW2qH8CECwunu)76k-cBXc9K f?4Xf>XNS zk~CQQER>FRq%{TzX91^Ev?2{4Pb82 R24wuLwWPv{n%i*9L6y9YQIo42)E;4tt z#fQW@*(5cgns)s|ym~41hj=aZliUhKv`_=)FGK@wrv~Ie34!R Pp+%x?mODzYsJegx{&k1BZ^7% zEapv2?BG1YLUe|GD83a~f@&DE54E7jh13-Yh`FQ!YF(<27hX;Jf=!6qG$O^|W`|2L zZqm*k;9@urj&9z(_#6ZKT!T7%Ij!T)cBWzletW3j9Qd9Z*#L;x?2QBb#cN53t_C7u zYBTZBbtH<|yCCV|yn~ MOO=mIxLy5kHY!izpHL913v9d+}Ux{?;7)a7!Kv7U8n^ zdH$yWS}DIMn@mqsArNLsqKsXCLCKNaxNQK{bgr^q%{{ZMXHZu6i{F+fbXK0{kf-Zj zjOuU8Hv6n>n<-m?$Oab-(ZsRR1w*v+BFZ4zvp%67t_9Sx+(Jzc0XD;1A%Y3_jkEH; zPpnm>6z&m}wXvA;gC0|*=Y}7jaV(Rvre_x5*+dv?T!2T!L7p4?+3xftig54U`Z7RO z=Z>Ys+E^-08%xEp`OZ|nqtZk(C#FkYTn824Ca8xXlZ;0pweR9j<18VuLBhWhW$+b! zG!m_dcOc$>{htx`5go&o^c0AO#sk j~j=A;$%@4Wn6s1V5y1Ytm8(E95rs7Eot1iWObZ<+~{%VjT_^TDaM|ELCW85 z%rRYdQ;w+;{}18+P5hgbZ~ilXb5xvS8I(F8Z?F=ptA))_++v@X`e@5gBjVZdkDV3o zvDU7HHCLsB1>$Q#05!^HbLEaHlo0u`xbiuB7pJvZ$p^J|3+>$;`#UhILfY8uJ`xy< zMZtOzeEJ#D!@`isTrlD_=*B}>4o|Lz1sP_*G~Rc&VwwZ;3!l8N*SEBqcj6nLA{T59 zFt?uglLA&ju3~fs5gp@X$fNK~I0#}L{d19p)|CEH;opqP`RRvY+kxo+bCiZdoWL8I ziapdn)IE9YrH7uKZ@Yrr^O})mX?z904qw>NAGr_PRqfbBeL&Q_1jYv`|LXNMqHusH z>g&E!58N;$PzPd_4#a5DB>SJ>ZHzS*0rH|@sox@yXX&XwT0y1TMb&!h$-`3bq15B` z)LUd~pbKlj=o{?7Ls!K5;GW;2Yp?*jQ*6_nF1G2W$J%3H1IcMWxsT7H X@=fEdW3{4$g&NJC%l-UHhoQK;)6JS--WuNLvEHXBaL z+m&Ul9@!AdQF1{vHD89>7C_6Hvzr~DPJ17xFf67rNIvheH)eosS_G|A18~>^_6y+z zL#+P6qyXl(aikgaS8j#R51biO8mSt~4sY}z7#Yo=FA;f`^pk5&U`#aF>+eN-eEjs& z0z=&w!c={}$mE`Fu?9xb9_Z6TqOf9p6=lJ+;3L~w#5Rim5|h42i?Uh3BD(EL(QVGN z_W%3%uTaHV{q>|Qd-(q9yCg88Xg1%1Gf-%QVra(#(fT~ud^EznADbZ2R&~Q@%!1UU zg~4PU|G#@s$G@=-DDYG3u>z^;8&w4?6p*c zRL8$I89#rrpdP(~-UkK;tSAIW%=ASA7R5gmDJ%H=r(#IA139Va<%`&Pf=BR8KOhcq zok%wc=|Gkh{$=>&kDyeE&jJgLxDDua@*_AOIb_FTrG*`)UUi9GMaoc^t{VbVg+D+A z&Oi_~`hzMo8YgQQofAWV1)jOoLzR8&%cJUs|Awp~(7A9pKF!05u13+_7mIW{IzDI^ zL`Q|co~qu9AgX!^ss^T|>>$Sn{3U$;{cmGU_LNT8mo|Yk#L$ci*9ce@(Lqt+R1p=P zd;U!*)W-*&grIRuynarved6_Fyc(Ohr^=HSYFyHOSWTlr!D$iE&9rSJDh@EI@Y`Rd z(w;{?aD^0^rTU;?3O@b|D%mMgY@pYv;&lyP1z{qCByOEJi6-Ad+0ZjV=z?Xqc3Do) z*=ze_yL-VsY?z;7`~zE_pfZnQn+Phnhjb^l%Yy(&k!G97%NT1-M~U-pCS!IaH)`4L zRo^I_IuE|T10c8lGJmZAj5q2W*~t>X2giB+&xr8-6kcc?;L)<`6M2BgW)b-kMV9yF z%NA{4AX@}dB){zPKAcl34gk_I5=Lr&v&eW4UUf9sWhQvewXB}%I!gSw!hc+(noq?G zR)iwi+eEQ1K))0jBMbG~3f;Zcd-WPFK?XTV8>~PGA)plan!S@HxU#zO8A9{PC4=*) zti!Umb`?f!jlR)Uwdbal1->J8{|?crb0 0Xd5aRLoE4QX5umz5Lk?G!_(4 zG^mn4hA)V+^!gxPu>b^rKY4yc(gu2^{Xo%7qF{cPNZUf8OYqt_6%!0e6gWP-f=%}F zQUnrzZ^Kf-KV#PLLI00sgZ8@HRbLAX6eIz`&7;6+gA2!G1Xw9R*e`JKO}pYGZYMS& zsS_2adKnU_6APSnddu;Wy@S%@car`)nSLpW6OJHAw17uvKtGx744_|OZd*4SZPd-s zF#!|&UTpUM3hVf~&oZ5;f9a2qv$sOKl3eHD>5CII>BM>kC)Rt}>}IUzVL3e4IAA{; zpI5M6^3o>nUS`)%#S-WB4)gEDnOM@l7a*a`A{=4A8HcpNt#|V38N%Oa{$?yR(h*w& z>_HlLSS#9&Q$o{GSuP#tFhd@k2)`=h;6yrONk0KN9}drxt6xLU8x0lnnYFgYZUQCK z4EavL2e~uHoo`<;QmBD^oC|Hux3z&e;i%AAbXq8MH+fiSnH@)y%acMQx}*KRbew0g z+c>ElZl^f-PgJ+wgH4DKY9L70wY+hx8M<7-UK|t=!10L9$MN|_rwD7)Ja*zXc8*UL zbd>t$&GYx*y@Egf7)C9e;oz#WQZWU`vRNsi7OSQ8%LA9R;sjH*j*fdWz_$tTu`;}1 z%Kx$f;($|jufyjzZAJBH2u~#l=#WF(w;k-5BoB6sqGIaE8mr$<1@QMC#kj*_JJ$dG zX(D6~LSP}ps>x`dKSKm<6+yP{WdBt0{X6k(#R`jmnh4k=6AbCa7`Yny%KCSq72)9N z0YKXy@tN1FMeraxmHt)z?8GP>BkGO@u|oudKCZpcLE?$K(7wVZ3=~)m|Na#i*DDGO36 zSX;s2#15Ff!Xy3I8wfL%H8A@W2wwedo<1`Pv^eEc^BiHG 6x2qdD)ho{Dgg^Ux7MxvH(n}kg zarE!7dldH4uI9nh+bV{fpr+P|;d&_Dr?`D|+zaji7@j;4vUu#kwZM3xssI`5F=>;4 zz|$c7fXCE(`nrp2Yx+&Wi}WP5kd0)L{}Co(B#EXkR@{qegOpxP#IcDE1*g+)M=`2N zX9=Dj?17Lz^l88-EdygaVekkl#_5i%oReeZVIj=fg}6Tow38?f;>Y~oB2H4{=qfMm z{dgYfSg;3-pOtjNkw2HV5|wnilSS{Kqtp!x(TIhte6#TTEop(%?+E7kBf0!m+sVl{ z;(5-?+kPkqPI;Y7_K-~0Ff>`Mm;YK%cIIKJopM=K7wHBE2i{oH225A3gB9?KQ=rHnz!-)kaA=8`f4zL+CL$uZLIuVk_>Tz2rqvGqmOy3ffXk )}FHdIXc7+DEDbIbl>I8~^m=4IHqlaGsUu|d%5EQ#Kaq2j;HOT!YIOC~U zNf+{j^fS+>*RObifUMR*EWrV`bdqudw#=uC3ocqu#mOUDCHqh@u7~lO#L^+m14kSH zBFH9Vmr;+1^IgLPm#h=#F36i_rq#3A^-3cpni0v!I`A2|2+phiE;BBdSxuMA%!%r8 zFS)nV @6leiQ3z$w(?NF-BK*^ILTM3^2g0FnoP6W5U^fXlO`;ft+?Uj*Z! zMWP;H25wRYUD0ZipsQ0@D;!3Vw3;L+(!Y@CifEeXN*sWM3#nq~Eisb@JX#_py`}Pk z8*!o>PNXdrcMIXt7&^7Dh_o;G&0}Y#7#{lgWftQ^rFvHPFdgNmDK8X~=Y^*)PpH0C z$0WwZsc?Z`NI>*VG@r@lw=4A+`qA#Rp*ZRK2imM>FzIB QjR;BSy@=Jp$PHq-Yrp@3Y6Zzf7+qr6;Q zK&R+pZWs`E?TpPuBpK{~aXSq557Hw-k9s@|rY+=C>{OEb3vuTXnW|g|eK4n 9% E)316E ztaT|id-d?!FNq;pa9Axiur`5-iGlS5Tt?6d@;q4Kg}xS17+GGPyZ|Os?1-doI$7fd z0j?8A%4ZVW6#5QCt!bMg$|h!e940l-anVh WzPw*tb9Q0%AF$03gAo^?2#`=KRYn`+StiK?xFsfCh))q^Eo_Ne z5Dv(l=t-|qJMDZ^;6{T$(#Mh@!7}P4;}ti1v1tu#euFYIqFhB+cdc>n4NQn}-j&9+ zULr2!-V4r)CIb*$B8OU(tvGWJhfCv5mrlB{2aus=_qgh{5>ni}!`jnv21uCr-QBTn zF%!GS6-$)^=o|p5Y=TBU8hk0q%b%+jJ>@#soq|KZUPZr=W2+U8uA j|a6HL&^x=A=JVI1@dzi>!vIEhD&g9OSbwrkQ@z~QdDR;xnH5Mkk6)a~PGw P%=IpEJ0fvm9%d6?YQE;e{2{E4i39apEI=x~ )u)pJhT$HaZA9q*@UkNhNxLqu{4c=nWOE#6JHf3MQBFYvv<{cJ$-a;~rT!W~v@- z+GLgh*xQx+sf6|fdSc&``#|-hG2qd#8O#EU89<-9dh(J6_|=xsT~4qgvVvx%NZ!$- zgxE-si X5vgFfg*PaLRrUC|m-6wM1TGz|hXEBx bb*-FIJN;;py<%FW|JDO0d*QSFP=es zeiXB91mj`VuT2a^&FV%70j5yR07fBAiNWu)_RzGors_moy0#XVuHB}rU4Q}*mEOT} zHyc+H41}t;(OqqHITnia*ulp!*V2wTwa!YFPR4AgOUL4ZM7k1jTD^WB;(x*|N3n7T zv#lo%?ih*vdjN$^iDs;s#|mf9gAC;91A63f7h=O+xQnPCIDliSvW9?~N+Q5=1RC<% zTqkYB4qQO4&GS }lsi^L|>gPp`Hwb#lagd1Fm&bW2~+QI+~cbIb0)X-Y#%r_l}$apcP7n zRqh3CoyqA+jGWISr(}}VPP@S+Gh|*LA2&2F?6Xc_m+Z7@^lNa e> w(c!_bDn6apbTW z+KxCls@O! J6)kYTS93Kp;kH3o+|y4*lwTrlvf(e#u7Ldj z3pq-=@=JQlZ_g3uN4FOwieLA8)kkSmUWeBCT3m2Q9D{No&KFDjnmE*eEdE$UO2O|W z9Bc*g!d`}h-R3*JSSN!|BdkvNS-?+|%qlv+NOYyseY*N}xRkpNwo~0E6q^cl0miYP z;o`}njyy}h`*8K=NTF5333Z5=A-6i=l=_pna<&o{-ySJP{0cL(kRvX+AFD$&1=Ex; zia}w8H5-@Qb^kI30`dFP)jKQvj%~u`ve?M`$vUJ#Q;=YZdPmC_>c=gue8LHJf%515 zNyX4auI)g0JRPT?E=2UA4)xmB6Y6Ni>7Oc#au`KDN=13#-9RVU`DNsnn2-gG_aPGW zOc?S%B;$@6aW_#$W5i-r|K#eG)R~~@6uOjPu{=M5Q1wf?a?fq>yEvB7jJfK&XPpsn zAJ$D}Ce)3hQjoKV?%>-Kox*RVNWC@@nGb1%>O%K706rVfK?-EVyPapqcY|rwF9OpF z(PK3|R?#Csk2~qHlpeR>Ay^vtS@T4)M_n>zxIM}y?o?r7ZBk0;SVz$wrkjg2p~Ayl zg8QWH+GAvA(OxI@9-6#7d|A#qo9XD1nQRML95iuh8!qgVm+~6&`sMmnyV;~h;xgU^ zhSYu`rMO>6?XqZ5O(a7|SNip2N`lu%C&f$@M>B=)wZZJX4phs8sm9Va{GI?!ghD?0 zrjwl^1le&0CpxP@+8Ry C)3{$;0LML}N<{YfIgZTxeo#AlRTe99Y zr%m9!fuCazmRBI%aRvI)SQiuW3E|d3$G$-KqDyP~a4FNp=f1BdE8{h~u7 %O2ymfJ(^6EVA`AHsr~R*ucwq>qQDL#}w8;*|@ K+q!4M%>(Dqi`6;kigTUr&zGmt z<)=jxBg$stmqX`rnHa~NAbk>U14FSnvajeKa_EJ2W{qZCh(mO8afA-x5+RtbJq|j% z3!E42McZ)ksk+t)xoxPNH*7xc5A~!1rC3>W&=`r7IcR?n=8!a2Y^M;s+F #&b2hXqsg@gKT68kh*Iqn0;uqx&)&)$?2MJd{os zds?#+)UZ$tu^*pZ1bH9lNbIH>3!HRCV9-A0VEufjiWWF9;IfL*{V$8|-8j5^>o!p+ zGSN(vt0$-1Pyf0e*}G~Hi;G{DJD2Ctjb5~$_##{{gr!h1Eh(FEl>mm)WHFR*OcF_z zn}^j9NGL@1s#ZMIx<%*?HXVpYZJ pT;h(~=**he(Uxa5%d7a>^K57`I6@PiEZ?c?Xmku6Dcq<&g%?t# zv~@v9X-*;H;NF?%kp}z8y!;P^h=&eiLn0>zYOyWrUgwH(ro1s6GeDOEWR+usu1=M9 zPm0O?)36f&O@YWd(?+7d%$jEt2aw6ZP~^VXS@kRxK_q~~%BTxdwPJ@MmnNc-ZP<1} zhe2s(I@ecR%bOTliCdShA8gy#K&9R`2VeT2XdC1+l0Z|9wjDzn(Y8aL!M33?oKGdy z8zPQj>J8Wq@@M6P@W}BV72w-$X(J3W(=bG+;q`> sjHX@pl!bX?ku&n~HR)O^E5KAaQ>=>q)8Lqnkt02xRv@$C`z}=`2 zG!m2tCilv&W;75B;~ioI0Pq}w-VNy2<`K<`K^q*^mSZ(`&4H3|)3?0nwmc0cPV%28 z8vtFrDXy=?x +r-FUMaSUc?)fq&&4f5e%nB oWx(>Z(9TJSO{Kvs zA)=cj?-*o+{MQwj${(S}!}MsN2gAc)j`$VxjZ=8p!0QJVz>?kwR*P%;v&NISwAzoc zHyxf_v9Y%pla~}r YFhEddyWm8v~Qj4~K5aGW(B4n*SuM%a_v z)uR4 q`Vtu)cWt z(L6M^5=*S)2*q~L9?vI;Xe&F7^=S-r52ya0x_Vhds0PgpG%L6e3zt?_IAM1NK@N6z z^#jDpanSz&oUO=KOlK4D^Rc)Nlb#GhQ4ysXx~UhPdpzPfM*dw$X64h#M&jW(T5u8) z!AA1{X~nqt3+o)J*yssJS+EmmLQY=dCtrMOa>? wA04RpGPhf1gR#I}P=pRWMyH6X;T`myW5XG1C$m!2jWq2w zAfEWa{7tYcLA=Dh9 H_?ahU1k8S|EdR6ok>^x}@u5NU;?m#nyI_38i358l{zQl!pEw zqcl;ijeD?5P|H=cBzi$V-D2pUBt^3?wBWHoJ{*PQ_2HM3^eeQOvu_aJdW-0Eq!qf$ zUs>>2bh(W`sRv(F!G9rNA=We*3d$#?==u-o@i%%Lp+^wO41QI-btkkhFfBfQHh}Kk zwg;bVFUgnd$HmU~$u(b pm5HhEiOEY>` zB2I$zG}F#=I;IwuS^Rer&*9U>fp=*->%T~@4-LSI#!uX2*js5 zC4X84XTy*!Bbip%J^6P>0PS-V`MYR?PRP>VrrFCYfOddi#($6XTFGdy#9CB4;6Dpr z;_h~NKT|cW?&8dT!I^~$c+T{(i+N{Ldcii(5}l2JTLe~vf7k{8cpnt@?=lZPoz6dU zh=1h#ulUE-QPj5w;j9P8SLpHlsT;`gl~j8EOYuspk$fXw!IMKZJT5qrW4X!HMLG-b z0%`C98XAAVB+W8!M`FVgIS#?(AiodNEYXK z*PQR<3u=UK&Jn;T2^kZ~m6*xTLB&IQ<>Tu`#xvOT2%-doP1gYK;cOZd@qd9+i`D*F zfR7i_ GlPz_t# 5+u>k}GppKR zPDuZXmU0C&m(}#sVsd#O@i)yD2V1J8cp&tXesl2iSk^1B^4cD;tp&eG-%j`M(PBkE z;8C(7GZZa%AoMBj)sh9uOqB9{E#na_W0QfUcR>b3omW7B9zvZ$ZV`xRqA_5keojwq zk*Uc&LPsfS8Lp#EG)mAO9ea03#c3!4r((a$%9&V kB&!# zj}$hOYRb=qX9n>?T>6_@j|Jt==m 2&{BsBL+-bZrvZE4*~;D zf&>s$A#H#XzLEMZc35r1&D{BB5HY4k*cEV5hUa+gG`lG N9*6Jyb!;p!sL@ZI#NqQ_70 z7)HsUU$JErL =gYX+f>Q?d!zQo8I<1`zLyl=VC9%JYk917b}WMBUP8Hf4u zVYxu|^`poKD?)Y#5J3EX(C_Fp#*O5ca*R Y+H2_rd}jbA?Z?#CA~Fw^^ yAw>{ea9a`OUA3!rRSI2WUET{e$Ijykpf2zgtQyaa*qT|{K&V?0p32}f z?)~b9Ac1q&K>B_$(n4M2ge?~?{&SxrSOGBJdL(Kz<$*jjDT!R4;5|~_Upo! #0f$vk1O9w>R)DG`?f=-pel>_Yx32r7#A2=LZ zdLvl@A+D_8zw<%#gI`G_elZNUQt`ZKirEmEd3QdB;m7p&fF8%_@isjU;z9o9l%qln zeXe42_0WNT5%#lEG-)h3s9?zW$9Z9*s>?*ZgXe{@BoZgfDqKf>ScS-KXrz$~k2ov< z{E*~>MjE!*z|9<+Bxi?vL%reNFdY;QZg*4`f(vu2u;7YfCdyKjW*7@Dpxs$7Rfs_< zcW24eMeb8oN1~ZRNPS2~W8~BR4IJjPwMW-)v;RNpz63t1BKdzNnZN*n88Fd+L86Wd z1~nR@fdrgD4pfi{fdp4BFB~K5#f;!`1t*aVFLARgy55o>=&~!ji;749F#$}%9S#A7 zRaAEE7}S6)1VrZlt?KvY$V@KS-{=4NC7<`^y?%XGS65e8S5*%MqBX8Htn1+VHrKQ` z!y{6WFAIcl>KBV^=1u0|hOKz0#?6dWvW&{D7>2I%`uR6FufZ|5JxOYkL_8bD3(#TC zrDWd#S=R)EBO-Z{$JwbmD@NZCrhGX(d|OI1F9uh*8HPn$oZTvDoXS@@_d*i)*R$v( zl1eE}?x6%twJMW%yvpH^>2h);sVH6II?Gjoz(&@kFV_X9oK23L6AjBKG9GbsB0~vO zB@ HKC>|E<$ZhrThH$Ca5~ z8;#RUU)6fQHhhg3n>fZ-*uy^b#WYjH=P3u~tVi%+Q~ynHPIV9|&L32tvHyMkAUrmI zm9iVh*UvD3UwsM3J`9H-D}9%81_!(SDEC|QJRg$2x_uzQK)eGDSL|-OW|L(O&9xBh zq?n$k&D6k6(lS)P`39+B4aDx)8}dIxJwqONTM0wD^mRt{5OsLo^SKAewvXbX<54te zp24nJJEi-nZBiHeg{+hmQ^{-)4tXr^2-!DMVr(jT2qa~S-OjoEYZ~Q3TXHx+{a$f- z6lflAspg8m!s `QqJw|kNk^4~@iK6dfSy`LQ_5gxw@i1>l++JOBR_Eb2ZrXP-Q<#Gq+}d( z#DjVdSLT9e>jybC$%yARDh6mb!LZ4NZ?24U26woOkFR_H5e||-&O@m_PrWHm-ga~C zQjX8RBz|XU>Icfk(#TQ>qjaprq7Ep9$9&=zctzX;)krDHH9VgNd1j53BIA%9;200| zcCDsg&Sui6IelRGVT%`A;9p>jVz~nqbL@iTK$bZ#94dOi_WhmQ*h?8 1m_w?!R`cWxp)}8(juO~pP zGLNio(}>Kv)1nq&Bgiw~dHvvQgX0>LS#K`@g1dbFdQkN3hJ0U5Y9$MWvReCKt8 z?=d>Aq7*NOPEn2&h^|pa$>tKgk2WqiMiaJXB3x)8Gf#3}mzzfh!e-?-D#?!PphX6C zCJX$Ykt53RF)&f1-7GT{iKc?zg_hYMBxSSW)Cx#zNbf9}LeN4uHN#s%1bv5 O zz}9FD4ArEu)Fy{g*WO0$gM<)XV`SZ8MKtOb4tXTiDGv5*Hk+?aXYQkZr1p4bCFgN_ z8m>~~^-rmrYqZ(dBcBGiFqsvD^A(_MMehuckF~T)iRE=PQmJO=gAF}2dI@|eFTnH< zc`+&Ro&j0xYp KHUTtTs{dTS^e=&NAi?$rT5@;SMd_ z0L$M!Kk9Yl!#&U;C;AKhly8K(^%?OJ^t{*&8&>GE(P2Pg=(6u3iYZ=LP5S!=oZrLN zi&n?=s=J)X3eU|r ~yogFg(f}=463Jl^ zl_TDzl mk2_SoFr{jgjbW-_=w(=_Ln6j`RX$<`Z1Sc)yfX#VK6HH<5~~I12Ga z0hR;)1<$;llQupc*t#1z=>uBQRBqiS@eOu`#6RhFkZybFwv%pKa8pOq_U#%r_wn3p z*R5yl9T~4;Z{0*Dl;z|~CO3~XU!Y-?M9>rexeC+;awe{9Izk2~y$%F@dWKYgQ=*sP z4JT}a&w3y78c^UnaNY&tsrDPL)NUj%h^ET26oC`SF2}jqk==%a|8hqams1-5JUxbR z*n?A9Pc3r~rIK-ArsjMKtz!PisJ03g{COlLIpermWt?%oa-Q8H+d1`mwVmQ#YA39_ zKSaOkU|g4D1CEPga#=#+Q6M(NqXv-j-vI(SqUlOHNRlJFXF%oGX)GPlAAYSHAdKt& z1aHlYK{tfK45Lw;$)ZAH??o5)LPU~3>=FyX6H~s8KIq?SA0=zGb%0u{v0SUjDN42U z8rTc_VuAf-mnmM>QpCv= 2vW|@ z?FQ!S4jge&v}OKJoI2B;s=&9*o+<2_Ce7bpOymc$m!hd>u$EV%7Kw#4Lb?- =Td{b&`u;1Er7V|6bx!g4YlA{fqKc*@?VHhK>R#nxfPbaW?gQJz9y9&+Bw zhk_1_3p^C`91bn5fm#~=Y~rVS^k@bMNz4@Y6Oq#5P%OeeoOk%ZzZ+A2uV8)+64I(@ z-c0I7?}l1Af|a2}^OutD26(^OYJbc$xaJvk&b~Mg@-ozrh*qV;Db>T}9qhSl9yHOe zftd8 n)@#SwS`~=zM e{mH`!L+>%i$wg4!;rzxuUL$h6QaRN zjWHG62x-j0JO%ncG-~(c2aH hT< zSH~0mMPsJ$CSy9BI}m^u>6P7>(BZ0E`rAsq$r*vYyM`XA6Xioh>W!xK Tr#n}7LXRmM{b?WNmjhogz+U@QXrUx}@;uSHx=gShj%X dCKBPb9uW%ZV(nI{=KbX#Xh^~O^ zQu3iMY ~SaW^`e`+uaM5UCU7yO&p zZg&!C6^V(x!oZz4Qp%4(vBy;#wv>LCL(leMtk!V!RZYZU1kfLUsfjqEzScw>Ri936 zGCN|+lV630Z!2y^mDLgVfhOqT(G~uhDHz2;e+MOrzMb^y>!wS>a6-w;poWlF!_}~^ zf{2t@PqD7M46*q24aBOT6{1*5AKom(aNTkXB6HY$`bupVMf5cegGs(l!w2#8A-s~h zp?H|S{t?UFiaP2H } z@;#uyemq3~2yx*S%tJ9sUpntmiTXVblkBv}(5=|ehs@-E%o7`|+%;2#P_&9|K*cJc z(xwxed!mZJKZ17i>)Z6<7*)302WaxCmqAH}PAAId=v~pB61+eO=KTav@T&s}v=d@_ z^P%73Ns4i}2{C$5g0UQfyj@cs&{xrkF%;uBUm^y-CU6Y3ONdriTtcx1P^>64P`-Ah zszGB%C(QI=9b^OY^*CN-l+$KX?VvpivE_Cw=N6+-_|y3q&z>ZD5%1#>AQXT58ff}5 zpeVk*6t|rvXzb_j A~P+uF0n&2-{(^O`=+#eg &~f z{iH-kxKB~`$=~h=)u{5lC%>Z}J1`r| +=u`)S=01fx`*xdWeFeqn) z5kdX+dfZ;ctE4teZy@}FI295u+K*Mb}Gq4a5e{KmvR;Z=)zoIVYT`P~!{ p5`+>05+=gEpR zPzX52di_x#{8@;{61T7<&XiRJW&uPqGv8 KcSAejZObf+m=$0#naBZP;D&1tela>QXH_(w9>i#{63j_U= zS5~oq@)h`L%|H1AXjdrz QHvE&% zrUa@t^5*`@3x ~lOmn*5OG!O@+& z?>Ic2uEXX-TyB=`YAiZbC*@m}?$m|YgTM*%Hbim{Wk=;hDPJ)!4pN@RDOjxBl^-b< zLZM6(hvcg1GR~1uWIu^SYBG(4CbpVRRE9Wl4GVwC=;p?vN@$a&! D22mfN#SMV|DH)R^1j{zv3EHY1KW7>tcOy%W8|auSCNbJgk|>ZttO- z*t?uS!0L&7o-YAmDZxXY=gSV}zxb9tKKS?<*D?5CfM^dQBMp|=nh?YL5$piEEP!s* zR3GSaS_Ykam{@1=g6*aNuw6-DTMHd9kiRKGa5E5T_W *_sa81D(+fd7BZ!JxQaJUbqMeATw;mwqAbdy+6 z4*^@I5p+ZquD}nW|8andbcxTfhoPeC%RffhEe|Xhi>VDV0svn|%=XMMj1|)lW80Ae zK@Ic~)HR+NMzJ&*6_>UR0q1wNQN&N+7XpgN8!Nh@0GSM)o @gN4#q=bki=-3He)s|np?$$fcN%tA3<@805dXO>8*)X6>Ch+f zRVfGOMwJ?RFZGTf6$cPzv-3FmBN~b6NE5t`z_cZX;TDL%z+dub>T$yC;G8|`W1PUl zsrLc7PzyfpB5?}|)BoobfF{@TrowM9Ardt${2UJwl&mkV_S*2U=Gb=h%Vwxx?~k&^ zigTX_O+WH13C=wexd+d9 J_fFfnUi^bV*fVGcPJ-ViiEMQ_CS_KAJt=Q zQV)51fD??hC!+`Q#JK$}^Z=O)V k}YG}mtS~u=k6KHR3KZN`mBZAnF`3` zc?ya72|*1~>zEq!$4_h2;DMl`<@r3bgNtsH8eA5XSKHL!TTseC)NU6wSP_)04Qeo( z5?l;57!p(>QG v561OL7~(7aU=|9;sM)T%b|?@vK_ zwT*ud1f^*g{tXOD)&~Clvi~CSZ!KjIFm1Puf6oP_k@)xK?jYbw`WG+>H6ww8gEC8H z^vI^nlC+g_5>0t-el5+^a_~PW>%?bh2Y-j?xZO;q-HNh0Itk4rw`I&Jc5o6J)Emk_ zca+=F6ji>EvU7%E@Xa$)lxGat%k_?)o}>q94G=vQcg#`^U9?97r&4y2OqSAPpJNkb zC2u#xVQZb2xJe@stmr2% (Z{H^KBJeIL(n3HWJkeslSXR;N};UtZhkS9Ck&JGTYp)i!+z4@%Q6`m!CwI&ieN zL0?{@1Z~f6p+@9XZ_;Z05UhASyuP)kW5mft&sSc)5lf%YtYxfU9yh|NTTmXaQ6Aj+ z$ish453cPMNHHBGcPLORUN(YhU_6`vmH)X>abcoQ<(F+|VG(E^E(uEKj@2d11 zD(mBRr EK(EczL z4q@R7ktx3c7e#|`b%Egk54e;2X~5~_e8KZk;98|u9l#ziPmSbh;`(jD1MXkUxn}A! zUBc>k#wAi5LtO#})O!)$S{Z-e)w~RviW**REzR$O(hvt<{{S}sT1z$}DA_1VHc%#0 zo9;iq^`ZpL2cjfte8`=ts2q}3s2tEV&|U#*z?!QC!AhV=Wh|7}{6#AHEK>Q@6Rsn9 z${SnI87zmyo^bpZN~2udO@SokN?0DFX7O87KA#(1YUtw=r6|?+vI+ k3I8Wqu zB@A{%D6 Cfj%_`!SQVSVF z2z|M!4T;3B1_B~;n+AwQor^okc$qStY?6v`MQ@OHNQNd Sy6 z%tKQB0Nj5Ag!?;O2R^szUOQ;jEyM4{%q7GHVm^_wef##|IK0`0Q6Y>%s*_=3on=Pi z^miPvb^^X?Vc#N*w9t((k0S45+p&eChfo)r@yn$%7d}}W(P?!nR;kgWIC`vq^k>xQ z#2je37s(Q*1Z`{b{1@vxh=VpxYBG*aMcSGS@dSPnPr>zb0lznv@z2R+{L@6r2g<1b z993!-^&Db$_TgRJZ2b_M>XoE2tZ+|&R}x1|rt5t8Q`_h?5J;^PcZjh#mV@+d$o4V) zKO%9*l*wY48pcdD*U!fLB~l-y5@jm~bL^Y(o3FFet9-HV!y~Lq#DGoI(@{1tl^@Ko z%bMG$Mm+4Fie5OCIJHqta)V6b&N!wfX!K7&FEYWWT7q-@V1`Aenjmt6U%lu>CRnT` z*rp{o3D-)P(s$B8SNEw7y5}AguNoxxLHdjGD4};LN(ML-SO*e)SGB+08QaBgIWh>n zl?Z*MO LWUVR4Yb z$$8#X7+M~$`<7>zW8bvCLiw76u>lN|T%nw)3TBvg07R_`oL&sdtL+uaeL-p3wL-Z* zC|MgTlrx~#L5z`lLN>`WTiJo$;7v+}GIMni8&fJ4ZVw^1hQXD4?sjorukN9a#qOk$ zh_|-E)5HuiZ(ZY*rsiAF*rA-!S=&c771klLx uPxB^#*6P