From 0e90aa040c0708ea50bdd9ae5d2f5c98088007e8 Mon Sep 17 00:00:00 2001
From: Lev Walkin <vlm@lionet.info>
Date: Tue, 19 Mar 2013 16:17:13 -0700
Subject: [PATCH] parsing-level support for [[ extension brackets ]]

---
 libasn1parser/asn1p_expr.c |   12 +
 libasn1parser/asn1p_expr.h |    1 +
 libasn1parser/asn1p_l.c    | 2770 +++++++++----------
 libasn1parser/asn1p_l.l    |    3 +
 libasn1parser/asn1p_list.h |    8 +
 libasn1parser/asn1p_y.c    | 5167 +++++++++++++++++++-----------------
 libasn1parser/asn1p_y.h    |  461 ++--
 libasn1parser/asn1p_y.y    |    5 +
 8 files changed, 4443 insertions(+), 3984 deletions(-)

diff --git a/libasn1parser/asn1p_expr.c b/libasn1parser/asn1p_expr.c
index 8760066d..71c1636d 100644
--- a/libasn1parser/asn1p_expr.c
+++ b/libasn1parser/asn1p_expr.c
@@ -214,6 +214,18 @@ asn1p_expr_add(asn1p_expr_t *to, asn1p_expr_t *what) {
 	what->parent_expr = to;
 }
 
+/*
+ * Add inner expressions as members of another.
+ */
+void
+asn1p_expr_add_many(asn1p_expr_t *to, asn1p_expr_t *from_what) {
+	asn1p_expr_t *expr;
+	TQ_FOR(expr, &(from_what->members), next) {
+        expr->parent_expr = to;
+    }
+	TQ_CONCAT(&(to->members), &(from_what->members), next);
+}
+
 
 /*
  * Destruct the types collection structure.
diff --git a/libasn1parser/asn1p_expr.h b/libasn1parser/asn1p_expr.h
index 4e12c898..89d939a0 100644
--- a/libasn1parser/asn1p_expr.h
+++ b/libasn1parser/asn1p_expr.h
@@ -278,6 +278,7 @@ asn1p_expr_t *asn1p_expr_clone_with_resolver(asn1p_expr_t *,
 	asn1p_expr_t *(*resolver)(asn1p_expr_t *to_resolve, void *resolver_arg),
 	void *resolver_arg);
 void asn1p_expr_add(asn1p_expr_t *to, asn1p_expr_t *what);
+void asn1p_expr_add_many(asn1p_expr_t *to, asn1p_expr_t *from_what);
 void asn1p_expr_free(asn1p_expr_t *expr);
 
 #define	TAG2STRING_BUFFER_SIZE	64	/* buf should be at least this big */
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index abae52da..cc4a6dd2 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -1,6 +1,6 @@
-#line 2 "asn1p_l.c"
+#line 2 "lex.yy.c"
 
-#line 4 "asn1p_l.c"
+#line 4 "lex.yy.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -214,8 +214,13 @@ typedef unsigned int flex_uint32_t;
 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 asn1p_leng;
+extern yy_size_t asn1p_leng;
 /* %endif */
 
 /* %if-c-only */
@@ -237,7 +242,7 @@ extern FILE *asn1p_in, *asn1p_out;
      */
     #define  YY_LESS_LINENO(n) \
             do { \
-                int yyl;\
+                yy_size_t yyl;\
                 for ( yyl = n; yyl < asn1p_leng; ++yyl )\
                     if ( asn1p_text[yyl] == '\n' )\
                         --asn1p_lineno;\
@@ -259,11 +264,6 @@ extern FILE *asn1p_in, *asn1p_out;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -286,7 +286,7 @@ struct yy_buffer_state
 	/* Number of characters read into yy_ch_buf, not including EOB
 	 * characters.
 	 */
-	int yy_n_chars;
+	yy_size_t 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
@@ -370,8 +370,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 
 /* yy_hold_char holds the character lost when asn1p_text is formed. */
 static char yy_hold_char;
-static int yy_n_chars;		/* number of characters read into yy_ch_buf */
-int asn1p_leng;
+static yy_size_t yy_n_chars;		/* number of characters read into yy_ch_buf */
+yy_size_t asn1p_leng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -402,7 +402,7 @@ static void asn1p__init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE asn1p__scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE asn1p__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE asn1p__scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE asn1p__scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 /* %endif */
 
@@ -470,15 +470,15 @@ static void yy_fatal_error (yyconst char msg[]  );
 #define YY_DO_BEFORE_ACTION \
 	(yytext_ptr) = yy_bp; \
 /* %% [2.0] code to fiddle asn1p_text and asn1p_leng for yymore() goes here \ */\
-	asn1p_leng = (size_t) (yy_cp - yy_bp); \
+	asn1p_leng = (yy_size_t) (yy_cp - yy_bp); \
 	(yy_hold_char) = *yy_cp; \
 	*yy_cp = '\0'; \
 /* %% [3.0] code to copy yytext_ptr to asn1p_text[] 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 138
-#define YY_END_OF_BUFFER 139
+#define YY_NUM_RULES 140
+#define YY_END_OF_BUFFER 141
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -486,233 +486,234 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_acclist[1264] =
+static yyconst flex_int16_t yy_acclist[1272] =
     {   0,
-      139,  137,  138,  132,  137,  138,  132,  138,  135,  137,
-      138,   19,  137,  138,  135,  137,  138,  137,  138,  135,
-      137,  138,  137,  138,  137,  138,  135,  137,  138,  137,
-      138,   33,  137,  138,   32,  137,  138,  135,  137,  138,
-      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
-      120,  121,  137,  138,  120,  121,  137,  138,  120,  121,
-      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
-      120,  121,  137,  138,  120,  121,  137,  138,  120,  121,
-      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
-      120,  121,  137,  138,  120,  121,  137,  138,  120,  121,
-
-      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
-      120,  121,  137,  138,  120,  121,  137,  138,  119,  137,
-      138,  135,  137,  138,    9,  137,  138,    6,  138,    6,
-      137,  138,    8,  137,  138,    8,  137,  138,   11,   13,
-      137,  138,   11,  138,   13,  137,  138,   13,  137,  138,
-       13,  137,  138,   21,  137,  138,   21,  138,   22,  137,
-      138,   16,  137,  138,   16,  138,   18,  137,  138,   18,
-      137,  138,   14,  137,  138,   15,  137,  138,   25,   27,
-      137,  138,   27,  137,  138,   28,  138,   25,   26,   27,
-      137,  138,   25,   26,   27,  137,  138,  130,  137,  138,
-
-      130,  138,  137,  138,  126,  137,  138,  137,  138,  137,
-      138,  125,  137,  138,  128,  137,  138,  129,  137,  138,
-      127,  137,  138,  131,  137,  138,  132,   19,   19,  117,
-      118,    5,   31,  124,   10,   34,   32,   34,  120,  121,
-      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      121,  120,  121,  120,  121,  120,  121,  120,  121,   44,
+      141,  139,  140,  132,  139,  140,  132,  140,  137,  139,
+      140,   19,  139,  140,  137,  139,  140,  139,  140,  137,
+      139,  140,  139,  140,  139,  140,  137,  139,  140,  139,
+      140,   33,  139,  140,   32,  139,  140,  137,  139,  140,
+      139,  140,  120,  121,  139,  140,  120,  121,  139,  140,
+      120,  121,  139,  140,  120,  121,  139,  140,  120,  121,
+      139,  140,  120,  121,  139,  140,  120,  121,  139,  140,
+      120,  121,  139,  140,  120,  121,  139,  140,  120,  121,
+      139,  140,  120,  121,  139,  140,  120,  121,  139,  140,
+      120,  121,  139,  140,  120,  121,  139,  140,  120,  121,
+
+      139,  140,  120,  121,  139,  140,  120,  121,  139,  140,
+      120,  121,  139,  140,  120,  121,  139,  140,  137,  139,
+      140,  137,  139,  140,  119,  139,  140,  137,  139,  140,
+        9,  139,  140,    6,  140,    6,  139,  140,    8,  139,
+      140,    8,  139,  140,   11,   13,  139,  140,   11,  140,
+       13,  139,  140,   13,  139,  140,   13,  139,  140,   21,
+      139,  140,   21,  140,   22,  139,  140,   16,  139,  140,
+       16,  140,   18,  139,  140,   18,  139,  140,   14,  139,
+      140,   15,  139,  140,   25,   27,  139,  140,   27,  139,
+      140,   28,  140,   25,   26,   27,  139,  140,   25,   26,
+
+       27,  139,  140,  130,  139,  140,  130,  140,  139,  140,
+      126,  139,  140,  139,  140,  139,  140,  125,  139,  140,
+      128,  139,  140,  129,  139,  140,  127,  139,  140,  131,
+      139,  140,  132,   19,   19,  117,  118,    5,   31,  124,
+       10,   34,   32,   34,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,   44,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  121,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  120,  121,  120,  121,  121,  120,
 
-      121,  120,  121,   89,  120,  121,  120,  121,  121,  120,
-      121,  120,  121,  120,  121,  120,  121,  121,  120,  121,
+      120,  121,  120,  121,  121,  120,  121,  120,  121,   89,
+      120,  121,  120,  121,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  121,  120,  121,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  121,  120,  121,  120,  121,  121,
-      121,  120,  121,  119,    9,    7,    7,   12,   21,   20,
-       16,   25,   25,   26,   25,   26,  130,    5,  125,  136,
-      117,  118,   31,   34,  123,   34,  122,  120,  121,  121,
-      120,  121,   36,  120,  121,   37,  120,  121,  120,  121,
-      120,  121,  120,  121,   41,  120,  121,  120,  121,  120,
-      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  121,  121,  120,  121,  135,
+      136,  119,    9,    7,    7,   12,   21,   20,   16,   25,
+       25,   26,   25,   26,  130,    5,  125,  138,  117,  118,
+       31,   34,  123,   34,  122,  120,  121,  121,  120,  121,
+       36,  120,  121,   37,  120,  121,  120,  121,  120,  121,
+      120,  121,   41,  120,  121,  120,  121,  120,  121,  120,
 
-      121,  120,  121,  120,  121,  120,  121,   58,  120,  121,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,   58,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  121,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  120,  121,  120,  121,   81,  120,
-      121,   82,  120,  121,  120,  121,  121,  120,  121,  120,
-      121,  120,  121,  121,  120,  121,   92,  120,  121,  120,
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,   81,  120,  121,   82,
+      120,  121,  120,  121,  121,  120,  121,  120,  121,  120,
+      121,  121,  120,  121,   92,  120,  121,  120,  121,  120,
+      121,  120,  121,  121,  120,  121,  120,  121,  120,  121,
+      100,  120,  121,  120,  121,  120,  121,  120,  121,  120,
       121,  120,  121,  120,  121,  121,  120,  121,  120,  121,
-      120,  121,  100,  120,  121,  120,  121,  120,  121,  120,
-      121,  120,  121,  120,  121,  120,  121,  121,  120,  121,
-      120,  121,  120,  121,  121,  121,  121,  120,  121,  119,
 
-        3,   17,   25,   26,   24,   25,   26,  125,  117,  118,
-       30,   29,    2,    1,  120,  121,  120,  121,  120,  121,
+      120,  121,  121,  121,  121,  120,  121,  119,    3,   17,
+       25,   26,   24,   25,   26,  125,  117,  118,   30,   29,
+        2,    1,  120,  121,  120,  121,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  120,  121,  120,  121,   66,  120,
-      121,  121,  121,  120,  121,  120,  121,  120,  121,  120,
+      120,  121,  120,  121,  120,  121,   66,  120,  121,  121,
       121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
-      121,   84,  120,  121,  121,  120,  121,  120,  121,  120,
-      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,   84,
+      120,  121,  121,  120,  121,  120,  121,  120,  121,  121,
 
-      121,   97,  120,  121,  120,  121,  120,  121,  101,  120,
-      121,  120,  121,  120,  121,  120,  121,  105,  120,  121,
-      107,  120,  121,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  121,  121,  121,  116,  120,  121,
-        3,   25,   26,  120,  121,  120,  121,  120,  121,   40,
-      120,  121,  121,  120,  121,  120,  121,  120,  121,   47,
+      120,  121,  120,  121,  120,  121,  120,  121,  121,   97,
+      120,  121,  120,  121,  120,  121,  101,  120,  121,  120,
+      121,  120,  121,  120,  121,  105,  120,  121,  107,  120,
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  121,  121,  121,  116,  120,  121,    3,   25,
+       26,  120,  121,  120,  121,  120,  121,   40,  120,  121,
+      121,  120,  121,  120,  121,  120,  121,   47,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  120,  121,  120,  121,   65,  120,
-      121,  121,  121,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,   65,  120,  121,  121,
 
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
       120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,  120,  121,  121,  120,  121,   88,  120,  121,
-      120,  121,  121,  120,  121,  120,  121,  120,  121,  121,
-      120,  121,  120,  121,  120,  121,  120,  121,  121,  121,
-      108,  120,  121,  120,  121,  120,  121,  121,  120,  121,
-      121,  121,  121,  133,   25,   26,   35,  120,  121,  120,
-      121,  120,  121,  121,  120,  121,  120,  121,   46,  120,
-      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      120,  121,  121,  120,  121,   88,  120,  121,  120,  121,
+      121,  120,  121,  120,  121,  120,  121,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  121,  121,  108,  120,
+      121,  120,  121,  120,  121,  121,  120,  121,  121,  121,
+      121,  133,   25,   26,   35,  120,  121,  120,  121,  120,
+      121,  121,  120,  121,  120,  121,   46,  120,  121,  120,
       121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
-      121,   60,  120,  121,  120,  121,  120,  121,  120,  121,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,   60,
 
-      120,  121,  121,  121,  121,  120,  121,  120,  121,  120,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      121,  121,  121,  120,  121,  120,  121,  120,  121,  120,
       121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
-      121,  120,  121,  120,  121,  121,   86,  120,  121,  120,
-      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      121,  120,  121,  120,  121,  102,  120,  121,  103,  120,
-      121,  121,  121,  109,  120,  121,  120,  121,  121,  121,
-      121,  121,  121,   25,   26,  120,  121,  120,  121,  121,
-       43,  120,  121,  120,  121,  120,  121,  120,  121,  120,
-      121,   52,  120,  121,   53,  120,  121,  120,  121,  120,
-      121,   56,  120,  121,  120,  121,  120,  121,  120,  121,
-
-       62,  120,  121,  120,  121,  120,  121,  121,  121,  121,
-      120,  121,  120,  121,   73,  120,  121,   74,  120,  121,
-      120,  121,  120,  121,  120,  121,   78,  120,  121,  120,
-      121,  120,  121,  120,  121,  121,  120,  121,  121,   91,
-      120,  121,  120,  121,   94,  120,  121,   96,  120,  121,
-      121,  120,  121,  120,  121,  121,  121,  120,  121,  112,
-      121,  121,  121,  121,  121,   25,   26,  120,  121,  120,
-      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
-      120,  121,   55,  120,  121,  120,  121,  120,  121,   61,
-      120,  121,  120,  121,   64,  120,  121,  121,  121,  121,
-
-      121,  120,  121,   72,  120,  121,   75,  120,  121,   76,
-      120,  121,  120,  121,  120,  121,  121,  120,  121,  121,
-       90,  120,  121,  121,  120,  121,  121,  120,  121,   99,
-      120,  121,  121,  121,  120,  121,  121,  121,  121,  121,
-       25,   26,  120,  121,   39,  120,  121,   42,  121,   45,
-      120,  121,   48,  120,  121,  120,  121,  120,  121,  120,
-      121,  120,  121,  120,  121,  121,  121,  121,   70,  121,
-      120,  121,  120,  121,  120,  121,  121,  120,  121,  121,
-      121,  120,  121,  121,  104,  121,  121,  110,  120,  121,
-      121,  121,  121,  121,  134,   25,  120,  121,   49,  120,
-
-      121,  120,  121,   51,  120,  121,  120,  121,  120,  121,
-       59,  120,  121,  120,  121,  121,  121,  121,   71,  120,
-      121,  120,  121,  120,  121,  121,  120,  121,  121,  121,
-      120,  121,  121,  120,  121,  121,  113,  121,  121,  121,
-      121,   25,   38,  120,  121,   50,  120,  121,   54,  120,
+      121,  120,  121,  121,   86,  120,  121,  120,  121,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  121,  120,
+      121,  120,  121,  102,  120,  121,  103,  120,  121,  121,
+      121,  109,  120,  121,  120,  121,  121,  121,  121,  121,
+      121,   25,   26,  120,  121,  120,  121,  121,   43,  120,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,   52,
+      120,  121,   53,  120,  121,  120,  121,  120,  121,   56,
+
+      120,  121,  120,  121,  120,  121,  120,  121,   62,  120,
       121,  120,  121,  120,  121,  121,  121,  121,  120,  121,
-      120,  121,  121,  120,  121,  121,  121,  120,  121,  121,
-      120,  121,  121,  121,  121,  121,   25,  120,  121,  120,
-      121,  121,  121,  121,   77,  120,  121,   79,  120,  121,
-       80,  121,  120,  121,  121,  121,  120,  121,  121,   98,
-
-      120,  121,  121,  121,  121,  121,   25,  120,  121,   63,
-      120,  121,   68,  121,  121,   69,  121,  120,  121,   85,
-      121,  121,   93,  120,  121,  121,  106,  121,  121,  121,
-      115,  121,   25,  120,  121,  121,   83,  120,  121,  121,
-      121,  121,  114,  121,   25,  120,  121,   67,  121,  121,
-       95,  121,  111,  121,   25,   57,  120,  121,   87,  121,
-       23,   25,    4
+      120,  121,   73,  120,  121,   74,  120,  121,  120,  121,
+      120,  121,  120,  121,   78,  120,  121,  120,  121,  120,
+      121,  120,  121,  121,  120,  121,  121,   91,  120,  121,
+      120,  121,   94,  120,  121,   96,  120,  121,  121,  120,
+      121,  120,  121,  121,  121,  120,  121,  112,  121,  121,
+      121,  121,  121,   25,   26,  120,  121,  120,  121,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+       55,  120,  121,  120,  121,  120,  121,   61,  120,  121,
+
+      120,  121,   64,  120,  121,  121,  121,  121,  121,  120,
+      121,   72,  120,  121,   75,  120,  121,   76,  120,  121,
+      120,  121,  120,  121,  121,  120,  121,  121,   90,  120,
+      121,  121,  120,  121,  121,  120,  121,   99,  120,  121,
+      121,  121,  120,  121,  121,  121,  121,  121,   25,   26,
+      120,  121,   39,  120,  121,   42,  121,   45,  120,  121,
+       48,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  121,  121,  121,   70,  121,  120,  121,
+      120,  121,  120,  121,  121,  120,  121,  121,  121,  120,
+      121,  121,  104,  121,  121,  110,  120,  121,  121,  121,
+
+      121,  121,  134,   25,  120,  121,   49,  120,  121,  120,
+      121,   51,  120,  121,  120,  121,  120,  121,   59,  120,
+      121,  120,  121,  121,  121,  121,   71,  120,  121,  120,
+      121,  120,  121,  121,  120,  121,  121,  121,  120,  121,
+      121,  120,  121,  121,  113,  121,  121,  121,  121,   25,
+       38,  120,  121,   50,  120,  121,   54,  120,  121,  120,
+      121,  120,  121,  121,  121,  121,  120,  121,  120,  121,
+      121,  120,  121,  121,  121,  120,  121,  121,  120,  121,
+      121,  121,  121,  121,   25,  120,  121,  120,  121,  121,
+      121,  121,   77,  120,  121,   79,  120,  121,   80,  121,
+
+      120,  121,  121,  121,  120,  121,  121,   98,  120,  121,
+      121,  121,  121,  121,   25,  120,  121,   63,  120,  121,
+       68,  121,  121,   69,  121,  120,  121,   85,  121,  121,
+       93,  120,  121,  121,  106,  121,  121,  121,  115,  121,
+       25,  120,  121,  121,   83,  120,  121,  121,  121,  121,
+      114,  121,   25,  120,  121,   67,  121,  121,   95,  121,
+      111,  121,   25,   57,  120,  121,   87,  121,   23,   25,
+        4
     } ;
 
-static yyconst flex_int16_t yy_accept[743] =
+static yyconst flex_int16_t yy_accept[747] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    2,    4,    7,
         9,   12,   15,   18,   20,   23,   25,   27,   30,   32,
        35,   38,   41,   43,   47,   51,   55,   59,   63,   67,
        71,   75,   79,   83,   87,   91,   95,   99,  103,  107,
-      111,  115,  119,  122,  125,  128,  130,  133,  136,  139,
-      143,  145,  148,  151,  154,  157,  159,  162,  165,  167,
-      170,  173,  176,  179,  183,  186,  188,  193,  198,  201,
-      203,  205,  208,  210,  212,  215,  218,  221,  224,  227,
-      227,  228,  229,  230,  230,  231,  231,  232,  232,  232,
-
-      232,  233,  234,  235,  236,  236,  237,  237,  239,  239,
-      239,  241,  243,  245,  247,  249,  251,  252,  254,  256,
-      258,  260,  263,  265,  267,  269,  271,  273,  275,  277,
-      279,  281,  282,  283,  285,  287,  289,  291,  293,  295,
-      297,  299,  300,  302,  304,  307,  309,  310,  312,  314,
-      316,  318,  319,  321,  323,  325,  327,  329,  331,  333,
-      335,  336,  338,  340,  341,  342,  344,  344,  345,  345,
-      345,  345,  346,  347,  348,  349,  350,  351,  352,  352,
-      353,  355,  357,  358,  359,  359,  360,  361,  361,  361,
-      362,  362,  363,  363,  363,  363,  363,  365,  366,  367,
-
-      367,  368,  370,  371,  373,  376,  379,  381,  383,  383,
-      385,  388,  390,  392,  394,  396,  398,  400,  402,  404,
-      406,  408,  411,  413,  415,  417,  419,  421,  423,  424,
-      425,  427,  429,  431,  433,  435,  437,  439,  442,  445,
-      447,  448,  450,  452,  454,  455,  457,  460,  462,  464,
-      466,  467,  469,  471,  473,  476,  478,  480,  482,  484,
-      486,  488,  489,  491,  493,  495,  496,  497,  498,  500,
-      501,  501,  501,  502,  503,  505,  508,  509,  509,  510,
-      511,  512,  513,  514,  515,  515,  515,  515,  517,  519,
-      521,  523,  525,  527,  529,  531,  533,  535,  537,  539,
+      111,  115,  119,  122,  125,  128,  131,  134,  136,  139,
+      142,  145,  149,  151,  154,  157,  160,  163,  165,  168,
+      171,  173,  176,  179,  182,  185,  189,  192,  194,  199,
+      204,  207,  209,  211,  214,  216,  218,  221,  224,  227,
+      230,  233,  233,  234,  235,  236,  236,  237,  237,  238,
+
+      238,  238,  238,  239,  240,  241,  242,  242,  243,  243,
+      245,  245,  245,  247,  249,  251,  253,  255,  257,  258,
+      260,  262,  264,  266,  269,  271,  273,  275,  277,  279,
+      281,  283,  285,  287,  288,  289,  291,  293,  295,  297,
+      299,  301,  303,  305,  306,  308,  310,  313,  315,  316,
+      318,  320,  322,  324,  325,  327,  329,  331,  333,  335,
+      337,  339,  341,  342,  344,  346,  347,  348,  350,  351,
+      352,  352,  353,  353,  353,  353,  354,  355,  356,  357,
+      358,  359,  360,  360,  361,  363,  365,  366,  367,  367,
+      368,  369,  369,  369,  370,  370,  371,  371,  371,  371,
+
+      371,  373,  374,  375,  375,  376,  378,  379,  381,  384,
+      387,  389,  391,  391,  393,  396,  398,  400,  402,  404,
+      406,  408,  410,  412,  414,  416,  419,  421,  423,  425,
+      427,  429,  431,  432,  433,  435,  437,  439,  441,  443,
+      445,  447,  450,  453,  455,  456,  458,  460,  462,  463,
+      465,  468,  470,  472,  474,  475,  477,  479,  481,  484,
+      486,  488,  490,  492,  494,  496,  497,  499,  501,  503,
+      504,  505,  506,  508,  509,  509,  509,  510,  511,  513,
+      516,  517,  517,  518,  519,  520,  521,  522,  523,  523,
+      523,  523,  525,  527,  529,  531,  533,  535,  537,  539,
 
       541,  543,  545,  547,  549,  551,  553,  555,  557,  559,
-      562,  563,  564,  566,  568,  570,  572,  574,  576,  578,
-      580,  582,  585,  586,  588,  590,  592,  593,  595,  597,
-      599,  601,  602,  605,  607,  609,  612,  614,  616,  618,
-      621,  624,  625,  627,  629,  631,  633,  635,  636,  637,
-      638,  641,  641,  641,  641,  641,  642,  644,  644,  646,
-      648,  650,  653,  654,  656,  658,  660,  663,  665,  667,
-      669,  671,  673,  675,  677,  679,  681,  683,  685,  687,
-      689,  692,  693,  694,  695,  697,  699,  701,  703,  705,
-      707,  709,  711,  713,  715,  716,  718,  721,  723,  724,
-
-      726,  726,  728,  730,  731,  733,  735,  737,  739,  740,
-      741,  744,  746,  748,  749,  751,  752,  753,  754,  754,
-      754,  755,  757,  757,  760,  762,  764,  765,  767,  769,
-      772,  774,  776,  778,  780,  782,  784,  786,  788,  790,
-      792,  795,  797,  799,  801,  803,  804,  805,  806,  808,
-      810,  812,  814,  816,  818,  820,  822,  824,  826,  826,
-      827,  830,  832,  833,  835,  837,  839,  841,  842,  844,
-      846,  849,  852,  853,  854,  857,  859,  860,  861,  862,
-      863,  864,  864,  864,  866,  866,  868,  870,  871,  874,
-      876,  878,  880,  882,  885,  888,  890,  892,  895,  897,
-
-      899,  901,  904,  906,  908,  909,  910,  911,  913,  915,
-      918,  921,  923,  925,  927,  930,  932,  934,  936,  937,
-      939,  940,  943,  945,  948,  951,  952,  954,  956,  957,
-      958,  960,  962,  963,  964,  965,  966,  966,  968,  968,
-      970,  972,  973,  975,  977,  979,  981,  983,  986,  988,
-      990,  993,  995,  998,  999, 1000, 1001, 1002, 1004, 1007,
-     1010, 1013, 1015, 1017, 1018, 1020, 1021, 1024, 1025, 1027,
-     1028, 1030, 1033, 1034, 1035, 1037, 1038, 1039, 1040, 1041,
-     1041, 1041, 1043, 1043, 1045, 1048, 1050, 1053, 1056, 1058,
-     1060, 1062, 1062, 1064, 1066, 1067, 1068, 1069, 1071, 1073,
-
-     1075, 1077, 1078, 1080, 1081, 1082, 1084, 1085, 1085, 1087,
-     1088, 1091, 1092, 1093, 1094, 1095, 1095, 1096, 1097, 1097,
-     1099, 1102, 1104, 1107, 1109, 1111, 1114, 1116, 1117, 1118,
-     1119, 1122, 1124, 1126, 1127, 1129, 1130, 1131, 1133, 1134,
-     1136, 1137, 1139, 1140, 1141, 1142, 1143, 1143, 1146, 1149,
-     1152, 1154, 1156, 1157, 1158, 1159, 1161, 1163, 1164, 1166,
-     1167, 1168, 1170, 1171, 1173, 1174, 1175, 1176, 1177, 1178,
-     1178, 1180, 1182, 1183, 1184, 1185, 1188, 1191, 1193, 1195,
-     1196, 1197, 1199, 1200, 1203, 1204, 1205, 1206, 1207, 1208,
-     1208, 1210, 1213, 1215, 1216, 1218, 1220, 1222, 1223, 1226,
-
-     1227, 1229, 1230, 1231, 1233, 1234, 1234, 1236, 1237, 1240,
-     1241, 1242, 1243, 1245, 1246, 1246, 1248, 1250, 1251, 1253,
-     1255, 1256, 1256, 1259, 1261, 1263, 1263, 1263, 1263, 1263,
-     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
-     1264, 1264
+      561,  563,  565,  567,  570,  571,  572,  574,  576,  578,
+      580,  582,  584,  586,  588,  590,  593,  594,  596,  598,
+      600,  601,  603,  605,  607,  609,  610,  613,  615,  617,
+      620,  622,  624,  626,  629,  632,  633,  635,  637,  639,
+      641,  643,  644,  645,  646,  649,  649,  649,  649,  649,
+      650,  652,  652,  654,  656,  658,  661,  662,  664,  666,
+      668,  671,  673,  675,  677,  679,  681,  683,  685,  687,
+      689,  691,  693,  695,  697,  700,  701,  702,  703,  705,
+      707,  709,  711,  713,  715,  717,  719,  721,  723,  724,
+
+      726,  729,  731,  732,  734,  734,  736,  738,  739,  741,
+      743,  745,  747,  748,  749,  752,  754,  756,  757,  759,
+      760,  761,  762,  762,  762,  763,  765,  765,  768,  770,
+      772,  773,  775,  777,  780,  782,  784,  786,  788,  790,
+      792,  794,  796,  798,  800,  803,  805,  807,  809,  811,
+      812,  813,  814,  816,  818,  820,  822,  824,  826,  828,
+      830,  832,  834,  834,  835,  838,  840,  841,  843,  845,
+      847,  849,  850,  852,  854,  857,  860,  861,  862,  865,
+      867,  868,  869,  870,  871,  872,  872,  872,  874,  874,
+      876,  878,  879,  882,  884,  886,  888,  890,  893,  896,
+
+      898,  900,  903,  905,  907,  909,  912,  914,  916,  917,
+      918,  919,  921,  923,  926,  929,  931,  933,  935,  938,
+      940,  942,  944,  945,  947,  948,  951,  953,  956,  959,
+      960,  962,  964,  965,  966,  968,  970,  971,  972,  973,
+      974,  974,  976,  976,  978,  980,  981,  983,  985,  987,
+      989,  991,  994,  996,  998, 1001, 1003, 1006, 1007, 1008,
+     1009, 1010, 1012, 1015, 1018, 1021, 1023, 1025, 1026, 1028,
+     1029, 1032, 1033, 1035, 1036, 1038, 1041, 1042, 1043, 1045,
+     1046, 1047, 1048, 1049, 1049, 1049, 1051, 1051, 1053, 1056,
+     1058, 1061, 1064, 1066, 1068, 1070, 1070, 1072, 1074, 1075,
+
+     1076, 1077, 1079, 1081, 1083, 1085, 1086, 1088, 1089, 1090,
+     1092, 1093, 1093, 1095, 1096, 1099, 1100, 1101, 1102, 1103,
+     1103, 1104, 1105, 1105, 1107, 1110, 1112, 1115, 1117, 1119,
+     1122, 1124, 1125, 1126, 1127, 1130, 1132, 1134, 1135, 1137,
+     1138, 1139, 1141, 1142, 1144, 1145, 1147, 1148, 1149, 1150,
+     1151, 1151, 1154, 1157, 1160, 1162, 1164, 1165, 1166, 1167,
+     1169, 1171, 1172, 1174, 1175, 1176, 1178, 1179, 1181, 1182,
+     1183, 1184, 1185, 1186, 1186, 1188, 1190, 1191, 1192, 1193,
+     1196, 1199, 1201, 1203, 1204, 1205, 1207, 1208, 1211, 1212,
+     1213, 1214, 1215, 1216, 1216, 1218, 1221, 1223, 1224, 1226,
+
+     1228, 1230, 1231, 1234, 1235, 1237, 1238, 1239, 1241, 1242,
+     1242, 1244, 1245, 1248, 1249, 1250, 1251, 1253, 1254, 1254,
+     1256, 1258, 1259, 1261, 1263, 1264, 1264, 1267, 1269, 1271,
+     1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
+     1271, 1271, 1271, 1271, 1272, 1272
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -760,180 +761,182 @@ static yyconst flex_int32_t yy_meta[84] =
        12,    1,   13
     } ;
 
-static yyconst flex_int16_t yy_base[768] =
+static yyconst flex_int16_t yy_base[772] =
     {   0,
         0,    0,   81,   84,   87,   99,   94,   96,   93,  108,
-       91,  103,  186,  269,  352,    0, 1657, 1646,  130,  138,
-     1645, 1643,  427,  146, 4507,  158,  207, 1633,  109,  230,
-      493, 1621, 4507,  543,  268,  115,  274,  289,  488,  593,
+       91,  103,  186,  269,  352,    0, 1666, 1656,  130,  138,
+     1650, 1648,  427,  146, 4507,  158,  207, 1640,  109,  230,
+      493, 1629, 4507,  543,  268,  115,  274,  289,  488,  593,
       191,  599,  509,  215,  491,  621,  406,  638,  655,  658,
-      678,  689, 1631,  733,    0, 4507, 4507, 1630, 1629, 4507,
-     4507, 1621, 1622, 4507,    0,    0, 1622,    0,    0, 1602,
-     4507, 4507, 4507,    0, 4507, 4507,  757,  839,  122,  166,
-      127, 4507, 1612, 1609, 1604, 4507, 4507, 4507, 4507, 1605,
-      201,    0, 1603, 1603, 1589,   96, 1585,  656, 1588,  772,
-
-      103,  807, 1580, 4507,  839,  857,  886,  907, 1565,  912,
-      681,  757,  892,  903,  909,  962, 1578,  963,  978,  979,
-      994, 1000, 1016, 1022, 1033, 1046, 1049, 1069, 1066, 1077,
-     1090,   95,   79, 1105, 1108, 1116, 1131, 1142, 1153, 1159,
-     1170,  147, 1183, 1186, 1199, 1207,   94, 1210, 1223, 1234,
-     1247,  143, 1263, 1269, 1280, 1286, 1297, 1308, 1314, 1325,
-      169, 1331, 1347,  194,  225, 1346,    0, 1572,  757,  943,
-     1381,    0, 4507, 1570, 4507,    0, 4507,    0, 1554,    0,
-     1536,  258,  333, 4507,    0, 1561, 4507, 1554,    0, 1552,
-        0, 1550,  226, 1526,  204,  143, 1391, 4507,  866,  894,
-
-     4507, 1441, 1548, 1385, 1386, 1401, 1402, 1417, 1547, 1425,
-     1428, 1441, 1449, 1491, 1492, 1508, 1509, 1524, 1540, 1546,
-     1557, 1563, 1574, 1580, 1591, 1597, 1608, 1619,  223,  241,
-     1632, 1640, 1643, 1658, 1661, 1664, 1690, 1682, 1693, 1706,
-      226, 1714, 1727, 1735,  495, 1738, 1751, 1759, 1767, 1775,
-      245, 1788, 1791, 1799, 1812, 1820, 1828, 1836, 1849, 1857,
-     1870,  506, 1878, 1894, 1895,  470,  507,  221, 1910, 1546,
-     1954, 1962, 1543, 4507,  285, 1505, 1533, 1489, 1531, 1530,
-     4507, 4507, 4507, 4507,  436,  319, 1495, 1956, 1957, 1972,
-     1978, 1989, 1995, 2011, 2012, 2027, 2035, 2043, 2059, 2056,
-
-     2067, 2080, 2083, 2098, 2104, 2115, 2121, 2132, 2147, 2153,
-      469,  535, 2164, 2170, 2185, 2186, 2201, 2207, 2222, 2225,
-     2233, 2246,  554, 2254, 2257, 2270,  205, 2278, 2291, 2299,
-     2307,  523, 2315, 2323, 2336, 2344, 2347, 2365, 2362, 2368,
-     2383,  557, 2386, 2389, 2406, 2412, 2423,  612,  528,  631,
-     2439, 2473, 2496, 2519, 2531, 1517,  190, 1486, 2515, 2530,
-     2546, 2543,  623, 2564, 2567, 2570, 2585, 2588, 2596, 2609,
-     2617, 2630, 2641, 2647, 2658, 2669, 2684, 2690, 2701, 2707,
-     2722,  248,  558,  632, 2723, 2743, 2740, 2761, 2760, 2776,
-     2782, 2793, 2806, 2817,  613, 2814, 2830, 2838,  617, 2846,
-
-      309, 2854, 2867,  625, 2880, 2883, 2891, 2904,  636,  641,
-     2915, 2921, 2932,  643, 2943,  668,  639,  621,  441, 2987,
-     4507,  302, 1508, 2971, 2987, 2984,  649, 2995, 3008, 3011,
-     3028, 3034, 3045, 3051, 3066, 3072, 3089, 3095, 3106, 3112,
-     3123, 3129, 3140, 3146, 3162,  656,  680,  730, 3163, 3178,
-     3184, 3195, 3201, 3216, 3222, 3233, 3248, 3254,  785,  878,
-     3265, 3281,  511, 3278, 1482, 3289, 3302,  885, 3310, 3325,
-     3328, 3331,  734,  664, 3346, 3349,  806,  735,  733,  830,
-      880, 3398, 3410, 1481, 1461, 3364, 3404,  732, 3405, 3422,
-     3421, 3437, 3438, 3453, 3454, 3469, 3475, 3486, 3492, 3503,
-
-     3514, 3525, 3531, 3542,  982,  790,  887, 3548, 3559, 3570,
-     3576, 3587, 3593, 3608, 3609, 3624, 3630, 1445,  823, 3641,
-      905, 3647, 1448, 3658, 3664,  933, 3679, 3685,  924,  984,
-     3701, 1467,  987,  941,  918, 1000, 3735,  101,    0, 3729,
-     3730, 1003, 3745, 3753, 3756, 3769, 3777, 3785, 3793, 3806,
-     3814, 3822, 3830, 1012,  634, 1019, 1004, 3843, 3851, 3854,
-     3867, 3875, 3878, 1056, 1444, 1028, 3891, 1042, 1427, 1022,
-     3912, 3899, 1041, 1037, 3915, 1002, 1068, 1057, 1048, 3964,
-     1381,  290, 1410, 3930, 3948, 1436, 3959, 3965, 3980, 3981,
-     3996,  514, 4002, 4013, 1070, 1065, 1115, 1435, 4019, 4030,
-
-     4041, 1026, 1403, 1131, 1109, 1397, 1127,  798, 1425, 1138,
-     4047, 1089, 1129, 1142, 1151, 1493, 4507, 1392, 1358, 4058,
-     4064, 4079, 4080, 4095, 1374, 4096, 4111, 1111, 1146, 1124,
-     4117, 4128, 4139, 1150, 1322, 1179, 1193, 1299, 1185, 1296,
-     1196, 1318, 1220, 1202, 1205, 1254, 1218, 4145, 4156, 4162,
-     1227, 4173, 1168, 1118, 1174, 4184, 4190, 1218, 1224, 1209,
-     1255, 1148, 1229, 1138, 1272, 1233, 1257, 1273, 1126, 1012,
-     1009, 4205, 1244, 1281, 1287, 4206, 4221, 1020,  966, 1302,
-     1268,  915, 1306,    0, 1357, 1340, 1275, 1409,  902,  886,
-      889, 4222,  822, 1291,  820,  779,  818, 1223,    0, 1349,
-
-      807, 1366, 1420,  805,  771,  742,  767, 1424,    0, 1288,
-     1462, 1463,  796,  696,  670,  676,  697, 1379,  541,  539,
-      504,  459,    0,  441,    0,  378,  422,  373,  397,  366,
-      281,  275,  268,  280,  267,  814, 1166,  115,  100, 4507,
-     4507, 4272, 4285, 4298, 4311, 4324, 4337, 4349, 4353, 4364,
-     4377, 4390, 4401, 4412, 4417, 4422, 4427, 4431, 4436, 4440,
-     4444, 4448, 4452, 4463, 4470, 4481, 4493
+      678,  689, 1596,  100, 1634,  733,    0, 4507, 4507, 1632,
+     1631, 4507, 4507, 1628, 1632, 4507,    0,    0, 1630,    0,
+        0, 1608, 4507, 4507, 4507,    0, 4507, 4507,  757,  839,
+      122,  166,  127, 4507, 1615, 1616, 1612, 4507, 4507, 4507,
+     4507, 1613,  201,    0, 1611, 1606, 1596,   96, 1595,  656,
+
+     1594,  772,  103,  807, 1584, 4507,  839,  857,  886,  907,
+     1569,  912,  681,  757,  892,  903,  909,  962, 1581,  963,
+      978,  979,  994, 1000, 1016, 1022, 1033, 1046, 1049, 1069,
+     1066, 1077, 1090,  147,   79, 1105, 1108, 1116, 1131, 1142,
+     1153, 1159, 1170,  169, 1183, 1186, 1199, 1207,   94, 1210,
+     1223, 1234, 1247,  152, 1263, 1269, 1280, 1286, 1297, 1308,
+     1314, 1325,  193, 1331, 1347,  194,  226, 1346, 4507, 4507,
+        0, 1579,  757,  943, 1381,    0, 4507, 1578, 4507,    0,
+     4507,    0, 1558,    0, 1541,  257,  333, 4507,    0, 1568,
+     4507, 1565,    0, 1561,    0, 1554,  186, 1529,  252,  143,
+
+     1391, 4507,  866,  894, 4507, 1441, 1550, 1385, 1386, 1401,
+     1402, 1417, 1549, 1425, 1428, 1441, 1449, 1491, 1492, 1508,
+     1509, 1524, 1540, 1546, 1557, 1563, 1574, 1580, 1591, 1597,
+     1608, 1619,  196,  272, 1632, 1640, 1643, 1658, 1661, 1664,
+     1690, 1682, 1693, 1706,  224, 1714, 1727, 1735,  277, 1738,
+     1751, 1759, 1767, 1775,  438, 1788, 1791, 1799, 1812, 1820,
+     1828, 1836, 1849, 1857, 1870,  506, 1878, 1894, 1895,  470,
+      507,  249, 1910, 1548, 1954, 1962, 1547, 4507,  285, 1517,
+     1543, 1491, 1533, 1532, 4507, 4507, 4507, 4507,  436,  207,
+     1497, 1956, 1957, 1972, 1978, 1989, 1995, 2011, 2012, 2027,
+
+     2035, 2043, 2059, 2056, 2067, 2080, 2083, 2098, 2104, 2115,
+     2121, 2132, 2147, 2153,  469,  535, 2164, 2170, 2185, 2186,
+     2201, 2207, 2222, 2225, 2233, 2246,  554, 2254, 2257, 2270,
+      510, 2278, 2291, 2299, 2307,  523, 2315, 2323, 2336, 2344,
+     2347, 2365, 2362, 2368, 2383,  617, 2386, 2389, 2406, 2412,
+     2423,  612,  528,  631, 2439, 2473, 2496, 2519, 2531, 1530,
+      271, 1500, 2515, 2530, 2546, 2543,  623, 2564, 2567, 2570,
+     2585, 2588, 2596, 2609, 2617, 2630, 2641, 2647, 2658, 2669,
+     2684, 2690, 2701, 2707, 2722,  611,  613,  632, 2723, 2743,
+     2740, 2761, 2760, 2776, 2782, 2793, 2806, 2817,  643, 2814,
+
+     2830, 2838,  639, 2846,  309, 2854, 2867,  619, 2880, 2883,
+     2891, 2904,  668,  621, 2915, 2921, 2932,  634, 2943,  727,
+      641,  625,  816, 2987, 4507,  303, 1513, 2971, 2987, 2984,
+      649, 2995, 3008, 3011, 3028, 3034, 3045, 3051, 3066, 3072,
+     3089, 3095, 3106, 3112, 3123, 3129, 3140, 3146, 3162,  730,
+      511,  676, 3163, 3178, 3184, 3195, 3201, 3216, 3222, 3233,
+     3248, 3254,  711,  783, 3265, 3281,  700, 3278, 1486, 3289,
+     3302,  809, 3310, 3325, 3328, 3331,  878,  732, 3346, 3349,
+      880,  734,  636,  905,  933, 3398, 3410, 1485, 1494, 3364,
+     3404,  733, 3405, 3422, 3421, 3437, 3438, 3453, 3454, 3469,
+
+     3475, 3486, 3492, 3503, 3514, 3525, 3531, 3542,  984,  789,
+      822, 3548, 3559, 3570, 3576, 3587, 3593, 3608, 3609, 3624,
+     3630, 1482,  795, 3641,  937, 3647, 1489, 3658, 3664,  802,
+     3679, 3685,  887,  988, 3701, 1479,  981,  955,  918, 1001,
+     3735,  101,    0, 3729, 3730, 1003, 3745, 3753, 3756, 3769,
+     3777, 3785, 3793, 3806, 3814, 3822, 3830,  925, 1002, 1012,
+     1004, 3843, 3851, 3854, 3867, 3875, 3878, 1019, 1453, 1028,
+     3891, 1020, 1443, 1016, 3912, 3899, 1040, 1041, 3915, 1042,
+     1056, 1089, 1048, 3964, 1381, 1109, 1432, 3930, 3948, 1463,
+     3959, 3965, 3980, 3981, 3996,  514, 4002, 4013, 1070, 1114,
+
+     1071, 1443, 4019, 4030, 4041, 1115, 1415, 1142, 1127, 1406,
+     1116,  798, 1427, 1151, 4047, 1124, 1157, 1092, 1193, 1493,
+     4507, 1408, 1376, 4058, 4064, 4079, 4080, 4095, 1374, 4096,
+     4111, 1156, 1129, 1179, 4117, 4128, 4139, 1161, 1309, 1194,
+     1196, 1303, 1204, 1299, 1205, 1320, 1207, 1225, 1220, 1238,
+     1126, 4145, 4156, 4162, 1154, 4173, 1198, 1118, 1231, 4184,
+     4190, 1233, 1157, 1249, 1229, 1120, 1248, 1127, 1272, 1287,
+     1257, 1275, 1111, 1012, 1024, 4205, 1244, 1277, 1289, 4206,
+     4221, 1057, 1009, 1302, 1164,  986, 1281,    0, 1357, 1293,
+     1349, 1359,  906,  886,  891, 4222,  922, 1262,  824,  780,
+
+      819, 1407,    0, 1366,  818, 1379, 1409,  803,  763,  483,
+      511, 1424,    0, 1393, 1420, 1462,  539,  501,  481,  489,
+      441, 1291,  440,  434,  405,  374,    0,  430,    0,  367,
+      412,  363,  304,  272,  276,  262,  231,  172,  159,  319,
+      711,  115,  100, 4507, 4507, 4272, 4285, 4298, 4311, 4324,
+     4337, 4349, 4353, 4364, 4377, 4390, 4401, 4412, 4417, 4422,
+     4427, 4431, 4436, 4440, 4444, 4448, 4452, 4463, 4470, 4481,
+     4493
     } ;
 
-static yyconst flex_int16_t yy_def[768] =
+static yyconst flex_int16_t yy_def[772] =
     {   0,
-      741,    1,  742,  742,  742,  742,  743,  743,  744,  744,
-      745,  745,  746,  746,  741,   15,  741,  741,  741,  741,
-      741,  747,  741,  748,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,  749,  741,  750,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  751,  751,  741,  752,  752,  741,
-      741,  741,  741,  753,  741,  741,  754,  754,  741,  741,
-       23,  741,  741,  741,  755,  741,  741,  741,  741,  741,
-      741,  747,  747,  741,  756,  741,  757,  748,  748,  741,
-
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  758,
-       34,   34,   34,   34,   34,   34,  759,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,  759,  759,   34,   34,   34,   34,   34,   34,   34,
-       34,  759,   34,   34,   34,   34,  759,   34,   34,   34,
-       34,  759,   34,   34,   34,   34,   34,   34,   34,   34,
-      759,   34,   34,  759,  759,   34,  760,  749,  741,  741,
-      741,  750,  741,  741,  741,  751,  741,  752,  741,  753,
-       78,   78,  741,  741,  761,  755,  741,  741,  762,  756,
-      763,  757,  741,  741,  764,  741,  741,  741,  741,  741,
-
-      741,  758,  765,   34,   34,   34,   34,   34,  765,   34,
+      745,    1,  746,  746,  746,  746,  747,  747,  748,  748,
+      749,  749,  750,  750,  745,   15,  745,  745,  745,  745,
+      745,  751,  745,  752,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,   34,   34,   34,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,  759,  759,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-      759,   34,   34,   34,  759,   34,   34,   34,   34,   34,
-      759,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,  759,   34,   34,   34,  759,  759,  759,   34,  760,
-      741,  741,  741,  741,   78,   78,  761,  741,  762,  763,
-      741,  741,  741,  741,  764,  741,  741,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-
+       34,   34,  745,  745,  753,  745,  754,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  755,  755,  745,  756,
+      756,  745,  745,  745,  745,  757,  745,  745,  758,  758,
+      745,  745,   23,  745,  745,  745,  759,  745,  745,  745,
+      745,  745,  745,  751,  751,  745,  760,  745,  761,  752,
+
+      752,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  762,   34,   34,   34,   34,   34,   34,  763,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-      759,  759,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,  759,   34,   34,   34,  759,   34,   34,   34,
-       34,  759,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,  759,   34,   34,   34,   34,   34,  759,  759,  759,
-       34,  741,  741,  741,  741,  741,   78,  741,   34,   34,
-       34,   34,  759,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,  763,  763,   34,   34,   34,   34,   34,
+       34,   34,   34,  763,   34,   34,   34,   34,  763,   34,
+       34,   34,   34,  763,   34,   34,   34,   34,   34,   34,
+       34,   34,  763,   34,   34,  763,  763,   34,  745,  745,
+      764,  753,  745,  745,  745,  754,  745,  745,  745,  755,
+      745,  756,  745,  757,   80,   80,  745,  745,  765,  759,
+      745,  745,  766,  760,  767,  761,  745,  745,  768,  745,
+
+      745,  745,  745,  745,  745,  762,  769,   34,   34,   34,
+       34,   34,  769,   34,   34,   34,   34,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,  759,  759,  759,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,  759,   34,   34,   34,  759,   34,
+       34,   34,  763,  763,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,  763,   34,   34,   34,  763,   34,
+       34,   34,   34,   34,  763,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,  763,   34,   34,   34,  763,
+      763,  763,   34,  764,  745,  745,  745,  745,   80,   80,
+      765,  745,  766,  767,  745,  745,  745,  745,  768,  745,
+      745,   34,   34,   34,   34,   34,   34,   34,   34,   34,
 
-      202,   34,   34,  759,   34,   34,   34,   34,  759,  759,
-       34,   34,   34,  759,   34,  759,  759,  759,  741,  741,
-      741,   78,  741,   34,   34,   34,  759,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,  759,  759,  759,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,  202,  759,
-       34,   34,  759,   34,  202,   34,   34,  759,   34,   34,
-       34,   34,  759,  759,   34,   34,  759,  759,  759,  759,
-      759,  741,  741,   78,  741,   34,   34,  759,   34,   34,
+       34,   34,   34,   34,  763,  763,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,  763,   34,   34,   34,
+      763,   34,   34,   34,   34,  763,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,  763,   34,   34,   34,   34,
+       34,  763,  763,  763,   34,  745,  745,  745,  745,  745,
+       80,  745,   34,   34,   34,   34,  763,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-
-       34,   34,   34,   34,  759,  759,  759,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,  202,  759,   34,
-      759,   34,  202,   34,   34,  759,   34,   34,  759,  759,
-       34,  759,  759,  759,  759,  759,  741,   78,  766,   34,
-       34,  759,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,  759,  759,  759,  759,   34,   34,   34,
-       34,   34,   34,  759,  202,  759,   34,  759,  202,  759,
-       34,   34,  759,  759,   34,  759,  759,  759,  759,  741,
-      767,   78,  741,   34,   34,  759,   34,   34,   34,   34,
-       34,  202,   34,   34,  759,  759,  759,  759,   34,   34,
-
-       34,  759,  202,  759,  759,  202,  759,  202,  759,  759,
-       34,  759,  759,  759,  759,  741,  741,  753,  741,   34,
-       34,   34,   34,   34,  202,   34,   34,  759,  759,  759,
-       34,   34,   34,  759,  202,  759,  759,  202,  759,  202,
-      759,  759,  759,  759,  759,  753,  741,   34,   34,   34,
-      202,   34,  759,  759,  759,   34,   34,  759,  202,  759,
-      759,  202,  759,  202,  759,  759,  759,  759,  753,  741,
-      202,   34,  759,  759,  759,   34,   34,  759,  202,  759,
-      759,  202,  759,  202,  759,  759,  759,  759,  753,  741,
-      202,   34,  759,  759,  759,  202,  759,  759,  202,  759,
-
-      759,  759,  759,  759,  753,  741,  202,  759,  202,  759,
-      759,  759,  759,  753,  741,  202,  759,  759,  759,  759,
-      753,  741,  202,  759,  753,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-        0,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741
+       34,   34,   34,   34,   34,  763,  763,  763,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,  763,   34,
+
+       34,   34,  763,   34,  206,   34,   34,  763,   34,   34,
+       34,   34,  763,  763,   34,   34,   34,  763,   34,  763,
+      763,  763,  745,  745,  745,   80,  745,   34,   34,   34,
+      763,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,  763,
+      763,  763,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,  206,  763,   34,   34,  763,   34,  206,   34,
+       34,  763,   34,   34,   34,   34,  763,  763,   34,   34,
+      763,  763,  763,  763,  763,  745,  745,   80,  745,   34,
+       34,  763,   34,   34,   34,   34,   34,   34,   34,   34,
+
+       34,   34,   34,   34,   34,   34,   34,   34,  763,  763,
+      763,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,  206,  763,   34,  763,   34,  206,   34,   34,  763,
+       34,   34,  763,  763,   34,  763,  763,  763,  763,  763,
+      745,   80,  770,   34,   34,  763,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,  763,  763,  763,
+      763,   34,   34,   34,   34,   34,   34,  763,  206,  763,
+       34,  763,  206,  763,   34,   34,  763,  763,   34,  763,
+      763,  763,  763,  745,  771,   80,  745,   34,   34,  763,
+       34,   34,   34,   34,   34,  206,   34,   34,  763,  763,
+
+      763,  763,   34,   34,   34,  763,  206,  763,  763,  206,
+      763,  206,  763,  763,   34,  763,  763,  763,  763,  745,
+      745,  757,  745,   34,   34,   34,   34,   34,  206,   34,
+       34,  763,  763,  763,   34,   34,   34,  763,  206,  763,
+      763,  206,  763,  206,  763,  763,  763,  763,  763,  757,
+      745,   34,   34,   34,  206,   34,  763,  763,  763,   34,
+       34,  763,  206,  763,  763,  206,  763,  206,  763,  763,
+      763,  763,  757,  745,  206,   34,  763,  763,  763,   34,
+       34,  763,  206,  763,  763,  206,  763,  206,  763,  763,
+      763,  763,  757,  745,  206,   34,  763,  763,  763,  206,
+
+      763,  763,  206,  763,  763,  763,  763,  763,  757,  745,
+      206,  763,  206,  763,  763,  763,  763,  757,  745,  206,
+      763,  763,  763,  763,  757,  745,  206,  763,  757,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,    0,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745
     } ;
 
 static yyconst flex_int16_t yy_nxt[4591] =
@@ -943,505 +946,505 @@ static yyconst flex_int16_t yy_nxt[4591] =
        31,   31,   31,   31,   32,   21,   33,   33,   18,   34,
        35,   36,   37,   38,   39,   40,   41,   42,   41,   41,
        41,   43,   44,   45,   46,   41,   47,   48,   49,   50,
-       51,   52,   41,   41,   41,   25,   21,   21,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
-       54,   21,   25,   56,   57,   57,   56,   57,   57,   56,
-       57,   57,  209,   69,   58,   66,   61,   58,   61,   67,
-
-       59,   56,   57,   57,   62,   69,   62,  209,  209,   63,
-       66,   63,   59,  740,   67,   70,  195,   90,   71,  104,
-       64,   94,   64,  183,  183,  183,  183,   70,  739,  196,
-       71,   91,   91,   91,   91,  741,  582,  230,   90,   91,
-       91,   91,   91,  181,  286,  111,   90,   98,   98,   98,
-       98,  123,  741,   96,   90,  124,  209,  111,  125,  111,
-      209,  245,   98,   98,  111,  229,   90,  183,  183,  183,
-      183,   72,  287,   73,  100,  100,  100,  100,  100,  100,
-      100,  100,  209,   72,  741,   73,   74,   75,   76,   75,
-       75,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-
-       74,   74,   91,   91,   91,   91,  284,  209,  284,  251,
-       74,   74,   74,   74,   74,   90,  241,  285,  209,   78,
-      101,  111,  422,  100,  102,  102,  102,  102,  102,  102,
-      102,  111,  181,  111,  209,  111,  209,  262,  209,  209,
-      111,   74,   74,   74,  105,  111,  106,  106,  106,  106,
-      106,  106,  106,  106,  209,  111,  281,  111,  209,  111,
-      266,  209,  282,  107,  141,  399,   75,   74,   75,   74,
-       75,   76,   75,   75,   74,   74,   74,   74,   74,   74,
-       74,   74,   74,   74,   74,  311,  267,  350,  323,  275,
-      276,  142,  107,   74,   74,   74,   74,   74,  111,  268,
-
-      181,  118,   78,  618,  111,  119,  446,  126,  111,  120,
-      111,  121,  111,  312,  111,  332,  111,  111,  111,  111,
-      286,  122,  741,  111,   74,   74,   74,  181,  357,  111,
-      127,  128,  181,  111,  183,  183,  183,  183,  111,  484,
-      736,  129,  735,  734,  181,  733,  465,  732,  287,   75,
-       74,   75,   33,   79,   80,   79,   79,   33,   33,   81,
-       33,   33,   33,   33,   82,   83,   33,   84,   33,   33,
+       51,   52,   41,   41,   41,   53,   54,   21,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
+       56,   21,   25,   58,   59,   59,   58,   59,   59,   58,
+       59,   59,  213,   71,   60,   68,   63,   60,   63,   69,
+
+       61,   58,   59,   59,   64,   71,   64,  213,   92,   65,
+       68,   65,   61,  744,   69,   72,  199,   92,   73,  106,
+       66,   96,   66,  187,  187,  187,  187,   72,  743,  200,
+       73,   93,   93,   93,   93,  745,  586,  234,   92,   93,
+       93,   93,   93,  185,  290,  113,   92,  100,  100,  100,
+      100,  125,  745,   98,   92,  126,  170,  113,  127,  113,
+      213,  249,  100,  100,  113,  213,   92,  187,  187,  187,
+      187,   74,  291,   75,  102,  102,  102,  102,  102,  102,
+      102,  102,  213,   74,  745,   75,   76,   77,   78,   77,
+       77,   76,   76,   76,   76,   76,   76,   76,   76,   76,
+
+       76,   76,   93,   93,   93,   93,  213,  213,  290,  213,
+       76,   76,   76,   76,   76,   92,  285,  233,  255,   80,
+      103,  113,  286,  102,  104,  104,  104,  104,  104,  104,
+      104,  113,  740,  113,  739,  113,  291,  213,  245,  213,
+      113,   76,   76,   76,  107,  113,  108,  108,  108,  108,
+      108,  108,  108,  108,  288,  113,  288,  113,  315,  113,
+      270,  266,  213,  109,  143,  289,   77,   76,   77,   76,
+       77,   78,   77,   77,   76,   76,   76,   76,   76,   76,
+       76,   76,   76,   76,   76,  213,  327,  271,  279,  280,
+      213,  144,  109,   76,   76,   76,   76,   76,  113,  185,
+
+      272,  120,   80,  426,  113,  121,  738,  128,  113,  122,
+      113,  123,  113,  185,  113,  354,  113,  113,  113,  113,
+      741,  124,  745,  113,   76,   76,   76,  185,  361,  113,
+      129,  130,  737,  113,  187,  187,  187,  187,  113,  331,
+      488,  131,  736,  735,  316,  185,  469,  742,  734,   77,
+       76,   77,   33,   81,   82,   81,   81,   33,   33,   83,
+       33,   33,   33,   33,   84,   85,   33,   86,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   85,   85,   85,   85,   85,   85,   85,   85,   85,
-       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       33,   87,   87,   87,   87,   87,   87,   87,   87,   87,
+       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
 
-       85,   85,   85,   85,   85,   85,   85,   86,   87,   33,
+       87,   87,   87,   87,   87,   87,   87,   88,   89,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
        33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   88,   33,   89,   90,  111,  731,  284,  153,
-      284,  730,  419,  419,  419,  419,  111,  729,  111,  285,
-      111,  728,   94,  727,  209,  111,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,  209,  209,   96,   97,   97,   97,   97,   97,
+       33,   33,   90,   33,   91,   92,  113,  733,  288,  155,
+      288,  732,  731,  213,  730,  729,  113,  213,  113,  289,
+      113,  213,   96,  213,  213,  113,   97,   97,   97,   97,
        97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-
-       97,   97,   97,   97,   97,   97,   97,  105,  209,  108,
-      108,  108,  108,  108,  108,  108,  108,  130,  111,  209,
-      209,  143,  144,  421,  209,  145,  107,  741,  111,  726,
-      111,  111,  111,  111,  131,  146,  209,  111,  139,  111,
-      111,  209,  382,  521,  725,  625,  140,  348,  209,  111,
-      147,  111,  209,  111,  209,  107,  110,  327,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  209,  342,  349,
-      209,  209,  111,  112,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  113,  111,  114,  111,  115,  111,  111,
-      111,  111,  116,  111,  111,  111,  111,  111,  404,  417,
-
-      383,  117,  117,  117,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
-      117,  117,  117,  111,  447,  209,  209,  395,  134,  111,
-      209,  135,  410,  111,  209,  111,  209,  111,  209,  111,
-      136,  137,  111,  111,  209,  209,  138,  209,  111,  209,
-      148,  111,  209,  149,  209,  132,  209,   98,   98,   98,
-       98,  150,  209,  111,  193,  111,  133,  151,  111,  209,
-      111,  154,   98,   98,  416,  155,  158,  209,  111,  460,
-      111,  209,  111,  468,  159,  111,  156,  111,  111,  481,
-      418,  157,  463,  209,  152,  111,  427,  111,  111,  111,
-
-      162,  160,  111,  474,  111,  448,  163,  111,  111,  473,
-      209,  111,  477,  596,  480,  488,  723,  161,  111,  111,
-      111,  111,  111,  111,  505,  111,  166,  111,  164,  111,
-      111,  111,  722,  111,  169,  169,  169,  169,  111,  721,
-      506,  479,  530,  209,  165,  209,  209,  209,  209,  170,
-      170,  170,  170,  170,  170,  171,  171,  180,  169,  169,
-      169,  169,  180,  180,  180,  180,  180,  180,  180,  180,
-      180,  180,  180,  170,  170,  170,  170,  170,  170,  171,
-      171,  180,  180,  180,  180,  180,  105,  111,  106,  106,
-      106,  106,  106,  106,  106,  106,  507,  111,  741,  111,
-
-      529,  111,  542,  209,  204,  107,  111,  534,  533,  209,
-      716,  741,  180,  180,  180,  737,  715,  714,  209,  209,
-      209,  105,  518,  197,  197,  197,  197,  197,  197,  197,
-      197,  209,  709,  209,  107,  209,  209,  556,  180,  180,
-      107,  640,  738,  209,  180,  180,  180,  180,  180,  180,
-      180,  180,  180,  180,  180,  199,  199,  199,  199,  199,
-      199,  199,  199,  180,  180,  180,  180,  180,  532,  107,
-      566,  105,  107,  106,  106,  106,  106,  106,  106,  106,
-      106,  182,  199,  199,  199,  199,  199,  199,  199,  199,
-      107,  209,  535,  209,  180,  180,  180,  200,  209,  200,
-
-      209,  107,  199,  199,  199,  199,  199,  199,  199,  199,
-      199,  199,  199,  199,  199,  199,  199,  199,  209,  107,
-      180,  105,  111,  108,  108,  108,  108,  108,  108,  108,
-      108,  209,  205,  111,  111,  707,  111,  209,  519,  111,
-      107,  111,  536,  111,  526,  111,  209,  111,  706,  111,
-      705,  111,  111,  207,  209,  271,  206,  557,  111,  171,
-      171,  171,  171,  171,  171,  171,  171,  568,  699,  107,
-      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
-      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
-      203,  203,  111,  111,  573,  209,  578,  209,  210,  577,
-
-      209,  570,  111,  111,  111,  111,  111,  111,  111,  111,
-      208,  111,  111,  209,  696,  209,  209,  209,  111,  111,
-      111,  111,  111,  212,  111,  209,  211,  111,  111,  554,
-      111,  574,  209,  209,  111,  209,  111,  213,  111,  209,
-      111,  209,  111,  111,  111,  214,  111,  579,  555,  111,
-      209,  216,  111,  576,  209,  209,  111,  691,  111,  215,
-      111,  209,  111,  111,  111,  111,  111,  586,  598,  209,
-      209,  111,  612,  111,  217,  218,  111,  111,  209,  220,
-      219,  209,  111,  209,  607,  690,  111,  595,  111,  111,
-      111,  111,  634,  111,  597,  111,  111,  224,  111,  111,
-
-      221,  222,  209,  604,  614,  609,  111,  111,  111,  111,
-      225,  111,  610,  111,  226,  111,  605,  227,  223,  111,
-      111,  111,  209,  615,  209,  231,  111,  629,  209,  602,
-      111,  209,  111,  228,  111,  111,  613,  209,  111,  111,
-      209,  232,  209,  628,  209,  111,  111,  111,  111,  111,
-      111,  209,  111,  642,  111,  209,  111,  111,  111,  209,
-      233,  111,  234,  209,  209,  111,  674,  737,  689,  637,
-      684,  111,  111,  111,  639,  111,  643,  653,  235,  236,
-      111,  209,  111,  111,  111,  237,  111,  209,  630,  111,
-      655,  111,  209,  111,  738,  111,  682,  111,  209,  111,
-
-      111,  239,  111,  111,  636,  238,  209,  654,  111,  209,
-      240,  641,  111,  111,  111,  209,  111,  644,  209,  111,
-      658,  242,  209,  111,  645,  111,  111,  111,  111,  111,
-      111,  209,  111,  209,  243,  111,  209,  111,  673,  111,
-      111,  111,  209,  111,  675,  660,  209,  111,  111,  111,
-      111,  111,  111,  111,  111,  244,  111,  209,  246,  111,
-      663,  679,  665,  111,  111,  111,  661,  111,  209,  671,
-      209,  668,  111,  247,  111,  667,  111,  111,  111,  680,
-      249,  209,  678,  248,  250,  209,  209,  111,  209,  111,
-      670,  111,  252,  111,  209,  666,  111,  669,  710,  111,
-
-      209,  209,  683,  253,  209,  111,  686,  111,  693,  111,
-      111,  111,  111,  111,  254,  209,  111,  255,  111,  209,
-      111,  681,  111,  687,  111,  259,  111,  111,  111,  111,
-      111,  209,  257,  664,  256,  111,  662,  111,  111,  258,
-      698,  111,  685,  688,  111,  703,  111,  694,  111,  260,
-      111,  695,  111,  209,  111,  111,  111,  111,  111,  718,
-      708,  111,  209,  111,  659,  111,  697,  111,  263,  111,
-      209,  111,  700,  111,  261,  111,  111,  111,  264,  209,
-      111,  265,  616,  616,  616,  616,  111,  111,  111,  111,
-      111,  111,  209,  272,  269,  111,  111,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  105,  702,  197,  197,  197,
-      197,  197,  197,  197,  197,  111,  111,  651,  288,  711,
-      647,  701,  209,  646,  107,  111,  111,  111,  111,  111,
-      111,  111,  111,  209,  111,  111,  712,  209,  209,  638,
-      635,  111,  289,  111,  111,  111,  111,  111,  209,  209,
-      111,  111,  724,  107,  110,  111,  619,  111,  111,  111,
-      290,  111,  291,  617,  606,  111,  111,  111,  111,  111,
-      111,  111,  111,  704,  111,  209,  209,  111,  603,  111,
-      209,  111,  569,  111,  713,  111,  717,  565,  292,  293,
-      111,  111,  539,  111,  616,  616,  616,  616,  111,  203,
-
-      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
-      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
-      203,  111,  111,  538,  523,  485,  719,  720,  423,  295,
-      356,  111,  111,  111,  111,  111,  111,  294,  111,  111,
-      111,  111,  358,  191,  189,  187,  185,  181,  111,  111,
-      111,  111,  111,  297,  111,  296,  356,  111,  111,  167,
-      741,  209,  282,  191,  111,  189,  111,  278,  111,  300,
-      111,  298,  299,  111,  185,  617,  111,  301,  181,  302,
-      111,  274,  111,  273,  111,  167,  111,  111,  111,  111,
-      111,  209,  201,  111,  198,  111,  194,  111,  191,  111,
-
-      303,  111,  189,  111,  111,  111,  111,  111,  188,  187,
-      111,  187,  111,  305,  111,  304,  111,  185,  111,  104,
-      111,  111,  111,  111,  111,  184,  179,  111,  177,  111,
-      308,  306,  104,  111,  307,  111,  175,  111,  111,  111,
-      111,  111,  174,  173,  167,  109,  111,  103,  111,  111,
-      111,   93,  111,   90,   90,  309,  741,  111,  741,  111,
-      310,  111,  111,  111,  741,  741,  741,  741,  111,  741,
-      111,  741,  111,  111,  111,  741,  111,  741,  741,  313,
-      111,  111,  314,  315,  111,  111,  316,  111,  111,  111,
-      741,  111,  111,  741,  111,  741,  741,  319,  317,  741,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  318,
-      111,  320,  111,  111,  741,  741,  741,  741,  741,  741,
-      111,  741,  111,  111,  111,  741,  111,  741,  741,  741,
-      111,  111,  111,  111,  111,  111,  111,  111,  741,  111,
-      741,  741,  321,  741,  111,  741,  322,  324,  111,  741,
-      111,  741,  741,  741,  111,  111,  111,  111,  111,  741,
-      325,  741,  741,  111,  741,  111,  741,  111,  111,  111,
-      741,  111,  326,  741,  741,  111,  111,  111,  111,  111,
-      111,  111,  111,  741,  111,  741,  328,  111,  741,  111,
-      741,  111,  741,  111,  741,  111,  741,  111,  741,  111,
-
-      111,  111,  741,  111,  741,  111,  329,  111,  111,  111,
-      741,  111,  741,  741,  330,  111,  111,  111,  111,  111,
-      334,  111,  741,  741,  111,  331,  741,  741,  333,  111,
-      111,  111,  111,  111,  741,  111,  741,  111,  741,  111,
-      111,  111,  111,  111,  741,  741,  741,  741,  335,  741,
-      111,  741,  111,  336,  111,  741,  111,  741,  111,  741,
-      111,  111,  111,  741,  111,  337,  111,  741,  111,  111,
-      111,  741,  111,  741,  741,  741,  111,  111,  111,  111,
-      111,  741,  741,  741,  338,  111,  741,  111,  741,  111,
-      741,  111,  741,  111,  741,  741,  339,  111,  111,  111,
-
-      111,  111,  741,  341,  340,  741,  111,  741,  111,  741,
-      111,  741,  111,  741,  111,  741,  741,  347,  111,  111,
-      111,  343,  111,  344,  111,  111,  741,  111,  345,  741,
-      741,  741,  741,  741,  111,  111,  111,  111,  111,  111,
-      111,  741,  346,  111,  111,  741,  351,  741,  741,  741,
-      111,  741,  111,  741,  111,  352,  352,  352,  352,  111,
-      741,  741,  741,  354,  354,  354,  354,  741,  741,  741,
-      353,  353,  353,  353,  353,  353,  353,  353,  355,  355,
-      355,  355,  355,  355,  355,  355,  111,  111,  741,  741,
-      741,  741,  741,  741,  360,  741,  111,  111,  359,  111,
-
-      111,  111,  111,  741,  741,  111,  111,  741,  111,  741,
-      741,  741,  111,  361,  111,  741,  111,  741,  111,  111,
-      362,  111,  111,  741,  741,  111,  741,  111,  364,  111,
-      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
-      365,  111,  111,  366,  111,  741,  741,  741,  741,  741,
-      741,  111,  111,  111,  111,  111,  111,  111,  741,  741,
-      111,  111,  741,  741,  363,  111,  741,  111,  741,  111,
-      741,  111,  741,  111,  367,  111,  111,  111,  368,  111,
-      741,  741,  741,  111,  111,  111,  111,  111,  370,  111,
-      741,  369,  111,  741,  741,  741,  111,  111,  111,  111,
-
-      111,  111,  741,  111,  741,  371,  741,  111,  111,  372,
-      111,  111,  373,  111,  741,  374,  111,  741,  741,  741,
-      111,  741,  111,  111,  111,  111,  741,  111,  111,  111,
-      741,  375,  111,  741,  111,  741,  741,  741,  111,  741,
-      111,  741,  111,  741,  111,  111,  111,  111,  376,  741,
-      741,  111,  377,  111,  741,  111,  741,  111,  741,  111,
-      741,  111,  111,  111,  111,  111,  741,  378,  741,  741,
-      111,  741,  111,  741,  379,  741,  111,  111,  380,  741,
-      381,  111,  741,  111,  741,  741,  741,  111,  741,  111,
-      741,  111,  741,  111,  111,  111,  111,  111,  741,  741,
-
-      111,  741,  111,  741,  111,  741,  111,  741,  111,  741,
-      111,  741,  111,  111,  111,  111,  111,  741,  385,  111,
-      741,  741,  386,  741,  741,  111,  111,  111,  111,  111,
-      111,  111,  387,  741,  111,  111,  389,  111,  741,  384,
-      741,  111,  741,  111,  393,  111,  741,  111,  741,  111,
-      388,  111,  111,  390,  741,  111,  111,  391,  741,  741,
-      741,  741,  111,  111,  111,  111,  111,  111,  392,  111,
-      741,  111,  741,  111,  111,  111,  111,  111,  741,  741,
-      394,  741,  111,  741,  111,  396,  111,  111,  111,  741,
-      111,  741,  741,  741,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  741,  111,  401,  397,  111,  741,  111,  741,
-      111,  400,  111,  398,  111,  741,  741,  741,  111,  111,
-      111,  111,  111,  741,  741,  741,  741,  111,  741,  111,
-      741,  111,  402,  111,  741,  111,  403,  111,  741,  111,
-      111,  111,  741,  111,  741,  111,  741,  111,  111,  111,
-      741,  111,  741,  111,  741,  111,  111,  111,  741,  111,
-      741,  741,  741,  111,  111,  111,  111,  111,  741,  406,
-      741,  405,  111,  741,  111,  741,  111,  111,  111,  741,
-      111,  741,  741,  741,  111,  111,  111,  111,  111,  407,
-      741,  111,  111,  111,  408,  111,  111,  741,  111,  741,
-
-      741,  741,  111,  741,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  741,  111,  111,  741,  111,
-      741,  741,  741,  111,  741,  111,  111,  111,  411,  111,
-      111,  111,  111,  111,  741,  111,  111,  409,  412,  413,
-      741,  741,  111,  741,  741,  741,  111,  741,  111,  741,
-      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
-      741,  111,  741,  111,  741,  111,  741,  111,  741,  111,
-      415,  741,  111,  741,  352,  352,  352,  352,  414,  111,
-      741,  111,  741,  111,  741,  741,  741,  741,  111,  353,
-      353,  353,  353,  353,  353,  353,  353,  419,  419,  419,
-
-      419,  741,  741,  741,  741,  741,  741,  741,  420,  741,
-      741,  741,  353,  353,  353,  353,  353,  353,  353,  353,
-      354,  354,  354,  354,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  355,  355,  355,  355,  355,
-      355,  355,  355,  420,  741,  111,  741,  355,  355,  355,
-      355,  355,  355,  355,  355,  111,  741,  111,  741,  111,
-      111,  425,  741,  424,  111,  741,  741,  741,  741,  741,
-      111,  741,  111,  111,  111,  426,  111,  741,  421,  111,
-      741,  741,  741,  111,  741,  111,  111,  111,  111,  741,
-      111,  741,  111,  428,  111,  111,  741,  111,  429,  741,
-
-      111,  741,  741,  430,  111,  741,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  741,  111,  111,
-      741,  741,  741,  741,  741,  111,  111,  111,  111,  111,
-      431,  741,  111,  741,  111,  741,  111,  111,  111,  111,
-      111,  741,  432,  741,  741,  111,  433,  111,  741,  111,
-      741,  111,  741,  111,  741,  741,  741,  434,  111,  111,
-      111,  111,  741,  435,  741,  741,  111,  436,  741,  741,
-      111,  111,  111,  437,  111,  741,  741,  111,  741,  111,
-      438,  111,  741,  111,  439,  111,  741,  111,  111,  111,
-      111,  111,  741,  741,  741,  741,  111,  741,  111,  111,
-
-      111,  741,  111,  741,  440,  741,  741,  111,  741,  111,
-      741,  111,  741,  111,  111,  442,  741,  441,  111,  741,
-      111,  741,  741,  741,  111,  741,  111,  741,  111,  741,
-      111,  111,  111,  111,  111,  741,  741,  111,  443,  111,
-      741,  111,  741,  111,  741,  111,  741,  111,  444,  445,
-      111,  111,  111,  111,  741,  741,  111,  741,  741,  741,
-      449,  741,  111,  111,  111,  111,  111,  111,  741,  741,
-      111,  111,  111,  111,  450,  741,  451,  741,  741,  741,
-      111,  741,  111,  111,  111,  111,  741,  111,  452,  111,
-      111,  111,  111,  453,  741,  741,  741,  741,  741,  741,
-
-      111,  111,  454,  111,  111,  111,  111,  741,  741,  111,
-      111,  741,  111,  741,  741,  456,  111,  741,  111,  741,
-      111,  741,  111,  111,  111,  455,  111,  458,  741,  741,
-      459,  111,  741,  111,  741,  111,  111,  111,  741,  741,
-      457,  741,  111,  741,  111,  741,  111,  111,  111,  741,
-      111,  741,  741,  741,  111,  111,  111,  111,  111,  111,
-      111,  111,  461,  111,  741,  741,  111,  741,  111,  741,
-      111,  741,  111,  741,  111,  741,  111,  741,  111,  111,
-      462,  741,  111,  741,  111,  741,  111,  111,  111,  741,
-      111,  741,  464,  741,  111,  111,  466,  111,  111,  741,
-
-      741,  741,  741,  111,  741,  741,  741,  111,  741,  111,
-      111,  111,  741,  111,  741,  467,  111,  469,  741,  741,
-      111,  111,  111,  111,  111,  470,  471,  111,  741,  111,
-      741,  111,  111,  111,  111,  111,  741,  741,  741,  741,
-      111,  741,  741,  741,  111,  111,  111,  741,  111,  741,
-      741,  111,  741,  111,  475,  111,  472,  111,  741,  111,
-      741,  111,  111,  111,  111,  111,  741,  741,  741,  741,
-      111,  741,  111,  111,  111,  741,  111,  741,  476,  741,
-      741,  111,  741,  111,  741,  111,  741,  111,  482,  482,
-      482,  482,  111,  741,  741,  741,  741,  741,  741,  741,
-
-      741,  111,  741,  483,  483,  483,  483,  483,  483,  483,
-      483,  111,  741,  111,  111,  111,  486,  111,  478,  741,
-      111,  741,  741,  741,  111,  111,  111,  111,  111,  111,
-      741,  111,  487,  111,  741,  111,  111,  489,  111,  111,
-      741,  111,  741,  741,  111,  741,  741,  741,  111,  741,
-      111,  111,  111,  111,  741,  111,  490,  111,  111,  741,
-      111,  491,  741,  492,  111,  741,  741,  741,  111,  741,
-      111,  741,  111,  741,  111,  111,  111,  111,  111,  741,
-      741,  111,  741,  111,  741,  111,  741,  493,  741,  111,
-      741,  111,  741,  111,  111,  111,  111,  741,  495,  494,
-
-      111,  741,  111,  741,  741,  741,  111,  741,  111,  741,
-      111,  741,  111,  741,  111,  111,  111,  741,  741,  111,
-      496,  111,  497,  741,  741,  111,  741,  498,  741,  111,
-      741,  111,  741,  111,  741,  111,  111,  111,  111,  111,
-      741,  500,  111,  741,  111,  741,  111,  741,  499,  741,
-      111,  741,  111,  111,  111,  111,  111,  741,  741,  111,
-      741,  111,  741,  111,  741,  111,  501,  111,  741,  111,
-      111,  111,  111,  111,  741,  741,  111,  741,  111,  741,
-      111,  741,  111,  503,  111,  741,  111,  502,  111,  111,
-      111,  504,  111,  111,  741,  111,  741,  508,  741,  741,
-
-      741,  741,  111,  111,  111,  111,  111,  111,  111,  741,
-      741,  111,  111,  741,  111,  509,  510,  741,  111,  741,
-      111,  741,  111,  741,  111,  111,  111,  111,  111,  741,
-      741,  111,  741,  111,  512,  111,  741,  111,  741,  111,
-      741,  111,  511,  111,  111,  111,  111,  513,  741,  741,
-      111,  741,  111,  514,  741,  741,  111,  741,  111,  741,
-      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
-      741,  111,  741,  111,  741,  111,  741,  111,  111,  515,
-      741,  516,  111,  741,  111,  741,  741,  741,  111,  741,
-      111,  741,  111,  741,  111,  111,  111,  111,  111,  741,
-
-      741,  517,  741,  111,  741,  111,  741,  111,  111,  111,
-      520,  111,  741,  741,  111,  741,  741,  741,  111,  111,
-      522,  111,  111,  111,  741,  111,  741,  111,  741,  111,
-      111,  111,  111,  111,  741,  525,  741,  524,  111,  741,
-      111,  741,  111,  741,  111,  741,  111,  741,  741,  741,
-      111,  111,  111,  741,  111,  111,  528,  741,  111,  111,
-      527,  111,  741,  741,  741,  111,  741,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  741,  111,
-      111,  741,  741,  741,  741,  741,  111,  741,  111,  111,
-      111,  111,  741,  111,  111,  111,  531,  741,  111,  482,
-
-      482,  482,  482,  741,  111,  741,  111,  741,  111,  741,
-      741,  741,  540,  111,  483,  483,  483,  483,  483,  483,
-      483,  483,  537,  741,  741,  741,  483,  483,  483,  483,
-      483,  483,  483,  483,  111,  111,  741,  741,  741,  741,
-      741,  541,  741,  741,  111,  111,  111,  111,  111,  111,
-      741,  111,  111,  111,  111,  543,  741,  741,  741,  741,
-      741,  111,  111,  544,  111,  111,  111,  111,  111,  741,
-      111,  111,  741,  741,  545,  546,  741,  111,  111,  111,
-      111,  111,  111,  111,  111,  741,  111,  111,  741,  741,
-      741,  741,  741,  111,  111,  111,  111,  111,  111,  111,
-
-      741,  741,  111,  111,  741,  111,  547,  548,  741,  111,
-      741,  111,  741,  111,  741,  111,  111,  111,  111,  111,
-      741,  741,  111,  741,  111,  741,  111,  549,  111,  741,
-      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
-      741,  111,  741,  111,  111,  111,  741,  111,  741,  741,
-      741,  550,  111,  741,  111,  111,  111,  741,  111,  741,
-      741,  552,  551,  111,  741,  111,  741,  111,  741,  111,
-      741,  111,  111,  111,  111,  111,  741,  741,  111,  741,
-      111,  741,  553,  741,  111,  558,  111,  741,  111,  111,
-      111,  111,  111,  741,  741,  741,  741,  111,  741,  111,
-
-      111,  111,  741,  111,  741,  741,  111,  559,  111,  741,
-      111,  741,  111,  741,  111,  741,  111,  111,  111,  111,
-      111,  741,  741,  111,  741,  111,  561,  111,  741,  111,
-      741,  111,  741,  111,  560,  111,  111,  111,  111,  111,
-      741,  741,  111,  741,  741,  741,  741,  741,  111,  111,
-      111,  111,  111,  111,  111,  563,  562,  111,  111,  741,
-      111,  741,  741,  741,  111,  741,  111,  741,  111,  741,
-      111,  111,  111,  111,  111,  741,  741,  111,  741,  111,
-      741,  567,  741,  111,  741,  111,  741,  111,  111,  111,
-      111,  111,  741,  741,  111,  741,  111,  741,  111,  741,
-
-      111,  741,  111,  741,  111,  564,  111,  111,  111,  111,
-      741,  741,  571,  111,  741,  111,  741,  741,  572,  111,
-      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
-      575,  111,  741,  741,  111,  741,  580,  580,  580,  580,
-      741,  111,  741,  111,  741,  111,  741,  741,  741,  741,
-      111,  581,  581,  581,  581,  581,  581,  581,  581,  111,
-      111,  585,  741,  741,  741,  741,  584,  741,  741,  111,
-      111,  111,  111,  111,  111,  111,  741,  741,  111,  111,
-      741,  741,  741,  111,  741,  111,  111,  111,  741,  111,
-      741,  587,  741,  111,  111,  111,  111,  111,  589,  111,
-
-      111,  588,  111,  741,  741,  111,  592,  111,  741,  111,
-      741,  590,  741,  111,  741,  111,  741,  111,  111,  111,
-      591,  111,  741,  111,  741,  111,  111,  111,  741,  111,
-      741,  741,  741,  111,  111,  111,  111,  111,  741,  593,
-      741,  741,  111,  741,  111,  741,  111,  741,  111,  741,
-      111,  741,  111,  741,  111,  111,  111,  741,  111,  594,
-      111,  741,  111,  111,  111,  741,  111,  741,  741,  741,
-      111,  111,  111,  111,  111,  741,  599,  741,  741,  111,
-      741,  111,  741,  111,  111,  111,  741,  111,  741,  741,
-      741,  111,  111,  111,  111,  111,  111,  111,  111,  741,
-
-      111,  741,  741,  111,  741,  111,  741,  111,  111,  111,
-      741,  111,  600,  741,  741,  111,  111,  111,  111,  111,
-      111,  111,  111,  741,  111,  608,  601,  111,  741,  111,
-      741,  111,  741,  111,  741,  111,  741,  741,  741,  111,
-      111,  111,  111,  111,  741,  111,  741,  741,  111,  741,
-      741,  741,  111,  741,  111,  611,  111,  111,  741,  111,
-      111,  111,  741,  741,  111,  580,  580,  580,  580,  741,
-      111,  741,  111,  620,  111,  741,  741,  741,  111,  111,
-      581,  581,  581,  581,  581,  581,  581,  581,  111,  111,
-      111,  741,  111,  741,  741,  111,  741,  111,  741,  111,
-
-      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
-      111,  111,  621,  622,  111,  741,  623,  741,  741,  741,
-      111,  111,  111,  111,  111,  111,  111,  741,  741,  111,
-      111,  741,  111,  741,  626,  741,  111,  741,  624,  741,
-      111,  741,  111,  111,  111,  111,  111,  741,  741,  111,
-      741,  111,  741,  627,  741,  111,  741,  111,  741,  111,
-      111,  111,  111,  111,  741,  631,  741,  741,  111,  741,
-      111,  111,  111,  632,  111,  741,  741,  111,  633,  111,
-      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
-      111,  111,  741,  741,  111,  741,  111,  741,  111,  741,
-
-      648,  741,  111,  741,  111,  741,  111,  111,  111,  111,
-      111,  649,  741,  111,  741,  741,  741,  741,  741,  111,
-      111,  111,  111,  111,  111,  111,  111,  741,  111,  111,
-      741,  741,  741,  741,  741,  111,  111,  111,  111,  111,
-      111,  111,  650,  741,  111,  111,  741,  111,  652,  741,
-      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
-      111,  111,  741,  741,  741,  741,  111,  741,  111,  111,
-      656,  741,  111,  741,  741,  111,  741,  111,  741,  111,
-      741,  111,  657,  111,  741,  111,  111,  111,  111,  111,
-      741,  741,  111,  741,  111,  741,  111,  741,  111,  741,
-
-      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
-      741,  111,  741,  111,  111,  111,  741,  111,  741,  741,
-      111,  672,  111,  741,  111,  741,  111,  741,  111,  741,
-      111,  676,  677,  111,  111,  111,  111,  741,  741,  111,
-      741,  741,  741,  741,  741,  111,  111,  111,  111,  111,
-      111,  111,  111,  741,  111,  111,  741,  741,  692,  741,
-      741,  111,  111,  111,  111,  111,  111,  741,  741,  741,
-      111,  111,   55,   55,   55,   55,   55,   55,   55,   55,
-       55,   55,   55,   55,   55,   60,   60,   60,   60,   60,
-       60,   60,   60,   60,   60,   60,   60,   60,   65,   65,
-
-       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
-       65,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   77,   77,   92,   92,   92,
-       92,  741,   92,   92,   92,   92,   92,   92,   92,   92,
-       99,   99,   99,  741,   99,  741,   99,  741,   99,  168,
-      168,  741,  168,  168,  172,  172,  741,  741,  172,  172,
-      741,  172,  172,  172,  172,  172,  172,  176,  176,  176,
-      176,  741,  176,  176,  176,  176,  176,  176,  176,  176,
-      178,  178,  178,  178,  178,  178,  178,  178,  741,  178,
-
-      178,  180,  741,  741,  741,  180,  180,  180,  180,  180,
-      180,  180,  181,  741,  741,  741,  181,  181,  181,  181,
-      181,  181,  181,  186,  186,  741,  186,  186,  190,  190,
-      741,  190,  190,  192,  192,  741,  192,  192,  202,  741,
-      202,  202,  117,  117,  741,  117,  117,  270,  741,  270,
-      270,  277,  741,  277,  277,  279,  741,  279,  279,  280,
-      741,  280,  280,  283,  283,  283,  283,  283,  283,  283,
-      283,  283,  283,  283,  283,  283,  203,  203,  741,  203,
-      203,  583,  583,  741,  583,  583,  583,  583,  583,  583,
-      583,  583,  583,  583,  581,  581,  581,  741,  741,  741,
-
-      581,  741,  741,  741,  741,  581,   17,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741
+       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,   97,  213,  213,   98,   99,   99,   99,   99,   99,
+       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
+
+       99,   99,   99,   99,   99,   99,   99,  107,  336,  110,
+      110,  110,  110,  110,  110,  110,  110,  132,  113,  213,
+      213,  145,  146,  213,  213,  147,  109,  745,  113,  727,
+      113,  113,  113,  113,  133,  148,  213,  113,  141,  113,
+      113,  213,  386,  726,  725,  629,  142,  352,  213,  113,
+      149,  113,  213,  113,  720,  109,  112,  719,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  213,  346,  353,
+      403,  510,  113,  114,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  115,  113,  116,  113,  117,  113,  113,
+      113,  113,  118,  113,  113,  113,  113,  113,  408,  421,
+
+      387,  119,  119,  119,  119,  119,  119,  119,  119,  119,
+      119,  119,  119,  119,  119,  119,  119,  119,  119,  119,
+      119,  119,  119,  113,  213,  213,  213,  399,  136,  113,
+      213,  137,  213,  113,  213,  113,  213,  113,  213,  113,
+      138,  139,  113,  113,  213,  213,  140,  213,  113,  213,
+      150,  113,  213,  151,  213,  134,  213,  100,  100,  100,
+      100,  152,  213,  113,  197,  113,  135,  153,  113,  450,
+      113,  156,  100,  100,  420,  157,  160,  472,  113,  451,
+      113,  213,  113,  478,  161,  113,  158,  113,  113,  213,
+      422,  159,  414,  485,  154,  113,  431,  113,  113,  113,
+
+      164,  162,  113,  481,  113,  452,  165,  113,  113,  464,
+      538,  113,  741,  213,  467,  492,  484,  163,  113,  113,
+      113,  113,  113,  113,  745,  113,  168,  113,  166,  113,
+      113,  113,  525,  113,  173,  173,  173,  173,  113,  742,
+      213,  477,  511,  213,  167,  213,  213,  213,  522,  174,
+      174,  174,  174,  174,  174,  175,  175,  184,  173,  173,
+      173,  173,  184,  184,  184,  184,  184,  184,  184,  184,
+      184,  184,  184,  174,  174,  174,  174,  174,  174,  175,
+      175,  184,  184,  184,  184,  184,  107,  113,  108,  108,
+      108,  108,  108,  108,  108,  108,  213,  113,  509,  113,
+
+      483,  113,  213,  546,  208,  109,  113,  537,  213,  718,
+      534,  745,  184,  184,  184,  213,  213,  423,  423,  423,
+      423,  107,  213,  201,  201,  201,  201,  201,  201,  201,
+      201,  213,  213,  713,  109,  213,  560,  213,  184,  184,
+      109,  644,  570,  523,  184,  184,  184,  184,  184,  184,
+      184,  184,  184,  184,  184,  203,  203,  203,  203,  203,
+      203,  203,  203,  184,  184,  184,  184,  184,  530,  109,
+      574,  107,  109,  108,  108,  108,  108,  108,  108,  108,
+      108,  186,  203,  203,  203,  203,  203,  203,  203,  203,
+      109,  213,  561,  213,  184,  184,  184,  204,  425,  204,
+
+      213,  109,  203,  203,  203,  203,  203,  203,  203,  203,
+      203,  203,  203,  203,  203,  203,  203,  203,  213,  109,
+      184,  107,  113,  110,  110,  110,  110,  110,  110,  110,
+      110,  213,  209,  113,  113,  213,  113,  711,  213,  113,
+      109,  113,  536,  113,  533,  113,  213,  113,  710,  113,
+      213,  113,  113,  211,  709,  275,  210,  577,  113,  175,
+      175,  175,  175,  175,  175,  175,  175,  539,  213,  109,
+      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
+      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
+      207,  207,  113,  113,  213,  540,  582,  213,  214,  572,
+
+      599,  213,  113,  113,  113,  113,  113,  113,  113,  113,
+      212,  113,  113,  581,  213,  213,  213,  213,  113,  113,
+      113,  113,  113,  216,  113,  213,  215,  113,  113,  213,
+      113,  558,  213,  213,  113,  578,  113,  217,  113,  703,
+      113,  213,  113,  113,  113,  218,  113,  580,  583,  113,
+      559,  220,  113,  213,  213,  213,  113,  700,  113,  219,
+      113,  213,  113,  113,  113,  113,  113,  590,  602,  213,
+      213,  113,  695,  113,  221,  222,  113,  113,  611,  224,
+      223,  600,  113,  213,  213,  694,  113,  601,  113,  113,
+      113,  113,  606,  113,  609,  113,  113,  228,  113,  113,
+
+      225,  226,  213,  608,  613,  213,  113,  113,  113,  113,
+      229,  113,  616,  113,  230,  113,  614,  231,  227,  113,
+      113,  113,  622,  619,  617,  235,  113,  213,  213,  213,
+      113,  213,  113,  232,  113,  113,  618,  213,  113,  113,
+      213,  236,  213,  632,  634,  113,  113,  113,  113,  113,
+      113,  185,  113,  693,  113,  213,  113,  113,  113,  688,
+      237,  113,  238,  643,  213,  113,  678,  648,  686,  213,
+      213,  113,  113,  113,  213,  113,  633,  213,  239,  240,
+      113,  638,  113,  113,  113,  241,  113,  641,  646,  113,
+      658,  113,  213,  113,  683,  113,  675,  113,  674,  113,
+
+      113,  243,  113,  113,  647,  242,  213,  213,  113,  213,
+      244,  213,  113,  113,  113,  640,  113,  213,  213,  113,
+      213,  246,  657,  113,  645,  113,  113,  113,  113,  113,
+      113,  662,  113,  213,  247,  113,  702,  113,  213,  113,
+      113,  113,  213,  113,  213,  659,  213,  113,  113,  113,
+      113,  113,  113,  113,  113,  248,  113,  213,  250,  113,
+      664,  213,  213,  113,  113,  113,  649,  113,  677,  665,
+      213,  669,  113,  251,  113,  213,  113,  113,  113,  667,
+      253,  673,  670,  252,  254,  213,  672,  113,  213,  113,
+      213,  113,  256,  113,  213,  685,  113,  682,  671,  113,
+
+      213,  679,  213,  257,  213,  113,  213,  113,  697,  113,
+      113,  113,  113,  113,  258,  213,  113,  259,  113,  684,
+      113,  687,  113,  691,  113,  263,  113,  113,  113,  113,
+      113,  712,  261,  213,  260,  113,  668,  113,  113,  262,
+      666,  113,  689,  698,  113,  692,  113,  704,  113,  264,
+      113,  663,  113,  699,  113,  113,  113,  113,  113,  706,
+      690,  113,  213,  113,  728,  113,  701,  113,  267,  113,
+      213,  113,  213,  113,  265,  113,  113,  113,  268,  213,
+      113,  269,  620,  620,  620,  620,  113,  113,  113,  113,
+      113,  113,  213,  276,  273,  113,  113,  175,  175,  175,
+
+      175,  175,  175,  175,  175,  107,  213,  201,  201,  201,
+      201,  201,  201,  201,  201,  113,  113,  655,  292,  707,
+      213,  705,  213,  708,  109,  113,  113,  113,  113,  113,
+      113,  113,  113,  213,  113,  113,  715,  213,  651,  650,
+      213,  113,  293,  113,  113,  113,  113,  113,  642,  716,
+      113,  113,  639,  109,  112,  113,  213,  113,  113,  113,
+      294,  113,  295,  621,  722,  113,  113,  113,  113,  113,
+      113,  113,  113,  717,  113,  213,  213,  113,  623,  113,
+      610,  113,  714,  113,  723,  113,  721,  607,  296,  297,
+      113,  113,  213,  113,  620,  620,  620,  620,  113,  207,
+
+      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
+      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
+      207,  113,  113,  573,  569,  543,  724,  542,  527,  299,
+      489,  113,  113,  113,  113,  113,  113,  298,  113,  113,
+      113,  113,  427,  360,  362,  195,  193,  191,  113,  113,
+      113,  113,  113,  301,  113,  300,  189,  113,  113,  185,
+      360,  171,  745,  213,  113,  286,  113,  195,  113,  304,
+      113,  302,  303,  113,  193,  621,  113,  305,  282,  306,
+      113,  189,  113,  185,  113,  278,  113,  113,  113,  113,
+      113,  277,  171,  113,  213,  113,  205,  113,  202,  113,
+
+      307,  113,  198,  113,  113,  113,  113,  113,  195,  193,
+      113,  192,  113,  309,  113,  308,  113,  191,  113,  191,
+      113,  113,  113,  113,  113,  189,  106,  113,  188,  113,
+      312,  310,  183,  113,  311,  113,  181,  113,  113,  113,
+      113,  113,  106,  179,  178,  177,  113,  171,  113,  113,
+      113,  169,  113,  111,  105,  313,   95,  113,   92,  113,
+      314,  113,  113,  113,   92,  745,  745,  745,  113,  745,
+      113,  745,  113,  113,  113,  745,  113,  745,  745,  317,
+      113,  113,  318,  319,  113,  113,  320,  113,  113,  113,
+      745,  113,  113,  745,  113,  745,  745,  323,  321,  745,
+
+      113,  113,  113,  113,  113,  113,  113,  113,  113,  322,
+      113,  324,  113,  113,  745,  745,  745,  745,  745,  745,
+      113,  745,  113,  113,  113,  745,  113,  745,  745,  745,
+      113,  113,  113,  113,  113,  113,  113,  113,  745,  113,
+      745,  745,  325,  745,  113,  745,  326,  328,  113,  745,
+      113,  745,  745,  745,  113,  113,  113,  113,  113,  745,
+      329,  745,  745,  113,  745,  113,  745,  113,  113,  113,
+      745,  113,  330,  745,  745,  113,  113,  113,  113,  113,
+      113,  113,  113,  745,  113,  745,  332,  113,  745,  113,
+      745,  113,  745,  113,  745,  113,  745,  113,  745,  113,
+
+      113,  113,  745,  113,  745,  113,  333,  113,  113,  113,
+      745,  113,  745,  745,  334,  113,  113,  113,  113,  113,
+      338,  113,  745,  745,  113,  335,  745,  745,  337,  113,
+      113,  113,  113,  113,  745,  113,  745,  113,  745,  113,
+      113,  113,  113,  113,  745,  745,  745,  745,  339,  745,
+      113,  745,  113,  340,  113,  745,  113,  745,  113,  745,
+      113,  113,  113,  745,  113,  341,  113,  745,  113,  113,
+      113,  745,  113,  745,  745,  745,  113,  113,  113,  113,
+      113,  745,  745,  745,  342,  113,  745,  113,  745,  113,
+      745,  113,  745,  113,  745,  745,  343,  113,  113,  113,
+
+      113,  113,  745,  345,  344,  745,  113,  745,  113,  745,
+      113,  745,  113,  745,  113,  745,  745,  351,  113,  113,
+      113,  347,  113,  348,  113,  113,  745,  113,  349,  745,
+      745,  745,  745,  745,  113,  113,  113,  113,  113,  113,
+      113,  745,  350,  113,  113,  745,  355,  745,  745,  745,
+      113,  745,  113,  745,  113,  356,  356,  356,  356,  113,
+      745,  745,  745,  358,  358,  358,  358,  745,  745,  745,
+      357,  357,  357,  357,  357,  357,  357,  357,  359,  359,
+      359,  359,  359,  359,  359,  359,  113,  113,  745,  745,
+      745,  745,  745,  745,  364,  745,  113,  113,  363,  113,
+
+      113,  113,  113,  745,  745,  113,  113,  745,  113,  745,
+      745,  745,  113,  365,  113,  745,  113,  745,  113,  113,
+      366,  113,  113,  745,  745,  113,  745,  113,  368,  113,
+      745,  113,  745,  113,  745,  113,  745,  113,  113,  113,
+      369,  113,  113,  370,  113,  745,  745,  745,  745,  745,
+      745,  113,  113,  113,  113,  113,  113,  113,  745,  745,
+      113,  113,  745,  745,  367,  113,  745,  113,  745,  113,
+      745,  113,  745,  113,  371,  113,  113,  113,  372,  113,
+      745,  745,  745,  113,  113,  113,  113,  113,  374,  113,
+      745,  373,  113,  745,  745,  745,  113,  113,  113,  113,
+
+      113,  113,  745,  113,  745,  375,  745,  113,  113,  376,
+      113,  113,  377,  113,  745,  378,  113,  745,  745,  745,
+      113,  745,  113,  113,  113,  113,  745,  113,  113,  113,
+      745,  379,  113,  745,  113,  745,  745,  745,  113,  745,
+      113,  745,  113,  745,  113,  113,  113,  113,  380,  745,
+      745,  113,  381,  113,  745,  113,  745,  113,  745,  113,
+      745,  113,  113,  113,  113,  113,  745,  382,  745,  745,
+      113,  745,  113,  745,  383,  745,  113,  113,  384,  745,
+      385,  113,  745,  113,  745,  745,  745,  113,  745,  113,
+      745,  113,  745,  113,  113,  113,  113,  113,  745,  745,
+
+      113,  745,  113,  745,  113,  745,  113,  745,  113,  745,
+      113,  745,  113,  113,  113,  113,  113,  745,  389,  113,
+      745,  745,  390,  745,  745,  113,  113,  113,  113,  113,
+      113,  113,  391,  745,  113,  113,  393,  113,  745,  388,
+      745,  113,  745,  113,  397,  113,  745,  113,  745,  113,
+      392,  113,  113,  394,  745,  113,  113,  395,  745,  745,
+      745,  745,  113,  113,  113,  113,  113,  113,  396,  113,
+      745,  113,  745,  113,  113,  113,  113,  113,  745,  745,
+      398,  745,  113,  745,  113,  400,  113,  113,  113,  745,
+      113,  745,  745,  745,  113,  113,  113,  113,  113,  113,
+
+      113,  113,  745,  113,  405,  401,  113,  745,  113,  745,
+      113,  404,  113,  402,  113,  745,  745,  745,  113,  113,
+      113,  113,  113,  745,  745,  745,  745,  113,  745,  113,
+      745,  113,  406,  113,  745,  113,  407,  113,  745,  113,
+      113,  113,  745,  113,  745,  113,  745,  113,  113,  113,
+      745,  113,  745,  113,  745,  113,  113,  113,  745,  113,
+      745,  745,  745,  113,  113,  113,  113,  113,  745,  410,
+      745,  409,  113,  745,  113,  745,  113,  113,  113,  745,
+      113,  745,  745,  745,  113,  113,  113,  113,  113,  411,
+      745,  113,  113,  113,  412,  113,  113,  745,  113,  745,
+
+      745,  745,  113,  745,  113,  113,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  745,  113,  113,  745,  113,
+      745,  745,  745,  113,  745,  113,  113,  113,  415,  113,
+      113,  113,  113,  113,  745,  113,  113,  413,  416,  417,
+      745,  745,  113,  745,  745,  745,  113,  745,  113,  745,
+      113,  745,  113,  113,  113,  113,  113,  745,  745,  745,
+      745,  113,  745,  113,  745,  113,  745,  113,  745,  113,
+      419,  745,  113,  745,  356,  356,  356,  356,  418,  113,
+      745,  113,  745,  113,  745,  745,  745,  745,  113,  357,
+      357,  357,  357,  357,  357,  357,  357,  423,  423,  423,
+
+      423,  745,  745,  745,  745,  745,  745,  745,  424,  745,
+      745,  745,  357,  357,  357,  357,  357,  357,  357,  357,
+      358,  358,  358,  358,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  359,  359,  359,  359,  359,
+      359,  359,  359,  424,  745,  113,  745,  359,  359,  359,
+      359,  359,  359,  359,  359,  113,  745,  113,  745,  113,
+      113,  429,  745,  428,  113,  745,  745,  745,  745,  745,
+      113,  745,  113,  113,  113,  430,  113,  745,  425,  113,
+      745,  745,  745,  113,  745,  113,  113,  113,  113,  745,
+      113,  745,  113,  432,  113,  113,  745,  113,  433,  745,
+
+      113,  745,  745,  434,  113,  745,  113,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  745,  113,  113,
+      745,  745,  745,  745,  745,  113,  113,  113,  113,  113,
+      435,  745,  113,  745,  113,  745,  113,  113,  113,  113,
+      113,  745,  436,  745,  745,  113,  437,  113,  745,  113,
+      745,  113,  745,  113,  745,  745,  745,  438,  113,  113,
+      113,  113,  745,  439,  745,  745,  113,  440,  745,  745,
+      113,  113,  113,  441,  113,  745,  745,  113,  745,  113,
+      442,  113,  745,  113,  443,  113,  745,  113,  113,  113,
+      113,  113,  745,  745,  745,  745,  113,  745,  113,  113,
+
+      113,  745,  113,  745,  444,  745,  745,  113,  745,  113,
+      745,  113,  745,  113,  113,  446,  745,  445,  113,  745,
+      113,  745,  745,  745,  113,  745,  113,  745,  113,  745,
+      113,  113,  113,  113,  113,  745,  745,  113,  447,  113,
+      745,  113,  745,  113,  745,  113,  745,  113,  448,  449,
+      113,  113,  113,  113,  745,  745,  113,  745,  745,  745,
+      453,  745,  113,  113,  113,  113,  113,  113,  745,  745,
+      113,  113,  113,  113,  454,  745,  455,  745,  745,  745,
+      113,  745,  113,  113,  113,  113,  745,  113,  456,  113,
+      113,  113,  113,  457,  745,  745,  745,  745,  745,  745,
+
+      113,  113,  458,  113,  113,  113,  113,  745,  745,  113,
+      113,  745,  113,  745,  745,  460,  113,  745,  113,  745,
+      113,  745,  113,  113,  113,  459,  113,  462,  745,  745,
+      463,  113,  745,  113,  745,  113,  113,  113,  745,  745,
+      461,  745,  113,  745,  113,  745,  113,  113,  113,  745,
+      113,  745,  745,  745,  113,  113,  113,  113,  113,  113,
+      113,  113,  465,  113,  745,  745,  113,  745,  113,  745,
+      113,  745,  113,  745,  113,  745,  113,  745,  113,  113,
+      466,  745,  113,  745,  113,  745,  113,  113,  113,  745,
+      113,  745,  468,  745,  113,  113,  470,  113,  113,  745,
+
+      745,  745,  745,  113,  745,  745,  745,  113,  745,  113,
+      113,  113,  745,  113,  745,  471,  113,  473,  745,  745,
+      113,  113,  113,  113,  113,  474,  475,  113,  745,  113,
+      745,  113,  113,  113,  113,  113,  745,  745,  745,  745,
+      113,  745,  745,  745,  113,  113,  113,  745,  113,  745,
+      745,  113,  745,  113,  479,  113,  476,  113,  745,  113,
+      745,  113,  113,  113,  113,  113,  745,  745,  745,  745,
+      113,  745,  113,  113,  113,  745,  113,  745,  480,  745,
+      745,  113,  745,  113,  745,  113,  745,  113,  486,  486,
+      486,  486,  113,  745,  745,  745,  745,  745,  745,  745,
+
+      745,  113,  745,  487,  487,  487,  487,  487,  487,  487,
+      487,  113,  745,  113,  113,  113,  490,  113,  482,  745,
+      113,  745,  745,  745,  113,  113,  113,  113,  113,  113,
+      745,  113,  491,  113,  745,  113,  113,  493,  113,  113,
+      745,  113,  745,  745,  113,  745,  745,  745,  113,  745,
+      113,  113,  113,  113,  745,  113,  494,  113,  113,  745,
+      113,  495,  745,  496,  113,  745,  745,  745,  113,  745,
+      113,  745,  113,  745,  113,  113,  113,  113,  113,  745,
+      745,  113,  745,  113,  745,  113,  745,  497,  745,  113,
+      745,  113,  745,  113,  113,  113,  113,  745,  499,  498,
+
+      113,  745,  113,  745,  745,  745,  113,  745,  113,  745,
+      113,  745,  113,  745,  113,  113,  113,  745,  745,  113,
+      500,  113,  501,  745,  745,  113,  745,  502,  745,  113,
+      745,  113,  745,  113,  745,  113,  113,  113,  113,  113,
+      745,  504,  113,  745,  113,  745,  113,  745,  503,  745,
+      113,  745,  113,  113,  113,  113,  113,  745,  745,  113,
+      745,  113,  745,  113,  745,  113,  505,  113,  745,  113,
+      113,  113,  113,  113,  745,  745,  113,  745,  113,  745,
+      113,  745,  113,  507,  113,  745,  113,  506,  113,  113,
+      113,  508,  113,  113,  745,  113,  745,  512,  745,  745,
+
+      745,  745,  113,  113,  113,  113,  113,  113,  113,  745,
+      745,  113,  113,  745,  113,  513,  514,  745,  113,  745,
+      113,  745,  113,  745,  113,  113,  113,  113,  113,  745,
+      745,  113,  745,  113,  516,  113,  745,  113,  745,  113,
+      745,  113,  515,  113,  113,  113,  113,  517,  745,  745,
+      113,  745,  113,  518,  745,  745,  113,  745,  113,  745,
+      113,  745,  113,  113,  113,  113,  113,  745,  745,  745,
+      745,  113,  745,  113,  745,  113,  745,  113,  113,  519,
+      745,  520,  113,  745,  113,  745,  745,  745,  113,  745,
+      113,  745,  113,  745,  113,  113,  113,  113,  113,  745,
+
+      745,  521,  745,  113,  745,  113,  745,  113,  113,  113,
+      524,  113,  745,  745,  113,  745,  745,  745,  113,  113,
+      526,  113,  113,  113,  745,  113,  745,  113,  745,  113,
+      113,  113,  113,  113,  745,  529,  745,  528,  113,  745,
+      113,  745,  113,  745,  113,  745,  113,  745,  745,  745,
+      113,  113,  113,  745,  113,  113,  532,  745,  113,  113,
+      531,  113,  745,  745,  745,  113,  745,  113,  113,  113,
+      113,  113,  113,  113,  113,  113,  113,  113,  745,  113,
+      113,  745,  745,  745,  745,  745,  113,  745,  113,  113,
+      113,  113,  745,  113,  113,  113,  535,  745,  113,  486,
+
+      486,  486,  486,  745,  113,  745,  113,  745,  113,  745,
+      745,  745,  544,  113,  487,  487,  487,  487,  487,  487,
+      487,  487,  541,  745,  745,  745,  487,  487,  487,  487,
+      487,  487,  487,  487,  113,  113,  745,  745,  745,  745,
+      745,  545,  745,  745,  113,  113,  113,  113,  113,  113,
+      745,  113,  113,  113,  113,  547,  745,  745,  745,  745,
+      745,  113,  113,  548,  113,  113,  113,  113,  113,  745,
+      113,  113,  745,  745,  549,  550,  745,  113,  113,  113,
+      113,  113,  113,  113,  113,  745,  113,  113,  745,  745,
+      745,  745,  745,  113,  113,  113,  113,  113,  113,  113,
+
+      745,  745,  113,  113,  745,  113,  551,  552,  745,  113,
+      745,  113,  745,  113,  745,  113,  113,  113,  113,  113,
+      745,  745,  113,  745,  113,  745,  113,  553,  113,  745,
+      113,  745,  113,  113,  113,  113,  113,  745,  745,  745,
+      745,  113,  745,  113,  113,  113,  745,  113,  745,  745,
+      745,  554,  113,  745,  113,  113,  113,  745,  113,  745,
+      745,  556,  555,  113,  745,  113,  745,  113,  745,  113,
+      745,  113,  113,  113,  113,  113,  745,  745,  113,  745,
+      113,  745,  557,  745,  113,  562,  113,  745,  113,  113,
+      113,  113,  113,  745,  745,  745,  745,  113,  745,  113,
+
+      113,  113,  745,  113,  745,  745,  113,  563,  113,  745,
+      113,  745,  113,  745,  113,  745,  113,  113,  113,  113,
+      113,  745,  745,  113,  745,  113,  565,  113,  745,  113,
+      745,  113,  745,  113,  564,  113,  113,  113,  113,  113,
+      745,  745,  113,  745,  745,  745,  745,  745,  113,  113,
+      113,  113,  113,  113,  113,  567,  566,  113,  113,  745,
+      113,  745,  745,  745,  113,  745,  113,  745,  113,  745,
+      113,  113,  113,  113,  113,  745,  745,  113,  745,  113,
+      745,  571,  745,  113,  745,  113,  745,  113,  113,  113,
+      113,  113,  745,  745,  113,  745,  113,  745,  113,  745,
+
+      113,  745,  113,  745,  113,  568,  113,  113,  113,  113,
+      745,  745,  575,  113,  745,  113,  745,  745,  576,  113,
+      745,  113,  745,  113,  745,  113,  745,  113,  113,  113,
+      579,  113,  745,  745,  113,  745,  584,  584,  584,  584,
+      745,  113,  745,  113,  745,  113,  745,  745,  745,  745,
+      113,  585,  585,  585,  585,  585,  585,  585,  585,  113,
+      113,  589,  745,  745,  745,  745,  588,  745,  745,  113,
+      113,  113,  113,  113,  113,  113,  745,  745,  113,  113,
+      745,  745,  745,  113,  745,  113,  113,  113,  745,  113,
+      745,  591,  745,  113,  113,  113,  113,  113,  593,  113,
+
+      113,  592,  113,  745,  745,  113,  596,  113,  745,  113,
+      745,  594,  745,  113,  745,  113,  745,  113,  113,  113,
+      595,  113,  745,  113,  745,  113,  113,  113,  745,  113,
+      745,  745,  745,  113,  113,  113,  113,  113,  745,  597,
+      745,  745,  113,  745,  113,  745,  113,  745,  113,  745,
+      113,  745,  113,  745,  113,  113,  113,  745,  113,  598,
+      113,  745,  113,  113,  113,  745,  113,  745,  745,  745,
+      113,  113,  113,  113,  113,  745,  603,  745,  745,  113,
+      745,  113,  745,  113,  113,  113,  745,  113,  745,  745,
+      745,  113,  113,  113,  113,  113,  113,  113,  113,  745,
+
+      113,  745,  745,  113,  745,  113,  745,  113,  113,  113,
+      745,  113,  604,  745,  745,  113,  113,  113,  113,  113,
+      113,  113,  113,  745,  113,  612,  605,  113,  745,  113,
+      745,  113,  745,  113,  745,  113,  745,  745,  745,  113,
+      113,  113,  113,  113,  745,  113,  745,  745,  113,  745,
+      745,  745,  113,  745,  113,  615,  113,  113,  745,  113,
+      113,  113,  745,  745,  113,  584,  584,  584,  584,  745,
+      113,  745,  113,  624,  113,  745,  745,  745,  113,  113,
+      585,  585,  585,  585,  585,  585,  585,  585,  113,  113,
+      113,  745,  113,  745,  745,  113,  745,  113,  745,  113,
+
+      745,  113,  745,  113,  745,  113,  745,  113,  113,  113,
+      113,  113,  625,  626,  113,  745,  627,  745,  745,  745,
+      113,  113,  113,  113,  113,  113,  113,  745,  745,  113,
+      113,  745,  113,  745,  630,  745,  113,  745,  628,  745,
+      113,  745,  113,  113,  113,  113,  113,  745,  745,  113,
+      745,  113,  745,  631,  745,  113,  745,  113,  745,  113,
+      113,  113,  113,  113,  745,  635,  745,  745,  113,  745,
+      113,  113,  113,  636,  113,  745,  745,  113,  637,  113,
+      745,  113,  745,  113,  745,  113,  745,  113,  113,  113,
+      113,  113,  745,  745,  113,  745,  113,  745,  113,  745,
+
+      652,  745,  113,  745,  113,  745,  113,  113,  113,  113,
+      113,  653,  745,  113,  745,  745,  745,  745,  745,  113,
+      113,  113,  113,  113,  113,  113,  113,  745,  113,  113,
+      745,  745,  745,  745,  745,  113,  113,  113,  113,  113,
+      113,  113,  654,  745,  113,  113,  745,  113,  656,  745,
+      745,  113,  745,  113,  745,  113,  745,  113,  113,  113,
+      113,  113,  745,  745,  745,  745,  113,  745,  113,  113,
+      660,  745,  113,  745,  745,  113,  745,  113,  745,  113,
+      745,  113,  661,  113,  745,  113,  113,  113,  113,  113,
+      745,  745,  113,  745,  113,  745,  113,  745,  113,  745,
+
+      113,  745,  113,  113,  113,  113,  113,  745,  745,  745,
+      745,  113,  745,  113,  113,  113,  745,  113,  745,  745,
+      113,  676,  113,  745,  113,  745,  113,  745,  113,  745,
+      113,  680,  681,  113,  113,  113,  113,  745,  745,  113,
+      745,  745,  745,  745,  745,  113,  113,  113,  113,  113,
+      113,  113,  113,  745,  113,  113,  745,  745,  696,  745,
+      745,  113,  113,  113,  113,  113,  113,  745,  745,  745,
+      113,  113,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   62,   62,   62,   62,   62,
+       62,   62,   62,   62,   62,   62,   62,   62,   67,   67,
+
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   70,   70,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   70,   70,   79,   79,   79,   79,   79,   79,
+       79,   79,   79,   79,   79,   79,   79,   94,   94,   94,
+       94,  745,   94,   94,   94,   94,   94,   94,   94,   94,
+      101,  101,  101,  745,  101,  745,  101,  745,  101,  172,
+      172,  745,  172,  172,  176,  176,  745,  745,  176,  176,
+      745,  176,  176,  176,  176,  176,  176,  180,  180,  180,
+      180,  745,  180,  180,  180,  180,  180,  180,  180,  180,
+      182,  182,  182,  182,  182,  182,  182,  182,  745,  182,
+
+      182,  184,  745,  745,  745,  184,  184,  184,  184,  184,
+      184,  184,  185,  745,  745,  745,  185,  185,  185,  185,
+      185,  185,  185,  190,  190,  745,  190,  190,  194,  194,
+      745,  194,  194,  196,  196,  745,  196,  196,  206,  745,
+      206,  206,  119,  119,  745,  119,  119,  274,  745,  274,
+      274,  281,  745,  281,  281,  283,  745,  283,  283,  284,
+      745,  284,  284,  287,  287,  287,  287,  287,  287,  287,
+      287,  287,  287,  287,  287,  287,  207,  207,  745,  207,
+      207,  587,  587,  745,  587,  587,  587,  587,  587,  587,
+      587,  587,  587,  587,  585,  585,  585,  745,  745,  745,
+
+      585,  745,  745,  745,  745,  585,   17,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745
     } ;
 
 static yyconst flex_int16_t yy_chk[4591] =
@@ -1455,35 +1458,35 @@ static yyconst flex_int16_t yy_chk[4591] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    3,    3,    3,    4,    4,    4,    5,
-        5,    5,  133,   11,    3,    9,    7,    4,    8,    9,
-
-        5,    6,    6,    6,    7,   12,    8,  147,  132,    7,
-       10,    8,    6,  739,   10,   11,  101,   29,   11,   29,
-        7,   96,    8,   79,   79,   79,   79,   12,  738,  101,
-       12,   19,   19,   19,   19,   81,  538,  133,   19,   20,
-       20,   20,   20,  538,  196,   36,   20,   24,   24,   24,
-       24,   36,   81,   96,   24,   36,  152,   36,   36,   36,
-      142,  147,   24,   24,   36,  132,   26,   80,   80,   80,
-       80,   11,  196,   11,   26,   26,   26,   26,   26,   26,
-       26,   26,  161,   12,   81,   12,   13,   13,   13,   13,
+        5,    5,  135,   11,    3,    9,    7,    4,    8,    9,
+
+        5,    6,    6,    6,    7,   12,    8,  149,   54,    7,
+       10,    8,    6,  743,   10,   11,  103,   29,   11,   29,
+        7,   98,    8,   81,   81,   81,   81,   12,  742,  103,
+       12,   19,   19,   19,   19,   83,  542,  135,   19,   20,
+       20,   20,   20,  542,  200,   36,   20,   24,   24,   24,
+       24,   36,   83,   98,   24,   36,   54,   36,   36,   36,
+      134,  149,   24,   24,   36,  154,   26,   82,   82,   82,
+       82,   11,  200,   11,   26,   26,   26,   26,   26,   26,
+       26,   26,  144,   12,   83,   12,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 
-       13,   13,   91,   91,   91,   91,  195,  164,  195,  152,
-       13,   13,   13,   13,   13,   27,  142,  195,  327,   13,
-       27,   41,  357,   27,   27,   27,   27,   27,   27,   27,
-       27,   41,  357,   41,  268,   41,  229,  161,  165,  241,
+       13,   13,   93,   93,   93,   93,  163,  166,  290,  233,
+       13,   13,   13,   13,   13,   27,  197,  134,  154,   13,
+       27,   41,  197,   27,   27,   27,   27,   27,   27,   27,
+       27,   41,  739,   41,  738,   41,  290,  245,  144,  167,
        41,   13,   13,   13,   30,   44,   30,   30,   30,   30,
-       30,   30,   30,   30,  230,   44,  193,   44,  251,   44,
-      164,  382,  193,   30,   44,  327,   13,   13,   13,   14,
+       30,   30,   30,   30,  199,   44,  199,   44,  233,   44,
+      166,  163,  272,   30,   44,  199,   13,   13,   13,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   14,  229,  165,  268,  241,  182,
-      182,   44,   30,   14,   14,   14,   14,   14,   35,  165,
-
-      182,   35,   14,  582,   37,   35,  382,   37,   35,   35,
-       35,   35,   35,  230,   37,  251,   37,   35,   37,   38,
-      286,   35,  401,   37,   14,   14,   14,  275,  275,   38,
-       38,   38,  582,   38,  183,  183,  183,  183,   38,  422,
-      735,   38,  734,  733,  422,  732,  401,  731,  286,   14,
+       14,   14,   14,   14,   14,  234,  245,  167,  186,  186,
+      249,   44,   30,   14,   14,   14,   14,   14,   35,  186,
+
+      167,   35,   14,  361,   37,   35,  737,   37,   35,   35,
+       35,   35,   35,  361,   37,  272,   37,   35,   37,   38,
+      740,   35,  405,   37,   14,   14,   14,  279,  279,   38,
+       38,   38,  736,   38,  187,  187,  187,  187,   38,  249,
+      426,   38,  735,  734,  234,  426,  405,  740,  733,   14,
        14,   14,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1493,467 +1496,467 @@ static yyconst flex_int16_t yy_chk[4591] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   23,   47,  730,  285,   47,
-      285,  729,  419,  419,  419,  419,   47,  728,   47,  285,
-       47,  727,   23,  726,  724,   47,   23,   23,   23,   23,
+       15,   15,   15,   15,   15,   23,   47,  732,  289,   47,
+      289,  731,  730,  728,  726,  725,   47,  724,   47,  289,
+       47,  255,   23,  723,  721,   47,   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,  311,  266,   23,   23,   23,   23,   23,   23,
+       23,   23,  315,  270,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
 
-       23,   23,   23,   23,   23,   23,   23,   31,  245,   31,
-       31,   31,   31,   31,   31,   31,   31,   39,   39,  262,
-      267,   45,   45,  419,  463,   45,   31,  592,   39,  722,
-       39,   45,   39,   45,   39,   45,  332,   39,   43,   43,
-       45,  349,  311,  463,  721,  592,   43,  266,  312,   43,
-       45,   43,  720,   43,  719,   31,   34,  245,   43,   34,
-       34,   34,   34,   34,   34,   34,   34,  323,  262,  267,
-      342,  383,   34,   34,   34,   34,   34,   34,   34,   34,
+       23,   23,   23,   23,   23,   23,   23,   31,  255,   31,
+       31,   31,   31,   31,   31,   31,   31,   39,   39,  266,
+      271,   45,   45,  331,  451,   45,   31,  596,   39,  720,
+       39,   45,   39,   45,   39,   45,  336,   39,   43,   43,
+       45,  353,  315,  719,  718,  596,   43,  270,  316,   43,
+       45,   43,  717,   43,  711,   31,   34,  710,   43,   34,
+       34,   34,   34,   34,   34,   34,   34,  327,  266,  271,
+      331,  451,   34,   34,   34,   34,   34,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,  332,  349,
+       34,   34,   34,   34,   34,   34,   34,   34,  336,  353,
 
-      312,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+      316,   34,   34,   34,   34,   34,   34,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   40,  383,  348,  395,  323,   42,   42,
-      399,   42,  342,   40,  418,   40,  363,   40,  404,   42,
-       42,   42,   40,   42,  350,  384,   42,  555,   42,  409,
-       46,   46,  417,   46,  410,   40,  414,   98,   98,   98,
-       98,   46,  427,   46,   98,   46,   40,   46,   48,  446,
-       46,   48,   98,   98,  348,   48,   49,  474,   48,  395,
-       48,  416,   48,  404,   49,   49,   48,   48,   50,  418,
-      350,   48,  399,  447,   46,   49,  363,   49,   50,   49,
-
-       50,   49,   50,  410,   49,  384,   50,   50,   51,  409,
-      717,  111,  414,  555,  417,  427,  716,   49,   51,   52,
-       51,  111,   51,  111,  446,  111,   52,   51,   50,   52,
-      111,   52,  715,   52,   54,   54,   54,   54,   52,  714,
-      447,  416,  474,  448,   51,  488,  479,  473,  478,   54,
-       54,   54,   54,   54,   54,   54,   54,   77,  169,  169,
-      169,  169,   77,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,  169,  169,  169,  169,  169,  169,  169,
-      169,   77,   77,   77,   77,   77,  100,  112,  100,  100,
-      100,  100,  100,  100,  100,  100,  448,  112,  459,  112,
-
-      473,  112,  488,  506,  112,  100,  112,  479,  478,  713,
-      707,  608,   77,   77,   77,  736,  706,  705,  704,  477,
-      701,  102,  459,  102,  102,  102,  102,  102,  102,  102,
-      102,  697,  696,  695,  100,  693,  519,  506,   77,   78,
-      102,  608,  736,  480,   78,   78,   78,   78,   78,   78,
-       78,   78,   78,   78,   78,  105,  105,  105,  105,  105,
-      105,  105,  105,   78,   78,   78,   78,   78,  477,  102,
-      519,  106,  105,  106,  106,  106,  106,  106,  106,  106,
-      106,   78,  199,  199,  199,  199,  199,  199,  199,  199,
-      106,  460,  480,  481,   78,   78,   78,  107,  468,  107,
-
-      507,  105,  107,  107,  107,  107,  107,  107,  107,  107,
-      200,  200,  200,  200,  200,  200,  200,  200,  521,  106,
-       78,  108,  113,  108,  108,  108,  108,  108,  108,  108,
-      108,  535,  113,  114,  113,  691,  113,  529,  460,  115,
-      108,  113,  481,  114,  468,  114,  526,  114,  690,  115,
-      689,  115,  114,  115,  534,  170,  114,  507,  115,  170,
-      170,  170,  170,  170,  170,  170,  170,  521,  682,  108,
-      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
-      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
-      110,  110,  116,  118,  529,  505,  535,  530,  118,  534,
-
-      533,  526,  116,  118,  116,  118,  116,  118,  119,  120,
-      116,  116,  118,  536,  679,  576,  542,  557,  119,  120,
-      119,  120,  119,  120,  121,  554,  119,  119,  120,  505,
-      122,  530,  556,  678,  121,  570,  121,  121,  121,  602,
-      122,  566,  122,  121,  122,  123,  123,  536,  505,  122,
-      574,  124,  124,  533,  573,  568,  123,  671,  123,  123,
-      123,  579,  124,  125,  124,  123,  124,  542,  557,  564,
-      578,  124,  576,  125,  125,  125,  126,  125,  596,  127,
-      126,  577,  125,  595,  570,  670,  126,  554,  126,  127,
-      126,  127,  602,  127,  556,  126,  129,  129,  127,  128,
-
-      128,  128,  612,  566,  578,  573,  129,  130,  129,  128,
-      129,  128,  574,  128,  129,  129,  568,  130,  128,  130,
-      131,  130,  605,  579,  628,  134,  130,  596,  597,  564,
-      131,  654,  131,  131,  131,  134,  577,  630,  135,  131,
-      607,  135,  613,  595,  604,  134,  136,  134,  135,  134,
-      135,  610,  135,  612,  134,  614,  136,  135,  136,  629,
-      136,  137,  137,  634,  615,  136,  654,  737,  669,  605,
-      664,  137,  138,  137,  607,  137,  613,  628,  137,  137,
-      137,  653,  138,  139,  138,  138,  138,  655,  597,  140,
-      630,  138,  636,  139,  737,  139,  662,  139,  639,  140,
-
-      141,  140,  139,  140,  604,  139,  637,  629,  140,  641,
-      141,  610,  141,  143,  141,  644,  144,  614,  645,  141,
-      634,  143,  660,  143,  615,  143,  144,  143,  144,  145,
-      144,  658,  143,  643,  144,  144,  698,  146,  653,  145,
-      148,  145,  663,  145,  655,  636,  666,  146,  145,  146,
-      148,  146,  148,  149,  148,  146,  146,  673,  148,  148,
-      639,  659,  641,  149,  150,  149,  637,  149,  661,  651,
-      667,  645,  149,  149,  150,  644,  150,  151,  150,  660,
-      151,  681,  658,  150,  151,  665,  668,  151,  687,  151,
-      647,  151,  153,  153,  674,  643,  151,  646,  698,  154,
-
-      675,  710,  663,  153,  694,  153,  666,  153,  673,  154,
-      155,  154,  153,  154,  154,  680,  156,  154,  154,  683,
-      155,  661,  155,  667,  155,  158,  156,  157,  156,  155,
-      156,  642,  156,  640,  155,  156,  638,  157,  158,  157,
-      681,  157,  665,  668,  159,  687,  157,  674,  158,  159,
-      158,  675,  158,  686,  159,  160,  159,  158,  159,  710,
-      694,  162,  700,  159,  635,  160,  680,  160,  162,  160,
-      685,  162,  683,  162,  160,  162,  166,  163,  163,  702,
-      162,  163,  581,  581,  581,  581,  166,  163,  166,  163,
-      166,  163,  718,  171,  166,  166,  163,  171,  171,  171,
-
-      171,  171,  171,  171,  171,  197,  686,  197,  197,  197,
-      197,  197,  197,  197,  197,  204,  205,  625,  204,  700,
-      619,  685,  688,  618,  197,  204,  205,  204,  205,  204,
-      205,  206,  207,  703,  204,  205,  702,  708,  609,  606,
-      603,  206,  207,  206,  207,  206,  207,  208,  598,  586,
-      206,  207,  718,  197,  202,  210,  583,  208,  211,  208,
-      208,  208,  210,  581,  569,  210,  208,  210,  211,  210,
-      211,  212,  211,  688,  210,  711,  712,  211,  565,  213,
-      532,  212,  523,  212,  703,  212,  708,  518,  212,  213,
-      212,  213,  485,  213,  616,  616,  616,  616,  213,  202,
-
-      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
-      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
-      202,  214,  215,  484,  465,  423,  711,  712,  358,  215,
-      356,  214,  215,  214,  215,  214,  215,  214,  216,  217,
-      214,  215,  287,  280,  279,  278,  277,  276,  216,  217,
-      216,  217,  216,  217,  218,  216,  273,  216,  217,  270,
-      209,  203,  194,  192,  218,  190,  218,  188,  218,  219,
-      219,  218,  218,  218,  186,  616,  220,  219,  181,  220,
-      219,  179,  219,  174,  219,  168,  220,  221,  220,  219,
-      220,  117,  109,  222,  103,  220,   99,  221,   97,  221,
-
-      221,  221,   95,  222,  223,  222,  221,  222,   94,   93,
-      224,   90,  222,  224,  223,  223,  223,   85,  223,   84,
-      224,  225,  224,  223,  224,   83,   70,  226,   67,  224,
-      226,  225,   63,  225,  225,  225,   62,  226,  227,  226,
-      225,  226,   59,   58,   53,   32,  226,   28,  227,  228,
-      227,   22,  227,   21,   18,  227,   17,  227,    0,  228,
-      228,  228,  231,  228,    0,    0,    0,    0,  228,    0,
-      232,    0,  231,  233,  231,    0,  231,    0,    0,  231,
-      232,  231,  232,  233,  232,  233,  233,  233,  234,  232,
-        0,  235,  233,    0,  236,    0,    0,  236,  234,    0,
-
-      234,  235,  234,  235,  236,  235,  236,  234,  236,  235,
-      235,  237,  238,  236,    0,    0,    0,    0,    0,    0,
-      237,    0,  238,  239,  238,    0,  238,    0,    0,    0,
-      237,  238,  237,  239,  237,  239,  240,  239,    0,  237,
-        0,    0,  239,    0,  242,    0,  240,  242,  240,    0,
-      240,    0,    0,    0,  242,  240,  242,  243,  242,    0,
-      243,    0,    0,  242,    0,  244,    0,  243,  246,  243,
-        0,  243,  244,    0,    0,  244,  243,  244,  246,  244,
-      246,  247,  246,    0,  244,    0,  246,  246,    0,  248,
-        0,  247,    0,  247,    0,  247,    0,  249,    0,  248,
-
-      247,  248,    0,  248,    0,  250,  248,  249,  248,  249,
-        0,  249,    0,    0,  249,  250,  249,  250,  252,  250,
-      253,  253,    0,    0,  250,  250,    0,    0,  252,  254,
-      252,  253,  252,  253,    0,  253,    0,  252,    0,  254,
-      253,  254,  255,  254,    0,    0,    0,    0,  254,    0,
-      256,    0,  255,  256,  255,    0,  255,    0,  257,    0,
-      256,  255,  256,    0,  256,  257,  258,    0,  257,  256,
-      257,    0,  257,    0,    0,    0,  258,  257,  258,  259,
-      258,    0,    0,    0,  258,  258,    0,  260,    0,  259,
-        0,  259,    0,  259,    0,    0,  259,  260,  259,  260,
-
-      261,  260,    0,  261,  260,    0,  260,    0,  263,    0,
-      261,    0,  261,    0,  261,    0,    0,  265,  263,  261,
-      263,  263,  263,  263,  264,  265,    0,  263,  263,    0,
-        0,    0,    0,    0,  264,  265,  264,  265,  264,  265,
-      269,    0,  264,  264,  265,    0,  269,    0,    0,    0,
-      269,    0,  269,    0,  269,  271,  271,  271,  271,  269,
-        0,    0,    0,  272,  272,  272,  272,    0,    0,    0,
-      271,  271,  271,  271,  271,  271,  271,  271,  272,  272,
-      272,  272,  272,  272,  272,  272,  288,  289,    0,    0,
-        0,    0,    0,    0,  289,    0,  288,  289,  288,  289,
-
-      288,  289,  290,    0,    0,  288,  289,    0,  291,    0,
-        0,    0,  290,  290,  290,    0,  290,    0,  291,  292,
-      291,  290,  291,    0,    0,  293,    0,  291,  293,  292,
-        0,  292,    0,  292,    0,  293,    0,  293,  292,  293,
-      294,  294,  295,  295,  293,    0,    0,    0,    0,    0,
-        0,  294,  295,  294,  295,  294,  295,  296,    0,    0,
-      294,  295,    0,    0,  292,  297,    0,  296,    0,  296,
-        0,  296,    0,  298,  296,  297,  296,  297,  297,  297,
-        0,    0,    0,  298,  297,  298,  300,  298,  299,  299,
-        0,  298,  298,    0,    0,    0,  300,  301,  300,  299,
-
-      300,  299,    0,  299,    0,  300,    0,  301,  299,  301,
-      302,  301,  302,  303,    0,  303,  301,    0,    0,    0,
-      302,    0,  302,  303,  302,  303,    0,  303,  304,  302,
-        0,  304,  303,    0,  305,    0,    0,    0,  304,    0,
-      304,    0,  304,    0,  305,  306,  305,  304,  305,    0,
-        0,  307,  306,  305,    0,  306,    0,  306,    0,  306,
-        0,  307,  308,  307,  306,  307,    0,  307,    0,    0,
-      307,    0,  308,    0,  308,    0,  308,  309,  308,    0,
-      309,  308,    0,  310,    0,    0,    0,  309,    0,  309,
-        0,  309,    0,  310,  313,  310,  309,  310,    0,    0,
-
-      314,    0,  310,    0,  313,    0,  313,    0,  313,    0,
-      314,    0,  314,  313,  314,  315,  316,    0,  314,  314,
-        0,    0,  315,    0,    0,  315,  316,  315,  316,  315,
-      316,  317,  316,    0,  315,  316,  318,  318,    0,  313,
-        0,  317,    0,  317,  320,  317,    0,  318,    0,  318,
-      317,  318,  319,  318,    0,  320,  318,  319,    0,    0,
-        0,    0,  319,  321,  319,  320,  319,  320,  319,  320,
-        0,  319,    0,  321,  320,  321,  322,  321,    0,    0,
-      321,    0,  321,    0,  324,  324,  322,  325,  322,    0,
-      322,    0,    0,    0,  324,  322,  324,  325,  324,  325,
-
-      326,  325,    0,  324,  329,  325,  325,    0,  328,    0,
-      326,  328,  326,  326,  326,    0,    0,    0,  328,  326,
-      328,  329,  328,    0,    0,    0,    0,  328,    0,  330,
-        0,  329,  330,  329,    0,  329,  331,  331,    0,  330,
-      329,  330,    0,  330,    0,  333,    0,  331,  330,  331,
-        0,  331,    0,  334,    0,  333,  331,  333,    0,  333,
-        0,    0,    0,  334,  333,  334,  335,  334,    0,  335,
-        0,  334,  334,    0,  336,    0,  335,  337,  335,    0,
-      335,    0,    0,    0,  336,  335,  336,  337,  336,  337,
-        0,  337,  339,  336,  338,  338,  337,    0,  340,    0,
-
-        0,    0,  339,    0,  339,  338,  339,  338,  340,  338,
-      340,  339,  340,  341,  338,    0,  343,  340,    0,  344,
-        0,    0,    0,  341,    0,  341,  343,  341,  343,  344,
-      343,  344,  341,  344,    0,  343,  345,  339,  344,  345,
-        0,    0,  346,    0,    0,    0,  345,    0,  345,    0,
-      345,    0,  346,  347,  346,  345,  346,    0,    0,    0,
-        0,  346,    0,  347,    0,  347,    0,  347,    0,  351,
-      347,    0,  347,    0,  352,  352,  352,  352,  346,  351,
-        0,  351,    0,  351,    0,    0,    0,    0,  351,  352,
-      352,  352,  352,  352,  352,  352,  352,  353,  353,  353,
-
-      353,    0,    0,    0,    0,    0,    0,    0,  353,    0,
-        0,    0,  353,  353,  353,  353,  353,  353,  353,  353,
-      354,  354,  354,  354,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  354,  354,  354,  354,  354,
-      354,  354,  354,  355,    0,  359,    0,  355,  355,  355,
-      355,  355,  355,  355,  355,  359,    0,  359,    0,  359,
-      360,  360,    0,  359,  359,    0,    0,    0,    0,    0,
-      360,    0,  360,  362,  360,  361,  361,    0,  353,  360,
-        0,    0,    0,  362,    0,  362,  361,  362,  361,    0,
-      361,    0,  362,  364,  364,  361,    0,  365,  365,    0,
-
-      366,    0,    0,  366,  364,    0,  364,  365,  364,  365,
-      366,  365,  366,  364,  366,  367,  365,    0,  368,  366,
-        0,    0,    0,    0,    0,  367,  369,  367,  368,  367,
-      368,    0,  368,    0,  367,    0,  369,  368,  369,  370,
-      369,    0,  369,    0,    0,  369,  370,  371,    0,  370,
-        0,  370,    0,  370,    0,    0,    0,  371,  370,  371,
-      372,  371,    0,  372,    0,    0,  371,  372,    0,    0,
-      372,  373,  372,  373,  372,    0,    0,  374,    0,  372,
-      374,  373,    0,  373,  374,  373,    0,  374,  375,  374,
-      373,  374,    0,    0,    0,    0,  374,    0,  375,  376,
-
-      375,    0,  375,    0,  375,    0,    0,  375,    0,  376,
-        0,  376,    0,  376,  377,  377,    0,  376,  376,    0,
-      378,    0,    0,    0,  377,    0,  377,    0,  377,    0,
-      378,  379,  378,  377,  378,    0,    0,  380,  378,  378,
-        0,  379,    0,  379,    0,  379,    0,  380,  379,  380,
-      379,  380,  381,  385,    0,    0,  380,    0,    0,    0,
-      385,    0,  381,  385,  381,  385,  381,  385,    0,    0,
-      387,  381,  385,  386,  386,    0,  386,    0,    0,    0,
-      387,    0,  387,  386,  387,  386,    0,  386,  387,  387,
-      389,  388,  386,  388,    0,    0,    0,    0,    0,    0,
-
-      389,  388,  389,  388,  389,  388,  390,    0,    0,  389,
-      388,    0,  391,    0,    0,  391,  390,    0,  390,    0,
-      390,    0,  391,  392,  391,  390,  391,  393,    0,    0,
-      394,  391,    0,  392,    0,  392,  393,  392,    0,    0,
-      392,    0,  392,    0,  396,    0,  393,  394,  393,    0,
-      393,    0,    0,    0,  396,  393,  396,  394,  396,  394,
-      397,  394,  396,  396,    0,    0,  394,    0,  398,    0,
-      397,    0,  397,    0,  397,    0,  400,    0,  398,  397,
-      398,    0,  398,    0,  402,    0,  400,  398,  400,    0,
-      400,    0,  400,    0,  402,  400,  402,  403,  402,    0,
-
-        0,    0,    0,  402,    0,    0,    0,  403,    0,  403,
-      405,  403,    0,  406,    0,  403,  403,  405,    0,    0,
-      405,  407,  405,  406,  405,  406,  407,  406,    0,  405,
-        0,  407,  406,  407,  408,  407,    0,    0,    0,    0,
-      407,    0,    0,    0,  408,  411,  408,    0,  408,    0,
-        0,  412,    0,  408,  412,  411,  408,  411,    0,  411,
-        0,  412,  413,  412,  411,  412,    0,    0,    0,    0,
-      412,    0,  413,  415,  413,    0,  413,    0,  413,    0,
-        0,  413,    0,  415,    0,  415,    0,  415,  420,  420,
-      420,  420,  415,    0,    0,    0,    0,    0,    0,    0,
-
-        0,  424,    0,  420,  420,  420,  420,  420,  420,  420,
-      420,  424,    0,  424,  426,  424,  425,  425,  415,    0,
-      424,    0,    0,    0,  426,  428,  426,  425,  426,  425,
-        0,  425,  426,  426,    0,  428,  425,  428,  429,  428,
-        0,  430,    0,    0,  428,    0,    0,    0,  429,    0,
-      429,  430,  429,  430,    0,  430,  429,  429,  431,    0,
-      430,  431,    0,  432,  432,    0,    0,    0,  431,    0,
-      431,    0,  431,    0,  432,  433,  432,  431,  432,    0,
-        0,  434,    0,  432,    0,  433,    0,  433,    0,  433,
-        0,  434,    0,  434,  433,  434,  435,    0,  435,  434,
-
-      434,    0,  436,    0,    0,    0,  435,    0,  435,    0,
-      435,    0,  436,    0,  436,  435,  436,    0,    0,  437,
-      436,  436,  437,    0,    0,  438,    0,  438,    0,  437,
-        0,  437,    0,  437,    0,  438,  439,  438,  437,  438,
-        0,  440,  440,    0,  438,    0,  439,    0,  439,    0,
-      439,    0,  440,  441,  440,  439,  440,    0,    0,  442,
-        0,  440,    0,  441,    0,  441,  442,  441,    0,  442,
-      443,  442,  441,  442,    0,    0,  444,    0,  442,    0,
-      443,    0,  443,  444,  443,    0,  444,  443,  444,  443,
-      444,  445,  445,  449,    0,  444,    0,  449,    0,    0,
-
-        0,    0,  445,  449,  445,  449,  445,  449,  450,    0,
-        0,  445,  449,    0,  451,  450,  451,    0,  450,    0,
-      450,    0,  450,    0,  451,  452,  451,  450,  451,    0,
-        0,  453,    0,  451,  453,  452,    0,  452,    0,  452,
-        0,  453,  452,  453,  452,  453,  454,  454,    0,    0,
-      453,    0,  455,  455,    0,    0,  454,    0,  454,    0,
-      454,    0,  455,  456,  455,  454,  455,    0,    0,    0,
-        0,  455,    0,  456,    0,  456,    0,  456,  457,  456,
-        0,  457,  456,    0,  458,    0,    0,    0,  457,    0,
-      457,    0,  457,    0,  458,  461,  458,  457,  458,    0,
-
-        0,  458,    0,  458,    0,  461,    0,  461,  464,  461,
-      462,  462,    0,    0,  461,    0,    0,    0,  464,  466,
-      464,  462,  464,  462,    0,  462,    0,  464,    0,  466,
-      462,  466,  467,  466,    0,  467,    0,  466,  466,    0,
-      469,    0,  467,    0,  467,    0,  467,    0,    0,    0,
-      469,  467,  469,    0,  469,  470,  470,    0,  471,  469,
-      469,  472,    0,    0,    0,  470,    0,  470,  471,  470,
-      471,  472,  471,  472,  470,  472,  475,  471,    0,  476,
-      472,    0,    0,    0,    0,    0,  475,    0,  475,  476,
-      475,  476,    0,  476,  486,  475,  476,    0,  476,  482,
-
-      482,  482,  482,    0,  486,    0,  486,    0,  486,    0,
-        0,    0,  486,  486,  482,  482,  482,  482,  482,  482,
-      482,  482,  483,    0,    0,    0,  483,  483,  483,  483,
-      483,  483,  483,  483,  487,  489,    0,    0,    0,    0,
-        0,  487,    0,    0,  487,  489,  487,  489,  487,  489,
-        0,  491,  490,  487,  489,  490,    0,    0,    0,    0,
-        0,  491,  490,  491,  490,  491,  490,  492,  493,    0,
-      491,  490,    0,    0,  492,  493,    0,  492,  493,  492,
-      493,  492,  493,  494,  495,    0,  492,  493,    0,    0,
-        0,    0,    0,  494,  495,  494,  495,  494,  495,  496,
-
-        0,    0,  494,  495,    0,  497,  496,  497,    0,  496,
-        0,  496,    0,  496,    0,  497,  498,  497,  496,  497,
-        0,    0,  499,    0,  497,    0,  498,  499,  498,    0,
-      498,    0,  499,  500,  499,  498,  499,    0,    0,    0,
-        0,  499,    0,  500,  501,  500,    0,  500,    0,    0,
-        0,  500,  500,    0,  501,  502,  501,    0,  501,    0,
-        0,  503,  501,  501,    0,  502,    0,  502,    0,  502,
-        0,  503,  504,  503,  502,  503,    0,    0,  508,    0,
-      503,    0,  504,    0,  504,  508,  504,    0,  508,  509,
-      508,  504,  508,    0,    0,    0,    0,  508,    0,  509,
-
-      510,  509,    0,  509,    0,    0,  511,  509,  509,    0,
-      510,    0,  510,    0,  510,    0,  511,  512,  511,  510,
-      511,    0,    0,  513,    0,  511,  513,  512,    0,  512,
-        0,  512,    0,  513,  512,  513,  512,  513,  514,  515,
-        0,    0,  513,    0,    0,    0,    0,    0,  514,  515,
-      514,  515,  514,  515,  516,  516,  514,  514,  515,    0,
-      517,    0,    0,    0,  516,    0,  516,    0,  516,    0,
-      517,  520,  517,  516,  517,    0,    0,  522,    0,  517,
-        0,  520,    0,  520,    0,  520,    0,  522,  524,  522,
-      520,  522,    0,    0,  525,    0,  522,    0,  524,    0,
-
-      524,    0,  524,    0,  525,  517,  525,  524,  525,  527,
-        0,    0,  527,  525,    0,  528,    0,    0,  528,  527,
-        0,  527,    0,  527,    0,  528,    0,  528,  527,  528,
-      531,  531,    0,    0,  528,    0,  537,  537,  537,  537,
-        0,  531,    0,  531,    0,  531,    0,    0,    0,    0,
-      531,  537,  537,  537,  537,  537,  537,  537,  537,  540,
-      541,  541,    0,    0,    0,    0,  540,    0,    0,  540,
-      541,  540,  541,  540,  541,  543,    0,    0,  540,  541,
-        0,    0,    0,  544,    0,  543,  545,  543,    0,  543,
-        0,  543,    0,  544,  543,  544,  545,  544,  545,  546,
-
-      545,  544,  544,    0,    0,  545,  549,  547,    0,  546,
-        0,  546,    0,  546,    0,  548,    0,  547,  546,  547,
-      547,  547,    0,  549,    0,  548,  547,  548,    0,  548,
-        0,    0,    0,  549,  548,  549,  550,  549,    0,  550,
-        0,    0,  549,    0,  551,    0,  550,    0,  550,    0,
-      550,    0,  552,    0,  551,  550,  551,    0,  551,  552,
-      553,    0,  552,  551,  552,    0,  552,    0,    0,    0,
-      553,  552,  553,  558,  553,    0,  558,    0,    0,  553,
-        0,  559,    0,  558,  560,  558,    0,  558,    0,    0,
-        0,  559,  558,  559,  560,  559,  560,  561,  560,    0,
-
-      559,    0,    0,  560,    0,  562,    0,  561,  563,  561,
-        0,  561,  562,    0,    0,  562,  561,  562,  563,  562,
-      563,  567,  563,    0,  562,  571,  563,  563,    0,  572,
-        0,  567,    0,  567,    0,  567,    0,    0,    0,  572,
-      567,  572,  571,  572,    0,  575,    0,    0,  572,    0,
-        0,    0,  571,    0,  571,  575,  571,  575,    0,  575,
-      584,  571,    0,    0,  575,  580,  580,  580,  580,    0,
-      584,    0,  584,  584,  584,    0,    0,    0,  585,  584,
-      580,  580,  580,  580,  580,  580,  580,  580,  585,  587,
-      585,    0,  585,    0,    0,  588,    0,  585,    0,  587,
-
-        0,  587,    0,  587,    0,  588,    0,  588,  587,  588,
-      589,  590,  588,  589,  588,    0,  590,    0,    0,    0,
-      589,  590,  589,  590,  589,  590,  591,    0,    0,  589,
-      590,    0,  593,    0,  593,    0,  591,    0,  591,    0,
-      591,    0,  593,  594,  593,  591,  593,    0,    0,  599,
-        0,  593,    0,  594,    0,  594,    0,  594,    0,  599,
-      600,  599,  594,  599,    0,  599,    0,    0,  599,    0,
-      600,  601,  600,  600,  600,    0,    0,  611,  601,  600,
-        0,  601,    0,  601,    0,  601,    0,  611,  620,  611,
-      601,  611,    0,    0,  621,    0,  611,    0,  620,    0,
-
-      620,    0,  620,    0,  621,    0,  621,  620,  621,  622,
-      623,  622,    0,  621,    0,    0,    0,    0,    0,  622,
-      623,  622,  623,  622,  623,  624,  626,    0,  622,  623,
-        0,    0,    0,    0,    0,  624,  626,  624,  626,  624,
-      626,  627,  624,    0,  624,  626,    0,  631,  627,    0,
-        0,  627,    0,  627,    0,  627,    0,  631,  632,  631,
-      627,  631,    0,    0,    0,    0,  631,    0,  632,  633,
-      632,    0,  632,    0,    0,  648,    0,  632,    0,  633,
-        0,  633,  633,  633,    0,  648,  649,  648,  633,  648,
-        0,    0,  650,    0,  648,    0,  649,    0,  649,    0,
-
-      649,    0,  650,  652,  650,  649,  650,    0,    0,    0,
-        0,  650,    0,  652,  656,  652,    0,  652,    0,    0,
-      657,  652,  652,    0,  656,    0,  656,    0,  656,    0,
-      657,  656,  657,  656,  657,  672,  676,    0,    0,  657,
-        0,    0,    0,    0,    0,  672,  676,  672,  676,  672,
-      676,  677,  692,    0,  672,  676,    0,    0,  672,    0,
-        0,  677,  692,  677,  692,  677,  692,    0,    0,    0,
-      677,  692,  742,  742,  742,  742,  742,  742,  742,  742,
-      742,  742,  742,  742,  742,  743,  743,  743,  743,  743,
-      743,  743,  743,  743,  743,  743,  743,  743,  744,  744,
-
-      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
-      744,  745,  745,  745,  745,  745,  745,  745,  745,  745,
-      745,  745,  745,  745,  746,  746,  746,  746,  746,  746,
-      746,  746,  746,  746,  746,  746,  746,  747,  747,  747,
-      747,    0,  747,  747,  747,  747,  747,  747,  747,  747,
-      748,  748,  748,    0,  748,    0,  748,    0,  748,  749,
-      749,    0,  749,  749,  750,  750,    0,    0,  750,  750,
-        0,  750,  750,  750,  750,  750,  750,  751,  751,  751,
+       34,   34,   34,   40,  386,  352,  387,  327,   42,   42,
+      346,   42,  408,   40,  414,   40,  367,   40,  422,   42,
+       42,   42,   40,   42,  354,  388,   42,  418,   42,  483,
+       46,   46,  403,   46,  421,   40,  399,  100,  100,  100,
+      100,   46,  431,   46,  100,   46,   40,   46,   48,  386,
+       46,   48,  100,  100,  352,   48,   49,  408,   48,  387,
+       48,  413,   48,  414,   49,   49,   48,   48,   50,  452,
+      354,   48,  346,  422,   46,   49,  367,   49,   50,   49,
+
+       50,   49,   50,  418,   49,  388,   50,   50,   51,  399,
+      483,  113,  741,  467,  403,  431,  421,   49,   51,   52,
+       51,  113,   51,  113,  463,  113,   52,   51,   50,   52,
+      113,   52,  467,   52,   56,   56,   56,   56,   52,  741,
+      420,  413,  452,  450,   51,  478,  492,  482,  463,   56,
+       56,   56,   56,   56,   56,   56,   56,   79,  173,  173,
+      173,  173,   79,   79,   79,   79,   79,   79,   79,   79,
+       79,   79,   79,  173,  173,  173,  173,  173,  173,  173,
+      173,   79,   79,   79,   79,   79,  102,  114,  102,  102,
+      102,  102,  102,  102,  102,  102,  464,  114,  450,  114,
+
+      420,  114,  510,  492,  114,  102,  114,  482,  523,  709,
+      478,  612,   79,   79,   79,  530,  708,  423,  423,  423,
+      423,  104,  472,  104,  104,  104,  104,  104,  104,  104,
+      104,  705,  701,  700,  102,  511,  510,  699,   79,   80,
+      104,  612,  523,  464,   80,   80,   80,   80,   80,   80,
+       80,   80,   80,   80,   80,  107,  107,  107,  107,  107,
+      107,  107,  107,   80,   80,   80,   80,   80,  472,  104,
+      530,  108,  107,  108,  108,  108,  108,  108,  108,  108,
+      108,   80,  203,  203,  203,  203,  203,  203,  203,  203,
+      108,  477,  511,  481,   80,   80,   80,  109,  423,  109,
+
+      533,  107,  109,  109,  109,  109,  109,  109,  109,  109,
+      204,  204,  204,  204,  204,  204,  204,  204,  484,  108,
+       80,  110,  115,  110,  110,  110,  110,  110,  110,  110,
+      110,  539,  115,  116,  115,  697,  115,  695,  558,  117,
+      110,  115,  481,  116,  477,  116,  485,  116,  694,  117,
+      525,  117,  116,  117,  693,  174,  116,  533,  117,  174,
+      174,  174,  174,  174,  174,  174,  174,  484,  538,  110,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  118,  120,  537,  485,  539,  509,  120,  525,
+
+      558,  534,  118,  120,  118,  120,  118,  120,  121,  122,
+      118,  118,  120,  538,  540,  559,  546,  561,  121,  122,
+      121,  122,  121,  122,  123,  560,  121,  121,  122,  574,
+      124,  509,  568,  572,  123,  534,  123,  123,  123,  686,
+      124,  570,  124,  123,  124,  125,  125,  537,  540,  124,
+      509,  126,  126,  577,  578,  580,  125,  683,  125,  125,
+      125,  583,  126,  127,  126,  125,  126,  546,  561,  581,
+      682,  126,  675,  127,  127,  127,  128,  127,  574,  129,
+      128,  559,  127,  599,  601,  674,  128,  560,  128,  129,
+      128,  129,  568,  129,  572,  128,  131,  131,  129,  130,
+
+      130,  130,  582,  570,  577,  618,  131,  132,  131,  130,
+      131,  130,  580,  130,  131,  131,  578,  132,  130,  132,
+      133,  132,  586,  583,  581,  136,  132,  600,  606,  611,
+      133,  658,  133,  133,  133,  136,  582,  616,  137,  133,
+      609,  137,  633,  599,  601,  136,  138,  136,  137,  136,
+      137,  586,  137,  673,  136,  608,  138,  137,  138,  668,
+      138,  139,  139,  611,  614,  138,  658,  618,  666,  632,
+      617,  139,  140,  139,  638,  139,  600,  685,  139,  139,
+      139,  606,  140,  141,  140,  140,  140,  609,  616,  142,
+      633,  140,  634,  141,  663,  141,  655,  141,  651,  142,
+
+      143,  142,  141,  142,  617,  141,  619,  640,  142,  641,
+      143,  657,  143,  145,  143,  608,  146,  643,  645,  143,
+      647,  145,  632,  145,  614,  145,  146,  145,  146,  147,
+      146,  638,  145,  649,  146,  146,  685,  148,  648,  147,
+      150,  147,  665,  147,  659,  634,  662,  148,  147,  148,
+      150,  148,  150,  151,  150,  148,  148,  677,  150,  150,
+      640,  667,  664,  151,  152,  151,  619,  151,  657,  641,
+      671,  645,  151,  151,  152,  698,  152,  153,  152,  643,
+      153,  650,  647,  152,  153,  669,  649,  153,  672,  153,
+      678,  153,  155,  155,  687,  665,  153,  662,  648,  156,
+
+      670,  659,  679,  155,  722,  155,  690,  155,  677,  156,
+      157,  156,  155,  156,  156,  684,  158,  156,  156,  664,
+      157,  667,  157,  671,  157,  160,  158,  159,  158,  157,
+      158,  698,  158,  646,  157,  158,  644,  159,  160,  159,
+      642,  159,  669,  678,  161,  672,  159,  687,  160,  161,
+      160,  639,  160,  679,  161,  162,  161,  160,  161,  690,
+      670,  164,  691,  161,  722,  162,  684,  162,  164,  162,
+      689,  164,  692,  164,  162,  164,  168,  165,  165,  704,
+      164,  165,  585,  585,  585,  585,  168,  165,  168,  165,
+      168,  165,  706,  175,  168,  168,  165,  175,  175,  175,
+
+      175,  175,  175,  175,  175,  201,  714,  201,  201,  201,
+      201,  201,  201,  201,  201,  208,  209,  629,  208,  691,
+      702,  689,  707,  692,  201,  208,  209,  208,  209,  208,
+      209,  210,  211,  715,  208,  209,  704,  712,  623,  622,
+      613,  210,  211,  210,  211,  210,  211,  212,  610,  706,
+      210,  211,  607,  201,  206,  214,  602,  212,  215,  212,
+      212,  212,  214,  585,  714,  214,  212,  214,  215,  214,
+      215,  216,  215,  707,  214,  716,  590,  215,  587,  217,
+      573,  216,  702,  216,  715,  216,  712,  569,  216,  217,
+      216,  217,  536,  217,  620,  620,  620,  620,  217,  206,
+
+      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
+      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
+      206,  218,  219,  527,  522,  489,  716,  488,  469,  219,
+      427,  218,  219,  218,  219,  218,  219,  218,  220,  221,
+      218,  219,  362,  360,  291,  284,  283,  282,  220,  221,
+      220,  221,  220,  221,  222,  220,  281,  220,  221,  280,
+      277,  274,  213,  207,  222,  198,  222,  196,  222,  223,
+      223,  222,  222,  222,  194,  620,  224,  223,  192,  224,
+      223,  190,  223,  185,  223,  183,  224,  225,  224,  223,
+      224,  178,  172,  226,  119,  224,  111,  225,  105,  225,
+
+      225,  225,  101,  226,  227,  226,  225,  226,   99,   97,
+      228,   96,  226,  228,  227,  227,  227,   95,  227,   92,
+      228,  229,  228,  227,  228,   87,   86,  230,   85,  228,
+      230,  229,   72,  229,  229,  229,   69,  230,  231,  230,
+      229,  230,   65,   64,   61,   60,  230,   55,  231,  232,
+      231,   53,  231,   32,   28,  231,   22,  231,   21,  232,
+      232,  232,  235,  232,   18,   17,    0,    0,  232,    0,
+      236,    0,  235,  237,  235,    0,  235,    0,    0,  235,
+      236,  235,  236,  237,  236,  237,  237,  237,  238,  236,
+        0,  239,  237,    0,  240,    0,    0,  240,  238,    0,
+
+      238,  239,  238,  239,  240,  239,  240,  238,  240,  239,
+      239,  241,  242,  240,    0,    0,    0,    0,    0,    0,
+      241,    0,  242,  243,  242,    0,  242,    0,    0,    0,
+      241,  242,  241,  243,  241,  243,  244,  243,    0,  241,
+        0,    0,  243,    0,  246,    0,  244,  246,  244,    0,
+      244,    0,    0,    0,  246,  244,  246,  247,  246,    0,
+      247,    0,    0,  246,    0,  248,    0,  247,  250,  247,
+        0,  247,  248,    0,    0,  248,  247,  248,  250,  248,
+      250,  251,  250,    0,  248,    0,  250,  250,    0,  252,
+        0,  251,    0,  251,    0,  251,    0,  253,    0,  252,
+
+      251,  252,    0,  252,    0,  254,  252,  253,  252,  253,
+        0,  253,    0,    0,  253,  254,  253,  254,  256,  254,
+      257,  257,    0,    0,  254,  254,    0,    0,  256,  258,
+      256,  257,  256,  257,    0,  257,    0,  256,    0,  258,
+      257,  258,  259,  258,    0,    0,    0,    0,  258,    0,
+      260,    0,  259,  260,  259,    0,  259,    0,  261,    0,
+      260,  259,  260,    0,  260,  261,  262,    0,  261,  260,
+      261,    0,  261,    0,    0,    0,  262,  261,  262,  263,
+      262,    0,    0,    0,  262,  262,    0,  264,    0,  263,
+        0,  263,    0,  263,    0,    0,  263,  264,  263,  264,
+
+      265,  264,    0,  265,  264,    0,  264,    0,  267,    0,
+      265,    0,  265,    0,  265,    0,    0,  269,  267,  265,
+      267,  267,  267,  267,  268,  269,    0,  267,  267,    0,
+        0,    0,    0,    0,  268,  269,  268,  269,  268,  269,
+      273,    0,  268,  268,  269,    0,  273,    0,    0,    0,
+      273,    0,  273,    0,  273,  275,  275,  275,  275,  273,
+        0,    0,    0,  276,  276,  276,  276,    0,    0,    0,
+      275,  275,  275,  275,  275,  275,  275,  275,  276,  276,
+      276,  276,  276,  276,  276,  276,  292,  293,    0,    0,
+        0,    0,    0,    0,  293,    0,  292,  293,  292,  293,
+
+      292,  293,  294,    0,    0,  292,  293,    0,  295,    0,
+        0,    0,  294,  294,  294,    0,  294,    0,  295,  296,
+      295,  294,  295,    0,    0,  297,    0,  295,  297,  296,
+        0,  296,    0,  296,    0,  297,    0,  297,  296,  297,
+      298,  298,  299,  299,  297,    0,    0,    0,    0,    0,
+        0,  298,  299,  298,  299,  298,  299,  300,    0,    0,
+      298,  299,    0,    0,  296,  301,    0,  300,    0,  300,
+        0,  300,    0,  302,  300,  301,  300,  301,  301,  301,
+        0,    0,    0,  302,  301,  302,  304,  302,  303,  303,
+        0,  302,  302,    0,    0,    0,  304,  305,  304,  303,
+
+      304,  303,    0,  303,    0,  304,    0,  305,  303,  305,
+      306,  305,  306,  307,    0,  307,  305,    0,    0,    0,
+      306,    0,  306,  307,  306,  307,    0,  307,  308,  306,
+        0,  308,  307,    0,  309,    0,    0,    0,  308,    0,
+      308,    0,  308,    0,  309,  310,  309,  308,  309,    0,
+        0,  311,  310,  309,    0,  310,    0,  310,    0,  310,
+        0,  311,  312,  311,  310,  311,    0,  311,    0,    0,
+      311,    0,  312,    0,  312,    0,  312,  313,  312,    0,
+      313,  312,    0,  314,    0,    0,    0,  313,    0,  313,
+        0,  313,    0,  314,  317,  314,  313,  314,    0,    0,
+
+      318,    0,  314,    0,  317,    0,  317,    0,  317,    0,
+      318,    0,  318,  317,  318,  319,  320,    0,  318,  318,
+        0,    0,  319,    0,    0,  319,  320,  319,  320,  319,
+      320,  321,  320,    0,  319,  320,  322,  322,    0,  317,
+        0,  321,    0,  321,  324,  321,    0,  322,    0,  322,
+      321,  322,  323,  322,    0,  324,  322,  323,    0,    0,
+        0,    0,  323,  325,  323,  324,  323,  324,  323,  324,
+        0,  323,    0,  325,  324,  325,  326,  325,    0,    0,
+      325,    0,  325,    0,  328,  328,  326,  329,  326,    0,
+      326,    0,    0,    0,  328,  326,  328,  329,  328,  329,
+
+      330,  329,    0,  328,  333,  329,  329,    0,  332,    0,
+      330,  332,  330,  330,  330,    0,    0,    0,  332,  330,
+      332,  333,  332,    0,    0,    0,    0,  332,    0,  334,
+        0,  333,  334,  333,    0,  333,  335,  335,    0,  334,
+      333,  334,    0,  334,    0,  337,    0,  335,  334,  335,
+        0,  335,    0,  338,    0,  337,  335,  337,    0,  337,
+        0,    0,    0,  338,  337,  338,  339,  338,    0,  339,
+        0,  338,  338,    0,  340,    0,  339,  341,  339,    0,
+      339,    0,    0,    0,  340,  339,  340,  341,  340,  341,
+        0,  341,  343,  340,  342,  342,  341,    0,  344,    0,
+
+        0,    0,  343,    0,  343,  342,  343,  342,  344,  342,
+      344,  343,  344,  345,  342,    0,  347,  344,    0,  348,
+        0,    0,    0,  345,    0,  345,  347,  345,  347,  348,
+      347,  348,  345,  348,    0,  347,  349,  343,  348,  349,
+        0,    0,  350,    0,    0,    0,  349,    0,  349,    0,
+      349,    0,  350,  351,  350,  349,  350,    0,    0,    0,
+        0,  350,    0,  351,    0,  351,    0,  351,    0,  355,
+      351,    0,  351,    0,  356,  356,  356,  356,  350,  355,
+        0,  355,    0,  355,    0,    0,    0,    0,  355,  356,
+      356,  356,  356,  356,  356,  356,  356,  357,  357,  357,
+
+      357,    0,    0,    0,    0,    0,    0,    0,  357,    0,
+        0,    0,  357,  357,  357,  357,  357,  357,  357,  357,
+      358,  358,  358,  358,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  358,  358,  358,  358,  358,
+      358,  358,  358,  359,    0,  363,    0,  359,  359,  359,
+      359,  359,  359,  359,  359,  363,    0,  363,    0,  363,
+      364,  364,    0,  363,  363,    0,    0,    0,    0,    0,
+      364,    0,  364,  366,  364,  365,  365,    0,  357,  364,
+        0,    0,    0,  366,    0,  366,  365,  366,  365,    0,
+      365,    0,  366,  368,  368,  365,    0,  369,  369,    0,
+
+      370,    0,    0,  370,  368,    0,  368,  369,  368,  369,
+      370,  369,  370,  368,  370,  371,  369,    0,  372,  370,
+        0,    0,    0,    0,    0,  371,  373,  371,  372,  371,
+      372,    0,  372,    0,  371,    0,  373,  372,  373,  374,
+      373,    0,  373,    0,    0,  373,  374,  375,    0,  374,
+        0,  374,    0,  374,    0,    0,    0,  375,  374,  375,
+      376,  375,    0,  376,    0,    0,  375,  376,    0,    0,
+      376,  377,  376,  377,  376,    0,    0,  378,    0,  376,
+      378,  377,    0,  377,  378,  377,    0,  378,  379,  378,
+      377,  378,    0,    0,    0,    0,  378,    0,  379,  380,
+
+      379,    0,  379,    0,  379,    0,    0,  379,    0,  380,
+        0,  380,    0,  380,  381,  381,    0,  380,  380,    0,
+      382,    0,    0,    0,  381,    0,  381,    0,  381,    0,
+      382,  383,  382,  381,  382,    0,    0,  384,  382,  382,
+        0,  383,    0,  383,    0,  383,    0,  384,  383,  384,
+      383,  384,  385,  389,    0,    0,  384,    0,    0,    0,
+      389,    0,  385,  389,  385,  389,  385,  389,    0,    0,
+      391,  385,  389,  390,  390,    0,  390,    0,    0,    0,
+      391,    0,  391,  390,  391,  390,    0,  390,  391,  391,
+      393,  392,  390,  392,    0,    0,    0,    0,    0,    0,
+
+      393,  392,  393,  392,  393,  392,  394,    0,    0,  393,
+      392,    0,  395,    0,    0,  395,  394,    0,  394,    0,
+      394,    0,  395,  396,  395,  394,  395,  397,    0,    0,
+      398,  395,    0,  396,    0,  396,  397,  396,    0,    0,
+      396,    0,  396,    0,  400,    0,  397,  398,  397,    0,
+      397,    0,    0,    0,  400,  397,  400,  398,  400,  398,
+      401,  398,  400,  400,    0,    0,  398,    0,  402,    0,
+      401,    0,  401,    0,  401,    0,  404,    0,  402,  401,
+      402,    0,  402,    0,  406,    0,  404,  402,  404,    0,
+      404,    0,  404,    0,  406,  404,  406,  407,  406,    0,
+
+        0,    0,    0,  406,    0,    0,    0,  407,    0,  407,
+      409,  407,    0,  410,    0,  407,  407,  409,    0,    0,
+      409,  411,  409,  410,  409,  410,  411,  410,    0,  409,
+        0,  411,  410,  411,  412,  411,    0,    0,    0,    0,
+      411,    0,    0,    0,  412,  415,  412,    0,  412,    0,
+        0,  416,    0,  412,  416,  415,  412,  415,    0,  415,
+        0,  416,  417,  416,  415,  416,    0,    0,    0,    0,
+      416,    0,  417,  419,  417,    0,  417,    0,  417,    0,
+        0,  417,    0,  419,    0,  419,    0,  419,  424,  424,
+      424,  424,  419,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  428,    0,  424,  424,  424,  424,  424,  424,  424,
+      424,  428,    0,  428,  430,  428,  429,  429,  419,    0,
+      428,    0,    0,    0,  430,  432,  430,  429,  430,  429,
+        0,  429,  430,  430,    0,  432,  429,  432,  433,  432,
+        0,  434,    0,    0,  432,    0,    0,    0,  433,    0,
+      433,  434,  433,  434,    0,  434,  433,  433,  435,    0,
+      434,  435,    0,  436,  436,    0,    0,    0,  435,    0,
+      435,    0,  435,    0,  436,  437,  436,  435,  436,    0,
+        0,  438,    0,  436,    0,  437,    0,  437,    0,  437,
+        0,  438,    0,  438,  437,  438,  439,    0,  439,  438,
+
+      438,    0,  440,    0,    0,    0,  439,    0,  439,    0,
+      439,    0,  440,    0,  440,  439,  440,    0,    0,  441,
+      440,  440,  441,    0,    0,  442,    0,  442,    0,  441,
+        0,  441,    0,  441,    0,  442,  443,  442,  441,  442,
+        0,  444,  444,    0,  442,    0,  443,    0,  443,    0,
+      443,    0,  444,  445,  444,  443,  444,    0,    0,  446,
+        0,  444,    0,  445,    0,  445,  446,  445,    0,  446,
+      447,  446,  445,  446,    0,    0,  448,    0,  446,    0,
+      447,    0,  447,  448,  447,    0,  448,  447,  448,  447,
+      448,  449,  449,  453,    0,  448,    0,  453,    0,    0,
+
+        0,    0,  449,  453,  449,  453,  449,  453,  454,    0,
+        0,  449,  453,    0,  455,  454,  455,    0,  454,    0,
+      454,    0,  454,    0,  455,  456,  455,  454,  455,    0,
+        0,  457,    0,  455,  457,  456,    0,  456,    0,  456,
+        0,  457,  456,  457,  456,  457,  458,  458,    0,    0,
+      457,    0,  459,  459,    0,    0,  458,    0,  458,    0,
+      458,    0,  459,  460,  459,  458,  459,    0,    0,    0,
+        0,  459,    0,  460,    0,  460,    0,  460,  461,  460,
+        0,  461,  460,    0,  462,    0,    0,    0,  461,    0,
+      461,    0,  461,    0,  462,  465,  462,  461,  462,    0,
+
+        0,  462,    0,  462,    0,  465,    0,  465,  468,  465,
+      466,  466,    0,    0,  465,    0,    0,    0,  468,  470,
+      468,  466,  468,  466,    0,  466,    0,  468,    0,  470,
+      466,  470,  471,  470,    0,  471,    0,  470,  470,    0,
+      473,    0,  471,    0,  471,    0,  471,    0,    0,    0,
+      473,  471,  473,    0,  473,  474,  474,    0,  475,  473,
+      473,  476,    0,    0,    0,  474,    0,  474,  475,  474,
+      475,  476,  475,  476,  474,  476,  479,  475,    0,  480,
+      476,    0,    0,    0,    0,    0,  479,    0,  479,  480,
+      479,  480,    0,  480,  490,  479,  480,    0,  480,  486,
+
+      486,  486,  486,    0,  490,    0,  490,    0,  490,    0,
+        0,    0,  490,  490,  486,  486,  486,  486,  486,  486,
+      486,  486,  487,    0,    0,    0,  487,  487,  487,  487,
+      487,  487,  487,  487,  491,  493,    0,    0,    0,    0,
+        0,  491,    0,    0,  491,  493,  491,  493,  491,  493,
+        0,  495,  494,  491,  493,  494,    0,    0,    0,    0,
+        0,  495,  494,  495,  494,  495,  494,  496,  497,    0,
+      495,  494,    0,    0,  496,  497,    0,  496,  497,  496,
+      497,  496,  497,  498,  499,    0,  496,  497,    0,    0,
+        0,    0,    0,  498,  499,  498,  499,  498,  499,  500,
+
+        0,    0,  498,  499,    0,  501,  500,  501,    0,  500,
+        0,  500,    0,  500,    0,  501,  502,  501,  500,  501,
+        0,    0,  503,    0,  501,    0,  502,  503,  502,    0,
+      502,    0,  503,  504,  503,  502,  503,    0,    0,    0,
+        0,  503,    0,  504,  505,  504,    0,  504,    0,    0,
+        0,  504,  504,    0,  505,  506,  505,    0,  505,    0,
+        0,  507,  505,  505,    0,  506,    0,  506,    0,  506,
+        0,  507,  508,  507,  506,  507,    0,    0,  512,    0,
+      507,    0,  508,    0,  508,  512,  508,    0,  512,  513,
+      512,  508,  512,    0,    0,    0,    0,  512,    0,  513,
+
+      514,  513,    0,  513,    0,    0,  515,  513,  513,    0,
+      514,    0,  514,    0,  514,    0,  515,  516,  515,  514,
+      515,    0,    0,  517,    0,  515,  517,  516,    0,  516,
+        0,  516,    0,  517,  516,  517,  516,  517,  518,  519,
+        0,    0,  517,    0,    0,    0,    0,    0,  518,  519,
+      518,  519,  518,  519,  520,  520,  518,  518,  519,    0,
+      521,    0,    0,    0,  520,    0,  520,    0,  520,    0,
+      521,  524,  521,  520,  521,    0,    0,  526,    0,  521,
+        0,  524,    0,  524,    0,  524,    0,  526,  528,  526,
+      524,  526,    0,    0,  529,    0,  526,    0,  528,    0,
+
+      528,    0,  528,    0,  529,  521,  529,  528,  529,  531,
+        0,    0,  531,  529,    0,  532,    0,    0,  532,  531,
+        0,  531,    0,  531,    0,  532,    0,  532,  531,  532,
+      535,  535,    0,    0,  532,    0,  541,  541,  541,  541,
+        0,  535,    0,  535,    0,  535,    0,    0,    0,    0,
+      535,  541,  541,  541,  541,  541,  541,  541,  541,  544,
+      545,  545,    0,    0,    0,    0,  544,    0,    0,  544,
+      545,  544,  545,  544,  545,  547,    0,    0,  544,  545,
+        0,    0,    0,  548,    0,  547,  549,  547,    0,  547,
+        0,  547,    0,  548,  547,  548,  549,  548,  549,  550,
+
+      549,  548,  548,    0,    0,  549,  553,  551,    0,  550,
+        0,  550,    0,  550,    0,  552,    0,  551,  550,  551,
+      551,  551,    0,  553,    0,  552,  551,  552,    0,  552,
+        0,    0,    0,  553,  552,  553,  554,  553,    0,  554,
+        0,    0,  553,    0,  555,    0,  554,    0,  554,    0,
+      554,    0,  556,    0,  555,  554,  555,    0,  555,  556,
+      557,    0,  556,  555,  556,    0,  556,    0,    0,    0,
+      557,  556,  557,  562,  557,    0,  562,    0,    0,  557,
+        0,  563,    0,  562,  564,  562,    0,  562,    0,    0,
+        0,  563,  562,  563,  564,  563,  564,  565,  564,    0,
+
+      563,    0,    0,  564,    0,  566,    0,  565,  567,  565,
+        0,  565,  566,    0,    0,  566,  565,  566,  567,  566,
+      567,  571,  567,    0,  566,  575,  567,  567,    0,  576,
+        0,  571,    0,  571,    0,  571,    0,    0,    0,  576,
+      571,  576,  575,  576,    0,  579,    0,    0,  576,    0,
+        0,    0,  575,    0,  575,  579,  575,  579,    0,  579,
+      588,  575,    0,    0,  579,  584,  584,  584,  584,    0,
+      588,    0,  588,  588,  588,    0,    0,    0,  589,  588,
+      584,  584,  584,  584,  584,  584,  584,  584,  589,  591,
+      589,    0,  589,    0,    0,  592,    0,  589,    0,  591,
+
+        0,  591,    0,  591,    0,  592,    0,  592,  591,  592,
+      593,  594,  592,  593,  592,    0,  594,    0,    0,    0,
+      593,  594,  593,  594,  593,  594,  595,    0,    0,  593,
+      594,    0,  597,    0,  597,    0,  595,    0,  595,    0,
+      595,    0,  597,  598,  597,  595,  597,    0,    0,  603,
+        0,  597,    0,  598,    0,  598,    0,  598,    0,  603,
+      604,  603,  598,  603,    0,  603,    0,    0,  603,    0,
+      604,  605,  604,  604,  604,    0,    0,  615,  605,  604,
+        0,  605,    0,  605,    0,  605,    0,  615,  624,  615,
+      605,  615,    0,    0,  625,    0,  615,    0,  624,    0,
+
+      624,    0,  624,    0,  625,    0,  625,  624,  625,  626,
+      627,  626,    0,  625,    0,    0,    0,    0,    0,  626,
+      627,  626,  627,  626,  627,  628,  630,    0,  626,  627,
+        0,    0,    0,    0,    0,  628,  630,  628,  630,  628,
+      630,  631,  628,    0,  628,  630,    0,  635,  631,    0,
+        0,  631,    0,  631,    0,  631,    0,  635,  636,  635,
+      631,  635,    0,    0,    0,    0,  635,    0,  636,  637,
+      636,    0,  636,    0,    0,  652,    0,  636,    0,  637,
+        0,  637,  637,  637,    0,  652,  653,  652,  637,  652,
+        0,    0,  654,    0,  652,    0,  653,    0,  653,    0,
+
+      653,    0,  654,  656,  654,  653,  654,    0,    0,    0,
+        0,  654,    0,  656,  660,  656,    0,  656,    0,    0,
+      661,  656,  656,    0,  660,    0,  660,    0,  660,    0,
+      661,  660,  661,  660,  661,  676,  680,    0,    0,  661,
+        0,    0,    0,    0,    0,  676,  680,  676,  680,  676,
+      680,  681,  696,    0,  676,  680,    0,    0,  676,    0,
+        0,  681,  696,  681,  696,  681,  696,    0,    0,    0,
+      681,  696,  746,  746,  746,  746,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  747,  747,  747,  747,  747,
+      747,  747,  747,  747,  747,  747,  747,  747,  748,  748,
+
+      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
+      748,  749,  749,  749,  749,  749,  749,  749,  749,  749,
+      749,  749,  749,  749,  750,  750,  750,  750,  750,  750,
+      750,  750,  750,  750,  750,  750,  750,  751,  751,  751,
       751,    0,  751,  751,  751,  751,  751,  751,  751,  751,
-      752,  752,  752,  752,  752,  752,  752,  752,    0,  752,
-
-      752,  753,    0,    0,    0,  753,  753,  753,  753,  753,
-      753,  753,  754,    0,    0,    0,  754,  754,  754,  754,
-      754,  754,  754,  755,  755,    0,  755,  755,  756,  756,
-        0,  756,  756,  757,  757,    0,  757,  757,  758,    0,
-      758,  758,  759,  759,    0,  759,  759,  760,    0,  760,
-      760,  761,    0,  761,  761,  762,    0,  762,  762,  763,
-        0,  763,  763,  764,  764,  764,  764,  764,  764,  764,
-      764,  764,  764,  764,  764,  764,  765,  765,    0,  765,
-      765,  766,  766,    0,  766,  766,  766,  766,  766,  766,
-      766,  766,  766,  766,  767,  767,  767,    0,    0,    0,
-
-      767,    0,    0,    0,    0,  767,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
-      741,  741,  741,  741,  741,  741,  741,  741,  741,  741
+      752,  752,  752,    0,  752,    0,  752,    0,  752,  753,
+      753,    0,  753,  753,  754,  754,    0,    0,  754,  754,
+        0,  754,  754,  754,  754,  754,  754,  755,  755,  755,
+      755,    0,  755,  755,  755,  755,  755,  755,  755,  755,
+      756,  756,  756,  756,  756,  756,  756,  756,    0,  756,
+
+      756,  757,    0,    0,    0,  757,  757,  757,  757,  757,
+      757,  757,  758,    0,    0,    0,  758,  758,  758,  758,
+      758,  758,  758,  759,  759,    0,  759,  759,  760,  760,
+        0,  760,  760,  761,  761,    0,  761,  761,  762,    0,
+      762,  762,  763,  763,    0,  763,  763,  764,    0,  764,
+      764,  765,    0,  765,  765,  766,    0,  766,  766,  767,
+        0,  767,  767,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  769,  769,    0,  769,
+      769,  770,  770,    0,  770,  770,  770,  770,  770,  770,
+      770,  770,  770,  770,  771,  771,  771,    0,    0,    0,
+
+      771,    0,    0,    0,    0,  771,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  745,  745,  745,  745,  745,  745
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[139] =
+static yyconst flex_int32_t yy_rule_can_match_eol[141] =
     {   0,
 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 
     0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -1961,12 +1964,13 @@ static yyconst flex_int32_t yy_rule_can_match_eol[139] =
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0,     };
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 
+    0,     };
 
 extern int asn1p__flex_debug;
 int asn1p__flex_debug = 1;
 
-static yyconst flex_int16_t yy_rule_linenum[138] =
+static yyconst flex_int16_t yy_rule_linenum[140] =
     {   0,
        96,   97,   99,  102,  104,  107,  109,  110,  111,  114,
       116,  117,  118,  130,  137,  144,  150,  159,  167,  175,
@@ -1982,7 +1986,7 @@ static yyconst flex_int16_t yy_rule_linenum[138] =
       336,  337,  338,  339,  340,  341,  342,  343,  344,  345,
       346,  351,  352,  357,  358,  359,  362,  367,  373,  381,
       391,  396,  398,  399,  403,  408,  413,  419,  420,  422,
-      428,  441,  444,  469,  513,  515,  526
+      428,  441,  444,  469,  513,  514,  516,  518,  529
     } ;
 
 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
@@ -2081,7 +2085,7 @@ static double          _lex_atod(const char *ptr);
 
 /* Newline */
 /* White-space */
-#line 2085 "asn1p_l.c"
+#line 2090 "lex.yy.c"
 
 #define INITIAL 0
 #define dash_comment 1
@@ -2140,7 +2144,7 @@ FILE *asn1p_get_out (void );
 
 void asn1p_set_out  (FILE * out_str  );
 
-int asn1p_get_leng (void );
+yy_size_t asn1p_get_leng (void );
 
 char *asn1p_get_text (void );
 
@@ -2233,7 +2237,7 @@ static int input (void );
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
 		{ \
 		int c = '*'; \
-		int n; \
+		yy_size_t n; \
 		for ( n = 0; n < max_size && \
 			     (c = getc( asn1p_in )) != EOF && c != '\n'; ++n ) \
 			buf[n] = (char) c; \
@@ -2343,7 +2347,7 @@ YY_DECL
 #line 94 "asn1p_l.l"
 
 
-#line 2347 "asn1p_l.c"
+#line 2352 "lex.yy.c"
 
 	if ( !(yy_init) )
 		{
@@ -2411,19 +2415,20 @@ yy_match:
 			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 >= 742 )
+				if ( yy_current_state >= 746 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
 			*(yy_state_ptr)++ = yy_current_state;
 			++yy_cp;
 			}
-		while ( yy_current_state != 741 );
+		while ( yy_current_state != 745 );
 
 yy_find_action:
 /* %% [10.0] code to find the action number goes here */
 		yy_current_state = *--(yy_state_ptr);
 		(yy_lp) = yy_accept[yy_current_state];
+goto find_rule; /* Shut up GCC warning -Wall */
 find_rule: /* we branch to this label when backing up */
 		for ( ; ; ) /* until we find what rule we matched */
 			{
@@ -2446,7 +2451,7 @@ find_rule: /* we branch to this label when backing up */
 
 		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
 			{
-			int yyl;
+			yy_size_t yyl;
 			for ( yyl = 0; yyl < asn1p_leng; ++yyl )
 				if ( asn1p_text[yyl] == '\n' )
 					   
@@ -2461,13 +2466,13 @@ do_action:	/* This label is used only to access EOF actions. */
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 138 )
+			else if ( yy_act < 140 )
 				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
 				         (long)yy_rule_linenum[yy_act], asn1p_text );
-			else if ( yy_act == 138 )
+			else if ( yy_act == 140 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         asn1p_text );
-			else if ( yy_act == 139 )
+			else if ( yy_act == 141 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3401,12 +3406,22 @@ YY_RULE_SETUP
 case 135:
 YY_RULE_SETUP
 #line 513 "asn1p_l.l"
-return asn1p_text[0];
+return TOK_VBracketLeft;
 	YY_BREAK
 case 136:
-/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 515 "asn1p_l.l"
+#line 514 "asn1p_l.l"
+return TOK_VBracketRight;
+	YY_BREAK
+case 137:
+YY_RULE_SETUP
+#line 516 "asn1p_l.l"
+return asn1p_text[0];
+	YY_BREAK
+case 138:
+/* rule 138 can match eol */
+YY_RULE_SETUP
+#line 518 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -3418,9 +3433,9 @@ YY_RULE_SETUP
 			return -1;
 	}
 	YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 526 "asn1p_l.l"
+#line 529 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
@@ -3442,19 +3457,19 @@ case YY_STATE_EOF(quoted):
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 539 "asn1p_l.l"
+#line 542 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 546 "asn1p_l.l"
+#line 549 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 3458 "asn1p_l.c"
+#line 3474 "lex.yy.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3651,7 +3666,7 @@ static int yy_get_next_buffer (void)
 
 	else
 		{
-			int num_to_read =
+			yy_size_t num_to_read =
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
 
 		while ( num_to_read <= 0 )
@@ -3667,7 +3682,7 @@ static int yy_get_next_buffer (void)
 
 		/* Read in more data. */
 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-			(yy_n_chars), (size_t) num_to_read );
+			(yy_n_chars), num_to_read );
 
 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
 		}
@@ -3734,7 +3749,7 @@ static int yy_get_next_buffer (void)
 		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 >= 742 )
+			if ( yy_current_state >= 746 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3762,11 +3777,11 @@ static int yy_get_next_buffer (void)
 	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 >= 742 )
+		if ( yy_current_state >= 746 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 741);
+	yy_is_jam = (yy_current_state == 745);
 	if ( ! yy_is_jam )
 		*(yy_state_ptr)++ = yy_current_state;
 
@@ -3790,7 +3805,7 @@ static int yy_get_next_buffer (void)
 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
 		{ /* need to shift things up to make room */
 		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
+		register yy_size_t number_to_move = (yy_n_chars) + 2;
 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
 		register char *source =
@@ -3852,7 +3867,7 @@ static int yy_get_next_buffer (void)
 
 		else
 			{ /* need more input */
-			int offset = (yy_c_buf_p) - (yytext_ptr);
+			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
 			++(yy_c_buf_p);
 
 			switch ( yy_get_next_buffer(  ) )
@@ -3876,7 +3891,7 @@ static int yy_get_next_buffer (void)
 				case EOB_ACT_END_OF_FILE:
 					{
 					if ( asn1p_wrap( ) )
-						return EOF;
+						return 0;
 
 					if ( ! (yy_did_buffer_switch_on_eof) )
 						YY_NEW_FILE;
@@ -4189,7 +4204,7 @@ static void asn1p_ensure_buffer_stack (void)
 /* %if-c++-only */
 /* %endif */
 {
-	int num_to_alloc;
+	yy_size_t num_to_alloc;
     
 	if (!(yy_buffer_stack)) {
 
@@ -4292,12 +4307,11 @@ YY_BUFFER_STATE asn1p__scan_string (yyconst char * yystr )
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE asn1p__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE asn1p__scan_bytes  (yyconst char * yybytes, yy_size_t  _yybytes_len )
 {
 	YY_BUFFER_STATE b;
 	char *buf;
-	yy_size_t n;
-	int i;
+	yy_size_t n, i;
     
 	/* Get memory for full buffer, including space for trailing EOB's. */
 	n = _yybytes_len + 2;
@@ -4437,7 +4451,7 @@ FILE *asn1p_get_out  (void)
 /** Get the length of the current token.
  * 
  */
-int asn1p_get_leng  (void)
+yy_size_t asn1p_get_leng  (void)
 {
         return asn1p_leng;
 }
@@ -4625,7 +4639,7 @@ void asn1p_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 546 "asn1p_l.l"
+#line 549 "asn1p_l.l"
 
 
 
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index 33d2a143..6deeca76 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -510,6 +510,9 @@ WITH			return TOK_WITH;
 	}
 
 
+"[["        return TOK_VBracketLeft;
+"]]"        return TOK_VBracketRight;
+
 [(){},;:|!.&@\[\]^]	return yytext[0];
 
 [^A-Za-z0-9:=,{}<.@()[]'\"|&^*;!-] {
diff --git a/libasn1parser/asn1p_list.h b/libasn1parser/asn1p_list.h
index d6a669ac..858f24de 100644
--- a/libasn1parser/asn1p_list.h
+++ b/libasn1parser/asn1p_list.h
@@ -45,6 +45,14 @@
         (head)->tq_tail = &TQ_NEXT((__el), field);	\
 	} while(0)
 
+#define	TQ_CONCAT(head1, head2, field) do {		\
+	if(TQ_FIRST(head2)) {				\
+		*(head1)->tq_tail = (head2)->tq_head;	\
+		(head1)->tq_tail = (head2)->tq_tail;	\
+		TQ_INIT(head2);				\
+	}						\
+	} while(0)
+
 /*
  * Remove the first element and return it.
  */
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index f1d4ad4e..e15fc02d 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -1,7 +1,9 @@
-/* A Bison parser, made from asn1p_y.y, by GNU bison 1.75.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   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
@@ -15,16 +17,24 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
+
+/* 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.
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
 
-/* Written by Richard Stallman by simplifying the original so called
-   ``semantic'' parser.  */
+/* 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
@@ -34,16 +44,21 @@
    USER NAME SPACE" below.  */
 
 /* Identify Bison output.  */
-#define YYBISON	1
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.3"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
 
 /* Pure parsers.  */
-#define YYPURE	0
+#define YYPURE 0
 
 /* Using locations.  */
 #define YYLSP_NEEDED 0
 
-/* If NAME_PREFIX is specified substitute the variables and functions
-   names.  */
+/* Substitute the variable and function names.  */
 #define yyparse asn1p_parse
 #define yylex   asn1p_lex
 #define yyerror asn1p_error
@@ -60,213 +75,218 @@
       know about them.  */
    enum yytokentype {
      TOK_PPEQ = 258,
-     TOK_whitespace = 259,
-     TOK_opaque = 260,
-     TOK_bstring = 261,
-     TOK_cstring = 262,
-     TOK_hstring = 263,
-     TOK_identifier = 264,
-     TOK_number = 265,
-     TOK_number_negative = 266,
-     TOK_realnumber = 267,
-     TOK_tuple = 268,
-     TOK_quadruple = 269,
-     TOK_typereference = 270,
-     TOK_capitalreference = 271,
-     TOK_typefieldreference = 272,
-     TOK_valuefieldreference = 273,
-     TOK_Literal = 274,
-     TOK_ABSENT = 275,
-     TOK_ABSTRACT_SYNTAX = 276,
-     TOK_ALL = 277,
-     TOK_ANY = 278,
-     TOK_APPLICATION = 279,
-     TOK_AUTOMATIC = 280,
-     TOK_BEGIN = 281,
-     TOK_BIT = 282,
-     TOK_BMPString = 283,
-     TOK_BOOLEAN = 284,
-     TOK_BY = 285,
-     TOK_CHARACTER = 286,
-     TOK_CHOICE = 287,
-     TOK_CLASS = 288,
-     TOK_COMPONENT = 289,
-     TOK_COMPONENTS = 290,
-     TOK_CONSTRAINED = 291,
-     TOK_CONTAINING = 292,
-     TOK_DEFAULT = 293,
-     TOK_DEFINITIONS = 294,
-     TOK_DEFINED = 295,
-     TOK_EMBEDDED = 296,
-     TOK_ENCODED = 297,
-     TOK_ENCODING_CONTROL = 298,
-     TOK_END = 299,
-     TOK_ENUMERATED = 300,
-     TOK_EXPLICIT = 301,
-     TOK_EXPORTS = 302,
-     TOK_EXTENSIBILITY = 303,
-     TOK_EXTERNAL = 304,
-     TOK_FALSE = 305,
-     TOK_FROM = 306,
-     TOK_GeneralizedTime = 307,
-     TOK_GeneralString = 308,
-     TOK_GraphicString = 309,
-     TOK_IA5String = 310,
-     TOK_IDENTIFIER = 311,
-     TOK_IMPLICIT = 312,
-     TOK_IMPLIED = 313,
-     TOK_IMPORTS = 314,
-     TOK_INCLUDES = 315,
-     TOK_INSTANCE = 316,
-     TOK_INSTRUCTIONS = 317,
-     TOK_INTEGER = 318,
-     TOK_ISO646String = 319,
-     TOK_MAX = 320,
-     TOK_MIN = 321,
-     TOK_MINUS_INFINITY = 322,
-     TOK_NULL = 323,
-     TOK_NumericString = 324,
-     TOK_OBJECT = 325,
-     TOK_ObjectDescriptor = 326,
-     TOK_OCTET = 327,
-     TOK_OF = 328,
-     TOK_OPTIONAL = 329,
-     TOK_PATTERN = 330,
-     TOK_PDV = 331,
-     TOK_PLUS_INFINITY = 332,
-     TOK_PRESENT = 333,
-     TOK_PrintableString = 334,
-     TOK_PRIVATE = 335,
-     TOK_REAL = 336,
-     TOK_RELATIVE_OID = 337,
-     TOK_SEQUENCE = 338,
-     TOK_SET = 339,
-     TOK_SIZE = 340,
-     TOK_STRING = 341,
-     TOK_SYNTAX = 342,
-     TOK_T61String = 343,
-     TOK_TAGS = 344,
-     TOK_TeletexString = 345,
-     TOK_TRUE = 346,
-     TOK_TYPE_IDENTIFIER = 347,
-     TOK_UNIQUE = 348,
-     TOK_UNIVERSAL = 349,
-     TOK_UniversalString = 350,
-     TOK_UTCTime = 351,
-     TOK_UTF8String = 352,
-     TOK_VideotexString = 353,
-     TOK_VisibleString = 354,
-     TOK_WITH = 355,
-     TOK_EXCEPT = 356,
-     TOK_INTERSECTION = 357,
-     TOK_UNION = 358,
-     TOK_TwoDots = 359,
-     TOK_ThreeDots = 360
+     TOK_VBracketLeft = 259,
+     TOK_VBracketRight = 260,
+     TOK_whitespace = 261,
+     TOK_opaque = 262,
+     TOK_bstring = 263,
+     TOK_cstring = 264,
+     TOK_hstring = 265,
+     TOK_identifier = 266,
+     TOK_number = 267,
+     TOK_number_negative = 268,
+     TOK_realnumber = 269,
+     TOK_tuple = 270,
+     TOK_quadruple = 271,
+     TOK_typereference = 272,
+     TOK_capitalreference = 273,
+     TOK_typefieldreference = 274,
+     TOK_valuefieldreference = 275,
+     TOK_Literal = 276,
+     TOK_ABSENT = 277,
+     TOK_ABSTRACT_SYNTAX = 278,
+     TOK_ALL = 279,
+     TOK_ANY = 280,
+     TOK_APPLICATION = 281,
+     TOK_AUTOMATIC = 282,
+     TOK_BEGIN = 283,
+     TOK_BIT = 284,
+     TOK_BMPString = 285,
+     TOK_BOOLEAN = 286,
+     TOK_BY = 287,
+     TOK_CHARACTER = 288,
+     TOK_CHOICE = 289,
+     TOK_CLASS = 290,
+     TOK_COMPONENT = 291,
+     TOK_COMPONENTS = 292,
+     TOK_CONSTRAINED = 293,
+     TOK_CONTAINING = 294,
+     TOK_DEFAULT = 295,
+     TOK_DEFINITIONS = 296,
+     TOK_DEFINED = 297,
+     TOK_EMBEDDED = 298,
+     TOK_ENCODED = 299,
+     TOK_ENCODING_CONTROL = 300,
+     TOK_END = 301,
+     TOK_ENUMERATED = 302,
+     TOK_EXPLICIT = 303,
+     TOK_EXPORTS = 304,
+     TOK_EXTENSIBILITY = 305,
+     TOK_EXTERNAL = 306,
+     TOK_FALSE = 307,
+     TOK_FROM = 308,
+     TOK_GeneralizedTime = 309,
+     TOK_GeneralString = 310,
+     TOK_GraphicString = 311,
+     TOK_IA5String = 312,
+     TOK_IDENTIFIER = 313,
+     TOK_IMPLICIT = 314,
+     TOK_IMPLIED = 315,
+     TOK_IMPORTS = 316,
+     TOK_INCLUDES = 317,
+     TOK_INSTANCE = 318,
+     TOK_INSTRUCTIONS = 319,
+     TOK_INTEGER = 320,
+     TOK_ISO646String = 321,
+     TOK_MAX = 322,
+     TOK_MIN = 323,
+     TOK_MINUS_INFINITY = 324,
+     TOK_NULL = 325,
+     TOK_NumericString = 326,
+     TOK_OBJECT = 327,
+     TOK_ObjectDescriptor = 328,
+     TOK_OCTET = 329,
+     TOK_OF = 330,
+     TOK_OPTIONAL = 331,
+     TOK_PATTERN = 332,
+     TOK_PDV = 333,
+     TOK_PLUS_INFINITY = 334,
+     TOK_PRESENT = 335,
+     TOK_PrintableString = 336,
+     TOK_PRIVATE = 337,
+     TOK_REAL = 338,
+     TOK_RELATIVE_OID = 339,
+     TOK_SEQUENCE = 340,
+     TOK_SET = 341,
+     TOK_SIZE = 342,
+     TOK_STRING = 343,
+     TOK_SYNTAX = 344,
+     TOK_T61String = 345,
+     TOK_TAGS = 346,
+     TOK_TeletexString = 347,
+     TOK_TRUE = 348,
+     TOK_TYPE_IDENTIFIER = 349,
+     TOK_UNIQUE = 350,
+     TOK_UNIVERSAL = 351,
+     TOK_UniversalString = 352,
+     TOK_UTCTime = 353,
+     TOK_UTF8String = 354,
+     TOK_VideotexString = 355,
+     TOK_VisibleString = 356,
+     TOK_WITH = 357,
+     TOK_EXCEPT = 358,
+     TOK_INTERSECTION = 359,
+     TOK_UNION = 360,
+     TOK_TwoDots = 361,
+     TOK_ThreeDots = 362
    };
 #endif
+/* Tokens.  */
 #define TOK_PPEQ 258
-#define TOK_whitespace 259
-#define TOK_opaque 260
-#define TOK_bstring 261
-#define TOK_cstring 262
-#define TOK_hstring 263
-#define TOK_identifier 264
-#define TOK_number 265
-#define TOK_number_negative 266
-#define TOK_realnumber 267
-#define TOK_tuple 268
-#define TOK_quadruple 269
-#define TOK_typereference 270
-#define TOK_capitalreference 271
-#define TOK_typefieldreference 272
-#define TOK_valuefieldreference 273
-#define TOK_Literal 274
-#define TOK_ABSENT 275
-#define TOK_ABSTRACT_SYNTAX 276
-#define TOK_ALL 277
-#define TOK_ANY 278
-#define TOK_APPLICATION 279
-#define TOK_AUTOMATIC 280
-#define TOK_BEGIN 281
-#define TOK_BIT 282
-#define TOK_BMPString 283
-#define TOK_BOOLEAN 284
-#define TOK_BY 285
-#define TOK_CHARACTER 286
-#define TOK_CHOICE 287
-#define TOK_CLASS 288
-#define TOK_COMPONENT 289
-#define TOK_COMPONENTS 290
-#define TOK_CONSTRAINED 291
-#define TOK_CONTAINING 292
-#define TOK_DEFAULT 293
-#define TOK_DEFINITIONS 294
-#define TOK_DEFINED 295
-#define TOK_EMBEDDED 296
-#define TOK_ENCODED 297
-#define TOK_ENCODING_CONTROL 298
-#define TOK_END 299
-#define TOK_ENUMERATED 300
-#define TOK_EXPLICIT 301
-#define TOK_EXPORTS 302
-#define TOK_EXTENSIBILITY 303
-#define TOK_EXTERNAL 304
-#define TOK_FALSE 305
-#define TOK_FROM 306
-#define TOK_GeneralizedTime 307
-#define TOK_GeneralString 308
-#define TOK_GraphicString 309
-#define TOK_IA5String 310
-#define TOK_IDENTIFIER 311
-#define TOK_IMPLICIT 312
-#define TOK_IMPLIED 313
-#define TOK_IMPORTS 314
-#define TOK_INCLUDES 315
-#define TOK_INSTANCE 316
-#define TOK_INSTRUCTIONS 317
-#define TOK_INTEGER 318
-#define TOK_ISO646String 319
-#define TOK_MAX 320
-#define TOK_MIN 321
-#define TOK_MINUS_INFINITY 322
-#define TOK_NULL 323
-#define TOK_NumericString 324
-#define TOK_OBJECT 325
-#define TOK_ObjectDescriptor 326
-#define TOK_OCTET 327
-#define TOK_OF 328
-#define TOK_OPTIONAL 329
-#define TOK_PATTERN 330
-#define TOK_PDV 331
-#define TOK_PLUS_INFINITY 332
-#define TOK_PRESENT 333
-#define TOK_PrintableString 334
-#define TOK_PRIVATE 335
-#define TOK_REAL 336
-#define TOK_RELATIVE_OID 337
-#define TOK_SEQUENCE 338
-#define TOK_SET 339
-#define TOK_SIZE 340
-#define TOK_STRING 341
-#define TOK_SYNTAX 342
-#define TOK_T61String 343
-#define TOK_TAGS 344
-#define TOK_TeletexString 345
-#define TOK_TRUE 346
-#define TOK_TYPE_IDENTIFIER 347
-#define TOK_UNIQUE 348
-#define TOK_UNIVERSAL 349
-#define TOK_UniversalString 350
-#define TOK_UTCTime 351
-#define TOK_UTF8String 352
-#define TOK_VideotexString 353
-#define TOK_VisibleString 354
-#define TOK_WITH 355
-#define TOK_EXCEPT 356
-#define TOK_INTERSECTION 357
-#define TOK_UNION 358
-#define TOK_TwoDots 359
-#define TOK_ThreeDots 360
+#define TOK_VBracketLeft 259
+#define TOK_VBracketRight 260
+#define TOK_whitespace 261
+#define TOK_opaque 262
+#define TOK_bstring 263
+#define TOK_cstring 264
+#define TOK_hstring 265
+#define TOK_identifier 266
+#define TOK_number 267
+#define TOK_number_negative 268
+#define TOK_realnumber 269
+#define TOK_tuple 270
+#define TOK_quadruple 271
+#define TOK_typereference 272
+#define TOK_capitalreference 273
+#define TOK_typefieldreference 274
+#define TOK_valuefieldreference 275
+#define TOK_Literal 276
+#define TOK_ABSENT 277
+#define TOK_ABSTRACT_SYNTAX 278
+#define TOK_ALL 279
+#define TOK_ANY 280
+#define TOK_APPLICATION 281
+#define TOK_AUTOMATIC 282
+#define TOK_BEGIN 283
+#define TOK_BIT 284
+#define TOK_BMPString 285
+#define TOK_BOOLEAN 286
+#define TOK_BY 287
+#define TOK_CHARACTER 288
+#define TOK_CHOICE 289
+#define TOK_CLASS 290
+#define TOK_COMPONENT 291
+#define TOK_COMPONENTS 292
+#define TOK_CONSTRAINED 293
+#define TOK_CONTAINING 294
+#define TOK_DEFAULT 295
+#define TOK_DEFINITIONS 296
+#define TOK_DEFINED 297
+#define TOK_EMBEDDED 298
+#define TOK_ENCODED 299
+#define TOK_ENCODING_CONTROL 300
+#define TOK_END 301
+#define TOK_ENUMERATED 302
+#define TOK_EXPLICIT 303
+#define TOK_EXPORTS 304
+#define TOK_EXTENSIBILITY 305
+#define TOK_EXTERNAL 306
+#define TOK_FALSE 307
+#define TOK_FROM 308
+#define TOK_GeneralizedTime 309
+#define TOK_GeneralString 310
+#define TOK_GraphicString 311
+#define TOK_IA5String 312
+#define TOK_IDENTIFIER 313
+#define TOK_IMPLICIT 314
+#define TOK_IMPLIED 315
+#define TOK_IMPORTS 316
+#define TOK_INCLUDES 317
+#define TOK_INSTANCE 318
+#define TOK_INSTRUCTIONS 319
+#define TOK_INTEGER 320
+#define TOK_ISO646String 321
+#define TOK_MAX 322
+#define TOK_MIN 323
+#define TOK_MINUS_INFINITY 324
+#define TOK_NULL 325
+#define TOK_NumericString 326
+#define TOK_OBJECT 327
+#define TOK_ObjectDescriptor 328
+#define TOK_OCTET 329
+#define TOK_OF 330
+#define TOK_OPTIONAL 331
+#define TOK_PATTERN 332
+#define TOK_PDV 333
+#define TOK_PLUS_INFINITY 334
+#define TOK_PRESENT 335
+#define TOK_PrintableString 336
+#define TOK_PRIVATE 337
+#define TOK_REAL 338
+#define TOK_RELATIVE_OID 339
+#define TOK_SEQUENCE 340
+#define TOK_SET 341
+#define TOK_SIZE 342
+#define TOK_STRING 343
+#define TOK_SYNTAX 344
+#define TOK_T61String 345
+#define TOK_TAGS 346
+#define TOK_TeletexString 347
+#define TOK_TRUE 348
+#define TOK_TYPE_IDENTIFIER 349
+#define TOK_UNIQUE 350
+#define TOK_UNIVERSAL 351
+#define TOK_UniversalString 352
+#define TOK_UTCTime 353
+#define TOK_UTF8String 354
+#define TOK_VideotexString 355
+#define TOK_VisibleString 356
+#define TOK_WITH 357
+#define TOK_EXCEPT 358
+#define TOK_INTERSECTION 359
+#define TOK_UNION 360
+#define TOK_TwoDots 361
+#define TOK_ThreeDots 362
 
 
 
@@ -367,9 +387,15 @@ static asn1p_module_t *currentModule;
 # define YYERROR_VERBOSE 0
 #endif
 
-#ifndef YYSTYPE
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
 #line 88 "asn1p_y.y"
-typedef union {
+{
 	asn1p_t			*a_grammar;
 	asn1p_module_flags_e	 a_module_flags;
 	asn1p_module_t		*a_module;
@@ -402,98 +428,212 @@ typedef union {
 		char *name;
 		struct asn1p_type_tag_s tag;
 	} tv_nametag;
-} yystype;
-/* Line 193 of /usr/local/share/bison/yacc.c.  */
-#line 408 "asn1p_y.c"
-# define YYSTYPE yystype
+}
+/* Line 193 of yacc.c.  */
+#line 434 "y.tab.c"
+	YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
 # define YYSTYPE_IS_TRIVIAL 1
 #endif
 
-#ifndef YYLTYPE
-typedef struct yyltype
-{
-  int first_line;
-  int first_column;
-  int last_line;
-  int last_column;
-} yyltype;
-# define YYLTYPE yyltype
-# define YYLTYPE_IS_TRIVIAL 1
-#endif
+
 
 /* Copy the second part of user declarations.  */
 
 
-/* Line 213 of /usr/local/share/bison/yacc.c.  */
-#line 429 "asn1p_y.c"
+/* Line 216 of yacc.c.  */
+#line 447 "y.tab.c"
 
-#if ! defined (yyoverflow) || YYERROR_VERBOSE
+#ifdef short
+# undef short
+#endif
 
-/* The parser invokes alloca or malloc; define the necessary symbols.  */
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
 
-# if YYSTACK_USE_ALLOCA
-#  define YYSTACK_ALLOC alloca
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
 # else
-#  ifndef YYSTACK_USE_ALLOCA
-#   if defined (alloca) || defined (_ALLOCA_H)
-#    define YYSTACK_ALLOC alloca
+#  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 <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+    int i;
+#endif
+{
+  return i;
+}
+#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 <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
 #   else
-#    ifdef __GNUC__
-#     define YYSTACK_ALLOC __builtin_alloca
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef _STDLIB_H
+#      define _STDLIB_H 1
+#     endif
 #    endif
 #   endif
 #  endif
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning. */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+#  endif
 # else
-#  if defined (__STDC__) || defined (__cplusplus)
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  endif
+#  if (defined __cplusplus && ! defined _STDLIB_H \
+       && ! ((defined YYMALLOC || defined malloc) \
+	     && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
-#   define YYSIZE_T size_t
+#   ifndef _STDLIB_H
+#    define _STDLIB_H 1
+#   endif
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
 #  endif
-#  define YYSTACK_ALLOC malloc
-#  define YYSTACK_FREE free
 # endif
-#endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
 
 
-#if (! defined (yyoverflow) \
-     && (! defined (__cplusplus) \
-	 || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  short yyss;
+  yytype_int16 yyss;
   YYSTYPE yyvs;
   };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
+# 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 (short) + sizeof (YYSTYPE))				\
-      + YYSTACK_GAP_MAX)
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
 
 /* Copy COUNT objects from FROM to TO.  The source and destination do
    not overlap.  */
 # ifndef YYCOPY
-#  if 1 < __GNUC__
+#  if defined __GNUC__ && 1 < __GNUC__
 #   define YYCOPY(To, From, Count) \
       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
 #  else
 #   define YYCOPY(To, From, Count)		\
       do					\
 	{					\
-	  register YYSIZE_T yyi;		\
+	  YYSIZE_T yyi;				\
 	  for (yyi = 0; yyi < (Count); yyi++)	\
-	    (To)[yyi] = (From)[yyi];	\
+	    (To)[yyi] = (From)[yyi];		\
 	}					\
-      while (0)
+      while (YYID (0))
 #  endif
 # endif
 
@@ -508,55 +648,50 @@ union yyalloc
 	YYSIZE_T yynewbytes;						\
 	YYCOPY (&yyptr->Stack, Stack, yysize);				\
 	Stack = &yyptr->Stack;						\
-	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX;	\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
 	yyptr += yynewbytes / sizeof (*yyptr);				\
       }									\
-    while (0)
-
-#endif
+    while (YYID (0))
 
-#if defined (__STDC__) || defined (__cplusplus)
-   typedef signed char yysigned_char;
-#else
-   typedef short yysigned_char;
 #endif
 
-/* YYFINAL -- State number of the termination state. */
+/* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  7
-#define YYLAST   805
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   793
 
-/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  121
-/* YYNNTS -- Number of nonterminals. */
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  123
+/* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  122
-/* YYNRULES -- Number of rules. */
-#define YYNRULES  312
-/* YYNRULES -- Number of states. */
-#define YYNSTATES  470
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  313
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  473
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   360
+#define YYMAXUTOK   362
 
-#define YYTRANSLATE(X) \
-  ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
-static const unsigned char yytranslate[] =
+static const yytype_uint8 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,   117,     2,     2,     2,     2,     2,     2,
-     110,   111,     2,     2,   113,     2,   118,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   114,   112,
-     119,     2,     2,     2,   120,     2,     2,     2,     2,     2,
+       2,     2,     2,   119,     2,     2,     2,     2,     2,     2,
+     112,   113,     2,     2,   115,     2,   120,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   116,   114,
+     121,     2,     2,     2,   122,     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,   115,     2,   116,   102,     2,     2,     2,     2,     2,
+       2,   117,     2,   118,   104,     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,   108,   104,   109,     2,     2,     2,     2,
+       2,     2,     2,   110,   106,   111,     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,
@@ -579,14 +714,14 @@ static const unsigned char yytranslate[] =
       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,   103,   105,   106,
-     107
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   105,
+     107,   108,   109
 };
 
 #if YYDEBUG
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
-static const unsigned short yyprhs[] =
+static const yytype_uint16 yyprhs[] =
 {
        0,     0,     3,     5,     7,    10,    11,    21,    22,    24,
       28,    31,    33,    36,    38,    43,    45,    46,    48,    50,
@@ -596,229 +731,231 @@ static const unsigned short yyprhs[] =
      127,   131,   133,   134,   136,   140,   144,   147,   149,   153,
      155,   159,   161,   165,   170,   172,   174,   179,   183,   187,
      194,   201,   203,   207,   209,   213,   217,   221,   225,   227,
-     231,   233,   235,   237,   239,   240,   242,   244,   248,   252,
-     255,   259,   261,   263,   267,   270,   272,   274,   280,   281,
-     283,   285,   289,   292,   297,   301,   305,   309,   313,   317,
-     318,   320,   321,   328,   330,   333,   335,   337,   339,   343,
-     345,   349,   353,   357,   358,   361,   363,   368,   373,   378,
-     385,   392,   394,   399,   403,   405,   409,   413,   417,   419,
-     423,   425,   429,   431,   433,   435,   437,   441,   445,   447,
-     452,   454,   456,   460,   461,   465,   467,   469,   471,   473,
-     475,   477,   479,   481,   485,   487,   489,   491,   493,   496,
-     498,   500,   502,   504,   507,   510,   512,   514,   517,   520,
-     522,   524,   526,   528,   530,   533,   535,   538,   540,   542,
-     544,   546,   548,   550,   552,   554,   556,   558,   560,   562,
-     564,   566,   568,   570,   572,   574,   575,   577,   579,   581,
-     586,   590,   595,   597,   599,   603,   609,   611,   613,   617,
-     619,   623,   625,   629,   631,   635,   640,   644,   646,   648,
-     652,   656,   660,   664,   666,   668,   671,   674,   676,   678,
-     680,   682,   684,   686,   688,   690,   692,   694,   696,   700,
-     706,   708,   712,   714,   718,   719,   721,   723,   725,   727,
-     729,   731,   733,   734,   740,   743,   745,   748,   751,   755,
-     757,   759,   763,   768,   770,   774,   777,   781,   783,   787,
-     788,   790,   792,   795,   798,   802,   804,   808,   810,   815,
-     820,   822,   824,   826,   828,   830,   832,   833,   835,   838,
-     843,   844,   846,   848,   850,   851,   853,   855,   857,   859,
-     861,   862,   864
+     231,   233,   235,   237,   239,   240,   242,   244,   248,   254,
+     258,   261,   265,   267,   269,   273,   276,   278,   280,   286,
+     287,   289,   291,   295,   298,   303,   307,   311,   315,   319,
+     323,   324,   326,   327,   334,   336,   339,   341,   343,   345,
+     349,   351,   355,   359,   363,   364,   367,   369,   374,   379,
+     384,   391,   398,   400,   405,   409,   411,   415,   419,   423,
+     425,   429,   431,   435,   437,   439,   441,   443,   447,   451,
+     453,   458,   460,   462,   466,   467,   471,   473,   475,   477,
+     479,   481,   483,   485,   487,   491,   493,   495,   497,   499,
+     502,   504,   506,   508,   510,   513,   516,   518,   520,   523,
+     526,   528,   530,   532,   534,   536,   539,   541,   544,   546,
+     548,   550,   552,   554,   556,   558,   560,   562,   564,   566,
+     568,   570,   572,   574,   576,   578,   580,   581,   583,   585,
+     587,   592,   596,   601,   603,   605,   609,   615,   617,   619,
+     623,   625,   629,   631,   635,   637,   641,   646,   650,   652,
+     654,   658,   662,   666,   670,   672,   674,   677,   680,   682,
+     684,   686,   688,   690,   692,   694,   696,   698,   700,   702,
+     706,   712,   714,   718,   720,   724,   725,   727,   729,   731,
+     733,   735,   737,   739,   740,   746,   749,   751,   754,   757,
+     761,   763,   765,   769,   774,   776,   780,   783,   787,   789,
+     793,   794,   796,   798,   801,   804,   808,   810,   814,   816,
+     821,   826,   828,   830,   832,   834,   836,   838,   839,   841,
+     844,   849,   850,   852,   854,   856,   857,   859,   861,   863,
+     865,   867,   868,   870
 };
 
-/* YYRHS -- A `-1'-separated list of the rules' RHS. */
-static const short yyrhs[] =
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
 {
-     122,     0,    -1,   123,    -1,   124,    -1,   123,   124,    -1,
-      -1,   239,   125,   126,    39,   130,     3,    26,   133,    44,
-      -1,    -1,   127,    -1,   108,   128,   109,    -1,   108,   109,
-      -1,   129,    -1,   128,   129,    -1,   242,    -1,   242,   110,
-      10,   111,    -1,    10,    -1,    -1,   131,    -1,   132,    -1,
-     131,   132,    -1,    46,    89,    -1,    57,    89,    -1,    25,
-      89,    -1,    48,    58,    -1,    16,    62,    -1,    -1,   134,
-      -1,   146,   138,   135,    -1,   136,    -1,   135,   136,    -1,
-     153,    -1,   183,    -1,   151,    -1,    -1,    43,    16,   137,
-      -1,   193,    -1,    -1,   139,    -1,    59,   140,   112,    -1,
-      59,    51,    -1,    -1,   141,    -1,   143,    -1,   141,   143,
-      -1,    -1,   127,    -1,   144,    51,   239,   142,    -1,   145,
-      -1,   144,   113,   145,    -1,   239,    -1,   239,   108,   109,
-      -1,   242,    -1,    -1,   147,    -1,    47,   148,   112,    -1,
-      47,    22,   112,    -1,    47,   112,    -1,   149,    -1,   148,
-     113,   149,    -1,   239,    -1,   239,   108,   109,    -1,   242,
-      -1,   108,   200,   109,    -1,   239,   152,     3,   150,    -1,
-     192,    -1,   177,    -1,   177,   108,   156,   109,    -1,   239,
-       3,   173,    -1,   239,     3,   163,    -1,   239,   108,   154,
-     109,     3,   173,    -1,   239,   108,   154,   109,     3,   163,
-      -1,   155,    -1,   154,   113,   155,    -1,   239,    -1,   239,
-     114,   242,    -1,   239,   114,   239,    -1,   190,   114,   242,
-      -1,   190,   114,   239,    -1,   157,    -1,   156,   113,   157,
-      -1,   173,    -1,   186,    -1,   242,    -1,   150,    -1,    -1,
-     159,    -1,   160,    -1,   159,   113,   160,    -1,   242,   173,
-     227,    -1,   173,   227,    -1,    35,    73,   173,    -1,   172,
-      -1,   162,    -1,   161,   113,   162,    -1,   242,   173,    -1,
-     172,    -1,   173,    -1,    33,   108,   165,   109,   167,    -1,
-      -1,    93,    -1,   166,    -1,   165,   113,   166,    -1,    17,
-     227,    -1,    18,   173,   164,   227,    -1,    18,   181,   227,
-      -1,    18,   182,   227,    -1,    17,   181,   227,    -1,    17,
-     173,   227,    -1,    17,   182,   227,    -1,    -1,   168,    -1,
-      -1,   100,    87,   108,   169,   170,   109,    -1,   171,    -1,
-     170,   171,    -1,     4,    -1,    19,    -1,   180,    -1,   115,
-     170,   116,    -1,   107,    -1,   107,   117,   187,    -1,   107,
-     117,   232,    -1,   234,   175,   196,    -1,    -1,   174,   176,
-      -1,   152,    -1,    32,   108,   161,   109,    -1,    83,   108,
-     158,   109,    -1,    84,   108,   158,   109,    -1,    83,   196,
-      73,   241,   234,   175,    -1,    84,   196,    73,   241,   234,
-     175,    -1,    23,    -1,    23,    40,    30,   242,    -1,    61,
-      73,   177,    -1,    15,    -1,    15,   118,   239,    -1,   240,
-     118,   239,    -1,    15,   118,   242,    -1,   240,    -1,   240,
-     118,   178,    -1,   179,    -1,   178,   118,   179,    -1,   180,
-      -1,    17,    -1,    18,    -1,    17,    -1,   181,   118,    17,
-      -1,   181,   118,    18,    -1,    16,    -1,   242,   173,     3,
-     184,    -1,   186,    -1,   187,    -1,   242,   114,   184,    -1,
-      -1,   108,   185,   189,    -1,    68,    -1,    50,    -1,    91,
-      -1,     6,    -1,     8,    -1,   188,    -1,   232,    -1,   242,
-      -1,   239,   118,   242,    -1,     7,    -1,    13,    -1,    14,
-      -1,     5,    -1,   189,     5,    -1,    29,    -1,    68,    -1,
-      81,    -1,   191,    -1,    72,    86,    -1,    70,    56,    -1,
-      82,    -1,    49,    -1,    41,    76,    -1,    31,    86,    -1,
-      96,    -1,    52,    -1,   193,    -1,    63,    -1,    45,    -1,
-      27,    86,    -1,   190,    -1,   191,   229,    -1,    28,    -1,
-      53,    -1,    54,    -1,    55,    -1,    64,    -1,    69,    -1,
-      79,    -1,    88,    -1,    90,    -1,    95,    -1,    97,    -1,
-      98,    -1,    99,    -1,    71,    -1,   104,    -1,   105,    -1,
-     102,    -1,   103,    -1,    -1,   197,    -1,   198,    -1,   199,
-      -1,    85,   110,   200,   111,    -1,   110,   200,   111,    -1,
-     199,   110,   200,   111,    -1,   107,    -1,   201,    -1,   201,
-     113,   107,    -1,   201,   113,   107,   113,   201,    -1,   216,
-      -1,   202,    -1,    22,   101,   205,    -1,   203,    -1,   202,
-     194,   203,    -1,   204,    -1,   203,   195,   204,    -1,   205,
-      -1,   205,   101,   205,    -1,   207,   110,   200,   111,    -1,
-     110,   200,   111,    -1,   208,    -1,   210,    -1,   208,   220,
-     208,    -1,    66,   220,   208,    -1,   208,   220,    65,    -1,
-      66,   220,    65,    -1,   211,    -1,   206,    -1,    75,     7,
-      -1,    75,   242,    -1,    85,    -1,    51,    -1,    50,    -1,
-      91,    -1,   233,    -1,   188,    -1,   209,    -1,   242,    -1,
-       6,    -1,     8,    -1,   239,    -1,   100,    34,   199,    -1,
-     100,    35,   108,   212,   109,    -1,   213,    -1,   212,   113,
-     213,    -1,   107,    -1,   242,   196,   214,    -1,    -1,   215,
-      -1,    78,    -1,    20,    -1,    74,    -1,   217,    -1,   221,
-      -1,   219,    -1,    -1,    36,    30,   108,   218,   189,    -1,
-      37,   173,    -1,   106,    -1,   106,   119,    -1,   119,   106,
-      -1,   119,   106,   119,    -1,   222,    -1,   223,    -1,   108,
-     239,   109,    -1,   222,   108,   224,   109,    -1,   225,    -1,
-     224,   113,   225,    -1,   120,   226,    -1,   120,   118,   226,
-      -1,   242,    -1,   226,   118,   242,    -1,    -1,   228,    -1,
-      74,    -1,    38,   184,    -1,   108,   109,    -1,   108,   230,
-     109,    -1,   231,    -1,   230,   113,   231,    -1,   242,    -1,
-     242,   110,   232,   111,    -1,   242,   110,   187,   111,    -1,
-     232,    -1,   107,    -1,    10,    -1,    11,    -1,   232,    -1,
-      12,    -1,    -1,   235,    -1,   236,   238,    -1,   115,   237,
-      10,   116,    -1,    -1,    94,    -1,    24,    -1,    80,    -1,
-      -1,    57,    -1,    46,    -1,    15,    -1,    16,    -1,    16,
-      -1,    -1,   242,    -1,     9,    -1
+     124,     0,    -1,   125,    -1,   126,    -1,   125,   126,    -1,
+      -1,   241,   127,   128,    41,   132,     3,    28,   135,    46,
+      -1,    -1,   129,    -1,   110,   130,   111,    -1,   110,   111,
+      -1,   131,    -1,   130,   131,    -1,   244,    -1,   244,   112,
+      12,   113,    -1,    12,    -1,    -1,   133,    -1,   134,    -1,
+     133,   134,    -1,    48,    91,    -1,    59,    91,    -1,    27,
+      91,    -1,    50,    60,    -1,    18,    64,    -1,    -1,   136,
+      -1,   148,   140,   137,    -1,   138,    -1,   137,   138,    -1,
+     155,    -1,   185,    -1,   153,    -1,    -1,    45,    18,   139,
+      -1,   195,    -1,    -1,   141,    -1,    61,   142,   114,    -1,
+      61,    53,    -1,    -1,   143,    -1,   145,    -1,   143,   145,
+      -1,    -1,   129,    -1,   146,    53,   241,   144,    -1,   147,
+      -1,   146,   115,   147,    -1,   241,    -1,   241,   110,   111,
+      -1,   244,    -1,    -1,   149,    -1,    49,   150,   114,    -1,
+      49,    24,   114,    -1,    49,   114,    -1,   151,    -1,   150,
+     115,   151,    -1,   241,    -1,   241,   110,   111,    -1,   244,
+      -1,   110,   202,   111,    -1,   241,   154,     3,   152,    -1,
+     194,    -1,   179,    -1,   179,   110,   158,   111,    -1,   241,
+       3,   175,    -1,   241,     3,   165,    -1,   241,   110,   156,
+     111,     3,   175,    -1,   241,   110,   156,   111,     3,   165,
+      -1,   157,    -1,   156,   115,   157,    -1,   241,    -1,   241,
+     116,   244,    -1,   241,   116,   241,    -1,   192,   116,   244,
+      -1,   192,   116,   241,    -1,   159,    -1,   158,   115,   159,
+      -1,   175,    -1,   188,    -1,   244,    -1,   152,    -1,    -1,
+     161,    -1,   162,    -1,   161,   115,   162,    -1,   161,   115,
+       4,   161,     5,    -1,   244,   175,   229,    -1,   175,   229,
+      -1,    37,    75,   175,    -1,   174,    -1,   164,    -1,   163,
+     115,   164,    -1,   244,   175,    -1,   174,    -1,   175,    -1,
+      35,   110,   167,   111,   169,    -1,    -1,    95,    -1,   168,
+      -1,   167,   115,   168,    -1,    19,   229,    -1,    20,   175,
+     166,   229,    -1,    20,   183,   229,    -1,    20,   184,   229,
+      -1,    19,   183,   229,    -1,    19,   175,   229,    -1,    19,
+     184,   229,    -1,    -1,   170,    -1,    -1,   102,    89,   110,
+     171,   172,   111,    -1,   173,    -1,   172,   173,    -1,     6,
+      -1,    21,    -1,   182,    -1,   117,   172,   118,    -1,   109,
+      -1,   109,   119,   189,    -1,   109,   119,   234,    -1,   236,
+     177,   198,    -1,    -1,   176,   178,    -1,   154,    -1,    34,
+     110,   163,   111,    -1,    85,   110,   160,   111,    -1,    86,
+     110,   160,   111,    -1,    85,   198,    75,   243,   236,   177,
+      -1,    86,   198,    75,   243,   236,   177,    -1,    25,    -1,
+      25,    42,    32,   244,    -1,    63,    75,   179,    -1,    17,
+      -1,    17,   120,   241,    -1,   242,   120,   241,    -1,    17,
+     120,   244,    -1,   242,    -1,   242,   120,   180,    -1,   181,
+      -1,   180,   120,   181,    -1,   182,    -1,    19,    -1,    20,
+      -1,    19,    -1,   183,   120,    19,    -1,   183,   120,    20,
+      -1,    18,    -1,   244,   175,     3,   186,    -1,   188,    -1,
+     189,    -1,   244,   116,   186,    -1,    -1,   110,   187,   191,
+      -1,    70,    -1,    52,    -1,    93,    -1,     8,    -1,    10,
+      -1,   190,    -1,   234,    -1,   244,    -1,   241,   120,   244,
+      -1,     9,    -1,    15,    -1,    16,    -1,     7,    -1,   191,
+       7,    -1,    31,    -1,    70,    -1,    83,    -1,   193,    -1,
+      74,    88,    -1,    72,    58,    -1,    84,    -1,    51,    -1,
+      43,    78,    -1,    33,    88,    -1,    98,    -1,    54,    -1,
+     195,    -1,    65,    -1,    47,    -1,    29,    88,    -1,   192,
+      -1,   193,   231,    -1,    30,    -1,    55,    -1,    56,    -1,
+      57,    -1,    66,    -1,    71,    -1,    81,    -1,    90,    -1,
+      92,    -1,    97,    -1,    99,    -1,   100,    -1,   101,    -1,
+      73,    -1,   106,    -1,   107,    -1,   104,    -1,   105,    -1,
+      -1,   199,    -1,   200,    -1,   201,    -1,    87,   112,   202,
+     113,    -1,   112,   202,   113,    -1,   201,   112,   202,   113,
+      -1,   109,    -1,   203,    -1,   203,   115,   109,    -1,   203,
+     115,   109,   115,   203,    -1,   218,    -1,   204,    -1,    24,
+     103,   207,    -1,   205,    -1,   204,   196,   205,    -1,   206,
+      -1,   205,   197,   206,    -1,   207,    -1,   207,   103,   207,
+      -1,   209,   112,   202,   113,    -1,   112,   202,   113,    -1,
+     210,    -1,   212,    -1,   210,   222,   210,    -1,    68,   222,
+     210,    -1,   210,   222,    67,    -1,    68,   222,    67,    -1,
+     213,    -1,   208,    -1,    77,     9,    -1,    77,   244,    -1,
+      87,    -1,    53,    -1,    52,    -1,    93,    -1,   235,    -1,
+     190,    -1,   211,    -1,   244,    -1,     8,    -1,    10,    -1,
+     241,    -1,   102,    36,   201,    -1,   102,    37,   110,   214,
+     111,    -1,   215,    -1,   214,   115,   215,    -1,   109,    -1,
+     244,   198,   216,    -1,    -1,   217,    -1,    80,    -1,    22,
+      -1,    76,    -1,   219,    -1,   223,    -1,   221,    -1,    -1,
+      38,    32,   110,   220,   191,    -1,    39,   175,    -1,   108,
+      -1,   108,   121,    -1,   121,   108,    -1,   121,   108,   121,
+      -1,   224,    -1,   225,    -1,   110,   241,   111,    -1,   224,
+     110,   226,   111,    -1,   227,    -1,   226,   115,   227,    -1,
+     122,   228,    -1,   122,   120,   228,    -1,   244,    -1,   228,
+     120,   244,    -1,    -1,   230,    -1,    76,    -1,    40,   186,
+      -1,   110,   111,    -1,   110,   232,   111,    -1,   233,    -1,
+     232,   115,   233,    -1,   244,    -1,   244,   112,   234,   113,
+      -1,   244,   112,   189,   113,    -1,   234,    -1,   109,    -1,
+      12,    -1,    13,    -1,   234,    -1,    14,    -1,    -1,   237,
+      -1,   238,   240,    -1,   117,   239,    12,   118,    -1,    -1,
+      96,    -1,    26,    -1,    82,    -1,    -1,    59,    -1,    48,
+      -1,    17,    -1,    18,    -1,    18,    -1,    -1,   244,    -1,
+      11,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
-static const unsigned short yyrline[] =
+static const yytype_uint16 yyrline[] =
 {
-       0,   355,   355,   361,   367,   384,   383,   412,   414,   417,
-     421,   426,   433,   441,   446,   450,   459,   461,   469,   473,
-     481,   485,   488,   491,   495,   515,   517,   525,   534,   538,
-     553,   561,   574,   582,   581,   595,   607,   609,   611,   622,
-     627,   629,   631,   637,   643,   645,   648,   659,   665,   671,
-     678,   684,   693,   695,   706,   710,   713,   720,   726,   732,
-     739,   745,   754,   756,   766,   780,   790,   806,   816,   832,
-     838,   845,   855,   865,   870,   877,   884,   892,   902,   908,
-     914,   918,   926,   937,   959,   961,   963,   969,   975,   983,
-     989,   996,  1001,  1007,  1013,  1019,  1022,  1028,  1038,  1040,
-    1043,  1051,  1058,  1071,  1082,  1092,  1103,  1113,  1124,  1135,
-    1137,  1144,  1142,  1151,  1156,  1162,  1167,  1170,  1174,  1179,
-    1188,  1197,  1208,  1230,  1237,  1256,  1260,  1266,  1272,  1278,
-    1288,  1298,  1304,  1315,  1329,  1338,  1348,  1358,  1368,  1376,
-    1397,  1406,  1415,  1417,  1424,  1431,  1437,  1441,  1447,  1467,
-    1477,  1479,  1480,  1487,  1487,  1492,  1499,  1505,  1510,  1514,
-    1518,  1521,  1526,  1538,  1555,  1560,  1565,  1572,  1582,  1596,
-    1598,  1599,  1600,  1601,  1602,  1603,  1604,  1605,  1606,  1607,
-    1608,  1609,  1615,  1617,  1618,  1621,  1628,  1640,  1642,  1646,
-    1650,  1651,  1652,  1653,  1654,  1658,  1659,  1660,  1661,  1665,
-    1666,  1673,  1673,  1674,  1674,  1676,  1678,  1683,  1687,  1691,
-    1700,  1704,  1709,  1714,  1717,  1723,  1731,  1736,  1738,  1743,
-    1745,  1750,  1752,  1758,  1760,  1765,  1774,  1782,  1788,  1794,
-    1801,  1809,  1817,  1826,  1829,  1834,  1840,  1850,  1854,  1859,
-    1865,  1870,  1871,  1872,  1873,  1886,  1891,  1897,  1911,  1915,
-    1920,  1924,  1929,  1936,  1949,  1951,  1954,  1958,  1961,  1968,
-    1970,  1971,  1976,  1974,  1986,  1994,  1996,  1997,  1998,  2000,
-    2004,  2012,  2027,  2033,  2040,  2053,  2065,  2080,  2084,  2101,
-    2106,  2109,  2114,  2136,  2141,  2146,  2152,  2158,  2166,  2174,
-    2182,  2189,  2199,  2204,  2210,  2212,  2242,  2244,  2247,  2254,
-    2260,  2262,  2263,  2264,  2267,  2269,  2270,  2273,  2278,  2285,
-    2292,  2294,  2299
+       0,   357,   357,   363,   368,   385,   385,   414,   415,   419,
+     422,   428,   434,   443,   447,   451,   461,   462,   471,   474,
+     483,   486,   489,   492,   496,   517,   518,   527,   536,   539,
+     555,   562,   575,   583,   582,   596,   609,   610,   613,   623,
+     629,   630,   633,   638,   645,   646,   650,   661,   666,   673,
+     679,   685,   695,   696,   708,   711,   714,   722,   727,   734,
+     740,   746,   755,   758,   768,   781,   791,   811,   817,   833,
+     839,   847,   856,   867,   871,   878,   885,   893,   904,   909,
+     916,   919,   927,   938,   961,   962,   965,   970,   974,   981,
+     988,   994,  1001,  1007,  1012,  1019,  1024,  1027,  1034,  1044,
+    1045,  1049,  1056,  1066,  1076,  1087,  1097,  1108,  1118,  1129,
+    1141,  1142,  1149,  1148,  1157,  1161,  1168,  1172,  1175,  1179,
+    1185,  1193,  1202,  1214,  1236,  1243,  1262,  1265,  1271,  1277,
+    1283,  1293,  1303,  1309,  1320,  1335,  1343,  1353,  1363,  1373,
+    1381,  1403,  1411,  1420,  1424,  1429,  1438,  1442,  1446,  1453,
+    1473,  1483,  1484,  1485,  1492,  1492,  1497,  1505,  1510,  1515,
+    1519,  1523,  1526,  1532,  1543,  1561,  1565,  1570,  1578,  1587,
+    1602,  1603,  1604,  1605,  1606,  1607,  1608,  1609,  1610,  1611,
+    1612,  1613,  1614,  1621,  1622,  1623,  1627,  1633,  1646,  1647,
+    1651,  1655,  1656,  1657,  1658,  1659,  1663,  1664,  1665,  1666,
+    1670,  1671,  1678,  1678,  1679,  1679,  1682,  1683,  1689,  1693,
+    1696,  1706,  1709,  1715,  1719,  1722,  1728,  1736,  1742,  1743,
+    1749,  1750,  1756,  1757,  1764,  1765,  1771,  1779,  1787,  1793,
+    1799,  1806,  1814,  1822,  1831,  1834,  1840,  1845,  1856,  1859,
+    1865,  1870,  1875,  1876,  1877,  1878,  1892,  1896,  1903,  1917,
+    1920,  1926,  1929,  1935,  1941,  1955,  1956,  1960,  1963,  1966,
+    1974,  1975,  1976,  1981,  1980,  1992,  2000,  2001,  2002,  2003,
+    2006,  2009,  2018,  2033,  2039,  2045,  2059,  2070,  2086,  2089,
+    2107,  2111,  2115,  2119,  2142,  2146,  2152,  2157,  2164,  2171,
+    2179,  2187,  2194,  2205,  2209,  2216,  2217,  2248,  2249,  2253,
+    2260,  2266,  2267,  2268,  2269,  2273,  2274,  2275,  2279,  2283,
+    2291,  2298,  2299,  2305
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE
-/* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
-   First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
 static const char *const yytname[] =
 {
-  "$end", "error", "$undefined", "TOK_PPEQ", "TOK_whitespace", "TOK_opaque", 
-  "TOK_bstring", "TOK_cstring", "TOK_hstring", "TOK_identifier", 
-  "TOK_number", "TOK_number_negative", "TOK_realnumber", "TOK_tuple", 
-  "TOK_quadruple", "TOK_typereference", "TOK_capitalreference", 
-  "TOK_typefieldreference", "TOK_valuefieldreference", "TOK_Literal", 
-  "TOK_ABSENT", "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY", 
-  "TOK_APPLICATION", "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT", 
-  "TOK_BMPString", "TOK_BOOLEAN", "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE", 
-  "TOK_CLASS", "TOK_COMPONENT", "TOK_COMPONENTS", "TOK_CONSTRAINED", 
-  "TOK_CONTAINING", "TOK_DEFAULT", "TOK_DEFINITIONS", "TOK_DEFINED", 
-  "TOK_EMBEDDED", "TOK_ENCODED", "TOK_ENCODING_CONTROL", "TOK_END", 
-  "TOK_ENUMERATED", "TOK_EXPLICIT", "TOK_EXPORTS", "TOK_EXTENSIBILITY", 
-  "TOK_EXTERNAL", "TOK_FALSE", "TOK_FROM", "TOK_GeneralizedTime", 
-  "TOK_GeneralString", "TOK_GraphicString", "TOK_IA5String", 
-  "TOK_IDENTIFIER", "TOK_IMPLICIT", "TOK_IMPLIED", "TOK_IMPORTS", 
-  "TOK_INCLUDES", "TOK_INSTANCE", "TOK_INSTRUCTIONS", "TOK_INTEGER", 
-  "TOK_ISO646String", "TOK_MAX", "TOK_MIN", "TOK_MINUS_INFINITY", 
-  "TOK_NULL", "TOK_NumericString", "TOK_OBJECT", "TOK_ObjectDescriptor", 
-  "TOK_OCTET", "TOK_OF", "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV", 
-  "TOK_PLUS_INFINITY", "TOK_PRESENT", "TOK_PrintableString", 
-  "TOK_PRIVATE", "TOK_REAL", "TOK_RELATIVE_OID", "TOK_SEQUENCE", 
-  "TOK_SET", "TOK_SIZE", "TOK_STRING", "TOK_SYNTAX", "TOK_T61String", 
-  "TOK_TAGS", "TOK_TeletexString", "TOK_TRUE", "TOK_TYPE_IDENTIFIER", 
-  "TOK_UNIQUE", "TOK_UNIVERSAL", "TOK_UniversalString", "TOK_UTCTime", 
-  "TOK_UTF8String", "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH", 
-  "TOK_EXCEPT", "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION", 
-  "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'", 
-  "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept", 
-  "ParsedGrammar", "ModuleList", "ModuleDefinition", "@1", 
-  "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody", 
-  "ObjectIdentifierElement", "optModuleDefinitionFlags", 
-  "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody", 
-  "ModuleBody", "AssignmentList", "Assignment", "@2", "optImports", 
-  "ImportsDefinition", "optImportsBundleSet", "ImportsBundleSet", 
-  "AssignedIdentifier", "ImportsBundle", "ImportsList", "ImportsElement", 
-  "optExports", "ExportsDefinition", "ExportsBody", "ExportsElement", 
-  "ValueSet", "ValueSetTypeAssignment", "DefinedType", 
-  "DataTypeReference", "ParameterArgumentList", "ParameterArgumentName", 
-  "ActualParameterList", "ActualParameter", "optComponentTypeLists", 
-  "ComponentTypeLists", "ComponentType", "AlternativeTypeLists", 
-  "AlternativeType", "ObjectClass", "optUnique", "FieldSpec", 
-  "ClassField", "optWithSyntax", "WithSyntax", "@3", "WithSyntaxList", 
-  "WithSyntaxToken", "ExtensionAndException", "Type", 
-  "NSTD_IndirectMarker", "TypeDeclaration", "TypeDeclarationSet", 
-  "ComplexTypeReference", "ComplexTypeReferenceAmpList", 
-  "ComplexTypeReferenceElement", "PrimitiveFieldReference", "FieldName", 
-  "DefinedObjectClass", "ValueAssignment", "Value", "@4", "SimpleValue", 
-  "DefinedValue", "RestrictedCharacterStringValue", "Opaque", 
-  "BasicTypeId", "BasicTypeId_UniverationCompatible", "BasicType", 
-  "BasicString", "UnionMark", "IntersectionMark", "optConstraints", 
-  "Constraint", "SubtypeConstraint", "SetOfConstraints", 
-  "ElementSetSpecs", "ElementSetSpec", "Unions", "Intersections", 
-  "IntersectionElements", "ConstraintSubtypeElement", "PatternConstraint", 
-  "ConstraintSpec", "SingleValue", "BitStringValue", "ContainedSubtype", 
-  "InnerTypeConstraint", "WithComponentsList", "WithComponentsElement", 
-  "optPresenceConstraint", "PresenceConstraint", "GeneralConstraint", 
-  "UserDefinedConstraint", "@5", "ContentsConstraint", 
-  "ConstraintRangeSpec", "TableConstraint", "SimpleTableConstraint", 
-  "ComponentRelationConstraint", "AtNotationList", "AtNotationElement", 
-  "ComponentIdList", "optMarker", "Marker", "UniverationDefinition", 
-  "UniverationList", "UniverationElement", "SignedNumber", "RealValue", 
-  "optTag", "Tag", "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName", 
+  "$end", "error", "$undefined", "TOK_PPEQ", "TOK_VBracketLeft",
+  "TOK_VBracketRight", "TOK_whitespace", "TOK_opaque", "TOK_bstring",
+  "TOK_cstring", "TOK_hstring", "TOK_identifier", "TOK_number",
+  "TOK_number_negative", "TOK_realnumber", "TOK_tuple", "TOK_quadruple",
+  "TOK_typereference", "TOK_capitalreference", "TOK_typefieldreference",
+  "TOK_valuefieldreference", "TOK_Literal", "TOK_ABSENT",
+  "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY", "TOK_APPLICATION",
+  "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT", "TOK_BMPString", "TOK_BOOLEAN",
+  "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE", "TOK_CLASS", "TOK_COMPONENT",
+  "TOK_COMPONENTS", "TOK_CONSTRAINED", "TOK_CONTAINING", "TOK_DEFAULT",
+  "TOK_DEFINITIONS", "TOK_DEFINED", "TOK_EMBEDDED", "TOK_ENCODED",
+  "TOK_ENCODING_CONTROL", "TOK_END", "TOK_ENUMERATED", "TOK_EXPLICIT",
+  "TOK_EXPORTS", "TOK_EXTENSIBILITY", "TOK_EXTERNAL", "TOK_FALSE",
+  "TOK_FROM", "TOK_GeneralizedTime", "TOK_GeneralString",
+  "TOK_GraphicString", "TOK_IA5String", "TOK_IDENTIFIER", "TOK_IMPLICIT",
+  "TOK_IMPLIED", "TOK_IMPORTS", "TOK_INCLUDES", "TOK_INSTANCE",
+  "TOK_INSTRUCTIONS", "TOK_INTEGER", "TOK_ISO646String", "TOK_MAX",
+  "TOK_MIN", "TOK_MINUS_INFINITY", "TOK_NULL", "TOK_NumericString",
+  "TOK_OBJECT", "TOK_ObjectDescriptor", "TOK_OCTET", "TOK_OF",
+  "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV", "TOK_PLUS_INFINITY",
+  "TOK_PRESENT", "TOK_PrintableString", "TOK_PRIVATE", "TOK_REAL",
+  "TOK_RELATIVE_OID", "TOK_SEQUENCE", "TOK_SET", "TOK_SIZE", "TOK_STRING",
+  "TOK_SYNTAX", "TOK_T61String", "TOK_TAGS", "TOK_TeletexString",
+  "TOK_TRUE", "TOK_TYPE_IDENTIFIER", "TOK_UNIQUE", "TOK_UNIVERSAL",
+  "TOK_UniversalString", "TOK_UTCTime", "TOK_UTF8String",
+  "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH", "TOK_EXCEPT",
+  "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION", "TOK_TwoDots",
+  "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'", "','", "':'", "'['",
+  "']'", "'!'", "'.'", "'<'", "'@'", "$accept", "ParsedGrammar",
+  "ModuleList", "ModuleDefinition", "@1", "optObjectIdentifier",
+  "ObjectIdentifier", "ObjectIdentifierBody", "ObjectIdentifierElement",
+  "optModuleDefinitionFlags", "ModuleDefinitionFlags",
+  "ModuleDefinitionFlag", "optModuleBody", "ModuleBody", "AssignmentList",
+  "Assignment", "@2", "optImports", "ImportsDefinition",
+  "optImportsBundleSet", "ImportsBundleSet", "AssignedIdentifier",
+  "ImportsBundle", "ImportsList", "ImportsElement", "optExports",
+  "ExportsDefinition", "ExportsBody", "ExportsElement", "ValueSet",
+  "ValueSetTypeAssignment", "DefinedType", "DataTypeReference",
+  "ParameterArgumentList", "ParameterArgumentName", "ActualParameterList",
+  "ActualParameter", "optComponentTypeLists", "ComponentTypeLists",
+  "ComponentType", "AlternativeTypeLists", "AlternativeType",
+  "ObjectClass", "optUnique", "FieldSpec", "ClassField", "optWithSyntax",
+  "WithSyntax", "@3", "WithSyntaxList", "WithSyntaxToken",
+  "ExtensionAndException", "Type", "NSTD_IndirectMarker",
+  "TypeDeclaration", "TypeDeclarationSet", "ComplexTypeReference",
+  "ComplexTypeReferenceAmpList", "ComplexTypeReferenceElement",
+  "PrimitiveFieldReference", "FieldName", "DefinedObjectClass",
+  "ValueAssignment", "Value", "@4", "SimpleValue", "DefinedValue",
+  "RestrictedCharacterStringValue", "Opaque", "BasicTypeId",
+  "BasicTypeId_UniverationCompatible", "BasicType", "BasicString",
+  "UnionMark", "IntersectionMark", "optConstraints", "Constraint",
+  "SubtypeConstraint", "SetOfConstraints", "ElementSetSpecs",
+  "ElementSetSpec", "Unions", "Intersections", "IntersectionElements",
+  "ConstraintSubtypeElement", "PatternConstraint", "ConstraintSpec",
+  "SingleValue", "BitStringValue", "ContainedSubtype",
+  "InnerTypeConstraint", "WithComponentsList", "WithComponentsElement",
+  "optPresenceConstraint", "PresenceConstraint", "GeneralConstraint",
+  "UserDefinedConstraint", "@5", "ContentsConstraint",
+  "ConstraintRangeSpec", "TableConstraint", "SimpleTableConstraint",
+  "ComponentRelationConstraint", "AtNotationList", "AtNotationElement",
+  "ComponentIdList", "optMarker", "Marker", "UniverationDefinition",
+  "UniverationList", "UniverationElement", "SignedNumber", "RealValue",
+  "optTag", "Tag", "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName",
   "ObjectClassReference", "optIdentifier", "Identifier", 0
 };
 #endif
@@ -826,7 +963,7 @@ static const char *const yytname[] =
 # ifdef YYPRINT
 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
    token YYLEX-NUM.  */
-static const unsigned short yytoknum[] =
+static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -838,51 +975,51 @@ static const unsigned short yytoknum[] =
      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,    94,   357,   124,   358,   359,   360,   123,   125,
-      40,    41,    59,    44,    58,    91,    93,    33,    46,    60,
-      64
+     355,   356,   357,   358,    94,   359,   124,   360,   361,   362,
+     123,   125,    40,    41,    59,    44,    58,    91,    93,    33,
+      46,    60,    64
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const unsigned char yyr1[] =
+static const yytype_uint8 yyr1[] =
 {
-       0,   121,   122,   123,   123,   125,   124,   126,   126,   127,
-     127,   128,   128,   129,   129,   129,   130,   130,   131,   131,
-     132,   132,   132,   132,   132,   133,   133,   134,   135,   135,
-     136,   136,   136,   137,   136,   136,   138,   138,   139,   139,
-     140,   140,   141,   141,   142,   142,   143,   144,   144,   145,
-     145,   145,   146,   146,   147,   147,   147,   148,   148,   149,
-     149,   149,   150,   151,   152,   152,   152,   153,   153,   153,
-     153,   154,   154,   155,   155,   155,   155,   155,   156,   156,
-     157,   157,   157,   157,   158,   158,   159,   159,   160,   160,
-     160,   160,   161,   161,   162,   162,   162,   163,   164,   164,
-     165,   165,   166,   166,   166,   166,   166,   166,   166,   167,
-     167,   169,   168,   170,   170,   171,   171,   171,   171,   172,
-     172,   172,   173,   174,   175,   176,   176,   176,   176,   176,
-     176,   176,   176,   176,   177,   177,   177,   177,   177,   177,
-     178,   178,   179,   180,   180,   181,   181,   181,   182,   183,
-     184,   184,   184,   185,   184,   184,   186,   186,   186,   186,
-     186,   186,   187,   187,   188,   188,   188,   189,   189,   190,
-     190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
-     190,   190,   191,   191,   191,   192,   192,   193,   193,   193,
-     193,   193,   193,   193,   193,   193,   193,   193,   193,   193,
-     193,   194,   194,   195,   195,   196,   196,   197,   198,   198,
-     199,   199,   200,   200,   200,   200,   200,   201,   201,   202,
-     202,   203,   203,   204,   204,   205,   205,   205,   205,   205,
-     205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
-     208,   208,   208,   208,   208,   209,   209,   210,   211,   211,
-     212,   212,   213,   213,   214,   214,   215,   215,   215,   216,
-     216,   216,   218,   217,   219,   220,   220,   220,   220,   221,
-     221,   222,   223,   224,   224,   225,   225,   226,   226,   227,
-     227,   228,   228,   229,   229,   230,   230,   231,   231,   231,
-     231,   231,   232,   232,   233,   233,   234,   234,   235,   236,
-     237,   237,   237,   237,   238,   238,   238,   239,   239,   240,
-     241,   241,   242
+       0,   123,   124,   125,   125,   127,   126,   128,   128,   129,
+     129,   130,   130,   131,   131,   131,   132,   132,   133,   133,
+     134,   134,   134,   134,   134,   135,   135,   136,   137,   137,
+     138,   138,   138,   139,   138,   138,   140,   140,   141,   141,
+     142,   142,   143,   143,   144,   144,   145,   146,   146,   147,
+     147,   147,   148,   148,   149,   149,   149,   150,   150,   151,
+     151,   151,   152,   153,   154,   154,   154,   155,   155,   155,
+     155,   156,   156,   157,   157,   157,   157,   157,   158,   158,
+     159,   159,   159,   159,   160,   160,   161,   161,   161,   162,
+     162,   162,   162,   163,   163,   164,   164,   164,   165,   166,
+     166,   167,   167,   168,   168,   168,   168,   168,   168,   168,
+     169,   169,   171,   170,   172,   172,   173,   173,   173,   173,
+     174,   174,   174,   175,   176,   177,   178,   178,   178,   178,
+     178,   178,   178,   178,   178,   179,   179,   179,   179,   179,
+     179,   180,   180,   181,   182,   182,   183,   183,   183,   184,
+     185,   186,   186,   186,   187,   186,   186,   188,   188,   188,
+     188,   188,   188,   189,   189,   190,   190,   190,   191,   191,
+     192,   192,   192,   192,   192,   192,   192,   192,   192,   192,
+     192,   192,   192,   193,   193,   193,   194,   194,   195,   195,
+     195,   195,   195,   195,   195,   195,   195,   195,   195,   195,
+     195,   195,   196,   196,   197,   197,   198,   198,   199,   200,
+     200,   201,   201,   202,   202,   202,   202,   202,   203,   203,
+     204,   204,   205,   205,   206,   206,   207,   207,   207,   207,
+     207,   207,   207,   207,   207,   207,   208,   208,   209,   209,
+     210,   210,   210,   210,   210,   210,   211,   211,   212,   213,
+     213,   214,   214,   215,   215,   216,   216,   217,   217,   217,
+     218,   218,   218,   220,   219,   221,   222,   222,   222,   222,
+     223,   223,   224,   225,   226,   226,   227,   227,   228,   228,
+     229,   229,   230,   230,   231,   231,   232,   232,   233,   233,
+     233,   233,   233,   234,   234,   235,   235,   236,   236,   237,
+     238,   239,   239,   239,   239,   240,   240,   240,   241,   241,
+     242,   243,   243,   244
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const unsigned char yyr2[] =
+static const yytype_uint8 yyr2[] =
 {
        0,     2,     1,     1,     2,     0,     9,     0,     1,     3,
        2,     1,     2,     1,     4,     1,     0,     1,     1,     2,
@@ -892,99 +1029,100 @@ static const unsigned char yyr2[] =
        3,     1,     0,     1,     3,     3,     2,     1,     3,     1,
        3,     1,     3,     4,     1,     1,     4,     3,     3,     6,
        6,     1,     3,     1,     3,     3,     3,     3,     1,     3,
-       1,     1,     1,     1,     0,     1,     1,     3,     3,     2,
-       3,     1,     1,     3,     2,     1,     1,     5,     0,     1,
-       1,     3,     2,     4,     3,     3,     3,     3,     3,     0,
-       1,     0,     6,     1,     2,     1,     1,     1,     3,     1,
-       3,     3,     3,     0,     2,     1,     4,     4,     4,     6,
-       6,     1,     4,     3,     1,     3,     3,     3,     1,     3,
-       1,     3,     1,     1,     1,     1,     3,     3,     1,     4,
-       1,     1,     3,     0,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     3,     1,     1,     1,     1,     2,     1,
-       1,     1,     1,     2,     2,     1,     1,     2,     2,     1,
-       1,     1,     1,     1,     2,     1,     2,     1,     1,     1,
+       1,     1,     1,     1,     0,     1,     1,     3,     5,     3,
+       2,     3,     1,     1,     3,     2,     1,     1,     5,     0,
+       1,     1,     3,     2,     4,     3,     3,     3,     3,     3,
+       0,     1,     0,     6,     1,     2,     1,     1,     1,     3,
+       1,     3,     3,     3,     0,     2,     1,     4,     4,     4,
+       6,     6,     1,     4,     3,     1,     3,     3,     3,     1,
+       3,     1,     3,     1,     1,     1,     1,     3,     3,     1,
+       4,     1,     1,     3,     0,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     3,     1,     1,     1,     1,     2,
+       1,     1,     1,     1,     2,     2,     1,     1,     2,     2,
+       1,     1,     1,     1,     1,     2,     1,     2,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     1,     1,     1,     4,
-       3,     4,     1,     1,     3,     5,     1,     1,     3,     1,
-       3,     1,     3,     1,     3,     4,     3,     1,     1,     3,
-       3,     3,     3,     1,     1,     2,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     5,
-       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
-       1,     1,     0,     5,     2,     1,     2,     2,     3,     1,
-       1,     3,     4,     1,     3,     2,     3,     1,     3,     0,
-       1,     1,     2,     2,     3,     1,     3,     1,     4,     4,
-       1,     1,     1,     1,     1,     1,     0,     1,     2,     4,
-       0,     1,     1,     1,     0,     1,     1,     1,     1,     1,
-       0,     1,     1
+       1,     1,     1,     1,     1,     1,     0,     1,     1,     1,
+       4,     3,     4,     1,     1,     3,     5,     1,     1,     3,
+       1,     3,     1,     3,     1,     3,     4,     3,     1,     1,
+       3,     3,     3,     3,     1,     1,     2,     2,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       5,     1,     3,     1,     3,     0,     1,     1,     1,     1,
+       1,     1,     1,     0,     5,     2,     1,     2,     2,     3,
+       1,     1,     3,     4,     1,     3,     2,     3,     1,     3,
+       0,     1,     1,     2,     2,     3,     1,     3,     1,     4,
+       4,     1,     1,     1,     1,     1,     1,     0,     1,     2,
+       4,     0,     1,     1,     1,     0,     1,     1,     1,     1,
+       1,     0,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
    means the default is an error.  */
-static const unsigned short yydefact[] =
+static const yytype_uint16 yydefact[] =
 {
-       0,   307,   308,     0,     2,     3,     5,     1,     4,     7,
-       0,     0,     8,   312,    15,    10,     0,    11,    13,    16,
+       0,   308,   309,     0,     2,     3,     5,     1,     4,     7,
+       0,     0,     8,   313,    15,    10,     0,    11,    13,    16,
        9,    12,     0,     0,     0,     0,     0,     0,     0,    17,
       18,     0,    24,    22,    20,    23,    21,     0,    19,    14,
       52,     0,     0,    26,    36,    53,     0,    56,     0,    57,
       59,    61,     6,    40,     0,    37,    55,    54,     0,     0,
-      39,     0,    41,    42,     0,    47,    49,    51,   187,     0,
-     188,   189,   190,   191,   192,   200,   193,   194,   195,   196,
-     197,   198,   199,    27,    28,    32,    30,    31,    35,     0,
-     296,    58,    60,    38,    43,     0,     0,     0,    33,    29,
-     296,   134,   309,     0,   169,     0,     0,   183,   176,   180,
-     182,   170,     0,     0,   171,   175,   179,     0,     0,    65,
-     185,   172,    64,   181,   138,   300,     0,   123,   297,   304,
-      44,    48,    50,    34,     0,    68,    67,     0,   184,   178,
-     177,   174,   173,     0,    71,     0,   172,    73,     0,   296,
-       0,   186,     0,   302,   303,   301,     0,     0,     0,   205,
-     306,   305,   298,    45,    46,     0,   135,   137,     0,     0,
-       0,     0,     0,    63,   158,   164,   159,   292,   293,   165,
-     166,   156,   157,    83,     0,    78,    80,    81,   160,   161,
-      82,   291,   283,     0,   285,   290,   287,   143,   144,   139,
-     140,   142,   136,     0,   155,   153,   149,   150,   151,     0,
-     162,   131,     0,     0,   205,   205,   125,   124,     0,     0,
-     122,   206,   207,   208,   296,   296,     0,   100,   296,    72,
-      77,    76,    75,    74,   245,   246,   295,     0,     0,   296,
-     239,   238,     0,     0,   237,   240,     0,   212,     0,     0,
-     242,     0,   213,   217,   219,   221,   223,   234,     0,   227,
-     243,   228,   233,   216,   259,   261,   260,   269,   270,   294,
-     241,   247,   244,    66,   296,   284,     0,     0,     0,   299,
-       0,     0,     0,     0,   296,     0,   296,     0,   296,     0,
-       0,     0,     0,   148,   145,     0,   281,   279,   279,   279,
-     102,   280,    98,   279,   279,   109,     0,    70,    69,     0,
-       0,   264,   265,     0,     0,   235,   236,     0,     0,     0,
-       0,    62,     0,   201,   202,     0,   203,   204,     0,     0,
-       0,     0,     0,    79,   286,     0,     0,   162,   141,   167,
-     154,   163,   152,     0,   119,     0,    92,    95,    96,   296,
-     133,     0,     0,    85,    86,    91,   279,   296,   310,     0,
-     310,     0,   210,     0,   282,   107,     0,   106,   108,    99,
-     279,   104,   105,     0,    97,   110,   101,   218,   262,   266,
-     267,   232,   230,   248,     0,   271,   226,   214,   220,   222,
-     224,     0,   231,   229,     0,     0,   273,   289,   288,   168,
-     132,     0,   126,   296,    94,   296,   127,   296,    89,   279,
-     296,   311,   128,   296,   209,   211,   146,   147,   103,     0,
-       0,   268,   252,     0,   250,   205,     0,   225,     0,   275,
-     277,   272,     0,   120,   121,    93,    90,    87,    88,   123,
-     123,   111,   263,   249,     0,   254,   215,   276,     0,   274,
-     129,   130,     0,   251,   257,   258,   256,   253,   255,   278,
-     115,   116,     0,     0,   113,   117,     0,   112,   114,   118
+      39,     0,    41,    42,     0,    47,    49,    51,   188,     0,
+     189,   190,   191,   192,   193,   201,   194,   195,   196,   197,
+     198,   199,   200,    27,    28,    32,    30,    31,    35,     0,
+     297,    58,    60,    38,    43,     0,     0,     0,    33,    29,
+     297,   135,   310,     0,   170,     0,     0,   184,   177,   181,
+     183,   171,     0,     0,   172,   176,   180,     0,     0,    65,
+     186,   173,    64,   182,   139,   301,     0,   124,   298,   305,
+      44,    48,    50,    34,     0,    68,    67,     0,   185,   179,
+     178,   175,   174,     0,    71,     0,   173,    73,     0,   297,
+       0,   187,     0,   303,   304,   302,     0,     0,     0,   206,
+     307,   306,   299,    45,    46,     0,   136,   138,     0,     0,
+       0,     0,     0,    63,   159,   165,   160,   293,   294,   166,
+     167,   157,   158,    83,     0,    78,    80,    81,   161,   162,
+      82,   292,   284,     0,   286,   291,   288,   144,   145,   140,
+     141,   143,   137,     0,   156,   154,   150,   151,   152,     0,
+     163,   132,     0,     0,   206,   206,   126,   125,     0,     0,
+     123,   207,   208,   209,   297,   297,     0,   101,   297,    72,
+      77,    76,    75,    74,   246,   247,   296,     0,     0,   297,
+     240,   239,     0,     0,   238,   241,     0,   213,     0,     0,
+     243,     0,   214,   218,   220,   222,   224,   235,     0,   228,
+     244,   229,   234,   217,   260,   262,   261,   270,   271,   295,
+     242,   248,   245,    66,   297,   285,     0,     0,     0,   300,
+       0,     0,     0,     0,   297,     0,   297,     0,   297,     0,
+       0,     0,     0,   149,   146,     0,   282,   280,   280,   280,
+     103,   281,    99,   280,   280,   110,     0,    70,    69,     0,
+       0,   265,   266,     0,     0,   236,   237,     0,     0,     0,
+       0,    62,     0,   202,   203,     0,   204,   205,     0,     0,
+       0,     0,     0,    79,   287,     0,     0,   163,   142,   168,
+     155,   164,   153,     0,   120,     0,    93,    96,    97,   297,
+     134,     0,     0,    85,    86,    92,   280,   297,   311,     0,
+     311,     0,   211,     0,   283,   108,     0,   107,   109,   100,
+     280,   105,   106,     0,    98,   111,   102,   219,   263,   267,
+     268,   233,   231,   249,     0,   272,   227,   215,   221,   223,
+     225,     0,   232,   230,     0,     0,   274,   290,   289,   169,
+     133,     0,   127,   297,    95,   297,   128,   297,    90,   280,
+     297,   312,   129,   297,   210,   212,   147,   148,   104,     0,
+       0,   269,   253,     0,   251,   206,     0,   226,     0,   276,
+     278,   273,     0,   121,   122,    94,    91,   297,    87,    89,
+     124,   124,   112,   264,   250,     0,   255,   216,   277,     0,
+     275,     0,   130,   131,     0,   252,   258,   259,   257,   254,
+     256,   279,    88,   116,   117,     0,     0,   114,   118,     0,
+     113,   115,   119
 };
 
-/* YYDEFGOTO[NTERM-NUM]. */
-static const short yydefgoto[] =
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
 {
       -1,     3,     4,     5,     9,    11,    12,    16,    17,    28,
       29,    30,    42,    43,    83,    84,   133,    54,    55,    61,
       62,   164,    63,    64,    65,    44,    45,    48,    49,   183,
       85,   118,    86,   143,   144,   184,   185,   352,   353,   354,
-     345,   346,   135,   370,   226,   227,   374,   375,   452,   463,
-     464,   355,   356,   158,   159,   217,   119,   199,   200,   465,
+     345,   346,   135,   370,   226,   227,   374,   375,   454,   466,
+     467,   355,   356,   158,   159,   217,   119,   199,   200,   468,
      298,   299,    87,   206,   280,   207,   208,   250,   340,   120,
      121,   122,   123,   325,   328,   220,   221,   222,   223,   251,
      252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-     262,   423,   424,   457,   458,   263,   264,   420,   265,   314,
+     262,   423,   424,   459,   460,   263,   264,   420,   265,   314,
      266,   267,   268,   395,   396,   429,   300,   301,   151,   193,
      194,   269,   270,   127,   128,   129,   156,   162,   271,   124,
      410,   272
@@ -992,328 +1130,313 @@ static const short yydefgoto[] =
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -287
-static const short yypact[] =
+#define YYPACT_NINF -276
+static const yytype_int16 yypact[] =
 {
-      80,  -287,  -287,    24,    80,  -287,  -287,  -287,  -287,   -57,
-       7,    17,  -287,  -287,  -287,  -287,    44,  -287,   -42,   240,
-    -287,  -287,    77,    42,    61,   119,   107,   129,   168,   240,
-    -287,   114,  -287,  -287,  -287,  -287,  -287,   205,  -287,  -287,
-      82,    68,   190,  -287,   178,  -287,   140,  -287,    98,  -287,
-     191,  -287,  -287,   198,   538,  -287,  -287,  -287,   232,   184,
-    -287,   202,   232,  -287,    69,  -287,   209,  -287,  -287,   304,
-    -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
-    -287,  -287,  -287,   538,  -287,  -287,  -287,  -287,  -287,   274,
-     207,  -287,  -287,  -287,  -287,    80,   232,   223,  -287,  -287,
-       9,   218,  -287,   255,  -287,   261,   273,  -287,  -287,  -287,
-    -287,  -287,   295,   266,  -287,  -287,  -287,   706,   351,   249,
-    -287,   250,  -287,  -287,   241,    79,   357,  -287,  -287,   186,
-     -57,  -287,  -287,  -287,   253,  -287,  -287,   232,  -287,  -287,
-    -287,  -287,  -287,   145,  -287,   251,  -287,   252,   259,   101,
-      16,  -287,   291,  -287,  -287,  -287,   353,   213,   630,   -16,
-    -287,  -287,  -287,  -287,  -287,   243,  -287,  -287,   365,   706,
-     232,   232,   413,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
-    -287,  -287,  -287,  -287,   146,  -287,  -287,  -287,  -287,  -287,
-    -287,  -287,  -287,   166,  -287,  -287,   265,  -287,  -287,   258,
-    -287,  -287,  -287,   262,  -287,  -287,  -287,  -287,  -287,   263,
-     269,   337,   271,   312,    85,   130,  -287,  -287,   270,   413,
-    -287,  -287,  -287,   276,    81,    48,   171,  -287,     9,  -287,
-    -287,  -287,  -287,  -287,  -287,  -287,  -287,   286,   358,   207,
-    -287,  -287,   -17,    23,  -287,  -287,   234,  -287,    80,   413,
-    -287,   280,   277,   206,   210,  -287,   293,  -287,   282,   -17,
-    -287,  -287,  -287,  -287,  -287,  -287,  -287,   287,  -287,  -287,
-    -287,  -287,  -287,  -287,   101,  -287,    71,   235,   307,  -287,
-     391,   389,   213,   369,    51,   315,    70,   327,    70,   328,
-     413,   292,   413,  -287,  -287,   213,  -287,   -27,   -19,   -27,
-    -287,  -287,   309,   -19,   -27,   305,   243,  -287,  -287,   564,
-     296,  -287,   288,   302,   192,  -287,  -287,   299,   303,   301,
-     306,  -287,   308,  -287,  -287,   564,  -287,  -287,   564,   564,
-     413,   446,   294,  -287,  -287,   319,   320,  -287,  -287,  -287,
-     407,  -287,  -287,   389,   316,   182,  -287,  -287,  -287,   207,
-    -287,   340,   323,   324,  -287,  -287,   -27,   207,   389,   330,
-     389,   325,  -287,   329,  -287,  -287,   317,  -287,  -287,  -287,
-     -27,  -287,  -287,   354,  -287,  -287,  -287,  -287,  -287,  -287,
-     297,  -287,  -287,   276,    76,  -287,  -287,   331,   210,  -287,
-    -287,   332,  -287,  -287,    -1,   183,  -287,  -287,  -287,  -287,
-    -287,   235,  -287,    51,  -287,   207,  -287,     6,  -287,   -27,
-     207,  -287,  -287,   207,  -287,  -287,  -287,  -287,  -287,   334,
-     391,  -287,  -287,   185,  -287,   -16,   459,  -287,   389,   333,
-    -287,  -287,   294,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
-    -287,  -287,   407,  -287,    76,   161,  -287,   333,   389,  -287,
-    -287,  -287,    57,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
-    -287,  -287,    57,    19,  -287,  -287,    53,  -287,  -287,  -287
+     223,  -276,  -276,    28,   223,  -276,  -276,  -276,  -276,   -61,
+      13,    25,  -276,  -276,  -276,  -276,    42,  -276,   -56,   229,
+    -276,  -276,    90,    54,    32,    64,   129,    79,   193,   229,
+    -276,   104,  -276,  -276,  -276,  -276,  -276,   197,  -276,  -276,
+     133,    66,   185,  -276,   191,  -276,   144,  -276,   154,  -276,
+     176,  -276,  -276,   196,   524,  -276,  -276,  -276,   237,   149,
+    -276,   177,   237,  -276,   -26,  -276,   189,  -276,  -276,   291,
+    -276,  -276,  -276,  -276,  -276,  -276,  -276,  -276,  -276,  -276,
+    -276,  -276,  -276,   524,  -276,  -276,  -276,  -276,  -276,   272,
+     200,  -276,  -276,  -276,  -276,   223,   237,   209,  -276,  -276,
+     -18,   202,  -276,   247,  -276,   253,   269,  -276,  -276,  -276,
+    -276,  -276,   296,   261,  -276,  -276,  -276,   692,   356,   255,
+    -276,   258,  -276,  -276,   243,    77,   372,  -276,  -276,   184,
+     -61,  -276,  -276,  -276,   266,  -276,  -276,   237,  -276,  -276,
+    -276,  -276,  -276,   -64,  -276,   262,  -276,   263,   267,    99,
+      84,  -276,   294,  -276,  -276,  -276,   368,   211,   616,   -57,
+    -276,  -276,  -276,  -276,  -276,   288,  -276,  -276,   378,   692,
+     237,   237,   399,  -276,  -276,  -276,  -276,  -276,  -276,  -276,
+    -276,  -276,  -276,  -276,   150,  -276,  -276,  -276,  -276,  -276,
+    -276,  -276,  -276,   169,  -276,  -276,   271,  -276,  -276,   265,
+    -276,  -276,  -276,   268,  -276,  -276,  -276,  -276,  -276,   270,
+     273,   345,   278,   317,    78,   124,  -276,  -276,   282,   399,
+    -276,  -276,  -276,   283,   219,    46,   181,  -276,   -18,  -276,
+    -276,  -276,  -276,  -276,  -276,  -276,  -276,   293,   366,   200,
+    -276,  -276,    63,   199,  -276,  -276,   295,  -276,   223,   399,
+    -276,   289,   284,   218,   235,  -276,   298,  -276,   290,    63,
+    -276,  -276,  -276,  -276,  -276,  -276,  -276,   309,  -276,  -276,
+    -276,  -276,  -276,  -276,    99,  -276,    69,   233,   332,  -276,
+     396,   393,   211,   373,    49,   340,     8,   346,     8,   347,
+     399,   307,   399,  -276,  -276,   211,  -276,    -8,   110,    -8,
+    -276,  -276,   329,   110,    -8,   323,   288,  -276,  -276,   550,
+     316,  -276,   308,   320,   190,  -276,  -276,   318,   321,   322,
+     319,  -276,   325,  -276,  -276,   550,  -276,  -276,   550,   550,
+     399,   432,   314,  -276,  -276,   336,   337,  -276,  -276,  -276,
+     457,  -276,  -276,   393,   349,   182,  -276,  -276,  -276,   200,
+    -276,   390,   355,   357,  -276,  -276,    -8,   200,   393,   359,
+     393,   358,  -276,   360,  -276,  -276,   341,  -276,  -276,  -276,
+      -8,  -276,  -276,   385,  -276,  -276,  -276,  -276,  -276,  -276,
+     354,  -276,  -276,   283,    74,  -276,  -276,   362,   235,  -276,
+    -276,   365,  -276,  -276,     0,   183,  -276,  -276,  -276,  -276,
+    -276,   233,  -276,    49,  -276,   200,  -276,     4,  -276,    -8,
+     200,  -276,  -276,   200,  -276,  -276,  -276,  -276,  -276,   369,
+     396,  -276,  -276,   195,  -276,   -57,   445,  -276,   393,   361,
+    -276,  -276,   314,  -276,  -276,  -276,  -276,    68,  -276,  -276,
+    -276,  -276,  -276,   457,  -276,    74,   159,  -276,   361,   393,
+    -276,    11,  -276,  -276,    55,  -276,  -276,  -276,  -276,  -276,
+    -276,  -276,  -276,  -276,  -276,    55,    17,  -276,  -276,    51,
+    -276,  -276,  -276
 };
 
 /* YYPGOTO[NTERM-NUM].  */
-static const short yypgoto[] =
+static const yytype_int16 yypgoto[] =
 {
-    -287,  -287,  -287,   441,  -287,  -287,   318,  -287,   430,  -287,
-    -287,   418,  -287,  -287,  -287,   378,  -287,  -287,  -287,  -287,
-    -287,  -287,   400,  -287,   380,  -287,  -287,  -287,   419,   335,
-    -287,   322,  -287,  -287,   313,  -287,   204,   196,  -287,    78,
-    -287,    83,   264,  -287,  -287,   181,  -287,  -287,  -287,    27,
-    -277,  -270,   -87,  -287,  -100,  -287,   208,  -287,   212,  -148,
-     272,   275,  -287,   -65,  -287,  -142,  -265,  -139,    74,   -51,
-      67,  -287,    -5,  -287,  -287,  -213,  -287,  -287,   174,  -199,
-      73,  -287,   170,   173,  -165,  -287,  -287,  -286,  -287,  -287,
-    -287,  -287,    58,  -287,  -287,  -287,  -287,  -287,  -287,   244,
-    -287,  -287,  -287,  -287,    75,    84,  -264,  -287,  -287,  -287,
-     229,  -128,  -287,  -222,  -287,  -287,  -287,  -287,     5,  -287,
-     148,   -10
+    -276,  -276,  -276,   476,  -276,  -276,   352,  -276,   467,  -276,
+    -276,   456,  -276,  -276,  -276,   404,  -276,  -276,  -276,  -276,
+    -276,  -276,   426,  -276,   394,  -276,  -276,  -276,   431,   343,
+    -276,   335,  -276,  -276,   326,  -276,   220,   208,    65,    93,
+    -276,   100,   276,  -276,  -276,   201,  -276,  -276,  -276,    40,
+    -275,  -270,   -87,  -276,   -74,  -276,   221,  -276,   232,  -148,
+     287,   292,  -276,  -166,  -276,  -142,  -265,  -139,    94,   -91,
+     -75,  -276,    15,  -276,  -276,  -213,  -276,  -276,   198,  -199,
+      92,  -276,   194,   188,  -165,  -276,  -276,  -227,  -276,  -276,
+    -276,  -276,    75,  -276,  -276,  -276,  -276,  -276,  -276,   264,
+    -276,  -276,  -276,  -276,    89,    96,  -264,  -276,  -276,  -276,
+     250,  -128,  -276,  -195,  -276,  -276,  -276,  -276,     5,  -276,
+     167,   -10
 };
 
 /* 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 zero, do what YYDEFACT says.
-   If YYTABLE_NINF, parse error.  */
-#define YYTABLE_NINF -280
-static const short yytable[] =
+   If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -281
+static const yytype_int16 yytable[] =
 {
-      18,   287,   289,   126,   201,     6,    18,   187,    13,     6,
-     188,   295,   335,   136,   347,    13,    13,    14,   188,   295,
-     291,   189,   195,   460,     7,    13,   177,   178,   382,   189,
-     315,    51,    13,   365,   367,   368,   197,   198,   461,   371,
-     372,   351,   134,    67,    90,   393,    50,   296,    51,    88,
-     320,    10,    67,    13,    14,   296,    19,   460,    66,    89,
-      13,   460,   186,    50,   293,   294,   145,    66,    22,   218,
-     197,   198,   461,    90,   197,   198,   461,    13,    88,    13,
-      13,   177,   178,     1,     2,    13,    67,    31,    89,   312,
-      46,   361,   408,   363,   219,     1,     2,   293,   294,   366,
-     130,    66,   313,   153,    32,   351,   418,   174,   175,   176,
-      13,   177,   178,   344,   179,   180,    15,   428,   145,   295,
-      95,   125,   147,   191,   125,   192,   -25,   167,   467,    41,
-     201,   391,   187,   347,   462,   188,   433,   297,   302,   190,
-     196,   308,   166,   188,   377,   438,   189,   210,   195,   336,
-      33,   181,   311,    20,   189,   296,   188,   202,   344,   154,
-     231,   233,   209,   125,   390,    35,   125,   189,   462,   469,
-     218,    37,   462,   155,   147,   230,   232,   344,   191,   -84,
-      47,   454,    96,   422,   146,   125,   468,   186,   439,   468,
-    -279,   440,   182,   286,  -279,   219,   125,   348,   234,   175,
-     235,    13,   177,   178,   236,   179,   180,    13,    34,   172,
-      57,    58,   445,     1,     2,   218,   125,   342,    36,   174,
-     175,   176,    13,   177,   178,    39,   179,   180,     1,     2,
-     364,    40,   160,   316,    52,   455,   146,    53,   288,   456,
-     219,    13,   240,   161,    13,   177,   178,     1,     2,    60,
-       1,     2,    56,   319,   168,   273,    23,   381,   169,   274,
-     224,   225,   404,   181,   190,    24,   196,   337,   317,   318,
-     409,   341,   210,   434,   349,   275,   357,   100,   357,   276,
-     305,   204,   209,   245,   306,   210,    25,   209,    26,   101,
-     102,   402,   431,    92,   443,   403,   432,    27,   444,    59,
-     209,   103,    68,   104,   182,   105,     1,     2,   197,   198,
-     323,   324,   326,   327,    93,   106,   348,    97,   436,   107,
-      98,   205,   125,   108,   197,   198,   109,    70,    71,    72,
-     101,   102,   132,   400,   416,   417,   137,   110,    73,   450,
-     451,   138,   111,    74,   112,    75,   113,   139,   411,   140,
-     411,   141,   142,    76,   148,   114,   115,   149,   150,   152,
-     157,   165,    77,   203,    78,   170,   171,   172,   228,    79,
-     116,    80,    81,    82,   425,   277,   278,   283,   279,   284,
-     290,   281,   117,   282,   430,   285,   292,   309,   310,   321,
-     322,   337,   330,   349,   329,   332,   339,   357,    13,   343,
-     358,   360,   369,   362,   378,   373,   209,   379,   380,   219,
-     385,   384,   399,   405,   394,   387,   421,   386,   430,   234,
-     175,   235,    13,   177,   178,   236,   179,   180,     1,     2,
-     397,   398,   406,   401,   425,   237,   414,   407,   459,   412,
-     415,   419,   441,   427,   426,     8,    21,    38,   163,   238,
-     239,   448,   234,   175,   235,    13,   177,   178,   236,   179,
-     180,    99,    94,   240,   241,   234,   175,   235,    13,   177,
-     178,   236,   179,   180,     1,     2,   131,    91,   333,   242,
-     216,   237,   229,   173,   359,   437,   435,   376,   243,   466,
-     338,   383,   307,   350,   442,   388,   240,   303,   244,   446,
-     304,   389,   453,   331,   245,   334,     0,   449,   413,   240,
-     241,   392,   447,   246,     0,     0,     0,     0,     0,     0,
-     247,   248,     0,   249,     0,   242,     0,     0,     0,     0,
-       0,     0,     0,     0,   243,     0,     0,   245,     0,     0,
-       0,     0,     0,     0,   244,     0,     0,    13,     0,     0,
-     245,     0,     0,     1,     2,     0,     0,     0,     0,   246,
-       0,     0,     0,     0,     0,     0,    68,     0,     0,   249,
-     234,   175,   235,    13,   177,   178,   236,   179,   180,     1,
-       2,    69,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    70,    71,    72,     0,     0,     0,     0,     0,     0,
-       0,     0,    73,     0,     0,     0,     0,    74,     0,    75,
-       0,     0,     0,     0,   240,   241,     0,    76,     0,     0,
-       0,     0,     0,     0,     0,     0,    77,     0,    78,     0,
-     242,     0,     0,    79,     0,    80,    81,    82,     0,   243,
-       0,     0,     0,     0,     0,   101,   102,     0,     0,   244,
-       0,     0,     0,   211,     0,   245,     0,   103,    68,   104,
-       0,   105,   212,     0,   246,     0,     0,     0,     0,     0,
-       0,   106,     0,     0,   249,   107,     0,     0,     0,   108,
-       0,     0,   109,    70,    71,    72,     0,     0,     0,     0,
-       0,   213,     0,   110,    73,     0,     0,     0,   111,    74,
-     112,    75,   113,     0,     0,     0,     0,     0,     0,    76,
-       0,   114,   115,   214,   215,     0,     0,     0,    77,     0,
-      78,     1,     2,     0,     0,    79,   116,    80,    81,    82,
-       0,     0,     0,   103,    68,   104,     0,   105,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   106,     0,     0,
-       0,   107,     0,     0,     0,   108,     0,     0,   109,    70,
-      71,    72,     0,     0,     0,     0,     0,     0,     0,   110,
-      73,     0,     0,     0,   111,    74,   112,    75,   113,     0,
-       0,     0,     0,     0,     0,    76,     0,   114,   115,     0,
-       0,     0,     0,     0,    77,     0,    78,     0,     0,     0,
-       0,    79,   116,    80,    81,    82
+      18,   287,   289,   126,   201,     6,    18,   187,   437,     6,
+     188,    13,   335,   136,   347,    13,   462,   134,   188,    13,
+     291,   189,   195,   463,    13,    14,   145,    95,     7,   189,
+     218,    51,   295,   365,   367,   368,   197,   198,   464,   371,
+     372,   351,   146,    67,    90,   351,    50,   168,    51,    10,
+     320,   169,    67,    13,    14,   219,    22,   463,    66,    89,
+      13,   463,   186,    50,   293,   294,    19,    66,   296,    88,
+     197,   198,   464,    90,   197,   198,   464,    13,   145,    13,
+      13,   177,   178,     1,     2,    13,    67,   382,    89,    96,
+      46,   361,   408,   363,   146,    13,   177,   178,    88,   125,
+     130,    66,    31,   153,   393,   351,   418,   174,   175,   176,
+      13,   177,   178,   344,   179,   180,   342,   344,    32,   -84,
+     428,   125,   147,    33,    15,   125,   407,   167,   470,   364,
+     201,   391,   187,   347,   465,   188,   433,   297,   302,   190,
+     196,   308,   166,   188,   377,   439,   189,   210,   195,   336,
+     295,   181,   311,    20,   189,    34,   188,   202,   344,   154,
+     231,   233,   209,   125,   390,   218,   125,   189,   465,   472,
+      36,   312,   465,   155,   147,   230,   232,   344,   191,   -25,
+      47,   456,    41,   422,   313,   125,   296,   186,   286,    35,
+     219,   471,   182,   191,   471,   192,    37,   348,   234,   175,
+     235,    13,   177,   178,   236,   179,   180,    13,   315,   172,
+      13,   218,   446,     1,     2,   440,   125,    39,   441,   174,
+     175,   176,    13,   177,   178,    40,   179,   180,     1,     2,
+     366,    52,   160,   316,   288,   457,   219,   293,   294,   458,
+       1,     2,   240,   161,    13,   177,   178,    23,    13,    60,
+       1,     2,    53,   319,     1,     2,    24,   381,    56,   295,
+      92,   273,   404,   181,   190,   274,   196,   337,    57,    58,
+     409,   341,   210,   434,   349,   100,   357,    25,   357,    26,
+     275,   204,   209,   245,   276,   210,    59,   209,    27,   101,
+     102,    93,   305,   402,   431,   296,   306,   403,   432,    97,
+     209,   103,    68,   104,   182,   105,   444,   224,   225,    98,
+     445,     1,     2,   197,   198,   106,   348,   125,   436,   107,
+     132,   205,   137,   108,   323,   324,   109,    70,    71,    72,
+    -280,   317,   318,   400,  -280,   138,   125,   110,    73,   326,
+     327,   139,   111,    74,   112,    75,   113,   140,   411,   142,
+     411,   197,   198,    76,   141,   114,   115,   101,   102,   148,
+     416,   417,    77,   152,    78,   149,   452,   453,   150,    79,
+     116,    80,    81,    82,   425,   157,   165,   172,   170,   171,
+     203,   228,   117,   277,   430,   278,   279,   283,   284,   282,
+     281,   337,   285,   349,   290,   292,   309,   357,   310,   322,
+     321,   329,   330,   339,    13,   343,   209,   234,   175,   235,
+      13,   177,   178,   236,   179,   180,     1,     2,   430,   332,
+     362,   358,   360,   237,   369,   373,   378,   357,   380,   379,
+     219,   384,   386,   385,   387,   425,   394,   238,   239,   461,
+     234,   175,   235,    13,   177,   178,   236,   179,   180,   397,
+     398,   240,   241,   234,   175,   235,    13,   177,   178,   236,
+     179,   180,     1,     2,   399,   405,   406,   242,   401,   237,
+     412,   414,   407,   415,   419,   421,   243,   426,   427,   442,
+       8,   449,   163,    21,   240,    38,   244,    99,    94,    91,
+     131,   173,   245,   216,   333,   229,   359,   240,   241,   392,
+     438,   246,   451,   435,   307,   469,   350,   376,   247,   248,
+     338,   249,   303,   242,   443,   383,   389,   304,   447,   388,
+     455,   450,   243,   331,   448,   245,   334,   413,     0,     0,
+       0,     0,   244,     0,     0,    13,     0,     0,   245,     0,
+       0,     1,     2,     0,     0,     0,     0,   246,     0,     0,
+       0,     0,     0,     0,    68,     0,     0,   249,   234,   175,
+     235,    13,   177,   178,   236,   179,   180,     1,     2,    69,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    70,
+      71,    72,     0,     0,     0,     0,     0,     0,     0,     0,
+      73,     0,     0,     0,     0,    74,     0,    75,     0,     0,
+       0,     0,   240,   241,     0,    76,     0,     0,     0,     0,
+       0,     0,     0,     0,    77,     0,    78,     0,   242,     0,
+       0,    79,     0,    80,    81,    82,     0,   243,     0,     0,
+       0,     0,     0,   101,   102,     0,     0,   244,     0,     0,
+       0,   211,     0,   245,     0,   103,    68,   104,     0,   105,
+     212,     0,   246,     0,     0,     0,     0,     0,     0,   106,
+       0,     0,   249,   107,     0,     0,     0,   108,     0,     0,
+     109,    70,    71,    72,     0,     0,     0,     0,     0,   213,
+       0,   110,    73,     0,     0,     0,   111,    74,   112,    75,
+     113,     0,     0,     0,     0,     0,     0,    76,     0,   114,
+     115,   214,   215,     0,     0,     0,    77,     0,    78,     1,
+       2,     0,     0,    79,   116,    80,    81,    82,     0,     0,
+       0,   103,    68,   104,     0,   105,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   106,     0,     0,     0,   107,
+       0,     0,     0,   108,     0,     0,   109,    70,    71,    72,
+       0,     0,     0,     0,     0,     0,     0,   110,    73,     0,
+       0,     0,   111,    74,   112,    75,   113,     0,     0,     0,
+       0,     0,     0,    76,     0,   114,   115,     0,     0,     0,
+       0,     0,    77,     0,    78,     0,     0,     0,     0,    79,
+     116,    80,    81,    82
 };
 
-static const short yycheck[] =
+static const yytype_int16 yycheck[] =
 {
-      10,   214,   215,    90,   152,     0,    16,   149,     9,     4,
-     149,    38,   277,   100,   284,     9,     9,    10,   157,    38,
-     219,   149,   150,     4,     0,     9,    10,    11,   314,   157,
-       7,    41,     9,   297,   298,   299,    17,    18,    19,   303,
-     304,    35,    33,    53,    54,   331,    41,    74,    58,    54,
-     249,   108,    62,     9,    10,    74,    39,     4,    53,    54,
-       9,     4,   149,    58,    16,    17,   117,    62,   110,    85,
-      17,    18,    19,    83,    17,    18,    19,     9,    83,     9,
-       9,    10,    11,    15,    16,     9,    96,    10,    83,   106,
-      22,   290,   356,   292,   110,    15,    16,    16,    17,   118,
-      95,    96,   119,    24,    62,    35,   370,     6,     7,     8,
-       9,    10,    11,   107,    13,    14,   109,   118,   169,    38,
-      51,   115,   117,   107,   115,   109,    44,   137,   109,    47,
-     278,   330,   274,   403,   115,   274,   401,   224,   225,   149,
+      10,   214,   215,    90,   152,     0,    16,   149,     4,     4,
+     149,    11,   277,   100,   284,    11,     5,    35,   157,    11,
+     219,   149,   150,     6,    11,    12,   117,    53,     0,   157,
+      87,    41,    40,   297,   298,   299,    19,    20,    21,   303,
+     304,    37,   117,    53,    54,    37,    41,   111,    58,   110,
+     249,   115,    62,    11,    12,   112,   112,     6,    53,    54,
+      11,     6,   149,    58,    18,    19,    41,    62,    76,    54,
+      19,    20,    21,    83,    19,    20,    21,    11,   169,    11,
+      11,    12,    13,    17,    18,    11,    96,   314,    83,   115,
+      24,   290,   356,   292,   169,    11,    12,    13,    83,   117,
+      95,    96,    12,    26,   331,    37,   370,     8,     9,    10,
+      11,    12,    13,   109,    15,    16,   282,   109,    64,   111,
+     120,   117,   117,    91,   111,   117,   115,   137,   111,   295,
+     278,   330,   274,   403,   117,   274,   401,   224,   225,   149,
      150,   228,   137,   282,   309,   409,   274,   157,   276,   277,
-      89,    50,   239,   109,   282,    74,   295,   152,   107,    80,
-     170,   171,   157,   115,   329,    58,   115,   295,   115,   116,
-      85,     3,   115,    94,   169,   170,   171,   107,   107,   109,
-     112,    20,   113,   107,   117,   115,   463,   274,   410,   466,
-     109,   413,    91,   108,   113,   110,   115,   284,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,     9,    89,   108,
-     112,   113,   425,    15,    16,    85,   115,   282,    89,     6,
-       7,     8,     9,    10,    11,   111,    13,    14,    15,    16,
-     295,    26,    46,   243,    44,    74,   169,    59,   108,    78,
-     110,     9,    50,    57,     9,    10,    11,    15,    16,    51,
-      15,    16,   112,   248,   109,   109,    16,    65,   113,   113,
-      17,    18,   349,    50,   274,    25,   276,   277,    34,    35,
-     357,   281,   282,   401,   284,   109,   286,     3,   288,   113,
-     109,    68,   277,    91,   113,   295,    46,   282,    48,    15,
-      16,   109,   109,   109,   109,   113,   113,    57,   113,   108,
-     295,    27,    28,    29,    91,    31,    15,    16,    17,    18,
-     104,   105,   102,   103,   112,    41,   403,   108,   405,    45,
-      16,   108,   115,    49,    17,    18,    52,    53,    54,    55,
-      15,    16,   109,   343,    17,    18,   118,    63,    64,   439,
-     440,    86,    68,    69,    70,    71,    72,    86,   358,    76,
-     360,    56,    86,    79,     3,    81,    82,   108,   108,   118,
-       3,   108,    88,    10,    90,   114,   114,   108,     3,    95,
-      96,    97,    98,    99,   384,   110,   118,    40,   116,   108,
-     110,   118,   108,   114,   394,    73,   110,   101,    30,   109,
-     113,   401,   110,   403,   101,   108,     5,   407,     9,    30,
-      73,    73,    93,   111,   108,   100,   401,   119,   106,   110,
-     109,   108,     5,    73,   120,   107,   119,   111,   428,     6,
-       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
-     111,   111,   109,   117,   444,    22,   111,   113,   448,   109,
-     111,    87,   108,   111,   113,     4,    16,    29,   130,    36,
-      37,   118,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,    83,    62,    50,    51,     6,     7,     8,     9,    10,
-      11,    12,    13,    14,    15,    16,    96,    58,   274,    66,
-     158,    22,   169,   148,   288,   407,   403,   306,    75,   462,
-     278,   317,   228,   285,   420,   325,    50,   225,    85,   426,
-     225,   328,   444,   259,    91,   276,    -1,   432,   360,    50,
-      51,    65,   428,   100,    -1,    -1,    -1,    -1,    -1,    -1,
-     107,   108,    -1,   110,    -1,    66,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    75,    -1,    -1,    91,    -1,    -1,
-      -1,    -1,    -1,    -1,    85,    -1,    -1,     9,    -1,    -1,
-      91,    -1,    -1,    15,    16,    -1,    -1,    -1,    -1,   100,
-      -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    -1,   110,
-       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
-      16,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    53,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    64,    -1,    -1,    -1,    -1,    69,    -1,    71,
-      -1,    -1,    -1,    -1,    50,    51,    -1,    79,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,
-      66,    -1,    -1,    95,    -1,    97,    98,    99,    -1,    75,
-      -1,    -1,    -1,    -1,    -1,    15,    16,    -1,    -1,    85,
-      -1,    -1,    -1,    23,    -1,    91,    -1,    27,    28,    29,
-      -1,    31,    32,    -1,   100,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    -1,    -1,   110,    45,    -1,    -1,    -1,    49,
-      -1,    -1,    52,    53,    54,    55,    -1,    -1,    -1,    -1,
-      -1,    61,    -1,    63,    64,    -1,    -1,    -1,    68,    69,
-      70,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
-      -1,    81,    82,    83,    84,    -1,    -1,    -1,    88,    -1,
-      90,    15,    16,    -1,    -1,    95,    96,    97,    98,    99,
-      -1,    -1,    -1,    27,    28,    29,    -1,    31,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,
-      -1,    45,    -1,    -1,    -1,    49,    -1,    -1,    52,    53,
-      54,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,
-      64,    -1,    -1,    -1,    68,    69,    70,    71,    72,    -1,
-      -1,    -1,    -1,    -1,    -1,    79,    -1,    81,    82,    -1,
-      -1,    -1,    -1,    -1,    88,    -1,    90,    -1,    -1,    -1,
-      -1,    95,    96,    97,    98,    99
+      40,    52,   239,   111,   282,    91,   295,   152,   109,    82,
+     170,   171,   157,   117,   329,    87,   117,   295,   117,   118,
+      91,   108,   117,    96,   169,   170,   171,   109,   109,    46,
+     114,    22,    49,   109,   121,   117,    76,   274,   110,    60,
+     112,   466,    93,   109,   469,   111,     3,   284,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    11,     9,   110,
+      11,    87,   425,    17,    18,   410,   117,   113,   413,     8,
+       9,    10,    11,    12,    13,    28,    15,    16,    17,    18,
+     120,    46,    48,   243,   110,    76,   112,    18,    19,    80,
+      17,    18,    52,    59,    11,    12,    13,    18,    11,    53,
+      17,    18,    61,   248,    17,    18,    27,    67,   114,    40,
+     111,   111,   349,    52,   274,   115,   276,   277,   114,   115,
+     357,   281,   282,   401,   284,     3,   286,    48,   288,    50,
+     111,    70,   277,    93,   115,   295,   110,   282,    59,    17,
+      18,   114,   111,   111,   111,    76,   115,   115,   115,   110,
+     295,    29,    30,    31,    93,    33,   111,    19,    20,    18,
+     115,    17,    18,    19,    20,    43,   403,   117,   405,    47,
+     111,   110,   120,    51,   106,   107,    54,    55,    56,    57,
+     111,    36,    37,   343,   115,    88,   117,    65,    66,   104,
+     105,    88,    70,    71,    72,    73,    74,    78,   358,    88,
+     360,    19,    20,    81,    58,    83,    84,    17,    18,     3,
+      19,    20,    90,   120,    92,   110,   440,   441,   110,    97,
+      98,    99,   100,   101,   384,     3,   110,   110,   116,   116,
+      12,     3,   110,   112,   394,   120,   118,    42,   110,   116,
+     120,   401,    75,   403,   112,   112,   103,   407,    32,   115,
+     111,   103,   112,     7,    11,    32,   401,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,   428,   110,
+     113,    75,    75,    24,    95,   102,   110,   437,   108,   121,
+     112,   110,   113,   111,   109,   445,   122,    38,    39,   449,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,   113,
+     113,    52,    53,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,     7,    75,   111,    68,   119,    24,
+     111,   113,   115,   113,    89,   121,    77,   115,   113,   110,
+       4,   120,   130,    16,    52,    29,    87,    83,    62,    58,
+      96,   148,    93,   158,   274,   169,   288,    52,    53,    67,
+     407,   102,   437,   403,   228,   465,   285,   306,   109,   110,
+     278,   112,   225,    68,   420,   317,   328,   225,   426,   325,
+     445,   432,    77,   259,   428,    93,   276,   360,    -1,    -1,
+      -1,    -1,    87,    -1,    -1,    11,    -1,    -1,    93,    -1,
+      -1,    17,    18,    -1,    -1,    -1,    -1,   102,    -1,    -1,
+      -1,    -1,    -1,    -1,    30,    -1,    -1,   112,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    45,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
+      56,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      66,    -1,    -1,    -1,    -1,    71,    -1,    73,    -1,    -1,
+      -1,    -1,    52,    53,    -1,    81,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    90,    -1,    92,    -1,    68,    -1,
+      -1,    97,    -1,    99,   100,   101,    -1,    77,    -1,    -1,
+      -1,    -1,    -1,    17,    18,    -1,    -1,    87,    -1,    -1,
+      -1,    25,    -1,    93,    -1,    29,    30,    31,    -1,    33,
+      34,    -1,   102,    -1,    -1,    -1,    -1,    -1,    -1,    43,
+      -1,    -1,   112,    47,    -1,    -1,    -1,    51,    -1,    -1,
+      54,    55,    56,    57,    -1,    -1,    -1,    -1,    -1,    63,
+      -1,    65,    66,    -1,    -1,    -1,    70,    71,    72,    73,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    83,
+      84,    85,    86,    -1,    -1,    -1,    90,    -1,    92,    17,
+      18,    -1,    -1,    97,    98,    99,   100,   101,    -1,    -1,
+      -1,    29,    30,    31,    -1,    33,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    43,    -1,    -1,    -1,    47,
+      -1,    -1,    -1,    51,    -1,    -1,    54,    55,    56,    57,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    65,    66,    -1,
+      -1,    -1,    70,    71,    72,    73,    74,    -1,    -1,    -1,
+      -1,    -1,    -1,    81,    -1,    83,    84,    -1,    -1,    -1,
+      -1,    -1,    90,    -1,    92,    -1,    -1,    -1,    -1,    97,
+      98,    99,   100,   101
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-static const unsigned char yystos[] =
+static const yytype_uint8 yystos[] =
 {
-       0,    15,    16,   122,   123,   124,   239,     0,   124,   125,
-     108,   126,   127,     9,    10,   109,   128,   129,   242,    39,
-     109,   129,   110,    16,    25,    46,    48,    57,   130,   131,
-     132,    10,    62,    89,    89,    58,    89,     3,   132,   111,
-      26,    47,   133,   134,   146,   147,    22,   112,   148,   149,
-     239,   242,    44,    59,   138,   139,   112,   112,   113,   108,
-      51,   140,   141,   143,   144,   145,   239,   242,    28,    43,
-      53,    54,    55,    64,    69,    71,    79,    88,    90,    95,
-      97,    98,    99,   135,   136,   151,   153,   183,   193,   239,
-     242,   149,   109,   112,   143,    51,   113,   108,    16,   136,
-       3,    15,    16,    27,    29,    31,    41,    45,    49,    52,
-      63,    68,    70,    72,    81,    82,    96,   108,   152,   177,
-     190,   191,   192,   193,   240,   115,   173,   234,   235,   236,
-     239,   145,   109,   137,    33,   163,   173,   118,    86,    86,
-      76,    56,    86,   154,   155,   190,   191,   239,     3,   108,
-     108,   229,   118,    24,    80,    94,   237,     3,   174,   175,
-      46,    57,   238,   127,   142,   108,   239,   242,   109,   113,
-     114,   114,   108,   150,     6,     7,     8,    10,    11,    13,
-      14,    50,    91,   150,   156,   157,   173,   186,   188,   232,
-     242,   107,   109,   230,   231,   232,   242,    17,    18,   178,
-     179,   180,   239,    10,    68,   108,   184,   186,   187,   239,
-     242,    23,    32,    61,    83,    84,   152,   176,    85,   110,
-     196,   197,   198,   199,    17,    18,   165,   166,     3,   155,
-     239,   242,   239,   242,     6,     8,    12,    22,    36,    37,
-      50,    51,    66,    75,    85,    91,   100,   107,   108,   110,
-     188,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,   216,   217,   219,   221,   222,   223,   232,
-     233,   239,   242,   109,   113,   109,   113,   110,   118,   116,
-     185,   118,   114,    40,   108,    73,   108,   196,   108,   196,
-     110,   200,   110,    16,    17,    38,    74,   173,   181,   182,
-     227,   228,   173,   181,   182,   109,   113,   163,   173,   101,
-      30,   173,   106,   119,   220,     7,   242,    34,    35,   239,
-     200,   109,   113,   104,   105,   194,   102,   103,   195,   101,
-     110,   220,   108,   157,   231,   187,   232,   242,   179,     5,
-     189,   242,   184,    30,   107,   161,   162,   172,   173,   242,
-     177,    35,   158,   159,   160,   172,   173,   242,    73,   158,
-      73,   200,   111,   200,   184,   227,   118,   227,   227,    93,
-     164,   227,   227,   100,   167,   168,   166,   205,   108,   119,
-     106,    65,   208,   199,   108,   109,   111,   107,   203,   204,
-     205,   200,    65,   208,   120,   224,   225,   111,   111,     5,
-     242,   117,   109,   113,   173,    73,   109,   113,   227,   173,
-     241,   242,   109,   241,   111,   111,    17,    18,   227,    87,
-     218,   119,   107,   212,   213,   242,   113,   111,   118,   226,
-     242,   109,   113,   187,   232,   162,   173,   160,   227,   234,
-     234,   108,   189,   109,   113,   196,   201,   226,   118,   225,
-     175,   175,   169,   213,    20,    74,    78,   214,   215,   242,
-       4,    19,   115,   170,   171,   180,   170,   109,   171,   116
+       0,    17,    18,   124,   125,   126,   241,     0,   126,   127,
+     110,   128,   129,    11,    12,   111,   130,   131,   244,    41,
+     111,   131,   112,    18,    27,    48,    50,    59,   132,   133,
+     134,    12,    64,    91,    91,    60,    91,     3,   134,   113,
+      28,    49,   135,   136,   148,   149,    24,   114,   150,   151,
+     241,   244,    46,    61,   140,   141,   114,   114,   115,   110,
+      53,   142,   143,   145,   146,   147,   241,   244,    30,    45,
+      55,    56,    57,    66,    71,    73,    81,    90,    92,    97,
+      99,   100,   101,   137,   138,   153,   155,   185,   195,   241,
+     244,   151,   111,   114,   145,    53,   115,   110,    18,   138,
+       3,    17,    18,    29,    31,    33,    43,    47,    51,    54,
+      65,    70,    72,    74,    83,    84,    98,   110,   154,   179,
+     192,   193,   194,   195,   242,   117,   175,   236,   237,   238,
+     241,   147,   111,   139,    35,   165,   175,   120,    88,    88,
+      78,    58,    88,   156,   157,   192,   193,   241,     3,   110,
+     110,   231,   120,    26,    82,    96,   239,     3,   176,   177,
+      48,    59,   240,   129,   144,   110,   241,   244,   111,   115,
+     116,   116,   110,   152,     8,     9,    10,    12,    13,    15,
+      16,    52,    93,   152,   158,   159,   175,   188,   190,   234,
+     244,   109,   111,   232,   233,   234,   244,    19,    20,   180,
+     181,   182,   241,    12,    70,   110,   186,   188,   189,   241,
+     244,    25,    34,    63,    85,    86,   154,   178,    87,   112,
+     198,   199,   200,   201,    19,    20,   167,   168,     3,   157,
+     241,   244,   241,   244,     8,    10,    14,    24,    38,    39,
+      52,    53,    68,    77,    87,    93,   102,   109,   110,   112,
+     190,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   218,   219,   221,   223,   224,   225,   234,
+     235,   241,   244,   111,   115,   111,   115,   112,   120,   118,
+     187,   120,   116,    42,   110,    75,   110,   198,   110,   198,
+     112,   202,   112,    18,    19,    40,    76,   175,   183,   184,
+     229,   230,   175,   183,   184,   111,   115,   165,   175,   103,
+      32,   175,   108,   121,   222,     9,   244,    36,    37,   241,
+     202,   111,   115,   106,   107,   196,   104,   105,   197,   103,
+     112,   222,   110,   159,   233,   189,   234,   244,   181,     7,
+     191,   244,   186,    32,   109,   163,   164,   174,   175,   244,
+     179,    37,   160,   161,   162,   174,   175,   244,    75,   160,
+      75,   202,   113,   202,   186,   229,   120,   229,   229,    95,
+     166,   229,   229,   102,   169,   170,   168,   207,   110,   121,
+     108,    67,   210,   201,   110,   111,   113,   109,   205,   206,
+     207,   202,    67,   210,   122,   226,   227,   113,   113,     7,
+     244,   119,   111,   115,   175,    75,   111,   115,   229,   175,
+     243,   244,   111,   243,   113,   113,    19,    20,   229,    89,
+     220,   121,   109,   214,   215,   244,   115,   113,   120,   228,
+     244,   111,   115,   189,   234,   164,   175,     4,   162,   229,
+     236,   236,   110,   191,   111,   115,   198,   203,   228,   120,
+     227,   161,   177,   177,   171,   215,    22,    76,    80,   216,
+     217,   244,     5,     6,    21,   117,   172,   173,   182,   172,
+     111,   173,   118
 };
 
-#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
-# define YYSIZE_T __SIZE_TYPE__
-#endif
-#if ! defined (YYSIZE_T) && defined (size_t)
-# define YYSIZE_T size_t
-#endif
-#if ! defined (YYSIZE_T)
-# if defined (__STDC__) || defined (__cplusplus)
-#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
-#  define YYSIZE_T size_t
-# endif
-#endif
-#if ! defined (YYSIZE_T)
-# define YYSIZE_T unsigned int
-#endif
-
 #define yyerrok		(yyerrstatus = 0)
 #define yyclearin	(yychar = YYEMPTY)
-#define YYEMPTY		-2
+#define YYEMPTY		(-2)
 #define YYEOF		0
 
 #define YYACCEPT	goto yyacceptlab
 #define YYABORT		goto yyabortlab
-#define YYERROR		goto yyerrlab1
+#define YYERROR		goto yyerrorlab
+
 
 /* Like YYERROR except do call yyerror.  This remains here temporarily
    to ease the transition to the new meaning of YYERROR, for GCC.
@@ -1329,34 +1452,71 @@ do								\
     {								\
       yychar = (Token);						\
       yylval = (Value);						\
-      yychar1 = YYTRANSLATE (yychar);				\
-      YYPOPSTACK;						\
+      yytoken = YYTRANSLATE (yychar);				\
+      YYPOPSTACK (1);						\
       goto yybackup;						\
     }								\
   else								\
-    { 								\
-      yyerror ("syntax error: cannot back up");			\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
       YYERROR;							\
     }								\
-while (0)
+while (YYID (0))
+
 
 #define YYTERROR	1
 #define YYERRCODE	256
 
-/* YYLLOC_DEFAULT -- Compute the default location (before the actions
-   are run).  */
 
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
 #ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N)           \
-  Current.first_line   = Rhs[1].first_line;      \
-  Current.first_column = Rhs[1].first_column;    \
-  Current.last_line    = Rhs[N].last_line;       \
-  Current.last_column  = Rhs[N].last_column;
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
+#  define YY_LOCATION_PRINT(File, Loc)			\
+     fprintf (File, "%d.%d-%d.%d",			\
+	      (Loc).first_line, (Loc).first_column,	\
+	      (Loc).last_line,  (Loc).last_column)
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
 #endif
 
+
 /* YYLEX -- calling `yylex' with the right arguments.  */
 
-#define YYLEX	yylex ()
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1370,20 +1530,155 @@ while (0)
 do {						\
   if (yydebug)					\
     YYFPRINTF Args;				\
-} while (0)
-# define YYDSYMPRINT(Args)			\
-do {						\
-  if (yydebug)					\
-    yysymprint Args;				\
-} while (0)
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (!yyvaluep)
+    return;
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
+# endif
+  switch (yytype)
+    {
+      default:
+	break;
+    }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+  YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+    yytype_int16 *bottom;
+    yytype_int16 *top;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (; bottom <= top; ++bottom)
+    YYFPRINTF (stderr, " %d", *bottom);
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
+{
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+	     yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      fprintf (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       );
+      fprintf (stderr, "\n");
+    }
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
 #else /* !YYDEBUG */
 # define YYDPRINTF(Args)
-# define YYDSYMPRINT(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
@@ -1393,13 +1688,9 @@ int yydebug;
    if the built-in stack extension method is used).
 
    Do not make this value too large; the results are undefined if
-   SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
    evaluated with infinite-precision integer arithmetic.  */
 
-#if YYMAXDEPTH == 0
-# undef YYMAXDEPTH
-#endif
-
 #ifndef YYMAXDEPTH
 # define YYMAXDEPTH 10000
 #endif
@@ -1409,45 +1700,47 @@ int yydebug;
 #if YYERROR_VERBOSE
 
 # ifndef yystrlen
-#  if defined (__GLIBC__) && defined (_STRING_H)
+#  if defined __GLIBC__ && defined _STRING_H
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
-#   if defined (__STDC__) || defined (__cplusplus)
 yystrlen (const char *yystr)
-#   else
+#else
+static YYSIZE_T
 yystrlen (yystr)
-     const char *yystr;
-#   endif
+    const char *yystr;
+#endif
 {
-  register const char *yys = yystr;
-
-  while (*yys++ != '\0')
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
     continue;
-
-  return yys - yystr - 1;
+  return yylen;
 }
 #  endif
 # endif
 
 # ifndef yystpcpy
-#  if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
 #   define yystpcpy stpcpy
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static char *
-#   if defined (__STDC__) || defined (__cplusplus)
 yystpcpy (char *yydest, const char *yysrc)
-#   else
+#else
+static char *
 yystpcpy (yydest, yysrc)
-     char *yydest;
-     const char *yysrc;
-#   endif
+    char *yydest;
+    const char *yysrc;
+#endif
 {
-  register char *yyd = yydest;
-  register const char *yys = yysrc;
+  char *yyd = yydest;
+  const char *yys = yysrc;
 
   while ((*yyd++ = *yys++) != '\0')
     continue;
@@ -1457,124 +1750,265 @@ yystpcpy (yydest, yysrc)
 #  endif
 # endif
 
-#endif /* !YYERROR_VERBOSE */
+# 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);
 
-#if YYDEBUG
-/*-----------------------------.
-| Print this symbol on YYOUT.  |
-`-----------------------------*/
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
 
-static void
-#if defined (__STDC__) || defined (__cplusplus)
-yysymprint (FILE* yyout, int yytype, YYSTYPE yyvalue)
-#else
-yysymprint (yyout, yytype, yyvalue)
-    FILE* yyout;
-    int yytype;
-    YYSTYPE yyvalue;
-#endif
+/* Copy into YYRESULT an error message about the unexpected token
+   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
+   including the terminating null byte.  If YYRESULT is null, do not
+   copy anything; just return the number of bytes that would be
+   copied.  As a special case, return 0 if an ordinary "syntax error"
+   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
+   size calculation.  */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
 {
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvalue;
+  int yyn = yypact[yystate];
 
-  if (yytype < YYNTOKENS)
-    {
-      YYFPRINTF (yyout, "token %s (", yytname[yytype]);
-# ifdef YYPRINT
-      YYPRINT (yyout, yytoknum[yytype], yyvalue);
-# endif
-    }
+  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+    return 0;
   else
-    YYFPRINTF (yyout, "nterm %s (", yytname[yytype]);
-
-  switch (yytype)
     {
-      default:
-        break;
+      int yytype = YYTRANSLATE (yychar);
+      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+      YYSIZE_T yysize = yysize0;
+      YYSIZE_T yysize1;
+      int yysize_overflow = 0;
+      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+      int yyx;
+
+# if 0
+      /* This is so xgettext sees the translatable formats that are
+	 constructed on the fly.  */
+      YY_("syntax error, unexpected %s");
+      YY_("syntax error, unexpected %s, expecting %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+      char *yyfmt;
+      char const *yyf;
+      static char const yyunexpected[] = "syntax error, unexpected %s";
+      static char const yyexpecting[] = ", expecting %s";
+      static char const yyor[] = " or %s";
+      char yyformat[sizeof yyunexpected
+		    + sizeof yyexpecting - 1
+		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+		       * (sizeof yyor - 1))];
+      char const *yyprefix = yyexpecting;
+
+      /* Start YYX at -YYN if negative to avoid negative indexes in
+	 YYCHECK.  */
+      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 yycount = 1;
+
+      yyarg[0] = yytname[yytype];
+      yyfmt = yystpcpy (yyformat, yyunexpected);
+
+      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+	  {
+	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+	      {
+		yycount = 1;
+		yysize = yysize0;
+		yyformat[sizeof yyunexpected - 1] = '\0';
+		break;
+	      }
+	    yyarg[yycount++] = yytname[yyx];
+	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+	    yysize_overflow |= (yysize1 < yysize);
+	    yysize = yysize1;
+	    yyfmt = yystpcpy (yyfmt, yyprefix);
+	    yyprefix = yyor;
+	  }
+
+      yyf = YY_(yyformat);
+      yysize1 = yysize + yystrlen (yyf);
+      yysize_overflow |= (yysize1 < yysize);
+      yysize = yysize1;
+
+      if (yysize_overflow)
+	return YYSIZE_MAXIMUM;
+
+      if (yyresult)
+	{
+	  /* 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 = yyresult;
+	  int yyi = 0;
+	  while ((*yyp = *yyf) != '\0')
+	    {
+	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+		{
+		  yyp += yytnamerr (yyp, yyarg[yyi++]);
+		  yyf += 2;
+		}
+	      else
+		{
+		  yyp++;
+		  yyf++;
+		}
+	    }
+	}
+      return yysize;
     }
-  YYFPRINTF (yyout, ")");
 }
-#endif /* YYDEBUG. */
-
+#endif /* YYERROR_VERBOSE */
+
 
 /*-----------------------------------------------.
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 static void
-#if defined (__STDC__) || defined (__cplusplus)
-yydestruct (int yytype, YYSTYPE yyvalue)
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
 #else
-yydestruct (yytype, yyvalue)
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
     int yytype;
-    YYSTYPE yyvalue;
+    YYSTYPE *yyvaluep;
 #endif
 {
-  /* Pacify ``unused variable'' warnings.  */
-  (void) yyvalue;
+  YYUSE (yyvaluep);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
   switch (yytype)
     {
+
       default:
-        break;
+	break;
     }
 }
-
 
 
-/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-   into yyparse.  The argument should have type void *.
-   It should actually point to an object.
-   Grammar actions can access the variable by casting it
-   to the proper pointer type.  */
+/* Prevent warnings from -Wmissing-prototypes.  */
 
 #ifdef YYPARSE_PARAM
-# if defined (__STDC__) || defined (__cplusplus)
-#  define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-#  define YYPARSE_PARAM_DECL
-# else
-#  define YYPARSE_PARAM_ARG YYPARSE_PARAM
-#  define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-# endif
-#else /* !YYPARSE_PARAM */
-# define YYPARSE_PARAM_ARG
-# define YYPARSE_PARAM_DECL
-#endif /* !YYPARSE_PARAM */
-
-/* Prevent warning if -Wstrict-prototypes.  */
-#ifdef __GNUC__
-# ifdef YYPARSE_PARAM
-int yyparse (void *);
-# else
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
 int yyparse (void);
-# endif
+#else
+int yyparse ();
 #endif
+#endif /* ! YYPARSE_PARAM */
 
 
-/* The lookahead symbol.  */
+
+/* The look-ahead symbol.  */
 int yychar;
 
-/* The semantic value of the lookahead symbol.  */
+/* The semantic value of the look-ahead symbol.  */
 YYSTYPE yylval;
 
-/* Number of parse errors so far.  */
+/* Number of syntax errors so far.  */
 int yynerrs;
 
 
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
 int
-yyparse (YYPARSE_PARAM_ARG)
-     YYPARSE_PARAM_DECL
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
 {
   
-  register int yystate;
-  register int yyn;
+  int yystate;
+  int yyn;
   int yyresult;
   /* Number of tokens to shift before error messages enabled.  */
   int yyerrstatus;
-  /* Lookahead token as an internal (translated) token number.  */
-  int yychar1 = 0;
+  /* Look-ahead token as an internal (translated) token number.  */
+  int yytoken = 0;
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
 
   /* Three stacks and their tools:
      `yyss': related to states,
@@ -1585,18 +2019,18 @@ yyparse (YYPARSE_PARAM_ARG)
      to reallocate them elsewhere.  */
 
   /* The state stack.  */
-  short	yyssa[YYINITDEPTH];
-  short *yyss = yyssa;
-  register short *yyssp;
+  yytype_int16 yyssa[YYINITDEPTH];
+  yytype_int16 *yyss = yyssa;
+  yytype_int16 *yyssp;
 
   /* The semantic value stack.  */
   YYSTYPE yyvsa[YYINITDEPTH];
   YYSTYPE *yyvs = yyvsa;
-  register YYSTYPE *yyvsp;
+  YYSTYPE *yyvsp;
 
 
 
-#define YYPOPSTACK   (yyvsp--, yyssp--)
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
   YYSIZE_T yystacksize = YYINITDEPTH;
 
@@ -1605,9 +2039,9 @@ yyparse (YYPARSE_PARAM_ARG)
   YYSTYPE yyval;
 
 
-  /* When reducing, the number of symbols on the RHS of the reduced
-     rule.  */
-  int yylen;
+  /* The number of symbols on the RHS of the reduced rule.
+     Keep to zero when no symbol should be popped.  */
+  int yylen = 0;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
 
@@ -1631,32 +2065,31 @@ yyparse (YYPARSE_PARAM_ARG)
 `------------------------------------------------------------*/
  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.
-     */
+     have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
  yysetstate:
   *yyssp = yystate;
 
-  if (yyssp >= yyss + yystacksize - 1)
+  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
+	/* 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;
-	short *yyss1 = yyss;
+	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 ("parser stack overflow",
+	yyoverflow (YY_("memory exhausted"),
 		    &yyss1, yysize * sizeof (*yyssp),
 		    &yyvs1, yysize * sizeof (*yyvsp),
 
@@ -1667,21 +2100,21 @@ yyparse (YYPARSE_PARAM_ARG)
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
-      goto yyoverflowlab;
+      goto yyexhaustedlab;
 # else
       /* Extend the stack our own way.  */
-      if (yystacksize >= YYMAXDEPTH)
-	goto yyoverflowlab;
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
       yystacksize *= 2;
-      if (yystacksize > YYMAXDEPTH)
+      if (YYMAXDEPTH < yystacksize)
 	yystacksize = YYMAXDEPTH;
 
       {
-	short *yyss1 = yyss;
+	yytype_int16 *yyss1 = yyss;
 	union yyalloc *yyptr =
 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
 	if (! yyptr)
-	  goto yyoverflowlab;
+	  goto yyexhaustedlab;
 	YYSTACK_RELOCATE (yyss);
 	YYSTACK_RELOCATE (yyvs);
 
@@ -1699,7 +2132,7 @@ yyparse (YYPARSE_PARAM_ARG)
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
 		  (unsigned long int) yystacksize));
 
-      if (yyssp >= yyss + yystacksize - 1)
+      if (yyss + yystacksize - 1 <= yyssp)
 	YYABORT;
     }
 
@@ -1712,51 +2145,38 @@ yyparse (YYPARSE_PARAM_ARG)
 `-----------*/
 yybackup:
 
-/* Do appropriate processing given the current state.  */
-/* Read a lookahead token if we need one and don't already have one.  */
-/* yyresume: */
-
-  /* First try to decide what to do without reference to lookahead token.  */
+  /* Do appropriate processing given the current state.  Read a
+     look-ahead token if we need one and don't already have one.  */
 
+  /* First try to decide what to do without reference to look-ahead token.  */
   yyn = yypact[yystate];
   if (yyn == YYPACT_NINF)
     goto yydefault;
 
-  /* Not known => get a lookahead token if don't already have one.  */
-
-  /* yychar is either YYEMPTY or YYEOF
-     or a valid token in external form.  */
+  /* Not known => get a look-ahead token if don't already have one.  */
 
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
       yychar = YYLEX;
     }
 
-  /* Convert token to internal form (in yychar1) for indexing tables with.  */
-
-  if (yychar <= 0)		/* This means end of input.  */
+  if (yychar <= YYEOF)
     {
-      yychar1 = 0;
-      yychar = YYEOF;		/* Don't call YYLEX any more.  */
-
+      yychar = yytoken = YYEOF;
       YYDPRINTF ((stderr, "Now at end of input.\n"));
     }
   else
     {
-      yychar1 = YYTRANSLATE (yychar);
-
-      /* We have to keep this `#if YYDEBUG', since we use variables
-	 which are defined only if `YYDEBUG' is set.  */
-      YYDPRINTF ((stderr, "Next token is "));
-      YYDSYMPRINT ((stderr, yychar1, yylval));
-      YYDPRINTF ((stderr, "\n"));
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
     }
 
-  /* If the proper action on seeing token YYCHAR1 is to reduce or to
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
      detect an error, take that action.  */
-  yyn += yychar1;
-  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yychar1)
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
     goto yydefault;
   yyn = yytable[yyn];
   if (yyn <= 0)
@@ -1770,23 +2190,21 @@ yybackup:
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  /* Shift the lookahead token.  */
-  YYDPRINTF ((stderr, "Shifting token %d (%s), ",
-	      yychar, yytname[yychar1]));
-
-  /* Discard the token being shifted unless it is eof.  */
-  if (yychar != YYEOF)
-    yychar = YYEMPTY;
-
-  *++yyvsp = yylval;
-
-
   /* Count tokens shifted since error; after three, turn off error
      status.  */
   if (yyerrstatus)
     yyerrstatus--;
 
+  /* Shift the look-ahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token unless it is eof.  */
+  if (yychar != YYEOF)
+    yychar = YYEMPTY;
+
   yystate = yyn;
+  *++yyvsp = yylval;
+
   goto yynewstate;
 
 
@@ -1818,310 +2236,294 @@ yyreduce:
   yyval = yyvsp[1-yylen];
 
 
-
-#if YYDEBUG
-  /* We have to keep this `#if YYDEBUG', since we use variables which
-     are defined only if `YYDEBUG' is set.  */
-  if (yydebug)
-    {
-      int yyi;
-
-      YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
-		 yyn - 1, yyrline[yyn]);
-
-      /* Print the symbols being reduced, and their result.  */
-      for (yyi = yyprhs[yyn]; yyrhs[yyi] >= 0; yyi++)
-	YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
-      YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-    }
-#endif
+  YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
         case 2:
-#line 356 "asn1p_y.y"
+#line 357 "asn1p_y.y"
     {
-		*(void **)param = yyvsp[0].a_grammar;
+		*(void **)param = (yyvsp[(1) - (1)].a_grammar);
 	}
     break;
 
   case 3:
-#line 362 "asn1p_y.y"
+#line 363 "asn1p_y.y"
     {
-		yyval.a_grammar = asn1p_new();
-		checkmem(yyval.a_grammar);
-		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
+		(yyval.a_grammar) = asn1p_new();
+		checkmem((yyval.a_grammar));
+		TQ_ADD(&((yyval.a_grammar)->modules), (yyvsp[(1) - (1)].a_module), mod_next);
 	}
     break;
 
   case 4:
-#line 367 "asn1p_y.y"
+#line 368 "asn1p_y.y"
     {
-		yyval.a_grammar = yyvsp[-1].a_grammar;
-		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
+		(yyval.a_grammar) = (yyvsp[(1) - (2)].a_grammar);
+		TQ_ADD(&((yyval.a_grammar)->modules), (yyvsp[(2) - (2)].a_module), mod_next);
 	}
     break;
 
   case 5:
-#line 384 "asn1p_y.y"
+#line 385 "asn1p_y.y"
     { currentModule = asn1p_module_new(); }
     break;
 
   case 6:
-#line 389 "asn1p_y.y"
+#line 390 "asn1p_y.y"
     {
 
-		yyval.a_module = currentModule;
+		(yyval.a_module) = currentModule;
 
-		if(yyvsp[-1].a_module) {
-			asn1p_module_t tmp = *(yyval.a_module);
-			*(yyval.a_module) = *(yyvsp[-1].a_module);
-			*(yyvsp[-1].a_module) = tmp;
-			asn1p_module_free(yyvsp[-1].a_module);
+		if((yyvsp[(8) - (9)].a_module)) {
+			asn1p_module_t tmp = *((yyval.a_module));
+			*((yyval.a_module)) = *((yyvsp[(8) - (9)].a_module));
+			*((yyvsp[(8) - (9)].a_module)) = tmp;
+			asn1p_module_free((yyvsp[(8) - (9)].a_module));
 		} else {
 			/* There's a chance that a module is just plain empty */
 		}
 
-		yyval.a_module->ModuleName = yyvsp[-8].tv_str;
-		yyval.a_module->module_oid = yyvsp[-6].a_oid;
-		yyval.a_module->module_flags = yyvsp[-4].a_module_flags;
+		(yyval.a_module)->ModuleName = (yyvsp[(1) - (9)].tv_str);
+		(yyval.a_module)->module_oid = (yyvsp[(3) - (9)].a_oid);
+		(yyval.a_module)->module_flags = (yyvsp[(5) - (9)].a_module_flags);
 	}
     break;
 
   case 7:
-#line 413 "asn1p_y.y"
-    { yyval.a_oid = 0; }
+#line 414 "asn1p_y.y"
+    { (yyval.a_oid) = 0; }
     break;
 
   case 8:
-#line 414 "asn1p_y.y"
-    { yyval.a_oid = yyvsp[0].a_oid; }
+#line 415 "asn1p_y.y"
+    { (yyval.a_oid) = (yyvsp[(1) - (1)].a_oid); }
     break;
 
   case 9:
-#line 418 "asn1p_y.y"
+#line 419 "asn1p_y.y"
     {
-		yyval.a_oid = yyvsp[-1].a_oid;
+		(yyval.a_oid) = (yyvsp[(2) - (3)].a_oid);
 	}
     break;
 
   case 10:
-#line 421 "asn1p_y.y"
+#line 422 "asn1p_y.y"
     {
-		yyval.a_oid = 0;
+		(yyval.a_oid) = 0;
 	}
     break;
 
   case 11:
-#line 427 "asn1p_y.y"
+#line 428 "asn1p_y.y"
     {
-		yyval.a_oid = asn1p_oid_new();
-		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
-		if(yyvsp[0].a_oid_arc.name)
-			free(yyvsp[0].a_oid_arc.name);
+		(yyval.a_oid) = asn1p_oid_new();
+		asn1p_oid_add_arc((yyval.a_oid), &(yyvsp[(1) - (1)].a_oid_arc));
+		if((yyvsp[(1) - (1)].a_oid_arc).name)
+			free((yyvsp[(1) - (1)].a_oid_arc).name);
 	}
     break;
 
   case 12:
-#line 433 "asn1p_y.y"
+#line 434 "asn1p_y.y"
     {
-		yyval.a_oid = yyvsp[-1].a_oid;
-		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
-		if(yyvsp[0].a_oid_arc.name)
-			free(yyvsp[0].a_oid_arc.name);
+		(yyval.a_oid) = (yyvsp[(1) - (2)].a_oid);
+		asn1p_oid_add_arc((yyval.a_oid), &(yyvsp[(2) - (2)].a_oid_arc));
+		if((yyvsp[(2) - (2)].a_oid_arc).name)
+			free((yyvsp[(2) - (2)].a_oid_arc).name);
 	}
     break;
 
   case 13:
-#line 442 "asn1p_y.y"
+#line 443 "asn1p_y.y"
     {					/* iso */
-		yyval.a_oid_arc.name = yyvsp[0].tv_str;
-		yyval.a_oid_arc.number = -1;
+		(yyval.a_oid_arc).name = (yyvsp[(1) - (1)].tv_str);
+		(yyval.a_oid_arc).number = -1;
 	}
     break;
 
   case 14:
-#line 446 "asn1p_y.y"
+#line 447 "asn1p_y.y"
     {		/* iso(1) */
-		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
-		yyval.a_oid_arc.number = yyvsp[-1].a_int;
+		(yyval.a_oid_arc).name = (yyvsp[(1) - (4)].tv_str);
+		(yyval.a_oid_arc).number = (yyvsp[(3) - (4)].a_int);
 	}
     break;
 
   case 15:
-#line 450 "asn1p_y.y"
+#line 451 "asn1p_y.y"
     {					/* 1 */
-		yyval.a_oid_arc.name = 0;
-		yyval.a_oid_arc.number = yyvsp[0].a_int;
+		(yyval.a_oid_arc).name = 0;
+		(yyval.a_oid_arc).number = (yyvsp[(1) - (1)].a_int);
 	}
     break;
 
   case 16:
-#line 460 "asn1p_y.y"
-    { yyval.a_module_flags = MSF_NOFLAGS; }
+#line 461 "asn1p_y.y"
+    { (yyval.a_module_flags) = MSF_NOFLAGS; }
     break;
 
   case 17:
-#line 461 "asn1p_y.y"
+#line 462 "asn1p_y.y"
     {
-		yyval.a_module_flags = yyvsp[0].a_module_flags;
+		(yyval.a_module_flags) = (yyvsp[(1) - (1)].a_module_flags);
 	}
     break;
 
   case 18:
-#line 470 "asn1p_y.y"
+#line 471 "asn1p_y.y"
     {
-		yyval.a_module_flags = yyvsp[0].a_module_flags;
+		(yyval.a_module_flags) = (yyvsp[(1) - (1)].a_module_flags);
 	}
     break;
 
   case 19:
-#line 473 "asn1p_y.y"
+#line 474 "asn1p_y.y"
     {
-		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
+		(yyval.a_module_flags) = (yyvsp[(1) - (2)].a_module_flags) | (yyvsp[(2) - (2)].a_module_flags);
 	}
     break;
 
   case 20:
-#line 482 "asn1p_y.y"
+#line 483 "asn1p_y.y"
     {
-		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
+		(yyval.a_module_flags) = MSF_EXPLICIT_TAGS;
 	}
     break;
 
   case 21:
-#line 485 "asn1p_y.y"
+#line 486 "asn1p_y.y"
     {
-		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
+		(yyval.a_module_flags) = MSF_IMPLICIT_TAGS;
 	}
     break;
 
   case 22:
-#line 488 "asn1p_y.y"
+#line 489 "asn1p_y.y"
     {
-		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
+		(yyval.a_module_flags) = MSF_AUTOMATIC_TAGS;
 	}
     break;
 
   case 23:
-#line 491 "asn1p_y.y"
+#line 492 "asn1p_y.y"
     {
-		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
+		(yyval.a_module_flags) = MSF_EXTENSIBILITY_IMPLIED;
 	}
     break;
 
   case 24:
-#line 495 "asn1p_y.y"
+#line 496 "asn1p_y.y"
     {
 		/* X.680Amd1 specifies TAG and XER */
-		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
-		 	yyval.a_module_flags = MSF_TAG_INSTRUCTIONS;
-		} else if(strcmp(yyvsp[-1].tv_str, "XER") == 0) {
-		 	yyval.a_module_flags = MSF_XER_INSTRUCTIONS;
+		if(strcmp((yyvsp[(1) - (2)].tv_str), "TAG") == 0) {
+		 	(yyval.a_module_flags) = MSF_TAG_INSTRUCTIONS;
+		} else if(strcmp((yyvsp[(1) - (2)].tv_str), "XER") == 0) {
+		 	(yyval.a_module_flags) = MSF_XER_INSTRUCTIONS;
 		} else {
 			fprintf(stderr,
 				"WARNING: %s INSTRUCTIONS at line %d: "
 				"Unrecognized encoding reference\n",
-				yyvsp[-1].tv_str, yylineno);
-		 	yyval.a_module_flags = MSF_unk_INSTRUCTIONS;
+				(yyvsp[(1) - (2)].tv_str), yylineno);
+		 	(yyval.a_module_flags) = MSF_unk_INSTRUCTIONS;
 		}
-		free(yyvsp[-1].tv_str);
+		free((yyvsp[(1) - (2)].tv_str));
 	}
     break;
 
   case 25:
-#line 516 "asn1p_y.y"
-    { yyval.a_module = 0; }
+#line 517 "asn1p_y.y"
+    { (yyval.a_module) = 0; }
     break;
 
   case 26:
-#line 517 "asn1p_y.y"
+#line 518 "asn1p_y.y"
     {
-		yyval.a_module = yyvsp[0].a_module;
+		(yyval.a_module) = (yyvsp[(1) - (1)].a_module);
 	}
     break;
 
   case 27:
-#line 526 "asn1p_y.y"
+#line 527 "asn1p_y.y"
     {
-		yyval.a_module = asn1p_module_new();
-		AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next);
-		AL_IMPORT(yyval.a_module, imports, yyvsp[-1].a_module, xp_next);
-		AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
+		(yyval.a_module) = asn1p_module_new();
+		AL_IMPORT((yyval.a_module), exports, (yyvsp[(1) - (3)].a_module), xp_next);
+		AL_IMPORT((yyval.a_module), imports, (yyvsp[(2) - (3)].a_module), xp_next);
+		AL_IMPORT((yyval.a_module), members, (yyvsp[(3) - (3)].a_module), next);
 	}
     break;
 
   case 28:
-#line 535 "asn1p_y.y"
+#line 536 "asn1p_y.y"
     {
-		yyval.a_module = yyvsp[0].a_module;
+		(yyval.a_module) = (yyvsp[(1) - (1)].a_module);
 	}
     break;
 
   case 29:
-#line 538 "asn1p_y.y"
+#line 539 "asn1p_y.y"
     {
-		if(yyvsp[-1].a_module) {
-			yyval.a_module = yyvsp[-1].a_module;
+		if((yyvsp[(1) - (2)].a_module)) {
+			(yyval.a_module) = (yyvsp[(1) - (2)].a_module);
 		} else {
-			yyval.a_module = yyvsp[0].a_module;
+			(yyval.a_module) = (yyvsp[(2) - (2)].a_module);
 			break;
 		}
-		AL_IMPORT(yyval.a_module, members, yyvsp[0].a_module, next);
+		AL_IMPORT((yyval.a_module), members, (yyvsp[(2) - (2)].a_module), next);
 	}
     break;
 
   case 30:
-#line 554 "asn1p_y.y"
+#line 555 "asn1p_y.y"
     {
-		yyval.a_module = asn1p_module_new();
-		checkmem(yyval.a_module);
-		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
-		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
-		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
+		(yyval.a_module) = asn1p_module_new();
+		checkmem((yyval.a_module));
+		assert((yyvsp[(1) - (1)].a_expr)->expr_type != A1TC_INVALID);
+		assert((yyvsp[(1) - (1)].a_expr)->meta_type != AMT_INVALID);
+		TQ_ADD(&((yyval.a_module)->members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 31:
-#line 561 "asn1p_y.y"
+#line 562 "asn1p_y.y"
     {
-		yyval.a_module = asn1p_module_new();
-		checkmem(yyval.a_module);
-		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
-		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
-		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
+		(yyval.a_module) = asn1p_module_new();
+		checkmem((yyval.a_module));
+		assert((yyvsp[(1) - (1)].a_expr)->expr_type != A1TC_INVALID);
+		assert((yyvsp[(1) - (1)].a_expr)->meta_type != AMT_INVALID);
+		TQ_ADD(&((yyval.a_module)->members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 32:
-#line 574 "asn1p_y.y"
+#line 575 "asn1p_y.y"
     {
-		yyval.a_module = asn1p_module_new();
-		checkmem(yyval.a_module);
-		assert(yyvsp[0].a_expr->expr_type != A1TC_INVALID);
-		assert(yyvsp[0].a_expr->meta_type != AMT_INVALID);
-		TQ_ADD(&(yyval.a_module->members), yyvsp[0].a_expr, next);
+		(yyval.a_module) = asn1p_module_new();
+		checkmem((yyval.a_module));
+		assert((yyvsp[(1) - (1)].a_expr)->expr_type != A1TC_INVALID);
+		assert((yyvsp[(1) - (1)].a_expr)->meta_type != AMT_INVALID);
+		TQ_ADD(&((yyval.a_module)->members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 33:
-#line 582 "asn1p_y.y"
+#line 583 "asn1p_y.y"
     { asn1p_lexer_hack_push_encoding_control(); }
     break;
 
   case 34:
-#line 583 "asn1p_y.y"
+#line 584 "asn1p_y.y"
     {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
 			"specification at line %d ignored\n",
-			yyvsp[-1].tv_str, yylineno);
-		free(yyvsp[-1].tv_str);
-		yyval.a_module = 0;
+			(yyvsp[(2) - (3)].tv_str), yylineno);
+		free((yyvsp[(2) - (3)].tv_str));
+		(yyval.a_module) = 0;
 	}
     break;
 
   case 35:
-#line 595 "asn1p_y.y"
+#line 596 "asn1p_y.y"
     {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -2130,131 +2532,131 @@ yyreduce:
     break;
 
   case 36:
-#line 608 "asn1p_y.y"
-    { yyval.a_module = 0; }
+#line 609 "asn1p_y.y"
+    { (yyval.a_module) = 0; }
     break;
 
   case 38:
-#line 612 "asn1p_y.y"
+#line 613 "asn1p_y.y"
     {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
 					"expected semicolon ';'");
 		saved_aid = 0;
-		yyval.a_module = yyvsp[-1].a_module;
+		(yyval.a_module) = (yyvsp[(2) - (3)].a_module);
 	}
     break;
 
   case 39:
-#line 622 "asn1p_y.y"
+#line 623 "asn1p_y.y"
     {
 		return yyerror("Empty IMPORTS list");
 	}
     break;
 
   case 40:
-#line 628 "asn1p_y.y"
-    { yyval.a_module = asn1p_module_new(); }
+#line 629 "asn1p_y.y"
+    { (yyval.a_module) = asn1p_module_new(); }
     break;
 
   case 42:
-#line 632 "asn1p_y.y"
+#line 633 "asn1p_y.y"
     {
-		yyval.a_module = asn1p_module_new();
-		checkmem(yyval.a_module);
-		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
+		(yyval.a_module) = asn1p_module_new();
+		checkmem((yyval.a_module));
+		TQ_ADD(&((yyval.a_module)->imports), (yyvsp[(1) - (1)].a_xports), xp_next);
 	}
     break;
 
   case 43:
-#line 637 "asn1p_y.y"
+#line 638 "asn1p_y.y"
     {
-		yyval.a_module = yyvsp[-1].a_module;
-		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
+		(yyval.a_module) = (yyvsp[(1) - (2)].a_module);
+		TQ_ADD(&((yyval.a_module)->imports), (yyvsp[(2) - (2)].a_xports), xp_next);
 	}
     break;
 
   case 44:
-#line 644 "asn1p_y.y"
-    { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
+#line 645 "asn1p_y.y"
+    { memset(&(yyval.a_aid), 0, sizeof((yyval.a_aid))); }
     break;
 
   case 45:
-#line 645 "asn1p_y.y"
-    { yyval.a_aid.oid = yyvsp[0].a_oid; }
+#line 646 "asn1p_y.y"
+    { (yyval.a_aid).oid = (yyvsp[(1) - (1)].a_oid); }
     break;
 
   case 46:
-#line 649 "asn1p_y.y"
+#line 650 "asn1p_y.y"
     {
-		yyval.a_xports = yyvsp[-3].a_xports;
-		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
-		yyval.a_xports->identifier = yyvsp[0].a_aid;
+		(yyval.a_xports) = (yyvsp[(1) - (4)].a_xports);
+		(yyval.a_xports)->fromModuleName = (yyvsp[(3) - (4)].tv_str);
+		(yyval.a_xports)->identifier = (yyvsp[(4) - (4)].a_aid);
 		/* This stupid thing is used for look-back hack. */
-		saved_aid = yyval.a_xports->identifier.oid ? 0 : &(yyval.a_xports->identifier);
-		checkmem(yyval.a_xports);
+		saved_aid = (yyval.a_xports)->identifier.oid ? 0 : &((yyval.a_xports)->identifier);
+		checkmem((yyval.a_xports));
 	}
     break;
 
   case 47:
-#line 660 "asn1p_y.y"
+#line 661 "asn1p_y.y"
     {
-		yyval.a_xports = asn1p_xports_new();
-		checkmem(yyval.a_xports);
-		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
+		(yyval.a_xports) = asn1p_xports_new();
+		checkmem((yyval.a_xports));
+		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 48:
-#line 665 "asn1p_y.y"
+#line 666 "asn1p_y.y"
     {
-		yyval.a_xports = yyvsp[-2].a_xports;
-		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
+		(yyval.a_xports) = (yyvsp[(1) - (3)].a_xports);
+		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(3) - (3)].a_expr), next);
 	}
     break;
 
   case 49:
-#line 672 "asn1p_y.y"
+#line 673 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (1)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
 	}
     break;
 
   case 50:
-#line 678 "asn1p_y.y"
+#line 679 "asn1p_y.y"
     {		/* Completely equivalent to above */
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
 	}
     break;
 
   case 51:
-#line 684 "asn1p_y.y"
+#line 685 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (1)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
 	}
     break;
 
   case 52:
-#line 694 "asn1p_y.y"
-    { yyval.a_module = 0; }
+#line 695 "asn1p_y.y"
+    { (yyval.a_module) = 0; }
     break;
 
   case 53:
-#line 695 "asn1p_y.y"
+#line 696 "asn1p_y.y"
     {
-		yyval.a_module = asn1p_module_new();
-		checkmem(yyval.a_module);
-		if(yyvsp[0].a_xports) {
-			TQ_ADD(&(yyval.a_module->exports), yyvsp[0].a_xports, xp_next);
+		(yyval.a_module) = asn1p_module_new();
+		checkmem((yyval.a_module));
+		if((yyvsp[(1) - (1)].a_xports)) {
+			TQ_ADD(&((yyval.a_module)->exports), (yyvsp[(1) - (1)].a_xports), xp_next);
 		} else {
 			/* "EXPORTS ALL;" */
 		}
@@ -2262,2147 +2664,2145 @@ yyreduce:
     break;
 
   case 54:
-#line 707 "asn1p_y.y"
+#line 708 "asn1p_y.y"
     {
-		yyval.a_xports = yyvsp[-1].a_xports;
+		(yyval.a_xports) = (yyvsp[(2) - (3)].a_xports);
 	}
     break;
 
   case 55:
-#line 710 "asn1p_y.y"
+#line 711 "asn1p_y.y"
     {
-		yyval.a_xports = 0;
+		(yyval.a_xports) = 0;
 	}
     break;
 
   case 56:
-#line 713 "asn1p_y.y"
+#line 714 "asn1p_y.y"
     {
 		/* Empty EXPORTS clause effectively prohibits export. */
-		yyval.a_xports = asn1p_xports_new();
-		checkmem(yyval.a_xports);
+		(yyval.a_xports) = asn1p_xports_new();
+		checkmem((yyval.a_xports));
 	}
     break;
 
   case 57:
-#line 721 "asn1p_y.y"
+#line 722 "asn1p_y.y"
     {
-		yyval.a_xports = asn1p_xports_new();
-		assert(yyval.a_xports);
-		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
+		(yyval.a_xports) = asn1p_xports_new();
+		assert((yyval.a_xports));
+		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 58:
-#line 726 "asn1p_y.y"
+#line 727 "asn1p_y.y"
     {
-		yyval.a_xports = yyvsp[-2].a_xports;
-		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
+		(yyval.a_xports) = (yyvsp[(1) - (3)].a_xports);
+		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(3) - (3)].a_expr), next);
 	}
     break;
 
   case 59:
-#line 733 "asn1p_y.y"
+#line 734 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (1)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_EXPORTVAR;
 	}
     break;
 
   case 60:
-#line 739 "asn1p_y.y"
+#line 740 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_EXPORTVAR;
 	}
     break;
 
   case 61:
-#line 745 "asn1p_y.y"
+#line 746 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_EXPORTVAR;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (1)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_EXPORTVAR;
 	}
     break;
 
   case 62:
-#line 754 "asn1p_y.y"
-    { yyval.a_constr = yyvsp[-1].a_constr; }
+#line 755 "asn1p_y.y"
+    { (yyval.a_constr) = (yyvsp[(2) - (3)].a_constr); }
     break;
 
   case 63:
-#line 757 "asn1p_y.y"
+#line 758 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		assert(yyval.a_expr->Identifier == 0);
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->meta_type = AMT_VALUESET;
-		yyval.a_expr->constraints = yyvsp[0].a_constr;
+		(yyval.a_expr) = (yyvsp[(2) - (4)].a_expr);
+		assert((yyval.a_expr)->Identifier == 0);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_VALUESET;
+		(yyval.a_expr)->constraints = (yyvsp[(4) - (4)].a_constr);
 	}
     break;
 
   case 64:
-#line 767 "asn1p_y.y"
+#line 768 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 65:
-#line 780 "asn1p_y.y"
+#line 781 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->reference = yyvsp[0].a_ref;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
-		yyval.a_expr->meta_type = AMT_TYPEREF;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->reference = (yyvsp[(1) - (1)].a_ref);
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr)->meta_type = AMT_TYPEREF;
 	}
     break;
 
   case 66:
-#line 790 "asn1p_y.y"
+#line 791 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->reference = yyvsp[-3].a_ref;
-		yyval.a_expr->rhs_pspecs = yyvsp[-1].a_expr;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
-		yyval.a_expr->meta_type = AMT_TYPEREF;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->reference = (yyvsp[(1) - (4)].a_ref);
+		(yyval.a_expr)->rhs_pspecs = (yyvsp[(3) - (4)].a_expr);
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr)->meta_type = AMT_TYPEREF;
 	}
     break;
 
   case 67:
-#line 810 "asn1p_y.y"
+#line 811 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		assert(yyval.a_expr->expr_type);
-		assert(yyval.a_expr->meta_type);
+		(yyval.a_expr) = (yyvsp[(3) - (3)].a_expr);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		assert((yyval.a_expr)->expr_type);
+		assert((yyval.a_expr)->meta_type);
 	}
     break;
 
   case 68:
-#line 816 "asn1p_y.y"
+#line 817 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
-		assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
+		(yyval.a_expr) = (yyvsp[(3) - (3)].a_expr);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		assert((yyval.a_expr)->expr_type == A1TC_CLASSDEF);
+		assert((yyval.a_expr)->meta_type == AMT_OBJECTCLASS);
 	}
     break;
 
   case 69:
-#line 832 "asn1p_y.y"
+#line 833 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
-		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
+		(yyval.a_expr) = (yyvsp[(6) - (6)].a_expr);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (6)].tv_str);
+		(yyval.a_expr)->lhs_params = (yyvsp[(3) - (6)].a_plist);
 	}
     break;
 
   case 70:
-#line 838 "asn1p_y.y"
+#line 839 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
-		yyval.a_expr->lhs_params = yyvsp[-3].a_plist;
+		(yyval.a_expr) = (yyvsp[(6) - (6)].a_expr);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (6)].tv_str);
+		(yyval.a_expr)->lhs_params = (yyvsp[(3) - (6)].a_plist);
 	}
     break;
 
   case 71:
-#line 846 "asn1p_y.y"
+#line 847 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_plist = asn1p_paramlist_new(yylineno);
-		checkmem(yyval.a_plist);
-		ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
+		(yyval.a_plist) = asn1p_paramlist_new(yylineno);
+		checkmem((yyval.a_plist));
+		ret = asn1p_paramlist_add_param((yyval.a_plist), (yyvsp[(1) - (1)].a_parg).governor, (yyvsp[(1) - (1)].a_parg).argument);
 		checkmem(ret == 0);
-		if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
-		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
+		if((yyvsp[(1) - (1)].a_parg).governor) asn1p_ref_free((yyvsp[(1) - (1)].a_parg).governor);
+		if((yyvsp[(1) - (1)].a_parg).argument) free((yyvsp[(1) - (1)].a_parg).argument);
 	}
     break;
 
   case 72:
-#line 855 "asn1p_y.y"
+#line 856 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_plist = yyvsp[-2].a_plist;
-		ret = asn1p_paramlist_add_param(yyval.a_plist, yyvsp[0].a_parg.governor, yyvsp[0].a_parg.argument);
+		(yyval.a_plist) = (yyvsp[(1) - (3)].a_plist);
+		ret = asn1p_paramlist_add_param((yyval.a_plist), (yyvsp[(3) - (3)].a_parg).governor, (yyvsp[(3) - (3)].a_parg).argument);
 		checkmem(ret == 0);
-		if(yyvsp[0].a_parg.governor) asn1p_ref_free(yyvsp[0].a_parg.governor);
-		if(yyvsp[0].a_parg.argument) free(yyvsp[0].a_parg.argument);
+		if((yyvsp[(3) - (3)].a_parg).governor) asn1p_ref_free((yyvsp[(3) - (3)].a_parg).governor);
+		if((yyvsp[(3) - (3)].a_parg).argument) free((yyvsp[(3) - (3)].a_parg).argument);
 	}
     break;
 
   case 73:
-#line 866 "asn1p_y.y"
+#line 867 "asn1p_y.y"
     {
-		yyval.a_parg.governor = NULL;
-		yyval.a_parg.argument = yyvsp[0].tv_str;
+		(yyval.a_parg).governor = NULL;
+		(yyval.a_parg).argument = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 74:
-#line 870 "asn1p_y.y"
+#line 871 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
+		(yyval.a_parg).governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_parg).governor, (yyvsp[(1) - (3)].tv_str), 0);
 		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
+		(yyval.a_parg).argument = (yyvsp[(3) - (3)].tv_str);
 	}
     break;
 
   case 75:
-#line 877 "asn1p_y.y"
+#line 878 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor, yyvsp[-2].tv_str, 0);
+		(yyval.a_parg).governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_parg).governor, (yyvsp[(1) - (3)].tv_str), 0);
 		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
+		(yyval.a_parg).argument = (yyvsp[(3) - (3)].tv_str);
 	}
     break;
 
   case 76:
-#line 884 "asn1p_y.y"
+#line 885 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor,
-			ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
+		(yyval.a_parg).governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_parg).governor,
+			ASN_EXPR_TYPE2STR((yyvsp[(1) - (3)].a_type)), 1);
 		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
+		(yyval.a_parg).argument = (yyvsp[(3) - (3)].tv_str);
 	}
     break;
 
   case 77:
-#line 892 "asn1p_y.y"
+#line 893 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_parg.governor = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_parg.governor,
-			ASN_EXPR_TYPE2STR(yyvsp[-2].a_type), 1);
+		(yyval.a_parg).governor = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_parg).governor,
+			ASN_EXPR_TYPE2STR((yyvsp[(1) - (3)].a_type)), 1);
 		checkmem(ret == 0);
-		yyval.a_parg.argument = yyvsp[0].tv_str;
+		(yyval.a_parg).argument = (yyvsp[(3) - (3)].tv_str);
 	}
     break;
 
   case 78:
-#line 903 "asn1p_y.y"
+#line 904 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 79:
-#line 908 "asn1p_y.y"
+#line 909 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
   case 80:
-#line 915 "asn1p_y.y"
+#line 916 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 81:
-#line 918 "asn1p_y.y"
+#line 919 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = "?";
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->value = yyvsp[0].a_value;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = "?";
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
+		(yyval.a_expr)->value = (yyvsp[(1) - (1)].a_value);
 	}
     break;
 
   case 82:
-#line 926 "asn1p_y.y"
+#line 927 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
-		yyval.a_expr->expr_type = A1TC_REFERENCE;
-		yyval.a_expr->meta_type = AMT_VALUE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (1)].tv_str);
+		(yyval.a_expr)->expr_type = A1TC_REFERENCE;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
 		ref = asn1p_ref_new(yylineno);
-		asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
-		yyval.a_expr->value = asn1p_value_fromref(ref, 0);
+		asn1p_ref_add_component(ref, (yyvsp[(1) - (1)].tv_str), RLT_lowercase);
+		(yyval.a_expr)->value = asn1p_value_fromref(ref, 0);
 	}
     break;
 
   case 83:
-#line 937 "asn1p_y.y"
+#line 938 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		yyval.a_expr->expr_type = A1TC_VALUESET;
-		yyval.a_expr->meta_type = AMT_VALUESET;
-		yyval.a_expr->constraints = yyvsp[0].a_constr;
+		(yyval.a_expr) = NEW_EXPR();
+		(yyval.a_expr)->expr_type = A1TC_VALUESET;
+		(yyval.a_expr)->meta_type = AMT_VALUESET;
+		(yyval.a_expr)->constraints = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 84:
-#line 960 "asn1p_y.y"
-    { yyval.a_expr = NEW_EXPR(); }
+#line 961 "asn1p_y.y"
+    { (yyval.a_expr) = NEW_EXPR(); }
     break;
 
   case 85:
-#line 961 "asn1p_y.y"
-    { yyval.a_expr = yyvsp[0].a_expr; }
+#line 962 "asn1p_y.y"
+    { (yyval.a_expr) = (yyvsp[(1) - (1)].a_expr); }
     break;
 
   case 86:
-#line 964 "asn1p_y.y"
+#line 965 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 87:
-#line 969 "asn1p_y.y"
+#line 970 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
   case 88:
-#line 976 "asn1p_y.y"
+#line 974 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
-		assert(yyval.a_expr->Identifier == 0);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+        (yyval.a_expr) = (yyvsp[(1) - (5)].a_expr);
+		asn1p_expr_add_many((yyval.a_expr), (yyvsp[(4) - (5)].a_expr));
 	}
     break;
 
   case 89:
-#line 983 "asn1p_y.y"
+#line 981 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
-		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
-		_fixup_anonymous_identifier(yyval.a_expr);
+		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
+		assert((yyval.a_expr)->Identifier == 0);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyvsp[(3) - (3)].a_marker).flags |= (yyval.a_expr)->marker.flags;
+		(yyval.a_expr)->marker = (yyvsp[(3) - (3)].a_marker);
 	}
     break;
 
   case 90:
-#line 989 "asn1p_y.y"
+#line 988 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->meta_type = yyvsp[0].a_expr->meta_type;
-		yyval.a_expr->expr_type = A1TC_COMPONENTS_OF;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = (yyvsp[(1) - (2)].a_expr);
+		(yyvsp[(2) - (2)].a_marker).flags |= (yyval.a_expr)->marker.flags;
+		(yyval.a_expr)->marker = (yyvsp[(2) - (2)].a_marker);
+		_fixup_anonymous_identifier((yyval.a_expr));
 	}
     break;
 
   case 91:
-#line 996 "asn1p_y.y"
+#line 994 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->meta_type = (yyvsp[(3) - (3)].a_expr)->meta_type;
+		(yyval.a_expr)->expr_type = A1TC_COMPONENTS_OF;
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
   case 92:
-#line 1002 "asn1p_y.y"
+#line 1001 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 93:
 #line 1007 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 94:
-#line 1014 "asn1p_y.y"
+#line 1012 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		assert(yyval.a_expr->Identifier == 0);
-		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
   case 95:
 #line 1019 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
+		(yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
+		assert((yyval.a_expr)->Identifier == 0);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (2)].tv_str);
 	}
     break;
 
   case 96:
-#line 1022 "asn1p_y.y"
+#line 1024 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		_fixup_anonymous_identifier(yyval.a_expr);
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 97:
-#line 1029 "asn1p_y.y"
+#line 1027 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		checkmem(yyval.a_expr);
-		yyval.a_expr->with_syntax = yyvsp[0].a_wsynt;
-		assert(yyval.a_expr->expr_type == A1TC_CLASSDEF);
-		assert(yyval.a_expr->meta_type == AMT_OBJECTCLASS);
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
+		_fixup_anonymous_identifier((yyval.a_expr));
 	}
     break;
 
   case 98:
-#line 1039 "asn1p_y.y"
-    { yyval.a_int = 0; }
+#line 1034 "asn1p_y.y"
+    {
+		(yyval.a_expr) = (yyvsp[(3) - (5)].a_expr);
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->with_syntax = (yyvsp[(5) - (5)].a_wsynt);
+		assert((yyval.a_expr)->expr_type == A1TC_CLASSDEF);
+		assert((yyval.a_expr)->meta_type == AMT_OBJECTCLASS);
+	}
     break;
 
   case 99:
-#line 1040 "asn1p_y.y"
-    { yyval.a_int = 1; }
+#line 1044 "asn1p_y.y"
+    { (yyval.a_int) = 0; }
     break;
 
   case 100:
-#line 1044 "asn1p_y.y"
-    {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_CLASSDEF;
-		yyval.a_expr->meta_type = AMT_OBJECTCLASS;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
-	}
+#line 1045 "asn1p_y.y"
+    { (yyval.a_int) = 1; }
     break;
 
   case 101:
-#line 1051 "asn1p_y.y"
+#line 1049 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = A1TC_CLASSDEF;
+		(yyval.a_expr)->meta_type = AMT_OBJECTCLASS;
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 102:
-#line 1061 "asn1p_y.y"
+#line 1056 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-1].tv_str;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_TFS;	/* TypeFieldSpec */
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
   case 103:
-#line 1071 "asn1p_y.y"
+#line 1066 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVFS;	/* FixedTypeValueFieldSpec */
-		yyval.a_expr->unique = yyvsp[-1].a_int;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
-		asn1p_expr_add(yyval.a_expr, yyvsp[-2].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (2)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_TFS;	/* TypeFieldSpec */
+		(yyval.a_expr)->marker = (yyvsp[(2) - (2)].a_marker);
 	}
     break;
 
   case 104:
-#line 1082 "asn1p_y.y"
+#line 1076 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVFS;
-		yyval.a_expr->reference = yyvsp[-1].a_ref;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+		(yyval.a_expr) = NEW_EXPR();
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_FTVFS;	/* FixedTypeValueFieldSpec */
+		(yyval.a_expr)->unique = (yyvsp[(3) - (4)].a_int);
+		(yyval.a_expr)->marker = (yyvsp[(4) - (4)].a_marker);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(2) - (4)].a_expr));
 	}
     break;
 
   case 105:
-#line 1092 "asn1p_y.y"
+#line 1087 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->reference = yyvsp[-1].a_ref;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_OFS;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+		(yyval.a_expr) = NEW_EXPR();
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_VTVFS;
+		(yyval.a_expr)->reference = (yyvsp[(2) - (3)].a_ref);
+		(yyval.a_expr)->marker = (yyvsp[(3) - (3)].a_marker);
 	}
     break;
 
   case 106:
-#line 1103 "asn1p_y.y"
+#line 1097 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_VTVSFS;
-		yyval.a_expr->reference = yyvsp[-1].a_ref;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->reference = (yyvsp[(2) - (3)].a_ref);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_OFS;
+		(yyval.a_expr)->marker = (yyvsp[(3) - (3)].a_marker);
 	}
     break;
 
   case 107:
-#line 1113 "asn1p_y.y"
+#line 1108 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_FTVSFS;
-		asn1p_expr_add(yyval.a_expr, yyvsp[-1].a_expr);
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+		(yyval.a_expr) = NEW_EXPR();
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_VTVSFS;
+		(yyval.a_expr)->reference = (yyvsp[(2) - (3)].a_ref);
+		(yyval.a_expr)->marker = (yyvsp[(3) - (3)].a_marker);
 	}
     break;
 
   case 108:
-#line 1124 "asn1p_y.y"
+#line 1118 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
-		yyval.a_expr->reference = yyvsp[-1].a_ref;
-		yyval.a_expr->meta_type = AMT_OBJECTFIELD;
-		yyval.a_expr->expr_type = A1TC_CLASSFIELD_OSFS;
-		yyval.a_expr->marker = yyvsp[0].a_marker;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_FTVSFS;
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(2) - (3)].a_expr));
+		(yyval.a_expr)->marker = (yyvsp[(3) - (3)].a_marker);
 	}
     break;
 
   case 109:
-#line 1136 "asn1p_y.y"
-    { yyval.a_wsynt = 0; }
+#line 1129 "asn1p_y.y"
+    {
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_expr)->reference = (yyvsp[(2) - (3)].a_ref);
+		(yyval.a_expr)->meta_type = AMT_OBJECTFIELD;
+		(yyval.a_expr)->expr_type = A1TC_CLASSFIELD_OSFS;
+		(yyval.a_expr)->marker = (yyvsp[(3) - (3)].a_marker);
+	}
     break;
 
   case 110:
-#line 1137 "asn1p_y.y"
-    {
-		yyval.a_wsynt = yyvsp[0].a_wsynt;
-	}
+#line 1141 "asn1p_y.y"
+    { (yyval.a_wsynt) = 0; }
     break;
 
   case 111:
-#line 1144 "asn1p_y.y"
-    { asn1p_lexer_hack_enable_with_syntax(); }
+#line 1142 "asn1p_y.y"
+    {
+		(yyval.a_wsynt) = (yyvsp[(1) - (1)].a_wsynt);
+	}
     break;
 
   case 112:
-#line 1146 "asn1p_y.y"
-    {
-		yyval.a_wsynt = yyvsp[-1].a_wsynt;
-	}
+#line 1149 "asn1p_y.y"
+    { asn1p_lexer_hack_enable_with_syntax(); }
     break;
 
   case 113:
-#line 1152 "asn1p_y.y"
+#line 1151 "asn1p_y.y"
     {
-		yyval.a_wsynt = asn1p_wsyntx_new();
-		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
+		(yyval.a_wsynt) = (yyvsp[(5) - (6)].a_wsynt);
 	}
     break;
 
   case 114:
-#line 1156 "asn1p_y.y"
+#line 1157 "asn1p_y.y"
     {
-		yyval.a_wsynt = yyvsp[-1].a_wsynt;
-		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
+		(yyval.a_wsynt) = asn1p_wsyntx_new();
+		TQ_ADD(&((yyval.a_wsynt)->chunks), (yyvsp[(1) - (1)].a_wchunk), next);
 	}
     break;
 
   case 115:
-#line 1163 "asn1p_y.y"
+#line 1161 "asn1p_y.y"
     {
-		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
-		yyval.a_wchunk->type = WC_WHITESPACE;
+		(yyval.a_wsynt) = (yyvsp[(1) - (2)].a_wsynt);
+		TQ_ADD(&((yyval.a_wsynt)->chunks), (yyvsp[(2) - (2)].a_wchunk), next);
 	}
     break;
 
   case 116:
-#line 1167 "asn1p_y.y"
+#line 1168 "asn1p_y.y"
     {
-		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
+		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].tv_opaque).buf, 0);
+		(yyval.a_wchunk)->type = WC_WHITESPACE;
 	}
     break;
 
   case 117:
-#line 1170 "asn1p_y.y"
+#line 1172 "asn1p_y.y"
     {
-		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
-		yyval.a_wchunk->type = WC_FIELD;
+		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].tv_str), 0);
 	}
     break;
 
   case 118:
-#line 1174 "asn1p_y.y"
+#line 1175 "asn1p_y.y"
     {
-		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
+		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].a_refcomp).name, 0);
+		(yyval.a_wchunk)->type = WC_FIELD;
 	}
     break;
 
   case 119:
-#line 1180 "asn1p_y.y"
+#line 1179 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromsyntax((yyvsp[(2) - (3)].a_wsynt));
 	}
     break;
 
   case 120:
-#line 1188 "asn1p_y.y"
+#line 1185 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->value = yyvsp[0].a_value;
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = strdup("...");
+		checkmem((yyval.a_expr)->Identifier);
+		(yyval.a_expr)->expr_type = A1TC_EXTENSIBLE;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 121:
-#line 1197 "asn1p_y.y"
+#line 1193 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		yyval.a_expr->value = yyvsp[0].a_value;
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = strdup("...");
+		checkmem((yyval.a_expr)->Identifier);
+		(yyval.a_expr)->value = (yyvsp[(3) - (3)].a_value);
+		(yyval.a_expr)->expr_type = A1TC_EXTENSIBLE;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 122:
-#line 1209 "asn1p_y.y"
+#line 1202 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
-		yyval.a_expr->tag = yyvsp[-2].a_tag;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = strdup("...");
+		(yyval.a_expr)->value = (yyvsp[(3) - (3)].a_value);
+		checkmem((yyval.a_expr)->Identifier);
+		(yyval.a_expr)->expr_type = A1TC_EXTENSIBLE;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
+	}
+    break;
+
+  case 123:
+#line 1214 "asn1p_y.y"
+    {
+		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
+		(yyval.a_expr)->tag = (yyvsp[(1) - (3)].a_tag);
 		/*
 		 * Outer constraint for SEQUENCE OF and SET OF applies
 		 * to the inner type.
 		 */
-		if(yyval.a_expr->expr_type == ASN_CONSTR_SEQUENCE_OF
-		|| yyval.a_expr->expr_type == ASN_CONSTR_SET_OF) {
-			assert(!TQ_FIRST(&(yyval.a_expr->members))->constraints);
-			TQ_FIRST(&(yyval.a_expr->members))->constraints = yyvsp[0].a_constr;
+		if((yyval.a_expr)->expr_type == ASN_CONSTR_SEQUENCE_OF
+		|| (yyval.a_expr)->expr_type == ASN_CONSTR_SET_OF) {
+			assert(!TQ_FIRST(&((yyval.a_expr)->members))->constraints);
+			TQ_FIRST(&((yyval.a_expr)->members))->constraints = (yyvsp[(3) - (3)].a_constr);
 		} else {
-			if(yyval.a_expr->constraints) {
-				assert(!yyvsp[-1].a_expr);
+			if((yyval.a_expr)->constraints) {
+				assert(!(yyvsp[(2) - (3)].a_expr));
 			} else {
-				yyval.a_expr->constraints = yyvsp[0].a_constr;
+				(yyval.a_expr)->constraints = (yyvsp[(3) - (3)].a_constr);
 			}
 		}
 	}
     break;
 
-  case 123:
-#line 1231 "asn1p_y.y"
+  case 124:
+#line 1236 "asn1p_y.y"
     {
-		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
+		(yyval.a_int) = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
 	}
     break;
 
-  case 124:
-#line 1238 "asn1p_y.y"
+  case 125:
+#line 1243 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[0].a_expr;
-		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
+		(yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
+		(yyval.a_expr)->marker.flags |= (yyvsp[(1) - (2)].a_int);
 
-		if((yyval.a_expr->marker.flags & EM_INDIRECT)
-		&& (yyval.a_expr->marker.flags & EM_OPTIONAL) != EM_OPTIONAL) {
+		if(((yyval.a_expr)->marker.flags & EM_INDIRECT)
+		&& ((yyval.a_expr)->marker.flags & EM_OPTIONAL) != EM_OPTIONAL) {
 			fprintf(stderr,
 				"INFO: Directive <ASN1C:RepresentAsPointer> "
 				"applied to %s at line %d\n",
-				ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
-					?  ASN_EXPR_TYPE2STR(yyval.a_expr->expr_type)
+				ASN_EXPR_TYPE2STR((yyval.a_expr)->expr_type)
+					?  ASN_EXPR_TYPE2STR((yyval.a_expr)->expr_type)
 					: "member",
-				yyval.a_expr->_lineno
+				(yyval.a_expr)->_lineno
 			);
 		}
 	}
     break;
 
-  case 125:
-#line 1257 "asn1p_y.y"
-    {
-		yyval.a_expr = yyvsp[0].a_expr;
-	}
-    break;
-
   case 126:
-#line 1260 "asn1p_y.y"
+#line 1262 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
-		assert(yyval.a_expr->expr_type == A1TC_INVALID);
-		yyval.a_expr->expr_type = ASN_CONSTR_CHOICE;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 127:
-#line 1266 "asn1p_y.y"
+#line 1265 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
-		assert(yyval.a_expr->expr_type == A1TC_INVALID);
-		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
+		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
+		(yyval.a_expr)->expr_type = ASN_CONSTR_CHOICE;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 128:
-#line 1272 "asn1p_y.y"
+#line 1271 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
-		assert(yyval.a_expr->expr_type == A1TC_INVALID);
-		yyval.a_expr->expr_type = ASN_CONSTR_SET;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
+		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
+		(yyval.a_expr)->expr_type = ASN_CONSTR_SEQUENCE;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 129:
-#line 1278 "asn1p_y.y"
+#line 1277 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->constraints = yyvsp[-4].a_constr;
-		yyval.a_expr->expr_type = ASN_CONSTR_SEQUENCE_OF;
-		yyval.a_expr->meta_type = AMT_TYPE;
-		yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
-		yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
+		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
+		(yyval.a_expr)->expr_type = ASN_CONSTR_SET;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 130:
-#line 1288 "asn1p_y.y"
+#line 1283 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->constraints = yyvsp[-4].a_constr;
-		yyval.a_expr->expr_type = ASN_CONSTR_SET_OF;
-		yyval.a_expr->meta_type = AMT_TYPE;
-		yyvsp[0].a_expr->Identifier = yyvsp[-2].tv_str;
-		yyvsp[0].a_expr->tag = yyvsp[-1].a_tag;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->constraints = (yyvsp[(2) - (6)].a_constr);
+		(yyval.a_expr)->expr_type = ASN_CONSTR_SEQUENCE_OF;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
+		(yyvsp[(6) - (6)].a_expr)->Identifier = (yyvsp[(4) - (6)].tv_str);
+		(yyvsp[(6) - (6)].a_expr)->tag = (yyvsp[(5) - (6)].a_tag);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(6) - (6)].a_expr));
 	}
     break;
 
   case 131:
-#line 1298 "asn1p_y.y"
+#line 1293 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = ASN_TYPE_ANY;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->constraints = (yyvsp[(2) - (6)].a_constr);
+		(yyval.a_expr)->expr_type = ASN_CONSTR_SET_OF;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
+		(yyvsp[(6) - (6)].a_expr)->Identifier = (yyvsp[(4) - (6)].tv_str);
+		(yyvsp[(6) - (6)].a_expr)->tag = (yyvsp[(5) - (6)].a_tag);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(6) - (6)].a_expr));
 	}
     break;
 
   case 132:
-#line 1304 "asn1p_y.y"
+#line 1303 "asn1p_y.y"
     {
-		int ret;
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->reference = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_expr->reference,
-			yyvsp[0].tv_str, RLT_lowercase);
-		checkmem(ret == 0);
-		yyval.a_expr->expr_type = ASN_TYPE_ANY;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = ASN_TYPE_ANY;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 133:
-#line 1315 "asn1p_y.y"
+#line 1309 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->reference = yyvsp[0].a_ref;
-		yyval.a_expr->expr_type = A1TC_INSTANCE;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		int ret;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->reference = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_expr)->reference,
+			(yyvsp[(4) - (4)].tv_str), RLT_lowercase);
+		checkmem(ret == 0);
+		(yyval.a_expr)->expr_type = ASN_TYPE_ANY;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 134:
-#line 1330 "asn1p_y.y"
+#line 1320 "asn1p_y.y"
     {
-		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		free(yyvsp[0].tv_str);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->reference = (yyvsp[(3) - (3)].a_ref);
+		(yyval.a_expr)->expr_type = A1TC_INSTANCE;
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
   case 135:
-#line 1338 "asn1p_y.y"
+#line 1335 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		checkmem((yyval.a_ref));
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_UNKNOWN);
 		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		free(yyvsp[-2].tv_str);
+		free((yyvsp[(1) - (1)].tv_str));
 	}
     break;
 
   case 136:
-#line 1348 "asn1p_y.y"
+#line 1343 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		checkmem((yyval.a_ref));
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (3)].tv_str), RLT_UNKNOWN);
 		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_UNKNOWN);
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_UNKNOWN);
 		checkmem(ret == 0);
-		free(yyvsp[-2].tv_str);
+		free((yyvsp[(1) - (3)].tv_str));
 	}
     break;
 
   case 137:
-#line 1358 "asn1p_y.y"
+#line 1353 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		checkmem((yyval.a_ref));
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (3)].tv_str), RLT_UNKNOWN);
 		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_lowercase);
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_UNKNOWN);
 		checkmem(ret == 0);
-		free(yyvsp[-2].tv_str);
+		free((yyvsp[(1) - (3)].tv_str));
 	}
     break;
 
   case 138:
-#line 1368 "asn1p_y.y"
+#line 1363 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
-		free(yyvsp[0].tv_str);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		checkmem((yyval.a_ref));
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (3)].tv_str), RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_lowercase);
 		checkmem(ret == 0);
+		free((yyvsp[(1) - (3)].tv_str));
 	}
     break;
 
   case 139:
-#line 1376 "asn1p_y.y"
+#line 1373 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = yyvsp[0].a_ref;
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[-2].tv_str, RLT_CAPITALS);
-		free(yyvsp[-2].tv_str);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		checkmem((yyval.a_ref));
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_CAPITALS);
+		free((yyvsp[(1) - (1)].tv_str));
 		checkmem(ret == 0);
-		/*
-		 * Move the last element infront.
-		 */
-		{
-			struct asn1p_ref_component_s tmp_comp;
-			tmp_comp = yyval.a_ref->components[yyval.a_ref->comp_count-1];
-			memmove(&yyval.a_ref->components[1],
-				&yyval.a_ref->components[0],
-				sizeof(yyval.a_ref->components[0])
-				* (yyval.a_ref->comp_count - 1));
-			yyval.a_ref->components[0] = tmp_comp;
-		}
 	}
     break;
 
   case 140:
-#line 1398 "asn1p_y.y"
+#line 1381 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		checkmem(yyval.a_ref);
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
-		free(yyvsp[0].a_refcomp.name);
+		(yyval.a_ref) = (yyvsp[(3) - (3)].a_ref);
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (3)].tv_str), RLT_CAPITALS);
+		free((yyvsp[(1) - (3)].tv_str));
 		checkmem(ret == 0);
+		/*
+		 * Move the last element infront.
+		 */
+		{
+			struct asn1p_ref_component_s tmp_comp;
+			tmp_comp = (yyval.a_ref)->components[(yyval.a_ref)->comp_count-1];
+			memmove(&(yyval.a_ref)->components[1],
+				&(yyval.a_ref)->components[0],
+				sizeof((yyval.a_ref)->components[0])
+				* ((yyval.a_ref)->comp_count - 1));
+			(yyval.a_ref)->components[0] = tmp_comp;
+		}
 	}
     break;
 
   case 141:
-#line 1406 "asn1p_y.y"
+#line 1403 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_ref = yyvsp[-2].a_ref;
-		ret = asn1p_ref_add_component(yyval.a_ref, yyvsp[0].a_refcomp.name, yyvsp[0].a_refcomp.lex_type);
-		free(yyvsp[0].a_refcomp.name);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		checkmem((yyval.a_ref));
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].a_refcomp).name, (yyvsp[(1) - (1)].a_refcomp).lex_type);
+		free((yyvsp[(1) - (1)].a_refcomp).name);
 		checkmem(ret == 0);
 	}
     break;
 
-  case 143:
-#line 1419 "asn1p_y.y"
+  case 142:
+#line 1411 "asn1p_y.y"
     {
-		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
-		yyval.a_refcomp.name = yyvsp[0].tv_str;
+		int ret;
+		(yyval.a_ref) = (yyvsp[(1) - (3)].a_ref);
+		ret = asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].a_refcomp).name, (yyvsp[(3) - (3)].a_refcomp).lex_type);
+		free((yyvsp[(3) - (3)].a_refcomp).name);
+		checkmem(ret == 0);
 	}
     break;
 
   case 144:
 #line 1424 "asn1p_y.y"
     {
-		yyval.a_refcomp.lex_type = RLT_Amplowercase;
-		yyval.a_refcomp.name = yyvsp[0].tv_str;
+		(yyval.a_refcomp).lex_type = RLT_AmpUppercase;
+		(yyval.a_refcomp).name = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 145:
-#line 1433 "asn1p_y.y"
+#line 1429 "asn1p_y.y"
     {
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
+		(yyval.a_refcomp).lex_type = RLT_Amplowercase;
+		(yyval.a_refcomp).name = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 146:
-#line 1437 "asn1p_y.y"
+#line 1438 "asn1p_y.y"
     {
-		yyval.a_ref = yyval.a_ref;
-		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_AmpUppercase);
 	}
     break;
 
   case 147:
-#line 1441 "asn1p_y.y"
+#line 1442 "asn1p_y.y"
     {
-		yyval.a_ref = yyval.a_ref;
-		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
+		(yyval.a_ref) = (yyval.a_ref);
+		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_AmpUppercase);
 	}
     break;
 
   case 148:
-#line 1448 "asn1p_y.y"
+#line 1446 "asn1p_y.y"
     {
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
+		(yyval.a_ref) = (yyval.a_ref);
+		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_Amplowercase);
 	}
     break;
 
   case 149:
-#line 1468 "asn1p_y.y"
+#line 1453 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		assert(yyval.a_expr->Identifier == NULL);
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->value = yyvsp[0].a_value;
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_CAPITALS);
 	}
     break;
 
-  case 152:
-#line 1480 "asn1p_y.y"
+  case 150:
+#line 1473 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(0);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_CHOICE_IDENTIFIER;
-		yyval.a_value->value.choice_identifier.identifier = yyvsp[-2].tv_str;
-		yyval.a_value->value.choice_identifier.value = yyvsp[0].a_value;
+		(yyval.a_expr) = (yyvsp[(2) - (4)].a_expr);
+		assert((yyval.a_expr)->Identifier == NULL);
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
+		(yyval.a_expr)->meta_type = AMT_VALUE;
+		(yyval.a_expr)->value = (yyvsp[(4) - (4)].a_value);
 	}
     break;
 
   case 153:
-#line 1487 "asn1p_y.y"
-    { asn1p_lexer_hack_push_opaque_state(); }
+#line 1485 "asn1p_y.y"
+    {
+		(yyval.a_value) = asn1p_value_fromint(0);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_CHOICE_IDENTIFIER;
+		(yyval.a_value)->value.choice_identifier.identifier = (yyvsp[(1) - (3)].tv_str);
+		(yyval.a_value)->value.choice_identifier.value = (yyvsp[(3) - (3)].a_value);
+	}
     break;
 
   case 154:
-#line 1487 "asn1p_y.y"
-    {
-		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_UNPARSED;
-	}
+#line 1492 "asn1p_y.y"
+    { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 155:
 #line 1492 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(0);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_NULL;
+		(yyval.a_value) = asn1p_value_frombuf((yyvsp[(3) - (3)].tv_opaque).buf, (yyvsp[(3) - (3)].tv_opaque).len, 0);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_UNPARSED;
 	}
     break;
 
   case 156:
-#line 1500 "asn1p_y.y"
+#line 1497 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(0);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_FALSE;
+		(yyval.a_value) = asn1p_value_fromint(0);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_NULL;
 	}
     break;
 
   case 157:
 #line 1505 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(0);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_TRUE;
+		(yyval.a_value) = asn1p_value_fromint(0);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_FALSE;
 	}
     break;
 
   case 158:
 #line 1510 "asn1p_y.y"
     {
-		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
-		checkmem(yyval.a_value);
+		(yyval.a_value) = asn1p_value_fromint(0);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_TRUE;
 	}
     break;
 
   case 159:
-#line 1514 "asn1p_y.y"
+#line 1515 "asn1p_y.y"
     {
-		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
-		checkmem(yyval.a_value);
+		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'B');
+		checkmem((yyval.a_value));
 	}
     break;
 
   case 160:
-#line 1518 "asn1p_y.y"
+#line 1519 "asn1p_y.y"
     {
-		yyval.a_value = yyval.a_value;
+		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'H');
+		checkmem((yyval.a_value));
 	}
     break;
 
   case 161:
-#line 1521 "asn1p_y.y"
+#line 1523 "asn1p_y.y"
     {
-		yyval.a_value = yyvsp[0].a_value;
+		(yyval.a_value) = (yyval.a_value);
 	}
     break;
 
   case 162:
-#line 1527 "asn1p_y.y"
+#line 1526 "asn1p_y.y"
     {
-		asn1p_ref_t *ref;
-		int ret;
-		ref = asn1p_ref_new(yylineno);
-		checkmem(ref);
-		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
-		checkmem(ret == 0);
-		yyval.a_value = asn1p_value_fromref(ref, 0);
-		checkmem(yyval.a_value);
-		free(yyvsp[0].tv_str);
+		(yyval.a_value) = (yyvsp[(1) - (1)].a_value);
 	}
     break;
 
   case 163:
-#line 1538 "asn1p_y.y"
+#line 1532 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
 		checkmem(ref);
-		ret = asn1p_ref_add_component(ref, yyvsp[-2].tv_str, RLT_UNKNOWN);
-		checkmem(ret == 0);
-		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
+		ret = asn1p_ref_add_component(ref, (yyvsp[(1) - (1)].tv_str), RLT_lowercase);
 		checkmem(ret == 0);
-		yyval.a_value = asn1p_value_fromref(ref, 0);
-		checkmem(yyval.a_value);
-		free(yyvsp[-2].tv_str);
-		free(yyvsp[0].tv_str);
+		(yyval.a_value) = asn1p_value_fromref(ref, 0);
+		checkmem((yyval.a_value));
+		free((yyvsp[(1) - (1)].tv_str));
 	}
     break;
 
   case 164:
-#line 1556 "asn1p_y.y"
+#line 1543 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
-		checkmem(yyval.a_value);
+		asn1p_ref_t *ref;
+		int ret;
+		ref = asn1p_ref_new(yylineno);
+		checkmem(ref);
+		ret = asn1p_ref_add_component(ref, (yyvsp[(1) - (3)].tv_str), RLT_UNKNOWN);
+		checkmem(ret == 0);
+		ret = asn1p_ref_add_component(ref, (yyvsp[(3) - (3)].tv_str), RLT_lowercase);
+		checkmem(ret == 0);
+		(yyval.a_value) = asn1p_value_fromref(ref, 0);
+		checkmem((yyval.a_value));
+		free((yyvsp[(1) - (3)].tv_str));
+		free((yyvsp[(3) - (3)].tv_str));
 	}
     break;
 
   case 165:
-#line 1560 "asn1p_y.y"
+#line 1561 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_TUPLE;
+		(yyval.a_value) = asn1p_value_frombuf((yyvsp[(1) - (1)].tv_opaque).buf, (yyvsp[(1) - (1)].tv_opaque).len, 0);
+		checkmem((yyval.a_value));
 	}
     break;
 
   case 166:
 #line 1565 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_QUADRUPLE;
+		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_TUPLE;
 	}
     break;
 
   case 167:
-#line 1573 "asn1p_y.y"
+#line 1570 "asn1p_y.y"
     {
-		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
-		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
-		checkmem(yyval.tv_opaque.buf);
-		yyval.tv_opaque.buf[0] = '{';
-		memcpy(yyval.tv_opaque.buf + 1, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
-		yyval.tv_opaque.buf[yyval.tv_opaque.len] = '\0';
-		free(yyvsp[0].tv_opaque.buf);
+		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_QUADRUPLE;
 	}
     break;
 
   case 168:
-#line 1582 "asn1p_y.y"
+#line 1578 "asn1p_y.y"
     {
-		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
-		char *p = malloc(newsize + 1);
-		checkmem(p);
-		memcpy(p         , yyvsp[-1].tv_opaque.buf, yyvsp[-1].tv_opaque.len);
-		memcpy(p + yyvsp[-1].tv_opaque.len, yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len);
-		p[newsize] = '\0';
-		free(yyvsp[-1].tv_opaque.buf);
-		free(yyvsp[0].tv_opaque.buf);
-		yyval.tv_opaque.buf = p;
-		yyval.tv_opaque.len = newsize;
+		(yyval.tv_opaque).len = (yyvsp[(1) - (1)].tv_opaque).len + 1;
+		(yyval.tv_opaque).buf = malloc((yyval.tv_opaque).len + 1);
+		checkmem((yyval.tv_opaque).buf);
+		(yyval.tv_opaque).buf[0] = '{';
+		memcpy((yyval.tv_opaque).buf + 1, (yyvsp[(1) - (1)].tv_opaque).buf, (yyvsp[(1) - (1)].tv_opaque).len);
+		(yyval.tv_opaque).buf[(yyval.tv_opaque).len] = '\0';
+		free((yyvsp[(1) - (1)].tv_opaque).buf);
 	}
     break;
 
   case 169:
-#line 1597 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_BOOLEAN; }
+#line 1587 "asn1p_y.y"
+    {
+		int newsize = (yyvsp[(1) - (2)].tv_opaque).len + (yyvsp[(2) - (2)].tv_opaque).len;
+		char *p = malloc(newsize + 1);
+		checkmem(p);
+		memcpy(p         , (yyvsp[(1) - (2)].tv_opaque).buf, (yyvsp[(1) - (2)].tv_opaque).len);
+		memcpy(p + (yyvsp[(1) - (2)].tv_opaque).len, (yyvsp[(2) - (2)].tv_opaque).buf, (yyvsp[(2) - (2)].tv_opaque).len);
+		p[newsize] = '\0';
+		free((yyvsp[(1) - (2)].tv_opaque).buf);
+		free((yyvsp[(2) - (2)].tv_opaque).buf);
+		(yyval.tv_opaque).buf = p;
+		(yyval.tv_opaque).len = newsize;
+	}
     break;
 
   case 170:
-#line 1598 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_NULL; }
+#line 1602 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_BOOLEAN; }
     break;
 
   case 171:
-#line 1599 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_REAL; }
+#line 1603 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_NULL; }
     break;
 
   case 172:
-#line 1600 "asn1p_y.y"
-    { yyval.a_type = yyvsp[0].a_type; }
+#line 1604 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_REAL; }
     break;
 
   case 173:
-#line 1601 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_OCTET_STRING; }
+#line 1605 "asn1p_y.y"
+    { (yyval.a_type) = (yyvsp[(1) - (1)].a_type); }
     break;
 
   case 174:
-#line 1602 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
+#line 1606 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_OCTET_STRING; }
     break;
 
   case 175:
-#line 1603 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
+#line 1607 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_OBJECT_IDENTIFIER; }
     break;
 
   case 176:
-#line 1604 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_EXTERNAL; }
+#line 1608 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_RELATIVE_OID; }
     break;
 
   case 177:
-#line 1605 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
+#line 1609 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_EXTERNAL; }
     break;
 
   case 178:
-#line 1606 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
+#line 1610 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_EMBEDDED_PDV; }
     break;
 
   case 179:
-#line 1607 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_UTCTime; }
+#line 1611 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_CHARACTER_STRING; }
     break;
 
   case 180:
-#line 1608 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_GeneralizedTime; }
+#line 1612 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_UTCTime; }
     break;
 
   case 181:
-#line 1609 "asn1p_y.y"
-    { yyval.a_type = yyvsp[0].a_type; }
+#line 1613 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_GeneralizedTime; }
     break;
 
   case 182:
-#line 1616 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_INTEGER; }
+#line 1614 "asn1p_y.y"
+    { (yyval.a_type) = (yyvsp[(1) - (1)].a_type); }
     break;
 
   case 183:
-#line 1617 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_ENUMERATED; }
+#line 1621 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_INTEGER; }
     break;
 
   case 184:
-#line 1618 "asn1p_y.y"
-    { yyval.a_type = ASN_BASIC_BIT_STRING; }
+#line 1622 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_ENUMERATED; }
     break;
 
   case 185:
-#line 1622 "asn1p_y.y"
+#line 1623 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_BIT_STRING; }
+    break;
+
+  case 186:
+#line 1627 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = yyvsp[0].a_type;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = (yyvsp[(1) - (1)].a_type);
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
-  case 186:
-#line 1628 "asn1p_y.y"
+  case 187:
+#line 1633 "asn1p_y.y"
     {
-		if(yyvsp[0].a_expr) {
-			yyval.a_expr = yyvsp[0].a_expr;
+		if((yyvsp[(2) - (2)].a_expr)) {
+			(yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
 		} else {
-			yyval.a_expr = NEW_EXPR();
-			checkmem(yyval.a_expr);
+			(yyval.a_expr) = NEW_EXPR();
+			checkmem((yyval.a_expr));
 		}
-		yyval.a_expr->expr_type = yyvsp[-1].a_type;
-		yyval.a_expr->meta_type = AMT_TYPE;
+		(yyval.a_expr)->expr_type = (yyvsp[(1) - (2)].a_type);
+		(yyval.a_expr)->meta_type = AMT_TYPE;
 	}
     break;
 
-  case 187:
-#line 1641 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_BMPString; }
+  case 188:
+#line 1646 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_BMPString; }
     break;
 
-  case 188:
-#line 1642 "asn1p_y.y"
+  case 189:
+#line 1647 "asn1p_y.y"
     {
-		yyval.a_type = ASN_STRING_GeneralString;
+		(yyval.a_type) = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	}
     break;
 
-  case 189:
-#line 1646 "asn1p_y.y"
+  case 190:
+#line 1651 "asn1p_y.y"
     {
-		yyval.a_type = ASN_STRING_GraphicString;
+		(yyval.a_type) = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	}
     break;
 
-  case 190:
-#line 1650 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_IA5String; }
-    break;
-
   case 191:
-#line 1651 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_ISO646String; }
+#line 1655 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_IA5String; }
     break;
 
   case 192:
-#line 1652 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_NumericString; }
+#line 1656 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_ISO646String; }
     break;
 
   case 193:
-#line 1653 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_PrintableString; }
+#line 1657 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_NumericString; }
     break;
 
   case 194:
-#line 1654 "asn1p_y.y"
-    {
-		yyval.a_type = ASN_STRING_T61String;
-		fprintf(stderr, "WARNING: T61String is not fully supported\n");
-	}
+#line 1658 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_PrintableString; }
     break;
 
   case 195:
-#line 1658 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_TeletexString; }
+#line 1659 "asn1p_y.y"
+    {
+		(yyval.a_type) = ASN_STRING_T61String;
+		fprintf(stderr, "WARNING: T61String is not fully supported\n");
+	}
     break;
 
   case 196:
-#line 1659 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_UniversalString; }
+#line 1663 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_TeletexString; }
     break;
 
   case 197:
-#line 1660 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_UTF8String; }
+#line 1664 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_UniversalString; }
     break;
 
   case 198:
-#line 1661 "asn1p_y.y"
-    {
-		yyval.a_type = ASN_STRING_VideotexString;
-		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
-	}
+#line 1665 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_UTF8String; }
     break;
 
   case 199:
-#line 1665 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_VisibleString; }
+#line 1666 "asn1p_y.y"
+    {
+		(yyval.a_type) = ASN_STRING_VideotexString;
+		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
+	}
     break;
 
   case 200:
-#line 1666 "asn1p_y.y"
-    { yyval.a_type = ASN_STRING_ObjectDescriptor; }
+#line 1670 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_VisibleString; }
     break;
 
-  case 205:
-#line 1677 "asn1p_y.y"
-    { yyval.a_constr = 0; }
+  case 201:
+#line 1671 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_ObjectDescriptor; }
     break;
 
   case 206:
-#line 1678 "asn1p_y.y"
-    {
-		yyval.a_constr = yyvsp[0].a_constr;
-	}
+#line 1682 "asn1p_y.y"
+    { (yyval.a_constr) = 0; }
     break;
 
-  case 208:
-#line 1688 "asn1p_y.y"
+  case 207:
+#line 1683 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 209:
-#line 1691 "asn1p_y.y"
+#line 1693 "asn1p_y.y"
     {
-		/*
-		 * This is a special case, for compatibility purposes.
-		 * It goes without parentheses.
-		 */
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_SIZE, yyvsp[-1].a_constr, 0);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_SET, (yyvsp[(1) - (1)].a_constr), 0);
 	}
     break;
 
   case 210:
-#line 1701 "asn1p_y.y"
+#line 1696 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[-1].a_constr;
+		/*
+		 * This is a special case, for compatibility purposes.
+		 * It goes without parentheses.
+		 */
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_SIZE, (yyvsp[(3) - (4)].a_constr), 0);
 	}
     break;
 
   case 211:
-#line 1704 "asn1p_y.y"
+#line 1706 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
+		(yyval.a_constr) = (yyvsp[(2) - (3)].a_constr);
 	}
     break;
 
   case 212:
-#line 1710 "asn1p_y.y"
+#line 1709 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		yyval.a_constr->type = ACT_EL_EXT;
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_SET, (yyvsp[(1) - (4)].a_constr), (yyvsp[(3) - (4)].a_constr));
 	}
     break;
 
   case 213:
-#line 1714 "asn1p_y.y"
+#line 1715 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[0].a_constr;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		(yyval.a_constr)->type = ACT_EL_EXT;
 	}
     break;
 
   case 214:
-#line 1717 "asn1p_y.y"
+#line 1719 "asn1p_y.y"
     {
-		asn1p_constraint_t *ct;
-		ct = asn1p_constraint_new(yylineno);
-		ct->type = ACT_EL_EXT;
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 215:
-#line 1723 "asn1p_y.y"
+#line 1722 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
 		ct->type = ACT_EL_EXT;
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-4].a_constr, ct);
-		ct = yyval.a_constr;
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, ct, yyvsp[0].a_constr);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CSV, (yyvsp[(1) - (3)].a_constr), ct);
 	}
     break;
 
   case 216:
-#line 1731 "asn1p_y.y"
+#line 1728 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[0].a_constr;
+		asn1p_constraint_t *ct;
+		ct = asn1p_constraint_new(yylineno);
+		ct->type = ACT_EL_EXT;
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CSV, (yyvsp[(1) - (5)].a_constr), ct);
+		ct = (yyval.a_constr);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CSV, ct, (yyvsp[(5) - (5)].a_constr));
 	}
     break;
 
-  case 218:
-#line 1738 "asn1p_y.y"
+  case 217:
+#line 1736 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
-  case 220:
-#line 1745 "asn1p_y.y"
+  case 219:
+#line 1743 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_AEX, (yyvsp[(3) - (3)].a_constr), 0);
 	}
     break;
 
-  case 222:
-#line 1752 "asn1p_y.y"
+  case 221:
+#line 1750 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_UNI, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
-  case 224:
-#line 1760 "asn1p_y.y"
+  case 223:
+#line 1757 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_INT, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
   case 225:
-#line 1766 "asn1p_y.y"
+#line 1765 "asn1p_y.y"
     {
-		int ret;
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-3].a_ctype;
-		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
-		checkmem(ret == 0);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_EXC, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
   case 226:
-#line 1774 "asn1p_y.y"
+#line 1771 "asn1p_y.y"
     {
 		int ret;
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_CA_SET;
-		ret = asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = (yyvsp[(1) - (4)].a_ctype);
+		ret = asn1p_constraint_insert((yyval.a_constr), (yyvsp[(3) - (4)].a_constr));
 		checkmem(ret == 0);
 	}
     break;
 
   case 227:
-#line 1782 "asn1p_y.y"
+#line 1779 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_EL_VALUE;
-		yyval.a_constr->value = yyvsp[0].a_value;
+		int ret;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_CA_SET;
+		ret = asn1p_constraint_insert((yyval.a_constr), (yyvsp[(2) - (3)].a_constr));
+		checkmem(ret == 0);
 	}
     break;
 
   case 228:
-#line 1788 "asn1p_y.y"
+#line 1787 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_EL_TYPE;
-		yyval.a_constr->containedSubtype = yyvsp[0].a_value;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_EL_VALUE;
+		(yyval.a_constr)->value = (yyvsp[(1) - (1)].a_value);
 	}
     break;
 
   case 229:
-#line 1794 "asn1p_y.y"
+#line 1793 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_EL_TYPE;
+		(yyval.a_constr)->containedSubtype = (yyvsp[(1) - (1)].a_value);
 	}
     break;
 
   case 230:
-#line 1801 "asn1p_y.y"
+#line 1799 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = yyvsp[0].a_value;
-		yyval.a_constr->range_start->type = ATV_MIN;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = (yyvsp[(2) - (3)].a_ctype);
+		(yyval.a_constr)->range_start = (yyvsp[(1) - (3)].a_value);
+		(yyval.a_constr)->range_stop = (yyvsp[(3) - (3)].a_value);
 	}
     break;
 
   case 231:
-#line 1809 "asn1p_y.y"
+#line 1806 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = yyvsp[-2].a_value;
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_stop->type = ATV_MAX;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = (yyvsp[(2) - (3)].a_ctype);
+		(yyval.a_constr)->range_start = asn1p_value_fromint(-123);
+		(yyval.a_constr)->range_stop = (yyvsp[(3) - (3)].a_value);
+		(yyval.a_constr)->range_start->type = ATV_MIN;
 	}
     break;
 
   case 232:
-#line 1817 "asn1p_y.y"
+#line 1814 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = yyvsp[-1].a_ctype;
-		yyval.a_constr->range_start = asn1p_value_fromint(-123);
-		yyval.a_constr->range_stop = asn1p_value_fromint(321);
-		yyval.a_constr->range_start->type = ATV_MIN;
-		yyval.a_constr->range_stop->type = ATV_MAX;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = (yyvsp[(2) - (3)].a_ctype);
+		(yyval.a_constr)->range_start = (yyvsp[(1) - (3)].a_value);
+		(yyval.a_constr)->range_stop = asn1p_value_fromint(321);
+		(yyval.a_constr)->range_stop->type = ATV_MAX;
 	}
     break;
 
   case 233:
-#line 1826 "asn1p_y.y"
+#line 1822 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[0].a_constr;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = (yyvsp[(2) - (3)].a_ctype);
+		(yyval.a_constr)->range_start = asn1p_value_fromint(-123);
+		(yyval.a_constr)->range_stop = asn1p_value_fromint(321);
+		(yyval.a_constr)->range_start->type = ATV_MIN;
+		(yyval.a_constr)->range_stop->type = ATV_MAX;
 	}
     break;
 
   case 234:
-#line 1829 "asn1p_y.y"
+#line 1831 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[0].a_constr;
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 235:
-#line 1835 "asn1p_y.y"
+#line 1834 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		yyval.a_constr->type = ACT_CT_PATTERN;
-		yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 236:
 #line 1840 "asn1p_y.y"
     {
-		asn1p_ref_t *ref;
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		yyval.a_constr->type = ACT_CT_PATTERN;
-		ref = asn1p_ref_new(yylineno);
-		asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
-		yyval.a_constr->value = asn1p_value_fromref(ref, 0);
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		(yyval.a_constr)->type = ACT_CT_PATTERN;
+		(yyval.a_constr)->value = asn1p_value_frombuf((yyvsp[(2) - (2)].tv_opaque).buf, (yyvsp[(2) - (2)].tv_opaque).len, 0);
 	}
     break;
 
   case 237:
-#line 1851 "asn1p_y.y"
+#line 1845 "asn1p_y.y"
     {
-		yyval.a_ctype = ACT_CT_SIZE;
+		asn1p_ref_t *ref;
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		(yyval.a_constr)->type = ACT_CT_PATTERN;
+		ref = asn1p_ref_new(yylineno);
+		asn1p_ref_add_component(ref, (yyvsp[(2) - (2)].tv_str), RLT_lowercase);
+		(yyval.a_constr)->value = asn1p_value_fromref(ref, 0);
 	}
     break;
 
   case 238:
-#line 1854 "asn1p_y.y"
+#line 1856 "asn1p_y.y"
     {
-		yyval.a_ctype = ACT_CT_FROM;
+		(yyval.a_ctype) = ACT_CT_SIZE;
 	}
     break;
 
   case 239:
-#line 1860 "asn1p_y.y"
+#line 1859 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(0);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_FALSE;
+		(yyval.a_ctype) = ACT_CT_FROM;
 	}
     break;
 
   case 240:
 #line 1865 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(1);
-		checkmem(yyval.a_value);
-		yyval.a_value->type = ATV_TRUE;
+		(yyval.a_value) = asn1p_value_fromint(0);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_FALSE;
 	}
     break;
 
-  case 244:
-#line 1873 "asn1p_y.y"
+  case 241:
+#line 1870 "asn1p_y.y"
+    {
+		(yyval.a_value) = asn1p_value_fromint(1);
+		checkmem((yyval.a_value));
+		(yyval.a_value)->type = ATV_TRUE;
+	}
+    break;
+
+  case 245:
+#line 1878 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
 		checkmem(ref);
-		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_lowercase);
+		ret = asn1p_ref_add_component(ref, (yyvsp[(1) - (1)].tv_str), RLT_lowercase);
 		checkmem(ret == 0);
-		yyval.a_value = asn1p_value_fromref(ref, 0);
-		checkmem(yyval.a_value);
-		free(yyvsp[0].tv_str);
+		(yyval.a_value) = asn1p_value_fromref(ref, 0);
+		checkmem((yyval.a_value));
+		free((yyvsp[(1) - (1)].tv_str));
 	}
     break;
 
-  case 245:
-#line 1887 "asn1p_y.y"
+  case 246:
+#line 1892 "asn1p_y.y"
     {
-		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
-		checkmem(yyval.a_value);
+		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'B');
+		checkmem((yyval.a_value));
 	}
     break;
 
-  case 246:
-#line 1891 "asn1p_y.y"
+  case 247:
+#line 1896 "asn1p_y.y"
     {
-		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
-		checkmem(yyval.a_value);
+		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'H');
+		checkmem((yyval.a_value));
 	}
     break;
 
-  case 247:
-#line 1898 "asn1p_y.y"
+  case 248:
+#line 1903 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
 		ref = asn1p_ref_new(yylineno);
 		checkmem(ref);
-		ret = asn1p_ref_add_component(ref, yyvsp[0].tv_str, RLT_UNKNOWN);
+		ret = asn1p_ref_add_component(ref, (yyvsp[(1) - (1)].tv_str), RLT_UNKNOWN);
 		checkmem(ret == 0);
-		yyval.a_value = asn1p_value_fromref(ref, 0);
-		checkmem(yyval.a_value);
-		free(yyvsp[0].tv_str);
-	}
-    break;
-
-  case 248:
-#line 1912 "asn1p_y.y"
-    {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
+		(yyval.a_value) = asn1p_value_fromref(ref, 0);
+		checkmem((yyval.a_value));
+		free((yyvsp[(1) - (1)].tv_str));
 	}
     break;
 
   case 249:
-#line 1915 "asn1p_y.y"
+#line 1917 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_WCOMP, (yyvsp[(3) - (3)].a_constr), 0);
 	}
     break;
 
   case 250:
-#line 1921 "asn1p_y.y"
+#line 1920 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[0].a_constr;
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_WCOMPS, (yyvsp[(4) - (5)].a_constr), 0);
 	}
     break;
 
   case 251:
-#line 1924 "asn1p_y.y"
+#line 1926 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 252:
-#line 1930 "asn1p_y.y"
+#line 1929 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_EL_EXT;
-		yyval.a_constr->value = asn1p_value_frombuf("...", 3, 1);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_WCOMPS, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
   case 253:
-#line 1936 "asn1p_y.y"
+#line 1935 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_EL_VALUE;
-		yyval.a_constr->value = asn1p_value_frombuf(yyvsp[-2].tv_str, strlen(yyvsp[-2].tv_str), 0);
-		yyval.a_constr->presence = yyvsp[0].a_pres;
-		if(yyvsp[-1].a_constr) asn1p_constraint_insert(yyval.a_constr, yyvsp[-1].a_constr);
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_EL_EXT;
+		(yyval.a_constr)->value = asn1p_value_frombuf("...", 3, 1);
 	}
     break;
 
   case 254:
-#line 1950 "asn1p_y.y"
-    { yyval.a_pres = ACPRES_DEFAULT; }
+#line 1941 "asn1p_y.y"
+    {
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_EL_VALUE;
+		(yyval.a_constr)->value = asn1p_value_frombuf((yyvsp[(1) - (3)].tv_str), strlen((yyvsp[(1) - (3)].tv_str)), 0);
+		(yyval.a_constr)->presence = (yyvsp[(3) - (3)].a_pres);
+		if((yyvsp[(2) - (3)].a_constr)) asn1p_constraint_insert((yyval.a_constr), (yyvsp[(2) - (3)].a_constr));
+	}
     break;
 
   case 255:
-#line 1951 "asn1p_y.y"
-    { yyval.a_pres = yyvsp[0].a_pres; }
+#line 1955 "asn1p_y.y"
+    { (yyval.a_pres) = ACPRES_DEFAULT; }
     break;
 
   case 256:
-#line 1955 "asn1p_y.y"
-    {
-		yyval.a_pres = ACPRES_PRESENT;
-	}
+#line 1956 "asn1p_y.y"
+    { (yyval.a_pres) = (yyvsp[(1) - (1)].a_pres); }
     break;
 
   case 257:
-#line 1958 "asn1p_y.y"
+#line 1960 "asn1p_y.y"
     {
-		yyval.a_pres = ACPRES_ABSENT;
+		(yyval.a_pres) = ACPRES_PRESENT;
 	}
     break;
 
   case 258:
-#line 1961 "asn1p_y.y"
+#line 1963 "asn1p_y.y"
     {
-		yyval.a_pres = ACPRES_OPTIONAL;
+		(yyval.a_pres) = ACPRES_ABSENT;
 	}
     break;
 
-  case 262:
-#line 1976 "asn1p_y.y"
-    { asn1p_lexer_hack_push_opaque_state(); }
+  case 259:
+#line 1966 "asn1p_y.y"
+    {
+		(yyval.a_pres) = ACPRES_OPTIONAL;
+	}
     break;
 
   case 263:
-#line 1976 "asn1p_y.y"
-    {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_CT_CTDBY;
-		yyval.a_constr->value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
-		checkmem(yyval.a_constr->value);
-		yyval.a_constr->value->type = ATV_UNPARSED;
-	}
+#line 1981 "asn1p_y.y"
+    { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 264:
-#line 1987 "asn1p_y.y"
+#line 1981 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		yyval.a_constr->type = ACT_CT_CTNG;
-		yyval.a_constr->value = asn1p_value_fromtype(yyvsp[0].a_expr);
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_CT_CTDBY;
+		(yyval.a_constr)->value = asn1p_value_frombuf((yyvsp[(5) - (5)].tv_opaque).buf, (yyvsp[(5) - (5)].tv_opaque).len, 0);
+		checkmem((yyval.a_constr)->value);
+		(yyval.a_constr)->value->type = ATV_UNPARSED;
 	}
     break;
 
   case 265:
-#line 1995 "asn1p_y.y"
-    { yyval.a_ctype = ACT_EL_RANGE; }
+#line 1992 "asn1p_y.y"
+    {
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		(yyval.a_constr)->type = ACT_CT_CTNG;
+		(yyval.a_constr)->value = asn1p_value_fromtype((yyvsp[(2) - (2)].a_expr));
+	}
     break;
 
   case 266:
-#line 1996 "asn1p_y.y"
-    { yyval.a_ctype = ACT_EL_RLRANGE; }
+#line 2000 "asn1p_y.y"
+    { (yyval.a_ctype) = ACT_EL_RANGE; }
     break;
 
   case 267:
-#line 1997 "asn1p_y.y"
-    { yyval.a_ctype = ACT_EL_LLRANGE; }
+#line 2001 "asn1p_y.y"
+    { (yyval.a_ctype) = ACT_EL_RLRANGE; }
     break;
 
   case 268:
-#line 1998 "asn1p_y.y"
-    { yyval.a_ctype = ACT_EL_ULRANGE; }
+#line 2002 "asn1p_y.y"
+    { (yyval.a_ctype) = ACT_EL_LLRANGE; }
     break;
 
   case 269:
-#line 2001 "asn1p_y.y"
-    {
-		yyval.a_constr = yyvsp[0].a_constr;
-	}
+#line 2003 "asn1p_y.y"
+    { (yyval.a_ctype) = ACT_EL_ULRANGE; }
     break;
 
   case 270:
-#line 2004 "asn1p_y.y"
+#line 2006 "asn1p_y.y"
     {
-		yyval.a_constr = yyvsp[0].a_constr;
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 271:
-#line 2013 "asn1p_y.y"
+#line 2009 "asn1p_y.y"
+    {
+		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
+	}
+    break;
+
+  case 272:
+#line 2018 "asn1p_y.y"
     {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
 		int ret;
-		ret = asn1p_ref_add_component(ref, yyvsp[-1].tv_str, 0);
+		ret = asn1p_ref_add_component(ref, (yyvsp[(2) - (3)].tv_str), 0);
 		checkmem(ret == 0);
 		ct = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
+		checkmem((yyval.a_constr));
 		ct->type = ACT_EL_VALUE;
 		ct->value = asn1p_value_fromref(ref, 0);
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, ct, 0);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CRC, ct, 0);
 	}
     break;
 
-  case 272:
-#line 2028 "asn1p_y.y"
+  case 273:
+#line 2033 "asn1p_y.y"
     {
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CRC, (yyvsp[(1) - (4)].a_constr), (yyvsp[(3) - (4)].a_constr));
 	}
     break;
 
-  case 273:
-#line 2034 "asn1p_y.y"
+  case 274:
+#line 2039 "asn1p_y.y"
     {
-		yyval.a_constr = asn1p_constraint_new(yylineno);
-		checkmem(yyval.a_constr);
-		yyval.a_constr->type = ACT_EL_VALUE;
-		yyval.a_constr->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
+		(yyval.a_constr) = asn1p_constraint_new(yylineno);
+		checkmem((yyval.a_constr));
+		(yyval.a_constr)->type = ACT_EL_VALUE;
+		(yyval.a_constr)->value = asn1p_value_fromref((yyvsp[(1) - (1)].a_ref), 0);
 	}
     break;
 
-  case 274:
-#line 2040 "asn1p_y.y"
+  case 275:
+#line 2045 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
 		checkmem(ct);
 		ct->type = ACT_EL_VALUE;
-		ct->value = asn1p_value_fromref(yyvsp[0].a_ref, 0);
-		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CSV, yyvsp[-2].a_constr, ct);
+		ct->value = asn1p_value_fromref((yyvsp[(3) - (3)].a_ref), 0);
+		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CSV, (yyvsp[(1) - (3)].a_constr), ct);
 	}
     break;
 
-  case 275:
-#line 2054 "asn1p_y.y"
+  case 276:
+#line 2059 "asn1p_y.y"
     {
-		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
+		char *p = malloc(strlen((yyvsp[(2) - (2)].tv_str)) + 2);
 		int ret;
 		*p = '@';
-		strcpy(p + 1, yyvsp[0].tv_str);
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
+		strcpy(p + 1, (yyvsp[(2) - (2)].tv_str));
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_ref), p, 0);
 		checkmem(ret == 0);
 		free(p);
-		free(yyvsp[0].tv_str);
+		free((yyvsp[(2) - (2)].tv_str));
 	}
     break;
 
-  case 276:
-#line 2065 "asn1p_y.y"
+  case 277:
+#line 2070 "asn1p_y.y"
     {
-		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
+		char *p = malloc(strlen((yyvsp[(3) - (3)].tv_str)) + 3);
 		int ret;
 		p[0] = '@';
 		p[1] = '.';
-		strcpy(p + 2, yyvsp[0].tv_str);
-		yyval.a_ref = asn1p_ref_new(yylineno);
-		ret = asn1p_ref_add_component(yyval.a_ref, p, 0);
+		strcpy(p + 2, (yyvsp[(3) - (3)].tv_str));
+		(yyval.a_ref) = asn1p_ref_new(yylineno);
+		ret = asn1p_ref_add_component((yyval.a_ref), p, 0);
 		checkmem(ret == 0);
 		free(p);
-		free(yyvsp[0].tv_str);
-	}
-    break;
-
-  case 277:
-#line 2081 "asn1p_y.y"
-    {
-		yyval.tv_str = yyvsp[0].tv_str;
+		free((yyvsp[(3) - (3)].tv_str));
 	}
     break;
 
   case 278:
-#line 2084 "asn1p_y.y"
+#line 2086 "asn1p_y.y"
     {
-		int l1 = strlen(yyvsp[-2].tv_str);
-		int l3 = strlen(yyvsp[0].tv_str);
-		yyval.tv_str = malloc(l1 + 1 + l3 + 1);
-		memcpy(yyval.tv_str, yyvsp[-2].tv_str, l1);
-		yyval.tv_str[l1] = '.';
-		memcpy(yyval.tv_str + l1 + 1, yyvsp[0].tv_str, l3);
-		yyval.tv_str[l1 + 1 + l3] = '\0';
+		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 279:
-#line 2102 "asn1p_y.y"
+#line 2089 "asn1p_y.y"
     {
-		yyval.a_marker.flags = EM_NOMARK;
-		yyval.a_marker.default_value = 0;
+		int l1 = strlen((yyvsp[(1) - (3)].tv_str));
+		int l3 = strlen((yyvsp[(3) - (3)].tv_str));
+		(yyval.tv_str) = malloc(l1 + 1 + l3 + 1);
+		memcpy((yyval.tv_str), (yyvsp[(1) - (3)].tv_str), l1);
+		(yyval.tv_str)[l1] = '.';
+		memcpy((yyval.tv_str) + l1 + 1, (yyvsp[(3) - (3)].tv_str), l3);
+		(yyval.tv_str)[l1 + 1 + l3] = '\0';
 	}
     break;
 
   case 280:
-#line 2106 "asn1p_y.y"
-    { yyval.a_marker = yyvsp[0].a_marker; }
+#line 2107 "asn1p_y.y"
+    {
+		(yyval.a_marker).flags = EM_NOMARK;
+		(yyval.a_marker).default_value = 0;
+	}
     break;
 
   case 281:
-#line 2110 "asn1p_y.y"
-    {
-		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
-		yyval.a_marker.default_value = 0;
-	}
+#line 2111 "asn1p_y.y"
+    { (yyval.a_marker) = (yyvsp[(1) - (1)].a_marker); }
     break;
 
   case 282:
-#line 2114 "asn1p_y.y"
+#line 2115 "asn1p_y.y"
     {
-		yyval.a_marker.flags = EM_DEFAULT;
-		yyval.a_marker.default_value = yyvsp[0].a_value;
+		(yyval.a_marker).flags = EM_OPTIONAL | EM_INDIRECT;
+		(yyval.a_marker).default_value = 0;
 	}
     break;
 
   case 283:
-#line 2137 "asn1p_y.y"
+#line 2119 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
+		(yyval.a_marker).flags = EM_DEFAULT;
+		(yyval.a_marker).default_value = (yyvsp[(2) - (2)].a_value);
 	}
     break;
 
   case 284:
-#line 2141 "asn1p_y.y"
+#line 2142 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-1].a_expr;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
 	}
     break;
 
   case 285:
-#line 2147 "asn1p_y.y"
+#line 2146 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
 	}
     break;
 
   case 286:
 #line 2152 "asn1p_y.y"
     {
-		yyval.a_expr = yyvsp[-2].a_expr;
-		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 287:
-#line 2159 "asn1p_y.y"
+#line 2157 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[0].tv_str;
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
   case 288:
-#line 2166 "asn1p_y.y"
+#line 2164 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = A1TC_UNIVERVAL;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 289:
-#line 2174 "asn1p_y.y"
+#line 2171 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
-		yyval.a_expr->value = yyvsp[-1].a_value;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = A1TC_UNIVERVAL;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
+		(yyval.a_expr)->value = (yyvsp[(3) - (4)].a_value);
 	}
     break;
 
   case 290:
-#line 2182 "asn1p_y.y"
+#line 2179 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->expr_type = A1TC_UNIVERVAL;
-		yyval.a_expr->meta_type = AMT_VALUE;
-		yyval.a_expr->value = yyvsp[0].a_value;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = A1TC_UNIVERVAL;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
+		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
+		(yyval.a_expr)->value = (yyvsp[(3) - (4)].a_value);
 	}
     break;
 
   case 291:
-#line 2189 "asn1p_y.y"
+#line 2187 "asn1p_y.y"
     {
-		yyval.a_expr = NEW_EXPR();
-		checkmem(yyval.a_expr);
-		yyval.a_expr->Identifier = strdup("...");
-		checkmem(yyval.a_expr->Identifier);
-		yyval.a_expr->expr_type = A1TC_EXTENSIBLE;
-		yyval.a_expr->meta_type = AMT_VALUE;
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->expr_type = A1TC_UNIVERVAL;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
+		(yyval.a_expr)->value = (yyvsp[(1) - (1)].a_value);
 	}
     break;
 
   case 292:
-#line 2200 "asn1p_y.y"
+#line 2194 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		(yyval.a_expr)->Identifier = strdup("...");
+		checkmem((yyval.a_expr)->Identifier);
+		(yyval.a_expr)->expr_type = A1TC_EXTENSIBLE;
+		(yyval.a_expr)->meta_type = AMT_VALUE;
 	}
     break;
 
   case 293:
-#line 2204 "asn1p_y.y"
+#line 2205 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
+		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
+		checkmem((yyval.a_value));
 	}
     break;
 
-  case 295:
-#line 2212 "asn1p_y.y"
+  case 294:
+#line 2209 "asn1p_y.y"
     {
-		yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
-		checkmem(yyval.a_value);
+		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
+		checkmem((yyval.a_value));
 	}
     break;
 
   case 296:
-#line 2243 "asn1p_y.y"
-    { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
+#line 2217 "asn1p_y.y"
+    {
+		(yyval.a_value) = asn1p_value_fromdouble((yyvsp[(1) - (1)].a_dbl));
+		checkmem((yyval.a_value));
+	}
     break;
 
   case 297:
-#line 2244 "asn1p_y.y"
-    { yyval.a_tag = yyvsp[0].a_tag; }
+#line 2248 "asn1p_y.y"
+    { memset(&(yyval.a_tag), 0, sizeof((yyval.a_tag))); }
     break;
 
   case 298:
-#line 2248 "asn1p_y.y"
-    {
-		yyval.a_tag = yyvsp[-1].a_tag;
-		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
-	}
+#line 2249 "asn1p_y.y"
+    { (yyval.a_tag) = (yyvsp[(1) - (1)].a_tag); }
     break;
 
   case 299:
-#line 2255 "asn1p_y.y"
+#line 2253 "asn1p_y.y"
     {
-		yyval.a_tag = yyvsp[-2].a_tag;
-		yyval.a_tag.tag_value = yyvsp[-1].a_int;
+		(yyval.a_tag) = (yyvsp[(1) - (2)].a_tag);
+		(yyval.a_tag).tag_mode = (yyvsp[(2) - (2)].a_tag).tag_mode;
 	}
     break;
 
   case 300:
-#line 2261 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
+#line 2260 "asn1p_y.y"
+    {
+		(yyval.a_tag) = (yyvsp[(2) - (4)].a_tag);
+		(yyval.a_tag).tag_value = (yyvsp[(3) - (4)].a_int);
+	}
     break;
 
   case 301:
-#line 2262 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_UNIVERSAL; }
+#line 2266 "asn1p_y.y"
+    { (yyval.a_tag).tag_class = TC_CONTEXT_SPECIFIC; }
     break;
 
   case 302:
-#line 2263 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_APPLICATION; }
+#line 2267 "asn1p_y.y"
+    { (yyval.a_tag).tag_class = TC_UNIVERSAL; }
     break;
 
   case 303:
-#line 2264 "asn1p_y.y"
-    { yyval.a_tag.tag_class = TC_PRIVATE; }
+#line 2268 "asn1p_y.y"
+    { (yyval.a_tag).tag_class = TC_APPLICATION; }
     break;
 
   case 304:
-#line 2268 "asn1p_y.y"
-    { yyval.a_tag.tag_mode = TM_DEFAULT; }
+#line 2269 "asn1p_y.y"
+    { (yyval.a_tag).tag_class = TC_PRIVATE; }
     break;
 
   case 305:
-#line 2269 "asn1p_y.y"
-    { yyval.a_tag.tag_mode = TM_IMPLICIT; }
+#line 2273 "asn1p_y.y"
+    { (yyval.a_tag).tag_mode = TM_DEFAULT; }
     break;
 
   case 306:
-#line 2270 "asn1p_y.y"
-    { yyval.a_tag.tag_mode = TM_EXPLICIT; }
+#line 2274 "asn1p_y.y"
+    { (yyval.a_tag).tag_mode = TM_IMPLICIT; }
     break;
 
   case 307:
-#line 2274 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
+#line 2275 "asn1p_y.y"
+    { (yyval.a_tag).tag_mode = TM_EXPLICIT; }
     break;
 
   case 308:
-#line 2278 "asn1p_y.y"
+#line 2279 "asn1p_y.y"
     {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
+		checkmem((yyvsp[(1) - (1)].tv_str));
+		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 309:
-#line 2286 "asn1p_y.y"
+#line 2283 "asn1p_y.y"
     {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
+		checkmem((yyvsp[(1) - (1)].tv_str));
+		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 310:
-#line 2293 "asn1p_y.y"
-    { yyval.tv_str = 0; }
+#line 2291 "asn1p_y.y"
+    {
+		checkmem((yyvsp[(1) - (1)].tv_str));
+		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
+	}
     break;
 
   case 311:
-#line 2294 "asn1p_y.y"
+#line 2298 "asn1p_y.y"
+    { (yyval.tv_str) = 0; }
+    break;
+
+  case 312:
+#line 2299 "asn1p_y.y"
     {
-		yyval.tv_str = yyvsp[0].tv_str;
+		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 312:
-#line 2300 "asn1p_y.y"
+  case 313:
+#line 2305 "asn1p_y.y"
     {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
+		checkmem((yyvsp[(1) - (1)].tv_str));
+		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
 
+/* Line 1267 of yacc.c.  */
+#line 4799 "y.tab.c"
+      default: break;
     }
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
-/* Line 1016 of /usr/local/share/bison/yacc.c.  */
-#line 4391 "asn1p_y.c"
-
-  yyvsp -= yylen;
-  yyssp -= yylen;
-
-
-#if YYDEBUG
-  if (yydebug)
-    {
-      short *yyssp1 = yyss - 1;
-      YYFPRINTF (stderr, "state stack now");
-      while (yyssp1 != yyssp)
-	YYFPRINTF (stderr, " %d", *++yyssp1);
-      YYFPRINTF (stderr, "\n");
-    }
-#endif
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
 
   *++yyvsp = yyval;
 
@@ -4430,95 +4830,93 @@ yyerrlab:
   if (!yyerrstatus)
     {
       ++yynerrs;
-#if YYERROR_VERBOSE
-      yyn = yypact[yystate];
-
-      if (YYPACT_NINF < yyn && yyn < YYLAST)
-	{
-	  YYSIZE_T yysize = 0;
-	  int yytype = YYTRANSLATE (yychar);
-	  char *yymsg;
-	  int yyx, yycount;
-
-	  yycount = 0;
-	  /* Start YYX at -YYN if negative to avoid negative indexes in
-	     YYCHECK.  */
-	  for (yyx = yyn < 0 ? -yyn : 0;
-	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
-	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;
-	  yysize += yystrlen ("parse error, unexpected ") + 1;
-	  yysize += yystrlen (yytname[yytype]);
-	  yymsg = (char *) YYSTACK_ALLOC (yysize);
-	  if (yymsg != 0)
-	    {
-	      char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
-	      yyp = yystpcpy (yyp, yytname[yytype]);
-
-	      if (yycount < 5)
-		{
-		  yycount = 0;
-		  for (yyx = yyn < 0 ? -yyn : 0;
-		       yyx < (int) (sizeof (yytname) / sizeof (char *));
-		       yyx++)
-		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
-		      {
-			const char *yyq = ! yycount ? ", expecting " : " or ";
-			yyp = yystpcpy (yyp, yyq);
-			yyp = yystpcpy (yyp, yytname[yyx]);
-			yycount++;
-		      }
-		}
-	      yyerror (yymsg);
+#if ! YYERROR_VERBOSE
+      yyerror (YY_("syntax error"));
+#else
+      {
+	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+	  {
+	    YYSIZE_T yyalloc = 2 * yysize;
+	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
+	    if (yymsg != yymsgbuf)
 	      YYSTACK_FREE (yymsg);
-	    }
-	  else
-	    yyerror ("parse error; also virtual memory exhausted");
-	}
-      else
-#endif /* YYERROR_VERBOSE */
-	yyerror ("parse error");
+	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+	    if (yymsg)
+	      yymsg_alloc = yyalloc;
+	    else
+	      {
+		yymsg = yymsgbuf;
+		yymsg_alloc = sizeof yymsgbuf;
+	      }
+	  }
+
+	if (0 < yysize && yysize <= yymsg_alloc)
+	  {
+	    (void) yysyntax_error (yymsg, yystate, yychar);
+	    yyerror (yymsg);
+	  }
+	else
+	  {
+	    yyerror (YY_("syntax error"));
+	    if (yysize != 0)
+	      goto yyexhaustedlab;
+	  }
+      }
+#endif
     }
-  goto yyerrlab1;
 
 
-/*----------------------------------------------------.
-| yyerrlab1 -- error raised explicitly by an action.  |
-`----------------------------------------------------*/
-yyerrlab1:
+
   if (yyerrstatus == 3)
     {
-      /* If just tried and failed to reuse lookahead token after an
+      /* If just tried and failed to reuse look-ahead token after an
 	 error, discard it.  */
 
-      /* Return failure if at end of input.  */
-      if (yychar == YYEOF)
-        {
-	  /* Pop the error token.  */
-          YYPOPSTACK;
-	  /* Pop the rest of the stack.  */
-	  while (yyssp > yyss)
-	    {
-	      YYDPRINTF ((stderr, "Error: popping "));
-	      YYDSYMPRINT ((stderr,
-			    yystos[*yyssp],
-			    *yyvsp));
-	      YYDPRINTF ((stderr, "\n"));
-	      yydestruct (yystos[*yyssp], *yyvsp);
-	      YYPOPSTACK;
-	    }
-	  YYABORT;
-        }
-
-      YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
-		  yychar, yytname[yychar1]));
-      yydestruct (yychar1, yylval);
-      yychar = YYEMPTY;
+      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
+  /* Else will try to reuse look-ahead token after shifting the error
      token.  */
+  goto yyerrlab1;
+
 
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 0)
+     goto yyerrorlab;
+
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYERROR.  */
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
 
   for (;;)
@@ -4539,36 +4937,23 @@ yyerrlab1:
       if (yyssp == yyss)
 	YYABORT;
 
-      YYDPRINTF ((stderr, "Error: popping "));
-      YYDSYMPRINT ((stderr,
-		    yystos[*yyssp], *yyvsp));
-      YYDPRINTF ((stderr, "\n"));
-
-      yydestruct (yystos[yystate], *yyvsp);
-      yyvsp--;
-      yystate = *--yyssp;
 
-
-#if YYDEBUG
-      if (yydebug)
-	{
-	  short *yyssp1 = yyss - 1;
-	  YYFPRINTF (stderr, "Error: state stack now");
-	  while (yyssp1 != yyssp)
-	    YYFPRINTF (stderr, " %d", *++yyssp1);
-	  YYFPRINTF (stderr, "\n");
-	}
-#endif
+      yydestruct ("Error: popping",
+		  yystos[yystate], yyvsp);
+      YYPOPSTACK (1);
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
     }
 
   if (yyn == YYFINAL)
     YYACCEPT;
 
-  YYDPRINTF ((stderr, "Shifting error token, "));
-
   *++yyvsp = yylval;
 
 
+  /* Shift the error token.  */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
   yystate = yyn;
   goto yynewstate;
 
@@ -4588,25 +4973,43 @@ yyabortlab:
   goto yyreturn;
 
 #ifndef yyoverflow
-/*----------------------------------------------.
-| yyoverflowlab -- parser overflow comes here.  |
-`----------------------------------------------*/
-yyoverflowlab:
-  yyerror ("parser stack overflow");
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
   yyresult = 2;
   /* Fall through.  */
 #endif
 
 yyreturn:
+  if (yychar != YYEOF && yychar != YYEMPTY)
+     yydestruct ("Cleanup: discarding lookahead",
+		 yytoken, &yylval);
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYABORT or YYACCEPT.  */
+  YYPOPSTACK (yylen);
+  YY_STACK_PRINT (yyss, yyssp);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK (1);
+    }
 #ifndef yyoverflow
   if (yyss != yyssa)
     YYSTACK_FREE (yyss);
 #endif
-  return yyresult;
+#if YYERROR_VERBOSE
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
+#endif
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
 }
 
 
-#line 2306 "asn1p_y.y"
+#line 2311 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index ee3af65b..9963cdea 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -1,7 +1,9 @@
-/* A Bison parser, made from asn1p_y.y, by GNU bison 1.75.  */
+/* A Bison parser, made by GNU Bison 2.3.  */
 
-/* Skeleton parser for Yacc-like parsing with Bison,
-   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Skeleton interface for Bison's Yacc-like parsers in C
+
+   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   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
@@ -15,16 +17,21 @@
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.  */
 
-/* As a special exception, when this file is copied by Bison into a
-   Bison output file, you may use that output file without restriction.
-   This special exception was added by the Free Software Foundation
-   in version 1.24 of Bison.  */
+/* 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.
 
-#ifndef BISON_ASN_P_Y_H
-# define BISON_ASN_P_Y_H
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
 
 /* Tokens.  */
 #ifndef YYTOKENTYPE
@@ -33,220 +40,226 @@
       know about them.  */
    enum yytokentype {
      TOK_PPEQ = 258,
-     TOK_whitespace = 259,
-     TOK_opaque = 260,
-     TOK_bstring = 261,
-     TOK_cstring = 262,
-     TOK_hstring = 263,
-     TOK_identifier = 264,
-     TOK_number = 265,
-     TOK_number_negative = 266,
-     TOK_realnumber = 267,
-     TOK_tuple = 268,
-     TOK_quadruple = 269,
-     TOK_typereference = 270,
-     TOK_capitalreference = 271,
-     TOK_typefieldreference = 272,
-     TOK_valuefieldreference = 273,
-     TOK_Literal = 274,
-     TOK_ABSENT = 275,
-     TOK_ABSTRACT_SYNTAX = 276,
-     TOK_ALL = 277,
-     TOK_ANY = 278,
-     TOK_APPLICATION = 279,
-     TOK_AUTOMATIC = 280,
-     TOK_BEGIN = 281,
-     TOK_BIT = 282,
-     TOK_BMPString = 283,
-     TOK_BOOLEAN = 284,
-     TOK_BY = 285,
-     TOK_CHARACTER = 286,
-     TOK_CHOICE = 287,
-     TOK_CLASS = 288,
-     TOK_COMPONENT = 289,
-     TOK_COMPONENTS = 290,
-     TOK_CONSTRAINED = 291,
-     TOK_CONTAINING = 292,
-     TOK_DEFAULT = 293,
-     TOK_DEFINITIONS = 294,
-     TOK_DEFINED = 295,
-     TOK_EMBEDDED = 296,
-     TOK_ENCODED = 297,
-     TOK_ENCODING_CONTROL = 298,
-     TOK_END = 299,
-     TOK_ENUMERATED = 300,
-     TOK_EXPLICIT = 301,
-     TOK_EXPORTS = 302,
-     TOK_EXTENSIBILITY = 303,
-     TOK_EXTERNAL = 304,
-     TOK_FALSE = 305,
-     TOK_FROM = 306,
-     TOK_GeneralizedTime = 307,
-     TOK_GeneralString = 308,
-     TOK_GraphicString = 309,
-     TOK_IA5String = 310,
-     TOK_IDENTIFIER = 311,
-     TOK_IMPLICIT = 312,
-     TOK_IMPLIED = 313,
-     TOK_IMPORTS = 314,
-     TOK_INCLUDES = 315,
-     TOK_INSTANCE = 316,
-     TOK_INSTRUCTIONS = 317,
-     TOK_INTEGER = 318,
-     TOK_ISO646String = 319,
-     TOK_MAX = 320,
-     TOK_MIN = 321,
-     TOK_MINUS_INFINITY = 322,
-     TOK_NULL = 323,
-     TOK_NumericString = 324,
-     TOK_OBJECT = 325,
-     TOK_ObjectDescriptor = 326,
-     TOK_OCTET = 327,
-     TOK_OF = 328,
-     TOK_OPTIONAL = 329,
-     TOK_PATTERN = 330,
-     TOK_PDV = 331,
-     TOK_PLUS_INFINITY = 332,
-     TOK_PRESENT = 333,
-     TOK_PrintableString = 334,
-     TOK_PRIVATE = 335,
-     TOK_REAL = 336,
-     TOK_RELATIVE_OID = 337,
-     TOK_SEQUENCE = 338,
-     TOK_SET = 339,
-     TOK_SIZE = 340,
-     TOK_STRING = 341,
-     TOK_SYNTAX = 342,
-     TOK_T61String = 343,
-     TOK_TAGS = 344,
-     TOK_TeletexString = 345,
-     TOK_TRUE = 346,
-     TOK_TYPE_IDENTIFIER = 347,
-     TOK_UNIQUE = 348,
-     TOK_UNIVERSAL = 349,
-     TOK_UniversalString = 350,
-     TOK_UTCTime = 351,
-     TOK_UTF8String = 352,
-     TOK_VideotexString = 353,
-     TOK_VisibleString = 354,
-     TOK_WITH = 355,
-     TOK_EXCEPT = 356,
-     TOK_INTERSECTION = 357,
-     TOK_UNION = 358,
-     TOK_TwoDots = 359,
-     TOK_ThreeDots = 360
+     TOK_VBracketLeft = 259,
+     TOK_VBracketRight = 260,
+     TOK_whitespace = 261,
+     TOK_opaque = 262,
+     TOK_bstring = 263,
+     TOK_cstring = 264,
+     TOK_hstring = 265,
+     TOK_identifier = 266,
+     TOK_number = 267,
+     TOK_number_negative = 268,
+     TOK_realnumber = 269,
+     TOK_tuple = 270,
+     TOK_quadruple = 271,
+     TOK_typereference = 272,
+     TOK_capitalreference = 273,
+     TOK_typefieldreference = 274,
+     TOK_valuefieldreference = 275,
+     TOK_Literal = 276,
+     TOK_ABSENT = 277,
+     TOK_ABSTRACT_SYNTAX = 278,
+     TOK_ALL = 279,
+     TOK_ANY = 280,
+     TOK_APPLICATION = 281,
+     TOK_AUTOMATIC = 282,
+     TOK_BEGIN = 283,
+     TOK_BIT = 284,
+     TOK_BMPString = 285,
+     TOK_BOOLEAN = 286,
+     TOK_BY = 287,
+     TOK_CHARACTER = 288,
+     TOK_CHOICE = 289,
+     TOK_CLASS = 290,
+     TOK_COMPONENT = 291,
+     TOK_COMPONENTS = 292,
+     TOK_CONSTRAINED = 293,
+     TOK_CONTAINING = 294,
+     TOK_DEFAULT = 295,
+     TOK_DEFINITIONS = 296,
+     TOK_DEFINED = 297,
+     TOK_EMBEDDED = 298,
+     TOK_ENCODED = 299,
+     TOK_ENCODING_CONTROL = 300,
+     TOK_END = 301,
+     TOK_ENUMERATED = 302,
+     TOK_EXPLICIT = 303,
+     TOK_EXPORTS = 304,
+     TOK_EXTENSIBILITY = 305,
+     TOK_EXTERNAL = 306,
+     TOK_FALSE = 307,
+     TOK_FROM = 308,
+     TOK_GeneralizedTime = 309,
+     TOK_GeneralString = 310,
+     TOK_GraphicString = 311,
+     TOK_IA5String = 312,
+     TOK_IDENTIFIER = 313,
+     TOK_IMPLICIT = 314,
+     TOK_IMPLIED = 315,
+     TOK_IMPORTS = 316,
+     TOK_INCLUDES = 317,
+     TOK_INSTANCE = 318,
+     TOK_INSTRUCTIONS = 319,
+     TOK_INTEGER = 320,
+     TOK_ISO646String = 321,
+     TOK_MAX = 322,
+     TOK_MIN = 323,
+     TOK_MINUS_INFINITY = 324,
+     TOK_NULL = 325,
+     TOK_NumericString = 326,
+     TOK_OBJECT = 327,
+     TOK_ObjectDescriptor = 328,
+     TOK_OCTET = 329,
+     TOK_OF = 330,
+     TOK_OPTIONAL = 331,
+     TOK_PATTERN = 332,
+     TOK_PDV = 333,
+     TOK_PLUS_INFINITY = 334,
+     TOK_PRESENT = 335,
+     TOK_PrintableString = 336,
+     TOK_PRIVATE = 337,
+     TOK_REAL = 338,
+     TOK_RELATIVE_OID = 339,
+     TOK_SEQUENCE = 340,
+     TOK_SET = 341,
+     TOK_SIZE = 342,
+     TOK_STRING = 343,
+     TOK_SYNTAX = 344,
+     TOK_T61String = 345,
+     TOK_TAGS = 346,
+     TOK_TeletexString = 347,
+     TOK_TRUE = 348,
+     TOK_TYPE_IDENTIFIER = 349,
+     TOK_UNIQUE = 350,
+     TOK_UNIVERSAL = 351,
+     TOK_UniversalString = 352,
+     TOK_UTCTime = 353,
+     TOK_UTF8String = 354,
+     TOK_VideotexString = 355,
+     TOK_VisibleString = 356,
+     TOK_WITH = 357,
+     TOK_EXCEPT = 358,
+     TOK_INTERSECTION = 359,
+     TOK_UNION = 360,
+     TOK_TwoDots = 361,
+     TOK_ThreeDots = 362
    };
 #endif
+/* Tokens.  */
 #define TOK_PPEQ 258
-#define TOK_whitespace 259
-#define TOK_opaque 260
-#define TOK_bstring 261
-#define TOK_cstring 262
-#define TOK_hstring 263
-#define TOK_identifier 264
-#define TOK_number 265
-#define TOK_number_negative 266
-#define TOK_realnumber 267
-#define TOK_tuple 268
-#define TOK_quadruple 269
-#define TOK_typereference 270
-#define TOK_capitalreference 271
-#define TOK_typefieldreference 272
-#define TOK_valuefieldreference 273
-#define TOK_Literal 274
-#define TOK_ABSENT 275
-#define TOK_ABSTRACT_SYNTAX 276
-#define TOK_ALL 277
-#define TOK_ANY 278
-#define TOK_APPLICATION 279
-#define TOK_AUTOMATIC 280
-#define TOK_BEGIN 281
-#define TOK_BIT 282
-#define TOK_BMPString 283
-#define TOK_BOOLEAN 284
-#define TOK_BY 285
-#define TOK_CHARACTER 286
-#define TOK_CHOICE 287
-#define TOK_CLASS 288
-#define TOK_COMPONENT 289
-#define TOK_COMPONENTS 290
-#define TOK_CONSTRAINED 291
-#define TOK_CONTAINING 292
-#define TOK_DEFAULT 293
-#define TOK_DEFINITIONS 294
-#define TOK_DEFINED 295
-#define TOK_EMBEDDED 296
-#define TOK_ENCODED 297
-#define TOK_ENCODING_CONTROL 298
-#define TOK_END 299
-#define TOK_ENUMERATED 300
-#define TOK_EXPLICIT 301
-#define TOK_EXPORTS 302
-#define TOK_EXTENSIBILITY 303
-#define TOK_EXTERNAL 304
-#define TOK_FALSE 305
-#define TOK_FROM 306
-#define TOK_GeneralizedTime 307
-#define TOK_GeneralString 308
-#define TOK_GraphicString 309
-#define TOK_IA5String 310
-#define TOK_IDENTIFIER 311
-#define TOK_IMPLICIT 312
-#define TOK_IMPLIED 313
-#define TOK_IMPORTS 314
-#define TOK_INCLUDES 315
-#define TOK_INSTANCE 316
-#define TOK_INSTRUCTIONS 317
-#define TOK_INTEGER 318
-#define TOK_ISO646String 319
-#define TOK_MAX 320
-#define TOK_MIN 321
-#define TOK_MINUS_INFINITY 322
-#define TOK_NULL 323
-#define TOK_NumericString 324
-#define TOK_OBJECT 325
-#define TOK_ObjectDescriptor 326
-#define TOK_OCTET 327
-#define TOK_OF 328
-#define TOK_OPTIONAL 329
-#define TOK_PATTERN 330
-#define TOK_PDV 331
-#define TOK_PLUS_INFINITY 332
-#define TOK_PRESENT 333
-#define TOK_PrintableString 334
-#define TOK_PRIVATE 335
-#define TOK_REAL 336
-#define TOK_RELATIVE_OID 337
-#define TOK_SEQUENCE 338
-#define TOK_SET 339
-#define TOK_SIZE 340
-#define TOK_STRING 341
-#define TOK_SYNTAX 342
-#define TOK_T61String 343
-#define TOK_TAGS 344
-#define TOK_TeletexString 345
-#define TOK_TRUE 346
-#define TOK_TYPE_IDENTIFIER 347
-#define TOK_UNIQUE 348
-#define TOK_UNIVERSAL 349
-#define TOK_UniversalString 350
-#define TOK_UTCTime 351
-#define TOK_UTF8String 352
-#define TOK_VideotexString 353
-#define TOK_VisibleString 354
-#define TOK_WITH 355
-#define TOK_EXCEPT 356
-#define TOK_INTERSECTION 357
-#define TOK_UNION 358
-#define TOK_TwoDots 359
-#define TOK_ThreeDots 360
+#define TOK_VBracketLeft 259
+#define TOK_VBracketRight 260
+#define TOK_whitespace 261
+#define TOK_opaque 262
+#define TOK_bstring 263
+#define TOK_cstring 264
+#define TOK_hstring 265
+#define TOK_identifier 266
+#define TOK_number 267
+#define TOK_number_negative 268
+#define TOK_realnumber 269
+#define TOK_tuple 270
+#define TOK_quadruple 271
+#define TOK_typereference 272
+#define TOK_capitalreference 273
+#define TOK_typefieldreference 274
+#define TOK_valuefieldreference 275
+#define TOK_Literal 276
+#define TOK_ABSENT 277
+#define TOK_ABSTRACT_SYNTAX 278
+#define TOK_ALL 279
+#define TOK_ANY 280
+#define TOK_APPLICATION 281
+#define TOK_AUTOMATIC 282
+#define TOK_BEGIN 283
+#define TOK_BIT 284
+#define TOK_BMPString 285
+#define TOK_BOOLEAN 286
+#define TOK_BY 287
+#define TOK_CHARACTER 288
+#define TOK_CHOICE 289
+#define TOK_CLASS 290
+#define TOK_COMPONENT 291
+#define TOK_COMPONENTS 292
+#define TOK_CONSTRAINED 293
+#define TOK_CONTAINING 294
+#define TOK_DEFAULT 295
+#define TOK_DEFINITIONS 296
+#define TOK_DEFINED 297
+#define TOK_EMBEDDED 298
+#define TOK_ENCODED 299
+#define TOK_ENCODING_CONTROL 300
+#define TOK_END 301
+#define TOK_ENUMERATED 302
+#define TOK_EXPLICIT 303
+#define TOK_EXPORTS 304
+#define TOK_EXTENSIBILITY 305
+#define TOK_EXTERNAL 306
+#define TOK_FALSE 307
+#define TOK_FROM 308
+#define TOK_GeneralizedTime 309
+#define TOK_GeneralString 310
+#define TOK_GraphicString 311
+#define TOK_IA5String 312
+#define TOK_IDENTIFIER 313
+#define TOK_IMPLICIT 314
+#define TOK_IMPLIED 315
+#define TOK_IMPORTS 316
+#define TOK_INCLUDES 317
+#define TOK_INSTANCE 318
+#define TOK_INSTRUCTIONS 319
+#define TOK_INTEGER 320
+#define TOK_ISO646String 321
+#define TOK_MAX 322
+#define TOK_MIN 323
+#define TOK_MINUS_INFINITY 324
+#define TOK_NULL 325
+#define TOK_NumericString 326
+#define TOK_OBJECT 327
+#define TOK_ObjectDescriptor 328
+#define TOK_OCTET 329
+#define TOK_OF 330
+#define TOK_OPTIONAL 331
+#define TOK_PATTERN 332
+#define TOK_PDV 333
+#define TOK_PLUS_INFINITY 334
+#define TOK_PRESENT 335
+#define TOK_PrintableString 336
+#define TOK_PRIVATE 337
+#define TOK_REAL 338
+#define TOK_RELATIVE_OID 339
+#define TOK_SEQUENCE 340
+#define TOK_SET 341
+#define TOK_SIZE 342
+#define TOK_STRING 343
+#define TOK_SYNTAX 344
+#define TOK_T61String 345
+#define TOK_TAGS 346
+#define TOK_TeletexString 347
+#define TOK_TRUE 348
+#define TOK_TYPE_IDENTIFIER 349
+#define TOK_UNIQUE 350
+#define TOK_UNIVERSAL 351
+#define TOK_UniversalString 352
+#define TOK_UTCTime 353
+#define TOK_UTF8String 354
+#define TOK_VideotexString 355
+#define TOK_VisibleString 356
+#define TOK_WITH 357
+#define TOK_EXCEPT 358
+#define TOK_INTERSECTION 359
+#define TOK_UNION 360
+#define TOK_TwoDots 361
+#define TOK_ThreeDots 362
 
 
 
 
-#ifndef YYSTYPE
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
 #line 88 "asn1p_y.y"
-typedef union {
+{
 	asn1p_t			*a_grammar;
 	asn1p_module_flags_e	 a_module_flags;
 	asn1p_module_t		*a_module;
@@ -279,14 +292,14 @@ typedef union {
 		char *name;
 		struct asn1p_type_tag_s tag;
 	} tv_nametag;
-} yystype;
-/* Line 1281 of /usr/local/share/bison/yacc.c.  */
-#line 285 "asn1p_y.h"
-# define YYSTYPE yystype
+}
+/* Line 1529 of yacc.c.  */
+#line 298 "y.tab.h"
+	YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
 #endif
 
 extern YYSTYPE asn1p_lval;
 
-
-#endif /* not BISON_ASN_P_Y_H */
-
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 997be27e..aae339bb 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -124,6 +124,7 @@ static asn1p_module_t *currentModule;
  * Token types returned by scanner.
  */
 %token			TOK_PPEQ	/* "::=", Pseudo Pascal EQuality */
+%token			TOK_VBracketLeft TOK_VBracketRight	/* "[[", "]]" */
 %token	<tv_opaque>	TOK_whitespace	/* A span of whitespace */
 %token	<tv_opaque>	TOK_opaque	/* opaque data (driven from .y) */
 %token	<tv_str>	TOK_bstring
@@ -970,6 +971,10 @@ ComponentTypeLists:
 		$$ = $1;
 		asn1p_expr_add($$, $3);
 	}
+	| ComponentTypeLists ',' TOK_VBracketLeft ComponentTypeLists TOK_VBracketRight {
+        $$ = $1;
+		asn1p_expr_add_many($$, $4);
+	}
 	;
 
 ComponentType:
-- 
GitLab