ENUMERATION can not be empty
diff --git a/libasn1fix/asn1fix_bitstring.c b/libasn1fix/asn1fix_bitstring.c
index d67ca01..3e196f6 100644
--- a/libasn1fix/asn1fix_bitstring.c
+++ b/libasn1fix/asn1fix_bitstring.c
@@ -174,21 +174,22 @@
 
 	assert(value->type == ATV_UNPARSED);
 
-	psize = value->value.string.size + 64;
+	psize = value->value.string.size + sizeof("M DEFINITIONS ::= BEGIN V ::= BIT STRING END") + 32;
 	p = malloc(psize);
 	if(p == NULL)
 		return -1;
 
 	ret = snprintf(p, psize,
 		"M DEFINITIONS ::=\nBEGIN\n"
-		"V ::= INTEGER %s\n"
+		"V ::= #BIT STRING %s\n"
 		"END\n",
 		value->value.string.buf
 	);
 	assert(ret < psize);
 	psize = ret;
 
-	asn = asn1p_parse_buffer(p, psize, A1P_NOFLAGS);
+	asn = asn1p_parse_buffer(p, psize, arg->expr->module->source_file_name,
+                             arg->expr->_lineno, A1P_EXTENDED_VALUES);
 	free(p);
 	if(asn == NULL) {
 		FATAL("Cannot parse BIT STRING value %s "
@@ -205,7 +206,6 @@
 	V = TQ_FIRST(&(mod->members));
 	assert(V);
 	assert(strcmp(V->Identifier, "V") == 0);
-	assert(TQ_FIRST(&(V->members)));
 
 	/*
 	 * Simple loop just to fetch the maximal bit position
@@ -250,6 +250,7 @@
 				bit->Identifier, bit->_lineno);
 			RET2RVAL(1, r_value);
 		}
+    fprintf(stderr, "Referencing bit %s\n", bit->Identifier);
 		bitdef = asn1f_lookup_child(ttype, bit->Identifier);
 		if(bitdef == NULL) {
 			FATAL("Identifier \"%s\" at line %d is not defined "
diff --git a/libasn1fix/asn1fix_cws.c b/libasn1fix/asn1fix_cws.c
index 1106e55..035ccf7 100644
--- a/libasn1fix/asn1fix_cws.c
+++ b/libasn1fix/asn1fix_cws.c
@@ -443,7 +443,8 @@
 	assert(ret < psize);
 	psize = ret;
 
-	asn = asn1p_parse_buffer(pp, psize, A1P_NOFLAGS);
+	asn = asn1p_parse_buffer(pp, psize,
+		arg->expr->module->source_file_name, arg->expr->_lineno, A1P_NOFLAGS);
 	free(pp);
 	if(asn == NULL) {
 		FATAL("Cannot parse Setting token %s "
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index 7e433a7..0e638df 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -478,8 +478,8 @@
 	(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 141
-#define YY_END_OF_BUFFER 142
+#define YY_NUM_RULES 142
+#define YY_END_OF_BUFFER 143
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -487,234 +487,237 @@
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_acclist[1275] =
+static yyconst flex_int16_t yy_acclist[1290] =
     {   0,
-      142,  140,  141,  133,  140,  141,  133,  141,  138,  140,
-      141,   20,  140,  141,  138,  140,  141,  140,  141,  138,
-      140,  141,  140,  141,  140,  141,  138,  140,  141,  140,
-      141,   34,  140,  141,   33,  140,  141,  138,  140,  141,
-      140,  141,  121,  122,  140,  141,  121,  122,  140,  141,
-      121,  122,  140,  141,  121,  122,  140,  141,  121,  122,
-      140,  141,  121,  122,  140,  141,  121,  122,  140,  141,
-      121,  122,  140,  141,  121,  122,  140,  141,  121,  122,
-      140,  141,  121,  122,  140,  141,  121,  122,  140,  141,
-      121,  122,  140,  141,  121,  122,  140,  141,  121,  122,
+      143,  141,  142,  134,  141,  142,  134,  142,  139,  141,
+      142,   21,  141,  142,  139,  141,  142,  141,  142,  139,
+      141,  142,  141,  142,  141,  142,  139,  141,  142,  141,
+      142,   35,  141,  142,   34,  141,  142,  139,  141,  142,
+      141,  142,  122,  123,  141,  142,  122,  123,  141,  142,
+      122,  123,  141,  142,  122,  123,  141,  142,  122,  123,
+      141,  142,  122,  123,  141,  142,  122,  123,  141,  142,
+      122,  123,  141,  142,  122,  123,  141,  142,  122,  123,
+      141,  142,  122,  123,  141,  142,  122,  123,  141,  142,
+      122,  123,  141,  142,  122,  123,  141,  142,  122,  123,
 
-      140,  141,  121,  122,  140,  141,  121,  122,  140,  141,
-      121,  122,  140,  141,  121,  122,  140,  141,  138,  140,
-      141,  138,  140,  141,  120,  140,  141,  138,  140,  141,
-      140,  141,   10,  140,  141,    7,  141,    7,  140,  141,
-        9,  140,  141,    9,  140,  141,   12,   14,  140,  141,
-       12,  141,   14,  140,  141,   14,  140,  141,   14,  140,
-      141,   22,  140,  141,   22,  141,   23,  140,  141,   17,
-      140,  141,   17,  141,   19,  140,  141,   19,  140,  141,
-       15,  140,  141,   16,  140,  141,   26,   28,  140,  141,
-       28,  140,  141,   29,  141,   26,   27,   28,  140,  141,
+      141,  142,  122,  123,  141,  142,  122,  123,  141,  142,
+      122,  123,  141,  142,  122,  123,  141,  142,  139,  141,
+      142,  139,  141,  142,  121,  141,  142,  139,  141,  142,
+      141,  142,   11,  141,  142,    8,  142,    8,  141,  142,
+       10,  141,  142,   10,  141,  142,   13,   15,  141,  142,
+       13,  142,   15,  141,  142,   15,  141,  142,   15,  141,
+      142,   23,  141,  142,   23,  142,   24,  141,  142,   18,
+      141,  142,   18,  142,   20,  141,  142,   20,  141,  142,
+       16,  141,  142,   17,  141,  142,   27,   29,  141,  142,
+       29,  141,  142,   30,  142,   27,   28,   29,  141,  142,
 
-       26,   27,   28,  140,  141,  131,  140,  141,  131,  141,
-      140,  141,  127,  140,  141,  140,  141,  140,  141,  126,
-      140,  141,  129,  140,  141,  130,  140,  141,  128,  140,
-      141,  132,  140,  141,  133,   20,   20,  118,  119,    6,
-       32,  125,   11,   35,   33,   35,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,   45,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  122,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
+       27,   28,   29,  141,  142,  132,  141,  142,  132,  142,
+      141,  142,  128,  141,  142,  141,  142,  141,  142,  127,
+      141,  142,  130,  141,  142,  131,  141,  142,  129,  141,
+      142,  133,  141,  142,  134,  141,  142,  134,  142,  141,
+      142,  141,  142,  122,  141,  142,  134,   21,   21,  119,
+      120,    7,   33,  126,   12,   36,   34,   36,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,   46,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
 
-      121,  122,  121,  122,  121,  122,  122,  121,  122,  121,
-      122,   90,  121,  122,  121,  122,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  122,  121,  122,  121,  122,  122,  122,  121,
-      122,  136,  137,  120,   10,    8,    8,   13,   22,   21,
-       17,   26,   26,   27,   26,   27,  131,    6,  126,  139,
-      118,  119,   32,   35,  124,   35,  123,  121,  122,  122,
-      121,  122,   37,  121,  122,   38,  121,  122,  121,  122,
-      121,  122,  121,  122,   42,  121,  122,  121,  122,  121,
+      123,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,   91,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  123,  122,  123,  122,  123,  123,
+      123,  122,  123,  137,  138,  121,   11,    9,    9,   14,
+       23,   22,   18,   27,   27,   28,   27,   28,  132,    7,
+      127,  122,  140,  119,  120,   33,   36,  125,   36,  124,
+      122,  123,  123,  122,  123,   38,  122,  123,   39,  122,
 
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,   59,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  122,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,   82,  121,
-      122,   83,  121,  122,  121,  122,  122,  121,  122,  121,
-      122,  121,  122,  122,  121,  122,   93,  121,  122,  121,
-      122,  121,  122,  121,  122,  122,  121,  122,  121,  122,
-      121,  122,  101,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  122,  121,  122,
+      123,  122,  123,  122,  123,  122,  123,   43,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+       60,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  123,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,   83,  122,  123,   84,  122,  123,  122,  123,  123,
+      122,  123,  122,  123,  122,  123,  123,  122,  123,   94,
+      122,  123,  122,  123,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,  122,  123,  102,  122,  123,  122,  123,
 
-      121,  122,  121,  122,  122,  122,  122,  121,  122,  120,
-        1,    4,   18,   26,   27,   25,   26,   27,  126,  118,
-      119,   31,   30,    3,    2,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,   67,
-      121,  122,  122,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,   85,  121,  122,  122,  121,  122,  121,  122,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      123,  122,  123,  122,  123,  122,  123,  123,  123,  123,
+      122,  123,  121,    1,    4,   19,   27,   28,   26,   27,
+       28,  127,  122,  119,  120,   32,   31,    3,    2,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,   68,  122,  123,  123,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
 
-      121,  122,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  122,   98,  121,  122,  121,  122,  121,  122,  102,
-      121,  122,  121,  122,  121,  122,  121,  122,  106,  121,
-      122,  108,  121,  122,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  122,  122,  122,  117,  121,
-      122,    4,   26,   27,  121,  122,  121,  122,  121,  122,
-       41,  121,  122,  122,  121,  122,  121,  122,  121,  122,
-       48,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,   66,
+      122,  123,  122,  123,  122,  123,   86,  122,  123,  123,
+      122,  123,  122,  123,  122,  123,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  123,   99,  122,  123,  122,
+      123,  122,  123,  103,  122,  123,  122,  123,  122,  123,
+      122,  123,  107,  122,  123,  109,  122,  123,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  123,
+      123,  123,  118,  122,  123,    4,   27,   28,  122,  123,
+      122,  123,  122,  123,   42,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,   49,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
 
-      121,  122,  122,  122,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  121,  122,  122,  121,  122,   89,  121,
-      122,  121,  122,  122,  121,  122,  121,  122,  121,  122,
-      122,  121,  122,  121,  122,  121,  122,  121,  122,  122,
-      122,  109,  121,  122,  121,  122,  121,  122,  122,  121,
-      122,  122,  122,  122,  134,   26,   27,   36,  121,  122,
-      121,  122,  121,  122,  122,  121,  122,  121,  122,   47,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,   67,  122,  123,  123,  123,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  122,  123,  123,
+      122,  123,   90,  122,  123,  122,  123,  123,  122,  123,
+      122,  123,  122,  123,  123,  122,  123,  122,  123,  122,
+      123,  122,  123,  123,  123,  110,  122,  123,  122,  123,
+      122,  123,  123,  122,  123,  123,  123,  123,  135,   27,
+       28,   37,  122,  123,  122,  123,  122,  123,  123,  122,
+      123,  122,  123,   48,  122,  123,  122,  123,  122,  123,
 
-      121,  122,   61,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,  122,  122,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  122,   87,  121,  122,
-      121,  122,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  122,  121,  122,  121,  122,  103,  121,  122,  104,
-      121,  122,  122,  122,  110,  121,  122,  121,  122,  122,
-      122,  122,  122,  122,   26,   27,  121,  122,  121,  122,
-      122,   44,  121,  122,  121,  122,  121,  122,  121,  122,
-      121,  122,   53,  121,  122,   54,  121,  122,  121,  122,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,   62,  122,  123,  122,
+      123,  122,  123,  122,  123,  122,  123,  123,  123,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      123,   88,  122,  123,  122,  123,  123,  122,  123,  122,
+      123,  122,  123,  122,  123,  123,  122,  123,  122,  123,
+      104,  122,  123,  105,  122,  123,  123,  123,  111,  122,
+      123,  122,  123,  123,  123,  123,  123,  123,   27,   28,
+      122,  123,  122,  123,  123,   45,  122,  123,  122,  123,
 
-      121,  122,   57,  121,  122,  121,  122,  121,  122,  121,
-      122,   63,  121,  122,  121,  122,  121,  122,  122,  122,
-      122,  121,  122,  121,  122,   74,  121,  122,   75,  121,
-      122,  121,  122,  121,  122,  121,  122,   79,  121,  122,
-      121,  122,  121,  122,  121,  122,  122,  121,  122,  122,
-       92,  121,  122,  121,  122,   95,  121,  122,   97,  121,
-      122,  122,  121,  122,  121,  122,  122,  122,  121,  122,
-      113,  122,  122,  122,  122,  122,   26,   27,  121,  122,
-      121,  122,  122,  121,  122,  121,  122,  121,  122,  121,
-      122,  121,  122,   56,  121,  122,  121,  122,  121,  122,
+      122,  123,  122,  123,  122,  123,   54,  122,  123,   55,
+      122,  123,  122,  123,  122,  123,   58,  122,  123,  122,
+      123,  122,  123,  122,  123,   64,  122,  123,  122,  123,
+      122,  123,  123,  123,  123,  122,  123,  122,  123,   75,
+      122,  123,   76,  122,  123,  122,  123,  122,  123,  122,
+      123,   80,  122,  123,  122,  123,  122,  123,  122,  123,
+      123,  122,  123,  123,   93,  122,  123,  122,  123,   96,
+      122,  123,   98,  122,  123,  123,  122,  123,  122,  123,
+      123,  123,  122,  123,  114,  123,  123,  123,  123,  123,
+       27,   28,  122,  123,  122,  123,  123,  122,  123,  122,
 
-       62,  121,  122,  121,  122,   65,  121,  122,  122,  122,
-      122,  122,  121,  122,   73,  121,  122,   76,  121,  122,
-       77,  121,  122,  121,  122,  121,  122,  122,  121,  122,
-      122,   91,  121,  122,  122,  121,  122,  122,  121,  122,
-      100,  121,  122,  122,  122,  121,  122,  122,  122,  122,
-      122,   26,   27,  121,  122,   40,  121,  122,   43,  122,
-       46,  121,  122,   49,  121,  122,  121,  122,  121,  122,
-      121,  122,  121,  122,  121,  122,  122,  122,  122,   71,
-      122,  121,  122,  121,  122,  121,  122,  122,  121,  122,
-      122,  122,  121,  122,  122,  105,  122,  122,  111,  121,
+      123,  122,  123,  122,  123,  122,  123,   57,  122,  123,
+      122,  123,  122,  123,   63,  122,  123,  122,  123,   66,
+      122,  123,  123,  123,  123,  123,  122,  123,   74,  122,
+      123,   77,  122,  123,   78,  122,  123,  122,  123,  122,
+      123,  123,  122,  123,  123,   92,  122,  123,  123,  122,
+      123,  123,  122,  123,  101,  122,  123,  123,  123,  122,
+      123,  123,  123,  123,  123,   27,   28,  122,  123,   41,
+      122,  123,   44,  123,   47,  122,  123,   50,  122,  123,
+      122,  123,  122,  123,  122,  123,  122,  123,  122,  123,
+      123,  123,  123,   72,  123,  122,  123,  122,  123,  122,
 
-      122,  122,  122,  122,  122,  135,   26,  121,  122,   50,
-      121,  122,  121,  122,   52,  121,  122,  121,  122,  121,
-      122,   60,  121,  122,  121,  122,  122,  122,  122,   72,
-      121,  122,  121,  122,  121,  122,  122,  121,  122,  122,
-      122,  121,  122,  122,  121,  122,  122,  114,  122,  122,
-      122,  122,   26,   39,  121,  122,   51,  121,  122,   55,
-      121,  122,  121,  122,  121,  122,  122,  122,  122,  121,
-      122,  121,  122,  122,  121,  122,  122,  122,  121,  122,
-      122,  121,  122,  122,  122,  122,  122,   26,  121,  122,
-      121,  122,  122,  122,  122,   78,  121,  122,   80,  121,
+      123,  123,  122,  123,  123,  123,  122,  123,  123,  106,
+      123,  123,  112,  122,  123,  123,  123,  123,  123,  136,
+       27,  122,  123,   51,  122,  123,  122,  123,   53,  122,
+      123,  122,  123,  122,  123,   61,  122,  123,  122,  123,
+      123,  123,  123,   73,  122,  123,  122,  123,  122,  123,
+      123,  122,  123,  123,  123,  122,  123,  123,  122,  123,
+      123,  115,  123,  123,  123,  123,   27,   40,  122,  123,
+       52,  122,  123,   56,  122,  123,  122,  123,  122,  123,
+      123,  123,  123,  122,  123,  122,  123,  123,  122,  123,
+      123,  123,  122,  123,  123,  122,  123,  123,  123,  123,
 
-      122,   81,  122,  121,  122,  122,  122,  121,  122,  122,
-       99,  121,  122,  122,  122,  122,  122,   26,  121,  122,
-       64,  121,  122,   69,  122,  122,   70,  122,  121,  122,
-       86,  122,  122,   94,  121,  122,  122,  107,  122,  122,
-      122,  116,  122,   26,  121,  122,  122,   84,  121,  122,
-      122,  122,  122,  115,  122,   26,  121,  122,   68,  122,
-      122,   96,  122,  112,  122,   26,   58,  121,  122,   88,
-      122,   24,   26,    5
+      123,   27,    6,  122,  123,  122,  123,  123,  123,  123,
+       79,  122,  123,   81,  122,  123,   82,  123,  122,  123,
+      123,  123,  122,  123,  123,  100,  122,  123,  123,  123,
+      123,  123,   27,  122,  123,   65,  122,  123,   70,  123,
+      123,   71,  123,  122,  123,   87,  123,  123,   95,  122,
+      123,  123,  108,  123,  123,  123,  117,  123,   27,  122,
+      123,  123,   85,  122,  123,  123,  123,  123,  116,  123,
+       27,  122,  123,   69,  123,  123,   97,  123,  113,  123,
+       27,   59,  122,  123,   89,  123,   25,   27,    5
     } ;
 
-static yyconst flex_int16_t yy_accept[750] =
+static yyconst flex_int16_t yy_accept[770] =
     {   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,  131,  133,  136,  138,
-      141,  144,  147,  151,  153,  156,  159,  162,  165,  167,
-      170,  173,  175,  178,  181,  184,  187,  191,  194,  196,
-      201,  206,  209,  211,  213,  216,  218,  220,  223,  226,
-      229,  232,  235,  235,  236,  237,  238,  238,  239,  239,
+        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,  131,  133,
+      136,  138,  141,  144,  147,  151,  153,  156,  159,  162,
+      165,  167,  170,  173,  175,  178,  181,  184,  187,  191,
+      194,  196,  201,  206,  209,  211,  213,  216,  218,  220,
+      223,  226,  229,  232,  235,  238,  240,  242,  244,  247,
 
-      240,  240,  240,  240,  241,  242,  243,  244,  244,  245,
-      245,  247,  247,  247,  249,  251,  253,  255,  257,  259,
-      260,  262,  264,  266,  268,  271,  273,  275,  277,  279,
-      281,  283,  285,  287,  289,  290,  291,  293,  295,  297,
-      299,  301,  303,  305,  307,  308,  310,  312,  315,  317,
-      318,  320,  322,  324,  326,  327,  329,  331,  333,  335,
-      337,  339,  341,  343,  344,  346,  348,  349,  350,  352,
-      353,  354,  354,  355,  355,  355,  355,  355,  356,  357,
-      358,  359,  360,  361,  362,  362,  363,  365,  367,  368,
-      369,  369,  370,  371,  371,  371,  372,  372,  373,  373,
+      247,  248,  249,  250,  250,  251,  251,  252,  252,  252,
+      252,  253,  254,  255,  256,  256,  257,  257,  259,  259,
+      259,  261,  263,  265,  267,  269,  271,  272,  274,  276,
+      278,  280,  283,  285,  287,  289,  291,  293,  295,  297,
+      299,  301,  302,  303,  305,  307,  309,  311,  313,  315,
+      317,  319,  320,  322,  324,  327,  329,  330,  332,  334,
+      336,  338,  339,  341,  343,  345,  347,  349,  351,  353,
+      355,  356,  358,  360,  361,  362,  364,  365,  366,  366,
+      367,  367,  367,  367,  367,  368,  369,  370,  371,  372,
+      373,  374,  374,  375,  377,  379,  380,  381,  381,  382,
 
-      373,  373,  373,  375,  376,  377,  377,  378,  380,  381,
-      383,  386,  389,  391,  393,  393,  395,  398,  400,  402,
-      404,  406,  408,  410,  412,  414,  416,  418,  421,  423,
-      425,  427,  429,  431,  433,  434,  435,  437,  439,  441,
-      443,  445,  447,  449,  452,  455,  457,  458,  460,  462,
-      464,  465,  467,  470,  472,  474,  476,  477,  479,  481,
-      483,  486,  488,  490,  492,  494,  496,  498,  499,  501,
-      503,  505,  506,  507,  508,  510,  511,  511,  511,  512,
-      513,  514,  516,  519,  520,  520,  521,  522,  523,  524,
-      525,  526,  526,  526,  526,  528,  530,  532,  534,  536,
+      382,  382,  383,  384,  384,  384,  385,  385,  386,  386,
+      386,  386,  386,  388,  389,  390,  390,  391,  393,  394,
+      396,  399,  402,  404,  406,  406,  408,  411,  413,  415,
+      417,  419,  421,  423,  425,  427,  429,  431,  434,  436,
+      438,  440,  442,  444,  446,  447,  448,  450,  452,  454,
+      456,  458,  460,  462,  465,  468,  470,  471,  473,  475,
+      477,  478,  480,  483,  485,  487,  489,  490,  492,  494,
+      496,  499,  501,  503,  505,  507,  509,  511,  512,  514,
+      516,  518,  519,  520,  521,  523,  524,  524,  524,  525,
+      526,  527,  529,  532,  533,  533,  534,  534,  535,  536,
 
-      538,  540,  542,  544,  546,  548,  550,  552,  554,  556,
-      558,  560,  562,  564,  566,  568,  570,  573,  574,  575,
-      577,  579,  581,  583,  585,  587,  589,  591,  593,  596,
-      597,  599,  601,  603,  604,  606,  608,  610,  612,  613,
-      616,  618,  620,  623,  625,  627,  629,  632,  635,  636,
-      638,  640,  642,  644,  646,  647,  648,  649,  652,  652,
-      652,  652,  652,  653,  655,  655,  657,  659,  661,  664,
-      665,  667,  669,  671,  674,  676,  678,  680,  682,  684,
-      686,  688,  690,  692,  694,  696,  698,  700,  703,  704,
-      705,  706,  708,  710,  712,  714,  716,  718,  720,  722,
+      537,  538,  539,  540,  540,  540,  540,  542,  544,  546,
+      548,  550,  552,  554,  556,  558,  560,  562,  564,  566,
+      568,  570,  572,  574,  576,  578,  580,  582,  584,  587,
+      588,  589,  591,  593,  595,  597,  599,  601,  603,  605,
+      607,  610,  611,  613,  615,  617,  618,  620,  622,  624,
+      626,  627,  630,  632,  634,  637,  639,  641,  643,  646,
+      649,  650,  652,  654,  656,  658,  660,  661,  662,  663,
+      666,  666,  666,  666,  666,  667,  669,  669,  669,  671,
+      673,  675,  678,  679,  681,  683,  685,  688,  690,  692,
+      694,  696,  698,  700,  702,  704,  706,  708,  710,  712,
 
-      724,  726,  727,  729,  732,  734,  735,  737,  737,  739,
-      741,  742,  744,  746,  748,  750,  751,  752,  755,  757,
-      759,  760,  762,  763,  764,  765,  765,  765,  766,  768,
-      768,  771,  773,  775,  776,  778,  780,  783,  785,  787,
-      789,  791,  793,  795,  797,  799,  801,  803,  806,  808,
-      810,  812,  814,  815,  816,  817,  819,  821,  823,  825,
-      827,  829,  831,  833,  835,  837,  837,  838,  841,  843,
-      844,  846,  848,  850,  852,  853,  855,  857,  860,  863,
-      864,  865,  868,  870,  871,  872,  873,  874,  875,  875,
-      875,  877,  877,  879,  881,  882,  885,  887,  889,  891,
+      714,  717,  718,  719,  720,  722,  724,  726,  728,  730,
+      732,  734,  736,  738,  740,  741,  743,  746,  748,  749,
+      751,  751,  753,  755,  756,  758,  760,  762,  764,  765,
+      766,  769,  771,  773,  774,  776,  777,  778,  779,  779,
+      779,  780,  782,  782,  782,  785,  787,  789,  790,  792,
+      794,  797,  799,  801,  803,  805,  807,  809,  811,  813,
+      815,  817,  820,  822,  824,  826,  828,  829,  830,  831,
+      833,  835,  837,  839,  841,  843,  845,  847,  849,  851,
+      851,  852,  855,  857,  858,  860,  862,  864,  866,  867,
+      869,  871,  874,  877,  878,  879,  882,  884,  885,  886,
 
-      893,  896,  899,  901,  903,  906,  908,  910,  912,  915,
-      917,  919,  920,  921,  922,  924,  926,  929,  932,  934,
-      936,  938,  941,  943,  945,  947,  948,  950,  951,  954,
-      956,  959,  962,  963,  965,  967,  968,  969,  971,  973,
-      974,  975,  976,  977,  977,  979,  979,  981,  983,  984,
-      986,  988,  990,  992,  994,  997,  999, 1001, 1004, 1006,
-     1009, 1010, 1011, 1012, 1013, 1015, 1018, 1021, 1024, 1026,
-     1028, 1029, 1031, 1032, 1035, 1036, 1038, 1039, 1041, 1044,
-     1045, 1046, 1048, 1049, 1050, 1051, 1052, 1052, 1052, 1054,
-     1054, 1056, 1059, 1061, 1064, 1067, 1069, 1071, 1073, 1073,
+      887,  888,  889,  889,  889,  891,  891,  891,  893,  895,
+      896,  899,  901,  903,  905,  907,  910,  913,  915,  917,
+      920,  922,  924,  926,  929,  931,  933,  934,  935,  936,
+      938,  940,  943,  946,  948,  950,  952,  955,  957,  959,
+      961,  962,  964,  965,  968,  970,  973,  976,  977,  979,
+      981,  982,  983,  985,  987,  988,  989,  990,  991,  991,
+      993,  993,  993,  995,  997,  998, 1000, 1002, 1004, 1006,
+     1008, 1011, 1013, 1015, 1018, 1020, 1023, 1024, 1025, 1026,
+     1027, 1029, 1032, 1035, 1038, 1040, 1042, 1043, 1045, 1046,
+     1049, 1050, 1052, 1053, 1055, 1058, 1059, 1060, 1062, 1063,
 
-     1075, 1077, 1078, 1079, 1080, 1082, 1084, 1086, 1088, 1089,
-     1091, 1092, 1093, 1095, 1096, 1096, 1098, 1099, 1102, 1103,
-     1104, 1105, 1106, 1106, 1107, 1108, 1108, 1110, 1113, 1115,
-     1118, 1120, 1122, 1125, 1127, 1128, 1129, 1130, 1133, 1135,
-     1137, 1138, 1140, 1141, 1142, 1144, 1145, 1147, 1148, 1150,
-     1151, 1152, 1153, 1154, 1154, 1157, 1160, 1163, 1165, 1167,
-     1168, 1169, 1170, 1172, 1174, 1175, 1177, 1178, 1179, 1181,
-     1182, 1184, 1185, 1186, 1187, 1188, 1189, 1189, 1191, 1193,
-     1194, 1195, 1196, 1199, 1202, 1204, 1206, 1207, 1208, 1210,
-     1211, 1214, 1215, 1216, 1217, 1218, 1219, 1219, 1221, 1224,
+     1064, 1065, 1066, 1066, 1066, 1068, 1068, 1068, 1070, 1073,
+     1075, 1078, 1081, 1083, 1085, 1087, 1087, 1089, 1091, 1092,
+     1093, 1094, 1096, 1098, 1100, 1102, 1103, 1105, 1106, 1107,
+     1109, 1110, 1110, 1112, 1113, 1116, 1117, 1118, 1119, 1120,
+     1120, 1121, 1122, 1122, 1122, 1124, 1127, 1129, 1132, 1134,
+     1136, 1139, 1141, 1142, 1143, 1144, 1147, 1149, 1151, 1152,
+     1154, 1155, 1156, 1158, 1159, 1161, 1162, 1164, 1165, 1166,
+     1167, 1168, 1168, 1168, 1171, 1174, 1177, 1179, 1181, 1182,
+     1183, 1184, 1186, 1188, 1189, 1191, 1192, 1193, 1195, 1196,
+     1198, 1199, 1200, 1201, 1202, 1203, 1204, 1204, 1206, 1208,
 
-     1226, 1227, 1229, 1231, 1233, 1234, 1237, 1238, 1240, 1241,
-     1242, 1244, 1245, 1245, 1247, 1248, 1251, 1252, 1253, 1254,
-     1256, 1257, 1257, 1259, 1261, 1262, 1264, 1266, 1267, 1267,
-     1270, 1272, 1274, 1274, 1274, 1274, 1274, 1274, 1274, 1274,
-     1274, 1274, 1274, 1274, 1274, 1274, 1274, 1275, 1275
+     1209, 1210, 1211, 1214, 1217, 1219, 1221, 1222, 1223, 1225,
+     1226, 1229, 1230, 1231, 1232, 1233, 1234, 1234, 1236, 1239,
+     1241, 1242, 1244, 1246, 1248, 1249, 1252, 1253, 1255, 1256,
+     1257, 1259, 1260, 1260, 1262, 1263, 1266, 1267, 1268, 1269,
+     1271, 1272, 1272, 1274, 1276, 1277, 1279, 1281, 1282, 1282,
+     1285, 1287, 1289, 1289, 1289, 1289, 1289, 1289, 1289, 1289,
+     1289, 1289, 1289, 1289, 1289, 1289, 1289, 1290, 1290
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -722,738 +725,755 @@
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         4,    4,    5,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    2,    6,    7,    1,    1,    1,    8,    9,   10,
-       10,   11,   12,   13,   14,   15,   16,   17,   18,   19,
-       19,   20,   21,   22,   19,   23,   24,   25,   26,   27,
-       28,   29,    1,   10,   30,   31,   32,   33,   34,   35,
-       36,   37,   38,   39,   40,   41,   42,   43,   44,   45,
-       46,   47,   48,   49,   50,   51,   52,   53,   54,   55,
-       56,    1,   57,   58,    1,    1,   59,   60,   61,   62,
+        1,    6,    7,    8,    9,    1,    1,   10,   11,   12,
+       12,   13,   14,   15,   16,   17,   18,   19,   20,   21,
+       21,   22,   23,   24,   21,   25,   26,   27,   28,   29,
+       30,   31,    1,   12,   32,   33,   34,   35,   36,   37,
+       38,   39,   40,   41,   42,   43,   44,   45,   46,   47,
+       48,   49,   50,   51,   52,   53,   54,   55,   56,   57,
+       58,    1,   59,   60,    1,    1,   61,   62,   63,   64,
 
-       63,   64,   65,   66,   67,   68,   64,   69,   70,   71,
-       72,   73,   64,   74,   75,   76,   77,   78,   64,   79,
-       64,   80,   81,   82,   83,    1,    1,    1,    1,    1,
+       65,   66,   67,   68,   69,   70,   66,   71,   72,   73,
+       74,   75,   66,   76,   77,   78,   79,   80,   66,   81,
+       66,   82,   83,   84,   85,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,   84,    1,    1,    1,
-       85,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,   86,    1,    1,    1,
+       87,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,   86,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,   88,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[87] =
+static yyconst flex_int32_t yy_meta[89] =
     {   0,
-        1,    2,    3,    4,    4,    1,    5,    1,    6,    1,
-        1,    1,    1,    7,    1,    1,    8,    8,    8,    8,
-        8,    8,    8,    8,    9,    1,    1,    9,    1,   10,
-       10,   10,   10,   10,   10,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,    1,    1,    1,   11,   11,
+        1,    2,    3,    4,    4,    2,    1,    5,    1,    1,
+        6,    1,    1,    1,    1,    7,    1,    1,    8,    8,
+        8,    8,    8,    8,    8,    8,    9,    1,    1,    9,
+        1,    8,    8,    8,    8,    8,    8,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,    1,    1,    1,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       12,    1,   13,    1,    1,    1
+       11,   11,   12,    1,   12,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[775] =
+static yyconst flex_int16_t yy_base[796] =
     {   0,
-        0,    0,   84,   87,   90,  102,   97,   99,   96,  111,
-       94,  106,  189,  275,  361,    0, 1663, 1648,  133,  141,
-     1646, 1640,  439,  149, 4544,  161,  210, 1632,  112,  233,
-      505, 1621, 4544,  555,  274,  118,  280,  295,  500,  605,
-      194,  611,  521,  218,  503,  633,  418,  650,  667,  670,
-      690,  701, 1584,  103, 1622,  745,   87,    0, 4544, 4544,
-     1620, 1618, 4544, 4544, 1614, 1618, 4544,    0,    0, 1616,
-        0,    0, 1596, 4544, 4544, 4544,    0, 4544, 4544,  769,
-      855,  125,  204,  130, 4544, 1605, 1605, 1599, 4544, 4544,
-     4544, 4544, 1605,  208,    0, 1598, 1595, 1586,   99, 1585,
+        0,    0,   86,   89,   92,   95,  100,  101,   98,  104,
+      106,  107,  192,  280,  368,    0,  455,    0, 1756, 1741,
+      120,  136, 1737, 1735,  530,  146, 4634,  148,  213, 1728,
+      104,  236,  596, 1712, 4634,  646,  279,  303,  285,  482,
+      111,  581,  197,  434,  499,  221,  597,  697,  500,  705,
+      727,  735,  608,  748, 1679,  105, 1715,  799,  177,    0,
+     4634, 4634, 1713, 1712, 4634, 4634, 1704, 1705, 4634,    0,
+        0, 1708,    0,    0, 1687, 4634, 4634, 4634,    0, 4634,
+     4634,  825,  913,  173,  178,  292, 4634, 1696, 1698, 1689,
+     4634, 4634, 4634, 4634,  209,  354, 1670, 1674, 1682, 1687,
 
-      668, 1586,  784,  106,  814, 1578, 4544,  868,  886,  904,
-      933, 1563,  938,  693,  769,  799,  927,  928,  943, 1575,
-      944,  988,  989, 1004, 1010, 1026, 1032, 1043, 1056, 1059,
-     1079, 1076, 1087, 1100,  103,  127, 1115, 1118, 1126, 1141,
-     1152, 1163, 1169, 1180,  150, 1193, 1196, 1209, 1217,   97,
-     1220, 1233, 1244, 1257,  155, 1273, 1279, 1290, 1296, 1307,
-     1318, 1324, 1335,  224, 1341, 1357,  159,  280, 1356, 4544,
-     4544,    0, 1572,  769, 1391, 1403, 1492,    0, 4544, 1559,
-     4544,    0, 4544,    0, 1541,    0, 1524,  311,  238, 4544,
-        0, 1552, 4544, 1551,    0, 1548,    0, 1539,  227, 1515,
+      514,    0, 1686, 1680, 1667,   93, 1666,  855, 1668,  869,
+      116,  928, 1660, 4634,  955,  985, 1003, 1013, 1645, 1018,
+      764,  854,  951, 1008, 1009, 1024, 1657, 1025, 1068, 1069,
+     1084, 1090, 1106, 1112, 1123, 1136, 1139, 1159, 1156, 1167,
+     1180,  112,  170, 1195, 1198, 1206, 1221, 1232, 1243, 1249,
+     1260,  145, 1273, 1276, 1289, 1297,  146, 1300, 1313, 1324,
+     1337,  202, 1353, 1359, 1370, 1376, 1387, 1398, 1404, 1415,
+      231, 1421, 1437,  230,  458, 1436, 4634, 4634,    0, 1655,
+      825, 1471, 1483, 1581,    0, 4634, 1643, 4634,    0, 4634,
+        0, 1625,    0, 1606,  299,  551, 4634,    0, 1633, 1608,
 
-      336,  146, 1413, 4544, 1004, 1421, 4544, 1463, 1537, 1415,
-     1421, 1437, 1438, 1453, 1536, 1461, 1464, 1513, 1514, 1529,
-     1537, 1540, 1553, 1561, 1577, 1583, 1594, 1600, 1611, 1617,
-     1628, 1634, 1645, 1656,  158,  278, 1669, 1677, 1680, 1695,
-     1698, 1701, 1727, 1719, 1730, 1743,  283, 1751, 1764, 1772,
-      284, 1775, 1788, 1796, 1804, 1812,  251, 1825, 1828, 1836,
-     1849, 1857, 1865, 1873, 1886, 1894, 1907,  507, 1915, 1931,
-     1932,  482,  518,  246, 1947, 1535, 1991, 1999, 4544, 1534,
-     4544,  263, 1504, 1532, 1464, 1506, 1501, 4544, 4544, 4544,
-     4544,  448,  297, 1465, 1993, 1994, 2009, 2015, 2026, 2032,
+        0, 1631, 4634, 1628,    0, 1619,    0, 1618,  308, 1594,
+      301,  641, 1493, 4634, 1084, 1501, 4634, 1543, 1616, 1495,
+     1501, 1517, 1518, 1533, 1615, 1541, 1544, 1593, 1594, 1609,
+     1617, 1620, 1633, 1641, 1657, 1663, 1674, 1680, 1691, 1697,
+     1708, 1714, 1725, 1736,  209,  254, 1749, 1757, 1760, 1775,
+     1778, 1781, 1807, 1799, 1810, 1823,  249, 1831, 1844, 1852,
+      289, 1855, 1868, 1876, 1884, 1892,  572, 1905, 1908, 1916,
+     1929, 1937, 1945, 1953, 1966, 1974, 1987,  297, 1995, 2011,
+     2012,  469,  456,  459, 2027, 1614, 2078, 2086, 4634, 1613,
+     4634,  181, 1583, 1587, 1544, 1578, 1533, 1567, 1566, 4634,
 
-     2048, 2049, 2064, 2072, 2080, 2096, 2093, 2104, 2117, 2120,
-     2135, 2141, 2152, 2158, 2169, 2184, 2190,  255,  547, 2201,
-     2207, 2222, 2223, 2238, 2244, 2259, 2262, 2270, 2283,  481,
-     2291, 2294, 2307,  519, 2315, 2328, 2336, 2344,  535, 2352,
-     2360, 2373, 2381, 2384, 2402, 2399, 2405, 2420,  569, 2423,
-     2426, 2443, 2449, 2460,  624,  248,  522, 2476, 2510, 2533,
-     2556, 2568, 1498,  417, 1467, 2552, 2567, 2583, 2580,  629,
-     2601, 2604, 2607, 2622, 2625, 2633, 2646, 2654, 2667, 2678,
-     2684, 2695, 2706, 2721, 2727, 2738, 2744, 2759,  553,  570,
-      635, 2760, 2780, 2777, 2798, 2797, 2813, 2819, 2830, 2843,
+     4634, 4634, 4634,  545,  731, 1525, 2080, 2081, 2096, 2102,
+     2113, 2119, 2135, 2136, 2151, 2159, 2167, 2183, 2180, 2191,
+     2204, 2207, 2222, 2228, 2239, 2245, 2256, 2271, 2277,  111,
+      607, 2288, 2294, 2309, 2310, 2325, 2331, 2346, 2349, 2357,
+     2370,  251, 2378, 2381, 2394,  460, 2402, 2415, 2423, 2431,
+      446, 2439, 2447, 2460, 2468, 2471, 2489, 2486, 2492, 2507,
+      452, 2510, 2513, 2530, 2536, 2547,  573,  632,  642, 2563,
+     2598, 2623, 2631, 2643, 1557,  308, 1565, 1522, 2627, 2642,
+     2648, 2659,  658, 2677, 2680, 2683, 2698, 2701, 2709, 2722,
+     2730, 2743, 2754, 2760, 2771, 2782, 2797, 2803, 2814, 2820,
 
-     2854,  625, 2851, 2867, 2875,  626, 2883,  296, 2891, 2904,
-      637, 2917, 2920, 2928, 2941,  644,  643, 2952, 2958, 2969,
-      646, 2980,  648,  651,  668,  756, 3024, 4544,  499, 1490,
-     3008, 3024, 3021,  661, 3032, 3045, 3048, 3065, 3071, 3082,
-     3088, 3103, 3109, 3126, 3132, 3143, 3149, 3160, 3166, 3177,
-     3183, 3199,  676,  633,  742, 3200, 3215, 3221, 3232, 3238,
-     3253, 3259, 3270, 3285, 3291,  691,  797, 3302, 3318,  808,
-     3315, 1457, 3326, 3339,  799, 3347, 3362, 3365, 3368,  806,
-      814, 3383, 3386,  809,  741,  860,  831,  832, 3435, 3447,
-     1450, 1459, 3401, 3441,  655, 3442, 3459, 3458, 3474, 3475,
+     2835,  723,  636,  660, 2836, 2856, 2853, 2874, 2873, 2889,
+     2895, 2906, 2919, 2930,  727, 2927, 2943, 2951,  737, 2959,
+      229, 2967, 2980,  738, 2993, 2996, 3004, 3017,  794,  748,
+     3028, 3034, 3045,  742, 3056,  796,  739,  719,  874, 3107,
+     4634,  203, 1507, 1536, 3071, 3092, 3103,  846, 3114, 3120,
+     3131, 3137, 3153, 3154, 3169, 3180, 3186, 3203, 3209, 3220,
+     3226, 3237, 3243, 3254, 3260, 3276,  847,  731,  848, 3277,
+     3292, 3298, 3309, 3315, 3330, 3336, 3347, 3362, 3368,  623,
+      853, 3379, 3395,  619, 3392, 1510, 3403, 3416,  715, 3424,
+     3439, 3442, 3445,  866,  544, 3460, 3463,  891,  857,  790,
 
-     3490, 3491, 3506, 3512, 3523, 3529, 3540, 3551, 3562, 3568,
-     3579,  915,  802,  807, 3585, 3596, 3607, 3613, 3624, 3630,
-     3645, 3646, 3661, 3667, 1447,  882, 3678,  883, 3684, 1454,
-     3695, 3701,  810, 3716, 3722,  829,  885, 3738, 1471,  924,
-      901,  838,  918, 3772,  104,    0, 3766, 3767,  900, 3782,
-     3790, 3793, 3806, 3814, 3822, 3830, 3843, 3851, 3859, 3867,
-      843,  862,  976,  930, 3880, 3888, 3891, 3904, 3912, 3915,
-      962, 1438, 1029, 3928,  861, 1434,  920, 3949, 3936, 1030,
-     1047, 3952, 1032, 1044,  931, 1051, 4001, 1391,  709, 1423,
-     3967, 3985, 1453, 3996, 4002, 4017, 4018, 4033,  321, 4039,
+      892,  903, 3514, 3506, 1509, 1501, 1515, 3508, 3509,  865,
+     3524, 3530, 3541, 3547, 3558, 3564, 3575, 3581, 3596, 3597,
+     3612, 3618, 3629, 3640, 3646, 3657,  886,  882,  887, 3663,
+     3674, 3685, 3691, 3702, 3708, 3723, 3724, 3739, 3745, 1500,
+      945, 3756,  921, 3762, 1506, 3773, 3779,  894, 3794, 3800,
+      967,  966, 3816, 1525,  923,  951,  950,  997, 3851,  591,
+     1488,    0, 3845, 3817,  947, 3846, 3861, 3872, 3878, 3889,
+     3895, 3910, 3913, 3921, 3934, 3937,  884, 1043, 1046,  999,
+     3952, 3958, 3969, 3975, 3986, 3992,  969, 1498, 1102, 4003,
+      971, 1493,  953, 4014, 4020, 1110, 1118, 4031,  973,  972,
 
-     4050, 1064, 1026, 1065, 1449, 4056, 4067, 4078, 1066, 1423,
-     1080, 1054, 1414, 1050,  222, 1441, 1100, 4084, 1069, 1133,
-     1102, 1141, 1514, 4544, 1421, 1388, 4095, 4101, 4116, 4117,
-     4132, 1404, 4133, 4148, 1121, 1078, 1134, 4154, 4165, 4176,
-     1082, 1386, 1150, 1148, 1343, 1152, 1339, 1166, 1361, 1171,
-     1161, 1189, 1329, 1297, 4182, 4193, 4199, 1321, 4210, 1128,
-     1156, 1173, 4221, 4227, 1184, 1313, 1206, 1204, 1298, 1212,
-     1284, 1228, 1239, 1215, 1241, 1272, 1232, 1248, 4242, 1243,
-     1259, 1254, 4243, 4258, 1278, 1223, 1265, 1217, 1155, 1267,
-        0, 1279, 1287, 1282, 1291, 1143, 1116, 1130, 4259, 1067,
+     1112, 1127, 4082, 4107,  611, 1490, 1462, 4046, 4091, 1484,
+     4092, 4107, 4113, 4128, 4129,  749, 4144, 4150, 1144, 1057,
+     1145, 1483, 4161, 4172, 4183, 1116, 1438, 1160, 1124, 1432,
+     1147, 1028, 1460, 1193, 4189, 1131, 1179, 1138, 1221, 1596,
+     4634, 1438, 1418, 1394, 4200, 4206, 4221, 4222, 4237, 1411,
+     4238, 4253, 1155, 1158, 1201, 4259, 4270, 4281, 1162, 1410,
+     1214, 1228, 1400, 1230, 1393, 1241, 1413, 1246, 1283, 1244,
+     1353, 1355, 1306, 4287, 4298, 4304, 1309, 4315, 1258,  104,
+     1264, 4326, 4332, 1271, 1251, 1295, 1284, 1234, 1286, 1232,
+     1299, 1319, 1310, 1301, 1218, 4634, 1185, 1208, 4347, 1323,
 
-     1137, 1058, 1012, 1045, 1266,    0, 1348, 1036, 1404, 1318,
-     1028,  917,  887,  917, 1295,    0,  653, 1389, 1436,  933,
-      899,  797,  713,  739, 1297,  551,  544,  516,  485,    0,
-      540,    0,  464,  437,  391,  419,  386,  390,  385,  379,
-      391,  278, 1388, 1457,  335,  118, 4544, 4544, 4309, 4322,
-     4335, 4348, 4361, 4374, 4386, 4390, 4401, 4414, 4427, 4438,
-     4449, 4454, 4459, 4464, 4468, 4473, 4477, 4481, 4485, 4489,
-     4500, 4507, 4518, 4530
+     1339, 1334, 4348, 4363, 1232, 1164, 1345, 1313, 1109, 1347,
+        0, 1359, 1367, 1362, 1371, 1099, 1083, 1097, 4364, 1125,
+     1217, 1049,  934,  954, 1375,    0, 1428,  930, 1459, 1398,
+      880,  822,  791,  819, 1381,    0, 1378, 1469, 1523,  782,
+      743,  720,  732,  755, 1348,  753,  751,  723,  689,    0,
+      648,    0,  572,  605,  482,  436,  406,  394,  288,  273,
+      280,  165, 1250, 1566,  130,  119, 4634, 4634, 4416, 4428,
+     4440, 4452, 4464, 4476, 4487, 4489, 4500, 4512, 4524, 4535,
+     4546, 4551, 4556, 4560, 4565, 4569, 4574, 4578, 4582, 4586,
+     4589, 4593, 4604, 4610, 4621
+
     } ;
 
-static yyconst flex_int16_t yy_def[775] =
+static yyconst flex_int16_t yy_def[796] =
     {   0,
-      748,    1,  749,  749,  749,  749,  750,  750,  751,  751,
-      752,  752,  753,  753,  748,   15,  748,  748,  748,  748,
-      748,  754,  748,  755,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,  748,  748,  756,  748,  748,  757,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  758,  758,  748,
-      759,  759,  748,  748,  748,  748,  760,  748,  748,  761,
-      761,  748,  748,   23,  748,  748,  748,  762,  748,  748,
-      748,  748,  748,  748,  754,  754,  748,  763,  748,  764,
+      768,    1,  769,  769,  769,  769,  770,  770,  771,  771,
+      772,  772,  773,  773,  768,   15,   15,   17,  768,  768,
+      768,  768,  768,  774,  768,  775,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,  768,  768,  776,  768,  768,  777,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  778,
+      778,  768,  779,  779,  768,  768,  768,  768,  780,  768,
+      768,  781,  781,  768,  768,   25,  768,  768,  768,  782,
+      768,  768,  768,  768,  768,  768,  768,  768,  783,  768,
 
-      755,  755,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  765,   34,   34,   34,   34,   34,   34,  766,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,  766,  766,   34,   34,   34,   34,
-       34,   34,   34,   34,  766,   34,   34,   34,   34,  766,
-       34,   34,   34,   34,  766,   34,   34,   34,   34,   34,
-       34,   34,   34,  766,   34,   34,  766,  766,   34,  748,
-      748,  767,  756,  748,  748,  748,  748,  757,  748,  748,
-      748,  758,  748,  759,  748,  760,   81,   81,  748,  748,
-      768,  762,  748,  748,  769,  763,  770,  764,  748,  748,
+      768,  774,  774,  768,  784,  768,  785,  775,  775,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  786,
+       36,   36,   36,   36,   36,   36,  787,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  787,  787,   36,   36,   36,   36,   36,   36,   36,
+       36,  787,   36,   36,   36,   36,  787,   36,   36,   36,
+       36,  787,   36,   36,   36,   36,   36,   36,   36,   36,
+      787,   36,   36,  787,  787,   36,  768,  768,  788,  776,
+      768,  768,  768,  768,  777,  768,  768,  768,  778,  768,
+      779,  768,  780,   83,   83,  768,  768,  789,  782,  768,
 
-      771,  748,  748,  748,  748,  748,  748,  765,  772,   34,
-       34,   34,   34,   34,  772,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,  766,  766,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,  766,   34,   34,   34,
-      766,   34,   34,   34,   34,   34,  766,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,  766,   34,   34,
-       34,  766,  766,  766,   34,  767,  748,  748,  748,  748,
-      748,   81,   81,  768,  748,  769,  770,  748,  748,  748,
-      748,  771,  748,  748,   34,   34,   34,   34,   34,   34,
+      790,  783,  768,  768,  791,  784,  792,  785,  768,  768,
+      793,  768,  768,  768,  768,  768,  768,  786,  794,   36,
+       36,   36,   36,   36,  794,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,  787,  787,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,  787,   36,   36,   36,
+      787,   36,   36,   36,   36,   36,  787,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,  787,   36,   36,
+       36,  787,  787,  787,   36,  788,  768,  768,  768,  768,
+      768,   83,   83,  789,  768,  790,  768,  791,  792,  768,
 
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,  766,  766,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,  766,
-       34,   34,   34,  766,   34,   34,   34,   34,  766,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,  766,   34,
-       34,   34,   34,   34,  766,  766,  766,   34,  748,  748,
-      748,  748,  748,   81,  748,   34,   34,   34,   34,  766,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,  766,  766,
-      766,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+      768,  768,  768,  793,  768,  768,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,  787,
+      787,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,  787,   36,   36,   36,  787,   36,   36,   36,   36,
+      787,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+      787,   36,   36,   36,   36,   36,  787,  787,  787,   36,
+      768,  768,  768,  768,  768,   83,  768,  768,   36,   36,
+       36,   36,  787,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
 
-       34,  766,   34,   34,   34,  766,   34,  208,   34,   34,
-      766,   34,   34,   34,   34,  766,  766,   34,   34,   34,
-      766,   34,  766,  766,  766,  748,  748,  748,   81,  748,
-       34,   34,   34,  766,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,  766,  766,  766,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,  208,  766,   34,   34,  766,
-       34,  208,   34,   34,  766,   34,   34,   34,   34,  766,
-      766,   34,   34,  766,  766,  766,  766,  766,  748,  748,
-       81,  748,   34,   34,  766,   34,   34,   34,   34,   34,
+       36,  787,  787,  787,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,  787,   36,   36,   36,  787,   36,
+      218,   36,   36,  787,   36,   36,   36,   36,  787,  787,
+       36,   36,   36,  787,   36,  787,  787,  787,  768,  768,
+      768,   83,  768,  768,   36,   36,   36,  787,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,  787,  787,  787,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,  218,
+      787,   36,   36,  787,   36,  218,   36,   36,  787,   36,
+       36,   36,   36,  787,  787,   36,   36,  787,  787,  787,
 
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,  766,  766,  766,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,  208,  766,   34,  766,   34,  208,
-       34,   34,  766,   34,   34,  766,  766,   34,  766,  766,
-      766,  766,  766,  748,   81,  773,   34,   34,  766,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-      766,  766,  766,  766,   34,   34,   34,   34,   34,   34,
-      766,  208,  766,   34,  766,  208,  766,   34,   34,  766,
-      766,   34,  766,  766,  766,  766,  748,  774,   81,  748,
-       34,   34,  766,   34,   34,   34,   34,   34,  208,   34,
+      787,  787,  768,  768,   83,  768,  768,   36,   36,  787,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,  787,  787,  787,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,  218,
+      787,   36,  787,   36,  218,   36,   36,  787,   36,   36,
+      787,  787,   36,  787,  787,  787,  787,  787,  768,   83,
+      768,  795,   36,   36,  787,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,  787,  787,  787,  787,
+       36,   36,   36,   36,   36,   36,  787,  218,  787,   36,
+      787,  218,  787,   36,   36,  787,  787,   36,  787,  787,
 
-       34,  766,  766,  766,  766,   34,   34,   34,  766,  208,
-      766,  766,  208,  766,  208,  766,  766,   34,  766,  766,
-      766,  766,  748,  748,  760,  748,   34,   34,   34,   34,
-       34,  208,   34,   34,  766,  766,  766,   34,   34,   34,
-      766,  208,  766,  766,  208,  766,  208,  766,  766,  766,
-      766,  766,  760,  748,   34,   34,   34,  208,   34,  766,
-      766,  766,   34,   34,  766,  208,  766,  766,  208,  766,
-      208,  766,  766,  766,  766,  760,  748,  208,   34,  766,
-      766,  766,   34,   34,  766,  208,  766,  766,  208,  766,
-      208,  766,  766,  766,  766,  760,  748,  208,   34,  766,
+      787,  787,  768,  768,   83,  768,  768,   36,   36,  787,
+       36,   36,   36,   36,   36,  218,   36,   36,  787,  787,
+      787,  787,   36,   36,   36,  787,  218,  787,  787,  218,
+      787,  218,  787,  787,   36,  787,  787,  787,  787,  768,
+      768,  780,  768,  768,   36,   36,   36,   36,   36,  218,
+       36,   36,  787,  787,  787,   36,   36,   36,  787,  218,
+      787,  787,  218,  787,  218,  787,  787,  787,  787,  787,
+      780,  768,  768,   36,   36,   36,  218,   36,  787,  787,
+      787,   36,   36,  787,  218,  787,  787,  218,  787,  218,
+      787,  787,  787,  787,  780,  768,  768,  218,   36,  787,
 
-      766,  766,  208,  766,  766,  208,  766,  766,  766,  766,
-      766,  760,  748,  208,  766,  208,  766,  766,  766,  766,
-      760,  748,  208,  766,  766,  766,  766,  760,  748,  208,
-      766,  760,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,    0,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748
+      787,  787,   36,   36,  787,  218,  787,  787,  218,  787,
+      218,  787,  787,  787,  787,  780,  768,  218,   36,  787,
+      787,  787,  218,  787,  787,  218,  787,  787,  787,  787,
+      787,  780,  768,  218,  787,  218,  787,  787,  787,  787,
+      780,  768,  218,  787,  787,  787,  787,  780,  768,  218,
+      787,  780,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,    0,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768
+
     } ;
 
-static yyconst flex_int16_t yy_nxt[4631] =
+static yyconst flex_int16_t yy_nxt[4723] =
     {   0,
-       18,   19,   20,   19,   19,   21,   22,   23,   24,   25,
-       18,   26,   25,   27,   28,   29,   30,   31,   31,   31,
-       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,   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,   18,   18,   57,   59,   60,   60,   59,
-       60,   60,   59,   60,   60,   93,   72,   61,   69,   64,
+       20,   21,   22,   21,   21,   21,   23,   24,   20,   25,
+       26,   27,   20,   28,   27,   29,   30,   31,   32,   33,
+       33,   33,   33,   33,   33,   33,   34,   23,   35,   35,
+       20,   36,   37,   38,   39,   40,   41,   42,   43,   44,
+       43,   43,   43,   45,   46,   47,   48,   43,   49,   50,
+       51,   52,   53,   54,   43,   43,   43,   55,   56,   23,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   57,   57,   57,   57,   57,   57,   57,   57,
+       57,   57,   58,   23,   27,   20,   20,   59,   61,   62,
+       62,   61,   62,   62,   61,   62,   62,   61,   62,   62,
 
-       61,   64,   70,   62,   59,   60,   60,   65,   72,   65,
-      215,   93,   66,   69,   66,   62,  215,   70,   73,  201,
-       93,   74,  107,   67,   97,   67,  189,  189,  189,  189,
-       73,  747,  202,   74,   94,   94,   94,   94,  748,  589,
-      215,   93,   94,   94,   94,   94,  187,  293,  114,   93,
-      101,  101,  101,  101,  126,  748,   99,   93,  127,  171,
-      114,  128,  114,  215,  251,  101,  101,  114,  215,   93,
-      177,  215,  215,  235,   75,  294,   76,  103,  103,  103,
-      103,  103,  103,  103,  103,  236,   75,  748,   76,   77,
-       78,   79,   78,   78,   77,   77,   77,   77,   77,   77,
+       71,   63,   66,   66,   63,   72,   71,   64,   74,   74,
+       64,   72,   67,   67,  100,  100,  114,   68,   68,  225,
+      104,  101,  101,  101,  101,  101,  225,  225,   69,   69,
+      100,  211,   75,   75,  767,   76,   76,  101,  101,  101,
+      101,  101,  140,  121,  212,  766,  100,  108,  108,  108,
+      108,  108,  106,  121,  701,  121,  100,  121,  100,  141,
+      225,  225,  121,  178,  108,  108,  110,  110,  110,  110,
+      110,  110,  110,  110,  196,  196,  196,  196,  196,  196,
+      196,  196,  196,  196,  245,  225,  402,  100,   77,   77,
+       78,   78,   79,   80,   81,   80,   80,   80,   79,   79,
 
-       77,   77,   77,   77,   77,  189,  189,  189,  189,   94,
-       94,   94,   94,   77,   77,   77,   77,   77,   93,  247,
-      318,  257,   81,  104,  114,  272,  103,  105,  105,  105,
-      105,  105,  105,  105,  114,  748,  114,  215,  114,  189,
-      189,  189,  189,  114,   77,   77,   77,  108,  114,  109,
-      109,  109,  109,  109,  109,  109,  109,  288,  114,  215,
-      114,  215,  114,  289,  215,  647,  110,  144,  215,   78,
-       77,   78,   77,   77,   77,   77,   78,   79,   78,   78,
-       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
-       77,  215,  268,  215,  145,  110,  215,  215,  293,   77,
+       79,   79,   79,   79,   79,   79,   79,   79,   79,   79,
+      101,  101,  101,  101,  101,  261,  257,  225,   79,   79,
+       79,   79,   79,  100,  225,  194,  376,   83,  111,  121,
+      246,  110,  112,  112,  112,  112,  112,  112,  112,  121,
+      763,  121,  505,  121,  768,  225,  225,  194,  121,   79,
+       79,   79,  115,  121,  116,  116,  116,  116,  116,  116,
+      116,  116,  184,  121,  225,  121,  225,  121,  486,  225,
+      267,  117,  151,  330,   80,   79,   80,   79,   79,   79,
+       79,   80,   81,   80,   80,   80,   79,   79,   79,   79,
+       79,   79,   79,   79,   79,   79,   79,   79,  282,  152,
 
-       77,   77,   77,   77,  114,  187,  364,  121,   81,  748,
-      114,  122,  357,  129,  114,  123,  114,  124,  114,  424,
-      114,  339,  114,  114,  114,  114,  294,  125,  389,  114,
-       77,   77,   77,  472,  748,  114,  130,  131,  291,  114,
-      291,  273,  282,  283,  114,  330,  334,  132,  746,  292,
-      319,  743,  632,  187,  274,   78,   77,   78,   77,   77,
-       77,   33,   82,   83,   82,   82,   33,   33,   84,   33,
-       33,   33,   33,   85,   86,   33,   87,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
+      117,  278,  768,  303,  225,  303,   79,   79,   79,   79,
+       79,  121,  225,  342,  128,   83,  304,  121,  129,  768,
+      136,  121,  130,  121,  131,  121,  415,  121,  331,  121,
+      121,  121,  292,  293,  132,  121,  121,   79,   79,   79,
+      300,  133,  442,  194,  762,  134,  301,  121,  135,  121,
+      761,  768,  194,  346,  121,  101,  101,  101,  101,  101,
+      760,  361,   80,   79,   80,   79,   79,   79,   35,   84,
+       85,   84,   84,   84,   35,   35,   35,   86,   35,   35,
+       35,   35,   87,   88,   35,   89,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   90,
 
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   89,   90,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   91,   33,   92,   33,   33,   33,   93,  114,  429,
-      291,  156,  291,  742,  741,  740,  739,  738,  114,  187,
-      114,  292,  114,  737,   97,  736,  735,  114,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   98,  215,  215,   99,  100,  100,  100,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
+       90,   90,   90,   90,   90,   91,   92,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       93,   35,   94,   35,   35,   35,   95,   96,   95,   95,
+       95,  225,  759,   97,   35,  144,  121,  225,  145,   35,
+       35,  225,   35,  225,  225,  225,  121,  146,  147,  758,
+      121,   98,  757,  148,  225,  121,   99,   99,   99,   99,
+       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
 
-      100,  100,  100,  100,  100,  100,  100,  100,  100,  100,
-      100,  100,  100,  100,  100,  100,  100,  100,  100,  108,
-      215,  111,  111,  111,  111,  111,  111,  111,  111,  133,
-      114,  215,  215,  146,  147,  215,  491,  148,  110,  734,
-      114,  187,  114,  114,  114,  114,  134,  149,  215,  114,
-      142,  114,  114,  215,  402,  733,  732,  215,  143,  355,
-      215,  114,  150,  114,  215,  114,  215,  110,  113,  349,
-      114,  114,  114,  114,  114,  114,  114,  114,  114,  406,
-      356,  425,  215,  215,  114,  115,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  116,  114,  117,  114,  118,
+       99,   99,   99,   99,   99,   99,   99,   99,   99,   99,
+       99,   99,   35,   35,  121,  101,  101,  101,  101,  101,
+      368,  283,  419,  424,  121,  137,  138,  369,  121,  430,
+      149,  121,  121,  121,  284,  163,  139,   35,  150,   35,
+      100,  121,  121,  121,  121,  121,  121,  303,  367,  303,
+      121,  121,  196,  196,  196,  196,  196,  104,  756,  225,
+      304,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      105,  105,  105,  105,  105,  105,  105,  225,  225,  106,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
 
-      114,  114,  114,  114,  119,  114,  114,  114,  114,  114,
-      411,  453,  390,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
-      120,  120,  120,  120,  120,  114,  454,  215,  215,  215,
-      137,  114,  215,  138,  417,  114,  215,  114,  215,  114,
-      215,  114,  139,  140,  114,  114,  215,  215,  141,  215,
-      114,  215,  151,  114,  215,  152,  215,  135,  215,  101,
-      101,  101,  101,  153,  215,  114,  199,  114,  136,  154,
-      114,  215,  114,  157,  101,  101,  423,  158,  161,  215,
-      114,  467,  114,  513,  114,  475,  162,  114,  159,  114,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  115,  121,  118,  118,  118,  118,  118,  118,
+      118,  118,  225,  121,  552,  121,  642,  121,  605,  153,
+      154,  117,  121,  155,  225,  194,  755,  436,  768,  121,
+      121,  121,  305,  156,  351,  142,  305,  225,  121,  754,
+      121,  225,  121,  543,  121,  194,  143,  225,  157,  121,
+      117,  120,  540,  225,  121,  121,  121,  121,  121,  121,
+      121,  121,  306,  225,  403,  225,  175,  121,  122,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  123,  121,
+      124,  121,  125,  121,  121,  121,  121,  126,  121,  121,
 
-      114,  470,  434,  160,  748,  481,  155,  114,  455,  114,
-      114,  114,  165,  163,  114,  484,  114,  480,  166,  114,
-      114,  486,  625,  114,  725,  549,  487,  495,  525,  164,
-      114,  114,  114,  114,  114,  114,  488,  114,  169,  114,
-      167,  114,  114,  114,  512,  114,  174,  174,  174,  174,
-      114,  187,  215,  730,  215,  215,  168,  426,  426,  426,
-      426,  175,  175,  175,  175,  175,  175,  176,  176,  186,
-      174,  174,  174,  174,  186,  186,  186,  186,  186,  186,
-      186,  186,  186,  186,  186,  175,  175,  175,  175,  175,
-      175,  176,  176,  186,  186,  186,  186,  186,  108,  114,
+      121,  121,  121,  438,  468,  437,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
+      127,  127,  127,  127,  127,  127,  127,  127,  158,  121,
+      225,  159,  305,  448,  225,  469,  305,  121,  225,  160,
+      164,  121,  225,  121,  165,  161,  225,  121,  121,  121,
+      168,  121,  225,  225,  225,  166,  121,  225,  169,  121,
+      167,  753,  306,  225,  768,  752,  225,  121,  225,  121,
+      225,  121,  162,  121,  750,  170,  548,  121,  121,  172,
+      121,  121,  650,  467,  749,  173,  121,  176,  748,  502,
+      121,  171,  121,  528,  121,  481,  121,  225,  489,  121,
 
-      109,  109,  109,  109,  109,  109,  109,  109,  514,  114,
-      215,  114,  215,  114,  540,  215,  210,  110,  114,  215,
-      215,  215,  215,  215,  186,  186,  186,  215,  108,  114,
-      203,  203,  203,  203,  203,  203,  203,  203,  428,  211,
-      528,  114,  215,  114,  215,  215,  110,  110,  114,  563,
-      186,  215,  186,  186,  186,  186,  215,  526,  533,  729,
-      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
-      186,  539,  536,  215,  215,  215,  110,  564,  577,  186,
-      186,  186,  186,  186,  205,  205,  205,  205,  205,  205,
-      205,  205,  537,  542,  543,  215,  215,  188,  215,  580,
+      181,  181,  181,  181,  181,  225,  121,  174,  121,  225,
+      121,  225,  495,  498,  484,  121,  501,  182,  182,  182,
+      182,  182,  182,  183,  183,  193,  181,  181,  181,  181,
+      181,  193,  193,  193,  193,  193,  193,  193,  193,  193,
+      193,  193,  193,  182,  182,  182,  182,  182,  182,  183,
+      183,  193,  193,  193,  193,  193,  108,  108,  108,  108,
+      108,  225,  225,  225,  743,  209,  556,  742,  225,  494,
+      741,  500,  225,  108,  108,  439,  439,  439,  439,  439,
+      225,  225,  193,  193,  193,  115,  121,  116,  116,  116,
+      116,  116,  116,  116,  116,  225,  121,  225,  121,  225,
 
-      108,  110,  109,  109,  109,  109,  109,  109,  109,  109,
-      186,  186,  186,  215,  215,  206,  585,  206,  602,  110,
-      205,  205,  205,  205,  205,  205,  205,  205,  215,  573,
-      110,  215,  581,  215,  541,  612,  186,  215,  186,  186,
-      186,  603,  728,  215,  215,  575,  215,  108,  110,  111,
-      111,  111,  111,  111,  111,  111,  111,  114,  114,  584,
-      723,  722,  561,  721,  593,  586,  110,  114,  114,  114,
-      114,  114,  213,  114,  114,  215,  114,  114,  621,  216,
-      212,  562,  614,  114,  114,  114,  114,  114,  114,  215,
-      583,  214,  114,  114,  605,  110,  209,  209,  209,  209,
+      121,  225,  225,  220,  117,  121,  225,  225,  193,  225,
+      193,  193,  193,  193,  510,  541,  529,  527,  225,  193,
+      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
+      193,  579,  555,  117,  551,  577,  225,  565,  225,  193,
+      193,  193,  193,  193,  115,  225,  213,  213,  213,  213,
+      213,  213,  213,  213,  578,  554,  557,  195,  441,  580,
+      225,  619,  225,  117,  593,  225,  225,  558,  225,  225,
+      193,  193,  193,  215,  215,  215,  215,  215,  215,  215,
+      215,  225,  225,  121,  225,  591,  225,  225,  225,  736,
+      117,  599,  117,  221,  589,  121,  193,  121,  193,  193,
 
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  114,  114,
-      205,  205,  205,  205,  205,  205,  205,  205,  114,  114,
-      114,  114,  114,  218,  114,  609,  217,  114,  114,  215,
-      114,  215,  215,  215,  114,  215,  114,  219,  114,  215,
-      114,  604,  114,  114,  114,  220,  114,  215,  215,  114,
-      215,  222,  114,  215,  215,  716,  114,  215,  114,  221,
-      114,  215,  114,  114,  114,  114,  114,  215,  215,  215,
-      215,  114,  215,  114,  223,  224,  114,  114,  636,  226,
-      225,  215,  114,  215,  616,  215,  114,  646,  114,  114,
+      193,  115,  121,  116,  116,  116,  116,  116,  116,  116,
+      116,  600,  225,  610,  225,  597,  216,  631,  216,  117,
+      117,  215,  215,  215,  215,  215,  215,  215,  215,  115,
+      601,  118,  118,  118,  118,  118,  118,  118,  118,  596,
+      121,  121,  637,  768,  626,  636,  602,  629,  117,  117,
+      121,  121,  121,  121,  121,  223,  121,  121,  225,  121,
+      121,  225,  226,  222,  225,  622,  121,  121,  121,  121,
+      121,  121,  225,  665,  224,  121,  121,  117,  219,  219,
+      219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
+      219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
 
-      114,  114,  619,  114,  611,  114,  114,  230,  114,  114,
-      227,  228,  620,  215,  644,  215,  114,  114,  114,  114,
-      231,  114,  617,  114,  232,  114,  622,  233,  229,  114,
-      114,  114,  641,  649,  215,  237,  114,  635,  637,  661,
-      114,  215,  114,  234,  114,  114,  215,  215,  114,  114,
-      215,  238,  665,  643,  215,  114,  114,  114,  114,  114,
-      114,  215,  114,  215,  114,  215,  114,  114,  114,  215,
-      239,  114,  240,  648,  215,  114,  714,  651,  713,  215,
-      650,  114,  114,  114,  215,  114,  215,  660,  241,  242,
-      114,  712,  114,  114,  114,  243,  114,  215,  680,  114,
+      121,  121,  215,  215,  215,  215,  215,  215,  215,  215,
+      121,  121,  121,  121,  121,  228,  121,  225,  227,  121,
+      121,  654,  121,  621,  620,  225,  121,  225,  121,  229,
+      121,  225,  121,  225,  121,  121,  121,  230,  121,  225,
+      225,  121,  225,  232,  121,  734,  225,  733,  121,  732,
+      121,  231,  121,  225,  121,  121,  121,  121,  121,  225,
+      225,  638,  225,  121,  726,  121,  233,  234,  121,  121,
+      225,  236,  235,  225,  121,  225,  633,  225,  121,  628,
+      121,  121,  121,  121,  659,  121,  662,  121,  121,  240,
+      121,  121,  237,  238,  225,  634,  664,  667,  121,  121,
 
-      662,  114,  215,  114,  681,  114,  715,  114,  706,  114,
-      114,  245,  114,  114,  652,  244,  667,  215,  114,  215,
-      246,  668,  114,  114,  114,  215,  114,  670,  215,  114,
-      215,  248,  672,  114,  674,  114,  114,  114,  114,  114,
-      114,  215,  114,  682,  249,  114,  673,  114,  685,  114,
-      114,  114,  215,  114,  215,  675,  215,  114,  114,  114,
-      114,  114,  114,  114,  114,  250,  114,  215,  252,  114,
-      688,  703,  215,  114,  114,  114,  687,  114,  215,  215,
-      215,  694,  114,  253,  114,  690,  114,  114,  114,  705,
-      255,  215,  215,  254,  256,  215,  698,  114,  692,  114,
+      121,  121,  241,  121,  639,  121,  242,  121,  225,  243,
+      239,  121,  121,  121,  723,  669,  225,  247,  121,  653,
+      655,  680,  121,  679,  121,  244,  121,  121,  668,  225,
+      121,  121,  225,  248,  684,  661,  225,  121,  121,  121,
+      121,  121,  121,  225,  121,  225,  121,  225,  121,  121,
+      121,  764,  249,  121,  250,  764,  225,  121,  718,  225,
+      717,  225,  716,  121,  121,  121,  711,  121,  666,  681,
+      251,  252,  121,  225,  121,  121,  121,  253,  121,  225,
+      765,  121,  686,  121,  709,  121,  225,  121,  735,  121,
+      706,  121,  121,  255,  121,  121,  670,  254,  225,  225,
 
-      215,  114,  258,  114,  215,  697,  114,  700,  215,  114,
-      215,  695,  693,  259,  696,  114,  691,  114,  702,  114,
-      114,  114,  114,  114,  260,  701,  114,  261,  114,  704,
-      114,  215,  114,  707,  114,  265,  114,  114,  114,  114,
-      114,  717,  263,  708,  262,  114,  689,  114,  114,  264,
-      686,  114,  710,  709,  114,  711,  114,  724,  114,  266,
-      114,  215,  114,  678,  114,  114,  114,  114,  114,  677,
-      731,  114,  676,  114,  215,  114,  671,  114,  269,  114,
-      669,  114,  720,  114,  267,  114,  114,  114,  270,  744,
-      114,  271,  623,  623,  623,  623,  114,  114,  114,  114,
+      121,  225,  256,  687,  121,  121,  121,  689,  121,  691,
+      225,  121,  694,  258,  225,  121,  225,  121,  121,  121,
+      121,  121,  121,  692,  121,  225,  259,  121,  225,  121,
+      700,  121,  121,  121,  225,  121,  702,  705,  225,  121,
+      121,  121,  121,  121,  121,  121,  121,  260,  121,  225,
+      262,  121,  708,  698,  225,  121,  121,  121,  693,  121,
+      225,  710,  225,  225,  121,  263,  121,  707,  121,  121,
+      121,  712,  265,  715,  225,  264,  266,  225,  714,  121,
+      697,  121,  225,  121,  268,  121,  225,  725,  121,  720,
+      225,  121,  696,  225,  713,  269,  225,  121,  695,  121,
 
-      114,  114,  215,  277,  275,  114,  114,  176,  176,  176,
-      176,  176,  176,  176,  176,  278,  745,  215,  718,  176,
-      176,  176,  176,  176,  176,  176,  176,  108,  666,  203,
-      203,  203,  203,  203,  203,  203,  203,  205,  205,  205,
-      205,  205,  205,  205,  205,  114,  110,  658,  295,  215,
-      654,  114,  653,  726,  215,  114,  645,  114,  744,  114,
-      642,  114,  215,  114,  114,  114,  215,  114,  114,  626,
-      114,  613,  610,  624,  719,  110,  113,  114,  296,  114,
-      114,  114,  114,  114,  215,  745,  114,  114,  576,  572,
-      546,  114,  545,  114,  114,  114,  297,  114,  298,  530,
+      722,  121,  121,  121,  121,  121,  270,  721,  121,  271,
+      121,  724,  121,  225,  121,  727,  121,  275,  121,  121,
+      121,  121,  121,  751,  273,  728,  272,  121,  225,  121,
+      121,  274,  690,  121,  730,  729,  121,  731,  121,  688,
+      121,  276,  121,  225,  121,  744,  121,  121,  121,  121,
+      121,  745,  737,  121,  685,  121,  677,  121,  673,  121,
+      279,  121,  672,  121,  740,  121,  277,  121,  121,  121,
+      280,  671,  121,  281,  225,  225,  663,  660,  121,  121,
+      121,  121,  121,  121,  225,  287,  285,  121,  121,  183,
+      183,  183,  183,  183,  183,  183,  183,  288,  225,  225,
 
-      727,  114,  114,  114,  114,  114,  114,  492,  114,  430,
-      114,  363,  365,  114,  197,  623,  623,  623,  623,  195,
-      193,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  209,  209,  209,  209,  209,  209,  209,
-      209,  209,  209,  114,  114,  191,  187,  363,  172,  748,
-      215,  289,  197,  114,  300,  114,  114,  114,  114,  114,
-      299,  195,  114,  114,  285,  191,  187,  114,  281,  114,
-      114,  114,  280,  114,  302,  301,  279,  114,  114,  114,
-      114,  114,  114,  114,  114,  172,  114,  303,  215,  114,
-      207,  114,  204,  114,  200,  114,  624,  304,  197,  195,
+      738,  183,  183,  183,  183,  183,  183,  183,  183,  115,
+      644,  213,  213,  213,  213,  213,  213,  213,  213,  215,
+      215,  215,  215,  215,  215,  215,  215,  121,  117,  643,
+      307,  739,  630,  121,  627,  746,  606,  121,  225,  121,
+      225,  121,  592,  121,  588,  121,  121,  121,  562,  121,
+      121,  561,  121,  560,  545,  507,  506,  117,  120,  121,
+      308,  121,  121,  121,  121,  121,  444,  764,  121,  121,
+      443,  764,  375,  121,  378,  121,  121,  121,  309,  121,
+      310,  207,  205,  121,  121,  121,  121,  121,  121,  747,
+      121,  203,  121,  201,  377,  121,  765,  640,  640,  640,
 
-      194,  114,  114,  114,  193,  114,  307,  114,  305,  306,
-      114,  193,  191,  114,  308,  107,  309,  114,  190,  114,
-      185,  114,  183,  114,  114,  114,  114,  114,  107,  181,
-      114,  180,  114,  179,  114,  172,  114,  310,  114,  170,
-      114,  114,  114,  114,  114,  112,  106,  114,   96,  114,
-      312,  114,  311,  114,   93,  114,   93,  114,  114,  114,
-      114,  114,  748,  748,  114,  748,  114,  315,  313,  748,
-      114,  314,  114,  748,  114,  114,  114,  114,  114,  748,
-      748,  748,  748,  114,  748,  114,  114,  114,  748,  114,
-      748,  748,  316,  748,  114,  748,  114,  317,  114,  114,
+      640,  640,  198,  219,  219,  219,  219,  219,  219,  219,
+      219,  219,  219,  219,  219,  219,  219,  219,  219,  219,
+      219,  219,  219,  219,  219,  121,  121,  194,  375,  179,
+      768,  225,  301,  207,  205,  121,  312,  121,  121,  121,
+      121,  121,  311,  297,  121,  121,  201,  295,  198,  121,
+      194,  121,  121,  121,  291,  121,  314,  313,  290,  121,
+      121,  121,  121,  121,  121,  121,  121,  289,  121,  315,
+      179,  121,  225,  121,  217,  121,  214,  121,  210,  316,
+      641,  207,  205,  121,  121,  121,  204,  121,  319,  121,
+      317,  318,  121,  203,  203,  121,  320,  201,  321,  121,
 
-      114,  748,  748,  748,  748,  114,  748,  114,  748,  114,
-      114,  114,  748,  114,  748,  748,  320,  114,  114,  321,
-      322,  114,  114,  323,  114,  114,  114,  748,  114,  114,
-      748,  114,  748,  748,  326,  324,  748,  114,  114,  114,
-      114,  114,  114,  114,  114,  114,  325,  114,  327,  114,
-      114,  748,  748,  748,  748,  748,  748,  114,  748,  114,
-      114,  114,  748,  114,  748,  748,  748,  114,  114,  114,
-      114,  114,  114,  114,  114,  748,  114,  748,  748,  328,
-      748,  114,  748,  329,  331,  114,  748,  114,  748,  748,
-      748,  114,  114,  114,  114,  114,  748,  332,  748,  748,
+      119,  121,  200,  121,  198,  121,  121,  121,  121,  121,
+      114,  197,  121,  192,  121,  190,  121,  114,  121,  322,
+      121,  188,  121,  121,  121,  121,  121,  187,  186,  121,
+      179,  121,  324,  121,  323,  121,  177,  121,  119,  121,
+      121,  121,  121,  121,  113,  103,  121,  100,  121,  327,
+      325,  100,  121,  326,  121,  768,  121,  121,  121,  121,
+      121,  768,  768,  768,  768,  121,  768,  121,  121,  121,
+      768,  121,  768,  768,  328,  768,  121,  768,  121,  329,
+      121,  121,  121,  768,  768,  768,  768,  121,  768,  121,
+      768,  121,  121,  121,  768,  121,  768,  768,  332,  121,
 
-      114,  748,  114,  748,  114,  114,  114,  748,  114,  333,
-      748,  748,  114,  114,  114,  114,  114,  114,  114,  114,
-      748,  114,  748,  335,  114,  748,  114,  748,  114,  748,
-      114,  748,  114,  748,  114,  748,  114,  114,  114,  748,
-      114,  748,  114,  336,  114,  114,  114,  748,  114,  748,
-      748,  337,  114,  114,  114,  114,  114,  341,  114,  748,
-      748,  114,  338,  748,  748,  340,  114,  114,  114,  114,
-      114,  748,  114,  748,  114,  748,  114,  114,  114,  114,
-      114,  748,  748,  748,  748,  342,  748,  114,  748,  114,
-      343,  114,  748,  114,  748,  114,  748,  114,  114,  114,
+      121,  333,  334,  121,  121,  335,  121,  121,  121,  768,
+      121,  121,  768,  121,  768,  768,  338,  336,  768,  121,
+      121,  121,  121,  121,  121,  121,  121,  121,  337,  121,
+      339,  121,  121,  768,  768,  768,  768,  768,  768,  121,
+      768,  121,  121,  121,  768,  121,  768,  768,  768,  121,
+      121,  121,  121,  121,  121,  121,  121,  768,  121,  768,
+      768,  340,  768,  121,  768,  341,  343,  121,  768,  121,
+      768,  768,  768,  121,  121,  121,  121,  121,  768,  344,
+      768,  768,  121,  768,  121,  768,  121,  121,  121,  768,
+      121,  345,  768,  768,  121,  121,  121,  121,  121,  121,
 
-      748,  114,  344,  114,  748,  114,  114,  114,  748,  114,
-      748,  748,  748,  114,  114,  114,  114,  114,  748,  748,
-      748,  345,  114,  748,  114,  748,  114,  748,  114,  748,
-      114,  748,  748,  346,  114,  114,  114,  114,  114,  748,
-      348,  347,  748,  114,  748,  114,  748,  114,  748,  114,
-      748,  114,  748,  748,  354,  114,  114,  114,  350,  114,
-      351,  114,  114,  748,  114,  352,  748,  748,  748,  748,
-      748,  114,  114,  114,  114,  114,  114,  114,  748,  353,
-      114,  114,  748,  358,  748,  748,  748,  114,  748,  114,
-      748,  114,  359,  359,  359,  359,  114,  748,  748,  748,
+      121,  121,  768,  121,  768,  347,  121,  768,  121,  768,
+      121,  768,  121,  768,  121,  768,  121,  768,  121,  121,
+      121,  768,  121,  768,  121,  348,  121,  121,  121,  768,
+      121,  768,  768,  349,  121,  121,  121,  121,  121,  353,
+      121,  768,  768,  121,  350,  768,  768,  352,  121,  121,
+      121,  121,  121,  768,  121,  768,  121,  768,  121,  121,
+      121,  121,  121,  768,  768,  768,  768,  354,  768,  121,
+      768,  121,  355,  121,  768,  121,  768,  121,  768,  121,
+      121,  121,  768,  121,  356,  121,  768,  121,  121,  121,
+      768,  121,  768,  768,  768,  121,  121,  121,  121,  121,
 
-      361,  361,  361,  361,  748,  748,  748,  360,  360,  360,
-      360,  360,  360,  360,  360,  362,  362,  362,  362,  362,
-      362,  362,  362,  114,  114,  748,  748,  748,  748,  748,
-      748,  367,  748,  114,  114,  366,  114,  114,  114,  114,
-      748,  748,  114,  114,  748,  114,  748,  748,  748,  114,
-      368,  114,  748,  114,  748,  114,  114,  369,  114,  114,
-      748,  748,  114,  748,  114,  371,  114,  748,  114,  748,
-      114,  748,  114,  748,  114,  114,  114,  372,  114,  114,
-      373,  114,  748,  748,  748,  748,  748,  748,  114,  114,
-      114,  114,  114,  114,  114,  748,  748,  114,  114,  748,
+      768,  768,  768,  357,  121,  768,  121,  768,  121,  768,
+      121,  768,  121,  768,  768,  358,  121,  121,  121,  121,
+      121,  768,  360,  359,  768,  121,  768,  121,  768,  121,
+      768,  121,  768,  121,  768,  768,  366,  121,  121,  121,
+      362,  121,  363,  121,  121,  768,  121,  364,  768,  768,
+      768,  768,  768,  121,  121,  121,  121,  121,  121,  121,
+      768,  365,  121,  121,  768,  370,  768,  768,  768,  121,
+      768,  121,  768,  121,  768,  768,  768,  768,  121,  371,
+      371,  371,  371,  371,  768,  768,  768,  373,  373,  373,
+      373,  373,  768,  768,  768,  768,  372,  372,  372,  372,
 
-      748,  370,  114,  748,  114,  748,  114,  748,  114,  748,
-      114,  374,  114,  114,  114,  375,  114,  748,  748,  748,
-      114,  114,  114,  114,  114,  377,  114,  748,  376,  114,
-      748,  748,  748,  114,  114,  114,  114,  114,  114,  748,
-      114,  748,  378,  748,  114,  114,  379,  114,  114,  380,
-      114,  748,  381,  114,  748,  748,  748,  114,  748,  114,
-      114,  114,  114,  748,  114,  114,  114,  748,  382,  114,
-      748,  114,  748,  748,  748,  114,  748,  114,  748,  114,
-      748,  114,  114,  114,  114,  383,  748,  748,  114,  384,
-      114,  748,  114,  748,  114,  748,  114,  748,  114,  114,
+      372,  372,  372,  372,  374,  374,  374,  374,  374,  374,
+      374,  374,  121,  121,  768,  768,  768,  768,  768,  768,
+      380,  768,  121,  121,  379,  121,  121,  121,  121,  768,
+      768,  121,  121,  768,  121,  768,  768,  768,  121,  381,
+      121,  768,  121,  768,  121,  121,  382,  121,  121,  768,
+      768,  121,  768,  121,  384,  121,  768,  121,  768,  121,
+      768,  121,  768,  121,  121,  121,  385,  121,  121,  386,
+      121,  768,  768,  768,  768,  768,  768,  121,  121,  121,
+      121,  121,  121,  121,  768,  768,  121,  121,  768,  768,
+      383,  121,  768,  121,  768,  121,  768,  121,  768,  121,
 
-      114,  114,  114,  748,  385,  748,  748,  114,  748,  114,
-      748,  386,  748,  114,  114,  387,  748,  388,  114,  748,
-      114,  748,  748,  748,  114,  748,  114,  748,  114,  748,
-      114,  114,  114,  114,  114,  748,  748,  114,  748,  114,
-      748,  114,  748,  114,  748,  114,  748,  114,  748,  114,
-      114,  114,  114,  114,  748,  392,  114,  748,  748,  393,
-      748,  748,  114,  114,  114,  114,  114,  114,  114,  394,
-      748,  114,  114,  396,  114,  748,  391,  748,  114,  748,
-      114,  400,  114,  748,  114,  748,  114,  395,  114,  114,
-      397,  748,  114,  114,  398,  748,  748,  748,  748,  114,
+      387,  121,  121,  121,  388,  121,  768,  768,  768,  121,
+      121,  121,  121,  121,  390,  121,  768,  389,  121,  768,
+      768,  768,  121,  121,  121,  121,  121,  121,  768,  121,
+      768,  391,  768,  121,  121,  392,  121,  121,  393,  121,
+      768,  394,  121,  768,  768,  768,  121,  768,  121,  121,
+      121,  121,  768,  121,  121,  121,  768,  395,  121,  768,
+      121,  768,  768,  768,  121,  768,  121,  768,  121,  768,
+      121,  121,  121,  121,  396,  768,  768,  121,  397,  121,
+      768,  121,  768,  121,  768,  121,  768,  121,  121,  121,
+      121,  121,  768,  398,  768,  768,  121,  768,  121,  768,
 
-      114,  114,  114,  114,  114,  399,  114,  748,  114,  748,
-      114,  114,  114,  114,  114,  748,  748,  401,  748,  114,
-      748,  114,  403,  114,  114,  114,  748,  114,  748,  748,
-      748,  114,  114,  114,  114,  114,  114,  114,  114,  748,
-      114,  408,  404,  114,  748,  114,  748,  114,  407,  114,
-      405,  114,  748,  748,  748,  114,  114,  114,  114,  114,
-      748,  748,  748,  748,  114,  748,  114,  748,  114,  409,
-      114,  748,  114,  410,  114,  748,  114,  114,  114,  748,
-      114,  748,  114,  748,  114,  114,  114,  748,  114,  748,
-      114,  748,  114,  114,  114,  748,  114,  748,  748,  748,
+      399,  768,  121,  121,  400,  768,  401,  121,  768,  121,
+      768,  768,  768,  121,  768,  121,  768,  121,  768,  121,
+      121,  121,  121,  121,  768,  768,  121,  768,  121,  768,
+      121,  768,  121,  768,  121,  768,  121,  768,  121,  121,
+      121,  121,  121,  768,  405,  121,  768,  768,  406,  768,
+      768,  121,  121,  121,  121,  121,  121,  121,  407,  768,
+      121,  121,  409,  121,  768,  404,  768,  121,  768,  121,
+      413,  121,  768,  121,  768,  121,  408,  121,  121,  410,
+      768,  121,  121,  411,  768,  768,  768,  768,  121,  121,
+      121,  121,  121,  121,  412,  121,  768,  121,  768,  121,
 
-      114,  114,  114,  114,  114,  748,  413,  748,  412,  114,
-      748,  114,  748,  114,  114,  114,  748,  114,  748,  748,
-      748,  114,  114,  114,  114,  114,  414,  748,  114,  114,
-      114,  415,  114,  114,  748,  114,  748,  748,  748,  114,
-      748,  114,  114,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  748,  114,  114,  748,  114,  748,  748,  748,
-      114,  748,  114,  114,  114,  418,  114,  114,  114,  114,
-      114,  748,  114,  114,  416,  419,  420,  748,  748,  114,
-      748,  748,  748,  114,  748,  114,  748,  114,  748,  114,
-      114,  114,  114,  114,  748,  748,  748,  748,  114,  748,
+      121,  121,  121,  121,  768,  768,  414,  768,  121,  768,
+      121,  416,  121,  121,  121,  768,  121,  768,  768,  768,
+      121,  121,  121,  121,  121,  121,  121,  121,  768,  121,
+      421,  417,  121,  768,  121,  768,  121,  420,  121,  418,
+      121,  768,  768,  768,  121,  121,  121,  121,  121,  768,
+      768,  768,  768,  121,  768,  121,  768,  121,  422,  121,
+      768,  121,  423,  121,  768,  121,  121,  121,  768,  121,
+      768,  121,  768,  121,  121,  121,  768,  121,  768,  121,
+      768,  121,  121,  121,  768,  121,  768,  768,  768,  121,
+      121,  121,  121,  121,  768,  426,  768,  425,  121,  768,
 
-      114,  748,  114,  748,  114,  748,  114,  422,  748,  114,
-      748,  359,  359,  359,  359,  421,  114,  748,  114,  748,
-      114,  748,  748,  748,  748,  114,  360,  360,  360,  360,
-      360,  360,  360,  360,  426,  426,  426,  426,  748,  748,
-      748,  748,  748,  748,  748,  427,  748,  748,  748,  360,
-      360,  360,  360,  360,  360,  360,  360,  361,  361,  361,
-      361,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  362,  362,  362,  362,  362,  362,  362,  362,
-      427,  748,  114,  748,  362,  362,  362,  362,  362,  362,
-      362,  362,  114,  748,  114,  748,  114,  114,  432,  748,
+      121,  768,  121,  121,  121,  768,  121,  768,  768,  768,
+      121,  121,  121,  121,  121,  427,  768,  121,  121,  121,
+      428,  121,  121,  768,  121,  768,  768,  768,  121,  768,
+      121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  768,  121,  121,  768,  121,  768,  768,  768,  121,
+      768,  121,  121,  121,  431,  121,  121,  121,  121,  121,
+      768,  121,  121,  429,  432,  433,  768,  768,  121,  768,
+      768,  768,  121,  768,  121,  768,  121,  768,  121,  121,
+      121,  121,  121,  768,  768,  768,  768,  121,  768,  121,
+      768,  121,  768,  121,  768,  121,  435,  768,  121,  371,
 
-      431,  114,  748,  748,  748,  748,  748,  114,  748,  114,
-      114,  114,  433,  114,  748,  428,  114,  748,  748,  748,
-      114,  748,  114,  114,  114,  114,  748,  114,  748,  114,
-      435,  114,  114,  748,  114,  436,  748,  114,  748,  748,
-      437,  114,  748,  114,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  748,  114,  114,  748,  748,  748,
-      748,  748,  114,  114,  114,  114,  114,  438,  748,  114,
-      748,  114,  748,  114,  114,  114,  114,  114,  748,  439,
-      748,  748,  114,  440,  114,  748,  114,  748,  114,  748,
-      114,  748,  748,  748,  441,  114,  114,  114,  114,  748,
+      371,  371,  371,  371,  434,  121,  768,  121,  768,  121,
+      768,  768,  768,  768,  121,  768,  372,  372,  372,  372,
+      372,  372,  372,  372,  439,  439,  439,  439,  439,  768,
+      768,  768,  373,  373,  373,  373,  373,  440,  768,  768,
+      768,  372,  372,  372,  372,  372,  372,  372,  372,  374,
+      374,  374,  374,  374,  374,  374,  374,  440,  768,  121,
+      768,  374,  374,  374,  374,  374,  374,  374,  374,  121,
+      768,  121,  768,  121,  121,  446,  768,  445,  121,  447,
+      121,  768,  768,  768,  121,  768,  121,  768,  121,  768,
+      121,  121,  121,  121,  121,  768,  768,  768,  768,  121,
 
-      442,  748,  748,  114,  443,  748,  748,  114,  114,  114,
-      444,  114,  748,  748,  114,  748,  114,  445,  114,  748,
-      114,  446,  114,  748,  114,  114,  114,  114,  114,  748,
-      748,  748,  748,  114,  748,  114,  114,  114,  748,  114,
-      748,  447,  748,  748,  114,  748,  114,  748,  114,  748,
-      114,  114,  449,  748,  448,  114,  748,  114,  748,  748,
-      748,  114,  748,  114,  748,  114,  748,  114,  114,  114,
-      114,  114,  748,  748,  114,  450,  114,  748,  114,  748,
-      114,  748,  114,  748,  114,  451,  452,  114,  114,  114,
-      114,  748,  748,  114,  748,  748,  748,  456,  748,  114,
+      768,  121,  768,  121,  768,  121,  768,  441,  449,  121,
+      121,  768,  121,  450,  768,  121,  768,  768,  451,  121,
+      768,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  768,  121,  121,  768,  768,  768,  768,  768,
+      121,  121,  121,  121,  121,  452,  768,  121,  768,  121,
+      768,  121,  121,  121,  121,  121,  768,  453,  768,  768,
+      121,  454,  121,  768,  121,  768,  121,  768,  121,  768,
+      768,  768,  455,  121,  121,  121,  121,  768,  456,  768,
+      768,  121,  457,  768,  768,  121,  121,  121,  458,  121,
+      768,  768,  121,  768,  121,  459,  121,  768,  121,  460,
 
-      114,  114,  114,  114,  114,  748,  748,  114,  114,  114,
-      114,  457,  748,  458,  748,  748,  748,  114,  748,  114,
-      114,  114,  114,  748,  114,  459,  114,  114,  114,  114,
-      460,  748,  748,  748,  748,  748,  748,  114,  114,  461,
-      114,  114,  114,  114,  748,  748,  114,  114,  748,  114,
-      748,  748,  463,  114,  748,  114,  748,  114,  748,  114,
-      114,  114,  462,  114,  465,  748,  748,  466,  114,  748,
-      114,  748,  114,  114,  114,  748,  748,  464,  748,  114,
-      748,  114,  748,  114,  114,  114,  748,  114,  748,  748,
-      748,  114,  114,  114,  114,  114,  114,  114,  114,  468,
+      121,  768,  121,  121,  121,  121,  121,  768,  768,  768,
+      768,  121,  768,  121,  121,  121,  768,  121,  768,  461,
+      768,  768,  121,  768,  121,  768,  121,  768,  121,  121,
+      463,  768,  462,  121,  768,  121,  768,  768,  768,  121,
+      768,  121,  768,  121,  768,  121,  121,  121,  121,  121,
+      768,  768,  121,  464,  121,  768,  121,  768,  121,  768,
+      121,  768,  121,  465,  466,  121,  121,  121,  121,  768,
+      768,  121,  768,  768,  768,  470,  768,  121,  121,  121,
+      121,  121,  121,  768,  768,  121,  121,  121,  121,  471,
+      768,  472,  768,  768,  768,  121,  768,  121,  121,  121,
 
-      114,  748,  748,  114,  748,  114,  748,  114,  748,  114,
-      748,  114,  748,  114,  748,  114,  114,  469,  748,  114,
-      748,  114,  748,  114,  114,  114,  748,  114,  748,  471,
-      748,  114,  114,  473,  114,  114,  748,  748,  748,  748,
-      114,  748,  748,  748,  114,  748,  114,  114,  114,  748,
-      114,  748,  474,  114,  476,  748,  748,  114,  114,  114,
-      114,  114,  477,  478,  114,  748,  114,  748,  114,  114,
-      114,  114,  114,  748,  748,  748,  748,  114,  748,  748,
-      748,  114,  114,  114,  748,  114,  748,  748,  114,  748,
-      114,  482,  114,  479,  114,  748,  114,  748,  114,  114,
+      121,  768,  121,  473,  121,  121,  121,  121,  474,  768,
+      768,  768,  768,  768,  768,  121,  121,  475,  121,  121,
+      121,  121,  768,  768,  121,  121,  768,  121,  768,  768,
+      477,  121,  768,  121,  768,  121,  768,  121,  121,  121,
+      476,  121,  479,  768,  768,  480,  121,  768,  121,  768,
+      121,  121,  121,  768,  768,  478,  768,  121,  768,  121,
+      768,  121,  121,  121,  768,  121,  768,  768,  768,  121,
+      121,  121,  121,  121,  121,  121,  121,  482,  121,  768,
+      768,  121,  768,  121,  768,  121,  768,  121,  768,  121,
+      768,  121,  768,  121,  121,  483,  768,  121,  768,  121,
 
-      114,  114,  114,  748,  748,  748,  748,  114,  748,  114,
-      114,  114,  748,  114,  748,  483,  748,  748,  114,  748,
-      114,  748,  114,  748,  114,  489,  489,  489,  489,  114,
-      748,  748,  748,  748,  748,  748,  748,  748,  114,  748,
-      490,  490,  490,  490,  490,  490,  490,  490,  114,  748,
-      114,  114,  114,  493,  114,  485,  748,  114,  748,  748,
-      748,  114,  114,  114,  114,  114,  114,  748,  114,  494,
-      114,  748,  114,  114,  496,  114,  114,  748,  114,  748,
-      748,  114,  748,  748,  748,  114,  748,  114,  114,  114,
-      114,  748,  114,  497,  114,  114,  748,  114,  498,  748,
+      768,  121,  121,  121,  768,  121,  768,  485,  768,  121,
+      121,  487,  121,  121,  768,  768,  768,  768,  121,  768,
+      768,  768,  121,  768,  121,  121,  121,  768,  121,  768,
+      488,  121,  490,  768,  768,  121,  121,  121,  121,  121,
+      491,  492,  121,  768,  121,  768,  121,  121,  121,  121,
+      121,  768,  768,  768,  768,  121,  768,  768,  768,  121,
+      121,  121,  768,  121,  768,  768,  121,  768,  121,  496,
+      121,  493,  121,  768,  121,  768,  121,  121,  121,  121,
+      121,  768,  768,  768,  768,  121,  768,  121,  121,  121,
+      768,  121,  768,  497,  768,  768,  121,  768,  121,  768,
 
-      499,  114,  748,  748,  748,  114,  748,  114,  748,  114,
-      748,  114,  114,  114,  114,  114,  748,  748,  114,  748,
-      114,  748,  114,  748,  500,  748,  114,  748,  114,  748,
-      114,  114,  114,  114,  748,  502,  501,  114,  748,  114,
-      748,  748,  748,  114,  748,  114,  748,  114,  748,  114,
-      748,  114,  114,  114,  748,  748,  114,  503,  114,  504,
-      748,  748,  114,  748,  505,  748,  114,  748,  114,  748,
-      114,  748,  114,  114,  114,  114,  114,  748,  507,  114,
-      748,  114,  748,  114,  748,  506,  748,  114,  748,  114,
-      114,  114,  114,  114,  748,  748,  114,  748,  114,  748,
+      121,  768,  121,  121,  768,  768,  768,  121,  503,  503,
+      503,  503,  503,  121,  768,  121,  768,  121,  768,  768,
+      768,  768,  121,  508,  121,  504,  504,  504,  504,  504,
+      504,  504,  504,  499,  121,  121,  121,  768,  121,  768,
+      768,  768,  768,  121,  768,  121,  121,  121,  768,  121,
+      768,  768,  121,  509,  121,  768,  121,  768,  511,  768,
+      121,  768,  121,  121,  121,  121,  121,  768,  768,  121,
+      512,  121,  513,  121,  768,  121,  768,  121,  768,  121,
+      768,  121,  121,  121,  514,  121,  121,  768,  121,  768,
+      768,  768,  768,  768,  768,  121,  121,  121,  515,  121,
 
-      114,  748,  114,  508,  114,  748,  114,  114,  114,  114,
-      114,  748,  748,  114,  748,  114,  748,  114,  748,  114,
-      510,  114,  748,  114,  509,  114,  114,  114,  511,  114,
-      114,  748,  114,  748,  515,  748,  748,  748,  748,  114,
-      114,  114,  114,  114,  114,  114,  748,  748,  114,  114,
-      748,  114,  516,  517,  748,  114,  748,  114,  748,  114,
-      748,  114,  114,  114,  114,  114,  748,  748,  114,  748,
-      114,  519,  114,  748,  114,  748,  114,  748,  114,  518,
-      114,  114,  114,  114,  520,  748,  748,  114,  748,  114,
-      521,  748,  748,  114,  748,  114,  748,  114,  748,  114,
+      121,  121,  768,  768,  121,  121,  768,  768,  768,  768,
+      768,  121,  121,  121,  517,  121,  768,  768,  121,  516,
+      121,  768,  121,  768,  121,  768,  121,  768,  121,  768,
+      121,  121,  121,  768,  768,  121,  518,  121,  519,  768,
+      768,  121,  768,  520,  768,  121,  768,  121,  768,  121,
+      768,  121,  121,  121,  121,  121,  768,  522,  121,  768,
+      121,  768,  121,  768,  521,  768,  121,  768,  121,  121,
+      121,  121,  121,  768,  768,  121,  768,  121,  768,  121,
+      768,  121,  523,  121,  768,  121,  121,  121,  121,  121,
+      768,  768,  121,  768,  121,  768,  121,  768,  121,  525,
 
-      114,  114,  114,  114,  748,  748,  748,  748,  114,  748,
-      114,  748,  114,  748,  114,  114,  522,  748,  523,  114,
-      748,  114,  748,  748,  748,  114,  748,  114,  748,  114,
-      748,  114,  114,  114,  114,  114,  748,  748,  524,  748,
-      114,  748,  114,  748,  114,  114,  114,  527,  114,  748,
-      748,  114,  748,  748,  748,  114,  114,  529,  114,  114,
-      114,  748,  114,  748,  114,  748,  114,  114,  114,  114,
-      114,  748,  532,  748,  531,  114,  748,  114,  748,  114,
-      748,  114,  748,  114,  748,  748,  748,  114,  114,  114,
-      748,  114,  114,  535,  748,  114,  114,  534,  114,  748,
+      121,  768,  121,  524,  121,  121,  121,  526,  121,  121,
+      768,  121,  768,  530,  768,  768,  768,  768,  121,  121,
+      121,  121,  121,  121,  121,  768,  768,  121,  121,  768,
+      121,  531,  532,  768,  121,  768,  121,  768,  121,  768,
+      121,  121,  121,  121,  121,  768,  768,  121,  768,  121,
+      534,  121,  768,  121,  768,  121,  768,  121,  533,  121,
+      121,  121,  121,  535,  768,  768,  121,  768,  121,  536,
+      768,  768,  121,  768,  121,  768,  121,  768,  121,  121,
+      121,  121,  121,  768,  768,  768,  768,  121,  768,  121,
+      768,  121,  768,  121,  121,  537,  768,  538,  121,  768,
 
-      748,  748,  114,  748,  114,  114,  114,  114,  114,  114,
-      114,  114,  114,  114,  114,  748,  114,  114,  748,  748,
-      748,  748,  748,  114,  748,  114,  114,  114,  114,  748,
-      114,  114,  114,  538,  748,  114,  489,  489,  489,  489,
-      748,  114,  748,  114,  748,  114,  748,  748,  748,  547,
-      114,  490,  490,  490,  490,  490,  490,  490,  490,  544,
-      748,  748,  748,  490,  490,  490,  490,  490,  490,  490,
-      490,  114,  114,  748,  748,  748,  748,  748,  548,  748,
-      748,  114,  114,  114,  114,  114,  114,  748,  114,  114,
-      114,  114,  550,  748,  748,  748,  748,  748,  114,  114,
+      121,  768,  768,  768,  121,  768,  121,  768,  121,  768,
+      121,  121,  121,  121,  121,  768,  768,  539,  768,  121,
+      768,  121,  768,  121,  121,  121,  542,  121,  768,  768,
+      121,  768,  768,  768,  121,  121,  544,  121,  121,  121,
+      768,  121,  768,  121,  768,  121,  121,  121,  121,  121,
+      768,  547,  768,  546,  121,  768,  121,  768,  121,  768,
+      121,  768,  121,  768,  768,  768,  121,  121,  121,  768,
+      121,  121,  550,  768,  121,  121,  549,  121,  768,  768,
+      768,  121,  768,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  768,  121,  121,  768,  768,  768,
 
-      551,  114,  114,  114,  114,  114,  748,  114,  114,  748,
-      748,  552,  553,  748,  114,  114,  114,  114,  114,  114,
-      114,  114,  748,  114,  114,  748,  748,  748,  748,  748,
-      114,  114,  114,  114,  114,  114,  114,  748,  748,  114,
-      114,  748,  114,  554,  555,  748,  114,  748,  114,  748,
-      114,  748,  114,  114,  114,  114,  114,  748,  748,  114,
-      748,  114,  748,  114,  556,  114,  748,  114,  748,  114,
-      114,  114,  114,  114,  748,  748,  748,  748,  114,  748,
-      114,  114,  114,  748,  114,  748,  748,  748,  557,  114,
-      748,  114,  114,  114,  748,  114,  748,  748,  559,  558,
+      768,  768,  121,  768,  121,  121,  121,  121,  768,  121,
+      768,  121,  553,  768,  121,  503,  503,  503,  503,  503,
+      559,  768,  768,  768,  504,  504,  504,  504,  504,  504,
+      504,  504,  504,  504,  504,  504,  504,  504,  504,  504,
+      121,  121,  768,  768,  768,  768,  768,  768,  564,  768,
+      121,  121,  121,  121,  121,  121,  121,  768,  563,  121,
+      121,  768,  121,  768,  768,  566,  121,  768,  121,  768,
+      121,  768,  121,  121,  121,  121,  121,  768,  768,  121,
+      768,  121,  768,  121,  768,  567,  568,  121,  768,  121,
+      121,  121,  121,  121,  768,  768,  121,  569,  121,  768,
 
-      114,  748,  114,  748,  114,  748,  114,  748,  114,  114,
-      114,  114,  114,  748,  748,  114,  748,  114,  748,  560,
-      748,  114,  565,  114,  748,  114,  114,  114,  114,  114,
-      748,  748,  748,  748,  114,  748,  114,  114,  114,  748,
-      114,  748,  748,  114,  566,  114,  748,  114,  748,  114,
-      748,  114,  748,  114,  114,  114,  114,  114,  748,  748,
-      114,  748,  114,  568,  114,  748,  114,  748,  114,  748,
-      114,  567,  114,  114,  114,  114,  114,  748,  748,  114,
-      748,  748,  748,  748,  748,  114,  114,  114,  114,  114,
-      114,  114,  570,  569,  114,  114,  748,  114,  748,  748,
+      121,  768,  121,  768,  121,  768,  121,  121,  121,  121,
+      121,  768,  768,  121,  768,  121,  768,  121,  768,  121,
+      570,  121,  768,  121,  768,  121,  121,  121,  121,  121,
+      571,  768,  121,  768,  768,  768,  768,  768,  121,  121,
+      121,  121,  121,  121,  121,  768,  768,  121,  121,  572,
+      121,  768,  768,  768,  121,  768,  121,  768,  121,  768,
+      121,  121,  121,  121,  121,  768,  768,  768,  573,  121,
+      768,  121,  121,  121,  768,  121,  768,  768,  575,  574,
+      121,  768,  121,  768,  121,  768,  121,  768,  121,  121,
+      121,  121,  121,  768,  768,  121,  768,  121,  768,  576,
 
-      748,  114,  748,  114,  748,  114,  748,  114,  114,  114,
-      114,  114,  748,  748,  114,  748,  114,  748,  574,  748,
-      114,  748,  114,  748,  114,  114,  114,  114,  114,  748,
-      748,  114,  748,  114,  748,  114,  748,  114,  748,  114,
-      748,  114,  571,  114,  114,  114,  114,  748,  748,  578,
-      114,  748,  114,  748,  748,  579,  114,  748,  114,  748,
-      114,  748,  114,  748,  114,  114,  114,  582,  114,  748,
-      748,  114,  748,  587,  587,  587,  587,  748,  114,  748,
-      114,  748,  114,  748,  748,  748,  748,  114,  588,  588,
-      588,  588,  588,  588,  588,  588,  114,  114,  592,  748,
+      768,  121,  581,  121,  768,  121,  121,  121,  121,  121,
+      768,  768,  768,  768,  121,  768,  121,  121,  121,  768,
+      121,  768,  768,  121,  582,  121,  768,  121,  768,  121,
+      768,  121,  768,  121,  121,  121,  121,  121,  768,  768,
+      121,  768,  121,  584,  121,  768,  121,  768,  121,  768,
+      121,  583,  121,  121,  121,  121,  121,  768,  768,  121,
+      768,  768,  768,  768,  768,  121,  121,  121,  121,  121,
+      121,  121,  586,  585,  121,  121,  768,  121,  768,  768,
+      768,  121,  768,  121,  768,  121,  768,  121,  121,  121,
+      121,  121,  768,  768,  121,  768,  121,  768,  590,  768,
 
-      748,  748,  748,  591,  748,  748,  114,  114,  114,  114,
-      114,  114,  114,  748,  748,  114,  114,  748,  748,  748,
-      114,  748,  114,  114,  114,  748,  114,  748,  594,  748,
-      114,  114,  114,  114,  114,  596,  114,  114,  595,  114,
-      748,  748,  114,  599,  114,  748,  114,  748,  597,  748,
-      114,  748,  114,  748,  114,  114,  114,  598,  114,  748,
-      114,  748,  114,  114,  114,  748,  114,  748,  748,  748,
-      114,  114,  114,  114,  114,  748,  600,  748,  748,  114,
-      748,  114,  748,  114,  748,  114,  748,  114,  748,  114,
-      748,  114,  114,  114,  748,  114,  601,  114,  748,  114,
+      121,  768,  121,  768,  121,  121,  121,  121,  121,  768,
+      768,  121,  768,  121,  768,  121,  768,  121,  768,  121,
+      768,  121,  587,  121,  121,  121,  121,  768,  768,  594,
+      121,  768,  121,  768,  768,  595,  121,  768,  121,  768,
+      121,  768,  121,  768,  121,  121,  121,  598,  121,  121,
+      609,  121,  603,  603,  603,  603,  603,  768,  121,  121,
+      121,  121,  121,  121,  768,  768,  768,  121,  121,  604,
+      604,  604,  604,  604,  604,  604,  604,  121,  121,  768,
+      768,  768,  768,  768,  608,  768,  768,  121,  121,  121,
+      121,  121,  121,  121,  611,  768,  121,  121,  768,  768,
 
-      114,  114,  748,  114,  748,  748,  748,  114,  114,  114,
-      114,  114,  748,  606,  748,  748,  114,  748,  114,  748,
-      114,  114,  114,  748,  114,  748,  748,  748,  114,  114,
-      114,  114,  114,  114,  114,  114,  748,  114,  748,  748,
-      114,  748,  114,  748,  114,  114,  114,  748,  114,  607,
-      748,  748,  114,  114,  114,  114,  114,  114,  114,  114,
-      748,  114,  615,  608,  114,  748,  114,  748,  114,  748,
-      114,  748,  114,  748,  748,  748,  114,  114,  114,  114,
-      114,  748,  114,  748,  748,  114,  748,  748,  748,  114,
-      748,  114,  618,  114,  114,  748,  114,  114,  114,  748,
+      768,  768,  768,  121,  121,  121,  768,  121,  768,  768,
+      121,  612,  121,  768,  121,  768,  613,  768,  121,  768,
+      121,  121,  614,  121,  121,  616,  768,  121,  768,  121,
+      768,  121,  768,  121,  615,  121,  768,  121,  768,  121,
+      121,  121,  121,  768,  768,  121,  121,  768,  617,  768,
+      768,  768,  121,  121,  121,  121,  121,  121,  768,  121,
+      768,  121,  768,  121,  121,  121,  121,  121,  768,  121,
+      768,  768,  121,  618,  768,  768,  121,  768,  121,  121,
+      121,  121,  768,  121,  121,  121,  768,  623,  121,  768,
+      121,  768,  768,  768,  121,  768,  121,  768,  121,  768,
 
-      748,  114,  587,  587,  587,  587,  748,  114,  748,  114,
-      627,  114,  748,  748,  748,  114,  114,  588,  588,  588,
-      588,  588,  588,  588,  588,  114,  114,  114,  748,  114,
-      748,  748,  114,  748,  114,  748,  114,  748,  114,  748,
-      114,  748,  114,  748,  114,  114,  114,  114,  114,  628,
-      629,  114,  748,  630,  748,  748,  748,  114,  114,  114,
-      114,  114,  114,  114,  748,  748,  114,  114,  748,  114,
-      748,  633,  748,  114,  748,  631,  748,  114,  748,  114,
-      114,  114,  114,  114,  748,  748,  114,  748,  114,  748,
-      634,  748,  114,  748,  114,  748,  114,  114,  114,  114,
+      121,  121,  121,  121,  121,  768,  768,  121,  768,  121,
+      768,  121,  768,  121,  768,  121,  768,  121,  121,  121,
+      121,  121,  768,  768,  121,  624,  121,  768,  121,  632,
+      121,  768,  121,  768,  121,  121,  121,  121,  121,  768,
+      768,  768,  625,  121,  768,  121,  121,  121,  768,  121,
+      768,  768,  121,  768,  121,  768,  121,  768,  121,  768,
+      121,  768,  121,  121,  121,  121,  121,  768,  768,  768,
+      768,  121,  768,  635,  768,  121,  768,  121,  121,  768,
+      768,  768,  121,  603,  603,  603,  603,  603,  121,  768,
+      121,  645,  121,  768,  768,  768,  768,  121,  768,  768,
 
-      114,  748,  638,  748,  748,  114,  748,  114,  114,  114,
-      639,  114,  748,  748,  114,  640,  114,  748,  114,  748,
-      114,  748,  114,  748,  114,  114,  114,  114,  114,  748,
-      748,  114,  748,  114,  748,  114,  748,  655,  748,  114,
-      748,  114,  748,  114,  114,  114,  114,  114,  656,  748,
-      114,  748,  748,  748,  748,  748,  114,  114,  114,  114,
-      114,  114,  114,  114,  748,  114,  114,  748,  748,  748,
-      748,  748,  114,  114,  114,  114,  114,  114,  114,  657,
-      748,  114,  114,  748,  114,  659,  748,  748,  114,  748,
-      114,  748,  114,  748,  114,  114,  114,  114,  114,  748,
+      604,  604,  604,  604,  604,  604,  604,  604,  640,  640,
+      640,  640,  640,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  121,  121,  604,  604,  604,  604,  604,
+      604,  604,  604,  121,  121,  121,  121,  121,  121,  121,
+      768,  768,  121,  121,  768,  121,  768,  768,  647,  121,
+      768,  121,  768,  121,  768,  121,  646,  121,  121,  121,
+      121,  121,  768,  768,  121,  648,  768,  768,  768,  768,
+      121,  121,  121,  649,  121,  121,  121,  768,  651,  121,
+      121,  768,  121,  768,  768,  768,  121,  768,  121,  768,
+      121,  641,  652,  121,  121,  121,  121,  768,  768,  768,
 
-      748,  748,  748,  114,  748,  114,  114,  663,  748,  114,
-      748,  748,  114,  748,  114,  748,  114,  748,  114,  664,
-      114,  748,  114,  114,  114,  114,  114,  748,  748,  114,
-      748,  114,  748,  114,  748,  114,  748,  114,  748,  114,
-      114,  114,  114,  114,  748,  748,  748,  748,  114,  748,
-      114,  114,  114,  748,  114,  748,  748,  114,  679,  114,
-      748,  114,  748,  114,  748,  114,  748,  114,  683,  684,
-      114,  114,  114,  114,  748,  748,  114,  748,  748,  748,
-      748,  748,  114,  114,  114,  114,  114,  114,  114,  114,
-      748,  114,  114,  748,  748,  699,  748,  748,  114,  114,
+      768,  121,  768,  121,  121,  121,  768,  121,  768,  656,
+      768,  768,  121,  768,  121,  121,  121,  657,  121,  768,
+      768,  121,  658,  121,  768,  121,  768,  121,  768,  121,
+      768,  121,  121,  121,  121,  121,  768,  768,  121,  768,
+      121,  768,  121,  768,  674,  768,  121,  768,  121,  768,
+      121,  121,  121,  121,  121,  675,  768,  121,  768,  768,
+      768,  768,  768,  121,  121,  121,  121,  121,  121,  121,
+      121,  768,  121,  121,  768,  768,  768,  768,  768,  121,
+      121,  121,  121,  121,  121,  121,  676,  768,  121,  121,
+      768,  121,  678,  768,  768,  121,  768,  121,  768,  121,
 
-      114,  114,  114,  114,  748,  748,  748,  114,  114,   58,
-       58,   58,   58,   58,   58,   58,   58,   58,   58,   58,
-       58,   58,   63,   63,   63,   63,   63,   63,   63,   63,
-       63,   63,   63,   63,   63,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   68,   68,   68,   68,   71,   71,
-       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
-       71,   80,   80,   80,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80,   95,   95,   95,   95,  748,   95,
-       95,   95,   95,   95,   95,   95,   95,  102,  102,  102,
-      748,  102,  748,  102,  748,  102,  173,  173,  748,  173,
+      768,  121,  121,  121,  121,  121,  768,  768,  768,  768,
+      121,  768,  121,  121,  682,  768,  121,  768,  768,  121,
+      768,  121,  768,  121,  768,  121,  683,  121,  768,  121,
+      121,  121,  121,  121,  768,  768,  121,  768,  121,  768,
+      121,  768,  121,  768,  121,  768,  121,  121,  121,  121,
+      121,  768,  768,  768,  768,  121,  768,  121,  121,  121,
+      768,  121,  768,  768,  121,  699,  121,  768,  121,  768,
+      121,  768,  121,  768,  121,  703,  704,  121,  121,  121,
+      121,  768,  768,  121,  768,  768,  768,  768,  768,  121,
+      121,  121,  121,  121,  121,  121,  121,  768,  121,  121,
 
-      173,  178,  178,  748,  748,  178,  178,  748,  178,  178,
-      178,  178,  178,  178,  182,  182,  182,  182,  748,  182,
-      182,  182,  182,  182,  182,  182,  182,  184,  184,  184,
-      184,  184,  184,  184,  184,  748,  184,  184,  186,  748,
-      748,  748,  186,  186,  186,  186,  186,  186,  186,  187,
-      748,  748,  748,  187,  187,  187,  187,  187,  187,  187,
-      192,  192,  748,  192,  192,  196,  196,  748,  196,  196,
-      198,  198,  748,  198,  198,  208,  748,  208,  208,  120,
-      120,  748,  120,  120,  276,  748,  276,  276,  284,  748,
-      284,  284,  286,  748,  286,  286,  287,  748,  287,  287,
+      768,  768,  719,  768,  768,  121,  121,  121,  121,  121,
+      121,  768,  768,  768,  121,  121,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   65,   65,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
+       70,   70,   73,   73,   73,   73,   73,   73,   73,   73,
+       73,   73,   73,   73,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,   82,   82,   82,  102,  102,  102,  102,
+      768,  102,  102,  102,  102,  102,  102,  102,  109,  109,
+      109,  768,  109,  768,  109,  180,  180,  768,  180,  180,
 
-      290,  290,  290,  290,  290,  290,  290,  290,  290,  290,
-      290,  290,  290,  209,  209,  748,  209,  209,  590,  590,
-      748,  590,  590,  590,  590,  590,  590,  590,  590,  590,
-      590,  588,  588,  588,  748,  748,  748,  588,  748,  748,
-      748,  748,  588,   17,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
+      185,  185,  768,  768,  185,  185,  768,  185,  185,  185,
+      185,  185,  189,  189,  189,  189,  768,  189,  189,  189,
+      189,  189,  189,  189,  191,  191,  191,  191,  191,  191,
+      191,  191,  768,  191,  191,  193,  768,  768,  768,  193,
+      193,  193,  193,  193,  193,  193,  194,  768,  768,  768,
+      194,  194,  194,  194,  194,  194,  194,  199,  199,  768,
+      199,  199,  202,  202,  768,  202,  206,  206,  768,  206,
+      206,  208,  208,  768,  208,  208,  218,  768,  218,  218,
+      127,  127,  768,  127,  127,  286,  768,  286,  286,  294,
+      768,  294,  294,  296,  768,  296,  298,  768,  298,  298,
 
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748
+      299,  768,  299,  299,  302,  302,  302,  302,  302,  302,
+      302,  302,  302,  302,  302,  302,  219,  219,  768,  219,
+      219,  607,  607,  768,  607,  607,  607,  607,  607,  607,
+      607,  607,  607,   19,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768
     } ;
 
-static yyconst flex_int16_t yy_chk[4631] =
+static yyconst flex_int16_t yy_chk[4723] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1463,38 +1483,38 @@
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    3,    3,    3,    4,
-        4,    4,    5,    5,    5,   57,   11,    3,    9,    7,
+        1,    1,    1,    1,    1,    1,    1,    1,    3,    3,
+        3,    4,    4,    4,    5,    5,    5,    6,    6,    6,
 
-        4,    8,    9,    5,    6,    6,    6,    7,   12,    8,
-      150,   54,    7,   10,    8,    6,  135,   10,   11,  104,
-       29,   11,   29,    7,   99,    8,   82,   82,   82,   82,
-       12,  746,  104,   12,   19,   19,   19,   19,   84,  545,
-      136,   19,   20,   20,   20,   20,  545,  202,   36,   20,
-       24,   24,   24,   24,   36,   84,   99,   24,   36,   54,
-       36,   36,   36,  145,  150,   24,   24,   36,  155,   26,
-       57,  235,  167,  135,   11,  202,   11,   26,   26,   26,
-       26,   26,   26,   26,   26,  136,   12,   84,   12,   13,
+        9,    3,    7,    8,    4,    9,   10,    5,   11,   12,
+        6,   10,    7,    8,   31,   56,   31,    7,    8,  680,
+      106,   21,   21,   21,   21,   21,  330,  142,    7,    8,
+       21,  111,   11,   12,  766,   11,   12,   22,   22,   22,
+       22,   22,   41,   41,  111,  765,   22,   26,   26,   26,
+       26,   26,  106,   41,  680,   41,   26,   41,   28,   41,
+      152,  157,   41,   56,   26,   26,   28,   28,   28,   28,
+       28,   28,   28,   28,   84,   84,   84,   84,   84,   85,
+       85,   85,   85,   85,  142,  143,  330,   59,   11,   12,
+       11,   12,   13,   13,   13,   13,   13,   13,   13,   13,
+
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-
-       13,   13,   13,   13,   13,   83,   83,   83,   83,   94,
-       94,   94,   94,   13,   13,   13,   13,   13,   27,  145,
-      235,  155,   13,   27,   41,  167,   27,   27,   27,   27,
-       27,   27,   27,   27,   41,  615,   41,  164,   41,  189,
-      189,  189,  189,   41,   13,   13,   13,   30,   44,   30,
-       30,   30,   30,   30,   30,   30,   30,  199,   44,  274,
-       44,  356,   44,  199,  257,  615,   30,   44,  318,   13,
-       13,   13,   13,   13,   13,   14,   14,   14,   14,   14,
+       95,   95,   95,   95,   95,  157,  152,  162,   13,   13,
+       13,   13,   13,   29,  245,  292,  292,   13,   29,   43,
+      143,   29,   29,   29,   29,   29,   29,   29,   29,   43,
+      762,   43,  442,   43,  421,  174,  171,  442,   43,   13,
+       13,   13,   32,   46,   32,   32,   32,   32,   32,   32,
+       32,   32,   59,   46,  257,   46,  342,   46,  421,  246,
+      162,   32,   46,  245,   13,   13,   13,   13,   13,   13,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,  236,  164,  168,   44,   30,  247,  251,  293,   14,
+       14,   14,   14,   14,   14,   14,   14,   14,  174,   46,
 
-       14,   14,   14,   14,   35,  282,  282,   35,   14,  408,
-       37,   35,  274,   37,   35,   35,   35,   35,   35,  356,
-       37,  257,   37,   35,   37,   38,  293,   35,  318,   37,
-       14,   14,   14,  408,  599,   38,   38,   38,  201,   38,
-      201,  168,  188,  188,   38,  247,  251,   38,  745,  201,
-      236,  742,  599,  188,  168,   14,   14,   14,   14,   14,
-       14,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       32,  171,   86,  211,  261,  211,   14,   14,   14,   14,
+       14,   37,  278,  257,   37,   14,  211,   39,   37,   86,
+       39,   37,   37,   37,   37,   37,  342,   39,  246,   39,
+       37,   39,  195,  195,   37,   38,   39,   14,   14,   14,
+      209,   38,  376,  195,  761,   38,  209,   38,   38,   38,
+      760,   86,  376,  261,   38,   96,   96,   96,   96,   96,
+      759,  278,   14,   14,   14,   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,   15,   15,   15,   15,
@@ -1503,501 +1523,513 @@
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   23,   47,  364,
-      292,   47,  292,  741,  740,  739,  738,  737,   47,  364,
-       47,  292,   47,  736,   23,  735,  734,   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,  330,  272,   23,   23,   23,   23,
+       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+       15,   15,   15,   15,   15,   15,   17,   17,   17,   17,
+       17,  351,  758,   17,   17,   44,   44,  361,   44,   17,
+       17,  283,   17,  175,  284,  346,   44,   44,   44,  757,
+       44,   17,  756,   44,  282,   44,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
 
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   31,
-      268,   31,   31,   31,   31,   31,   31,   31,   31,   39,
-       39,  273,  334,   45,   45,  357,  429,   45,   31,  733,
-       39,  429,   39,   45,   39,   45,   39,   45,  339,   39,
-       43,   43,   45,  731,  330,  729,  728,  727,   43,  272,
-      319,   43,   45,   43,  726,   43,  389,   31,   34,  268,
-       43,   34,   34,   34,   34,   34,   34,   34,   34,  334,
-      273,  357,  349,  390,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   40,  101,  101,  101,  101,  101,
+      283,  175,  346,  351,   40,   40,   40,  284,   40,  361,
+       45,   45,   49,   40,  175,   49,   40,   17,   45,   17,
+       25,   45,   49,   45,   49,   45,   49,  304,  282,  304,
+       45,   49,  196,  196,  196,  196,  196,   25,  755,  495,
+      304,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+       25,   25,   25,   25,   25,   25,   25,  267,  367,   25,
+       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
 
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-      339,  389,  319,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   34,   34,   40,  390,  355,  402,  406,
-       42,   42,  370,   42,  349,   40,  454,   40,  391,   40,
-      411,   42,   42,   42,   40,   42,  417,  416,   42,  421,
-       42,  423,   46,   46,  424,   46,  717,   40,  495,  101,
-      101,  101,  101,   46,  434,   46,  101,   46,   40,   46,
-       48,  425,   46,   48,  101,  101,  355,   48,   49,  453,
-       48,  402,   48,  454,   48,  411,   49,   49,   48,   48,
+       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+       25,   25,   33,   42,   33,   33,   33,   33,   33,   33,
+       33,   33,  331,   42,  495,   42,  605,   42,  560,   47,
+       47,   33,   42,   47,  484,  560,  754,  367,  480,   47,
+       53,   47,  212,   47,  267,   42,  212,  368,   47,  753,
+       53,  403,   53,  484,   53,  605,   42,  369,   47,   53,
+       33,   36,  480,  751,   36,   36,   36,   36,   36,   36,
+       36,   36,  212,  383,  331,  404,   53,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
 
-       50,  406,  370,   48,  466,  417,   46,   49,  391,   49,
-       50,   49,   50,   49,   50,  421,   49,  416,   50,   50,
-       51,  423,  589,  114,  717,  495,  424,  434,  466,   49,
-       51,   52,   51,  114,   51,  114,  425,  114,   52,   51,
-       50,   52,  114,   52,  453,   52,   56,   56,   56,   56,
-       52,  589,  724,  723,  485,  455,   51,  426,  426,  426,
-      426,   56,   56,   56,   56,   56,   56,   56,   56,   80,
-      174,  174,  174,  174,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80,   80,  174,  174,  174,  174,  174,
-      174,  174,  174,   80,   80,   80,   80,   80,  103,  115,
+       36,   36,   36,  369,  403,  368,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+       36,   36,   36,   36,   36,   36,   36,   36,   48,   48,
+      489,   48,  305,  383,  438,  404,  305,   50,  402,   48,
+       50,   48,  415,   48,   50,   48,  468,   50,   48,   50,
+       51,   50,  419,  424,  437,   50,   50,  434,   51,   51,
+       50,  749,  305,  430,  616,  748,  747,   52,  746,   51,
+      744,   51,   48,   51,  743,   51,  489,   52,   51,   52,
+       54,   52,  616,  402,  742,   52,   52,   54,  741,  438,
+       54,   51,   54,  468,   54,  415,  121,  740,  424,   54,
 
-      103,  103,  103,  103,  103,  103,  103,  103,  455,  115,
-      467,  115,  475,  115,  485,  513,  115,  103,  115,  480,
-      514,  470,  484,  533,   80,   80,   80,  481,  105,  116,
-      105,  105,  105,  105,  105,  105,  105,  105,  426,  116,
-      470,  116,  536,  116,  487,  488,  103,  105,  116,  513,
-       80,  542,   80,   80,   80,   81,  561,  467,  475,  722,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,  484,  480,  486,  575,  562,  105,  514,  533,   81,
-       81,   81,   81,   81,  108,  108,  108,  108,  108,  108,
-      108,  108,  481,  487,  488,  526,  528,   81,  537,  536,
+       58,   58,   58,   58,   58,  500,  121,   52,  121,  429,
+      121,  436,  430,  434,  419,  121,  437,   58,   58,   58,
+       58,   58,   58,   58,   58,   82,  181,  181,  181,  181,
+      181,   82,   82,   82,   82,   82,   82,   82,   82,   82,
+       82,   82,   82,  181,  181,  181,  181,  181,  181,  181,
+      181,   82,   82,   82,   82,   82,  108,  108,  108,  108,
+      108,  448,  467,  469,  734,  108,  500,  733,  481,  429,
+      732,  436,  499,  108,  108,  439,  439,  439,  439,  439,
+      510,  494,   82,   82,   82,  110,  122,  110,  110,  110,
+      110,  110,  110,  110,  110,  731,  122,  528,  122,  577,
 
-      109,  108,  109,  109,  109,  109,  109,  109,  109,  109,
-       81,   81,   81,  549,  541,  110,  542,  110,  561,  109,
-      110,  110,  110,  110,  110,  110,  110,  110,  512,  526,
-      108,  543,  537,  577,  486,  575,   81,  540,   81,   81,
-       81,  562,  721,  564,  585,  528,  720,  111,  109,  111,
-      111,  111,  111,  111,  111,  111,  111,  117,  118,  541,
-      714,  713,  512,  712,  549,  543,  111,  117,  118,  117,
-      118,  117,  118,  119,  121,  571,  117,  118,  585,  121,
-      117,  512,  577,  119,  121,  119,  121,  119,  121,  563,
-      540,  119,  119,  121,  564,  111,  113,  113,  113,  113,
+      122,  527,  529,  122,  110,  122,  498,  501,   82,  548,
+       82,   82,   82,   83,  448,  481,  469,  467,  502,   83,
+       83,   83,   83,   83,   83,   83,   83,   83,   83,   83,
+       83,  528,  499,  110,  494,  527,  543,  510,  555,   83,
+       83,   83,   83,   83,  112,  728,  112,  112,  112,  112,
+      112,  112,  112,  112,  527,  498,  501,   83,  439,  529,
+      541,  577,  565,  112,  548,  557,  556,  502,  593,  724,
+       83,   83,   83,  115,  115,  115,  115,  115,  115,  115,
+      115,  552,  551,  123,  587,  543,  591,  600,  599,  723,
+      115,  555,  112,  123,  541,  123,   83,  123,   83,   83,
 
-      113,  113,  113,  113,  113,  113,  113,  113,  113,  113,
-      113,  113,  113,  113,  113,  113,  113,  113,  122,  123,
-      205,  205,  205,  205,  205,  205,  205,  205,  122,  123,
-      122,  123,  122,  123,  124,  571,  122,  122,  123,  603,
-      125,  711,  573,  580,  124,  583,  124,  124,  124,  708,
-      125,  563,  125,  124,  125,  126,  126,  584,  704,  125,
-      581,  127,  127,  614,  586,  703,  126,  612,  126,  126,
-      126,  702,  127,  128,  127,  126,  127,  602,  604,  609,
-      700,  127,  619,  128,  128,  128,  129,  128,  603,  130,
-      129,  636,  128,  611,  580,  641,  129,  614,  129,  130,
+       83,  116,  123,  116,  116,  116,  116,  116,  116,  116,
+      116,  556,  558,  565,  580,  552,  117,  593,  117,  115,
+      116,  117,  117,  117,  117,  117,  117,  117,  117,  118,
+      557,  118,  118,  118,  118,  118,  118,  118,  118,  551,
+      124,  125,  600,  632,  587,  599,  558,  591,  118,  116,
+      124,  125,  124,  125,  124,  125,  126,  128,  578,  124,
+      125,  579,  128,  124,  722,  580,  126,  128,  126,  128,
+      126,  128,  620,  632,  126,  126,  128,  118,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
 
-      129,  130,  583,  130,  573,  129,  132,  132,  130,  131,
-      131,  131,  584,  617,  612,  621,  132,  133,  132,  131,
-      132,  131,  581,  131,  132,  132,  586,  133,  131,  133,
-      134,  133,  609,  619,  635,  137,  133,  602,  604,  636,
-      134,  660,  134,  134,  134,  137,  620,  637,  138,  134,
-      701,  138,  641,  611,  622,  137,  139,  137,  138,  137,
-      138,  644,  138,  643,  137,  646,  139,  138,  139,  661,
-      139,  140,  140,  617,  651,  139,  698,  621,  697,  648,
-      620,  140,  141,  140,  650,  140,  662,  635,  140,  140,
-      140,  696,  141,  142,  141,  141,  141,  665,  660,  143,
+      129,  130,  215,  215,  215,  215,  215,  215,  215,  215,
+      129,  130,  129,  130,  129,  130,  131,  589,  129,  129,
+      130,  620,  132,  579,  578,  596,  131,  601,  131,  131,
+      131,  626,  132,  597,  132,  131,  132,  133,  133,  629,
+      720,  132,  602,  134,  134,  718,  636,  717,  133,  716,
+      133,  133,  133,  638,  134,  135,  134,  133,  134,  619,
+      621,  601,  631,  134,  709,  135,  135,  135,  136,  135,
+      653,  137,  136,  654,  135,  628,  596,  659,  136,  589,
+      136,  137,  136,  137,  626,  137,  629,  136,  139,  139,
+      137,  138,  138,  138,  637,  597,  631,  636,  139,  140,
 
-      637,  141,  652,  142,  661,  142,  701,  142,  689,  143,
-      144,  143,  142,  143,  622,  142,  643,  668,  143,  667,
-      144,  644,  144,  146,  144,  670,  147,  646,  674,  144,
-      688,  146,  648,  146,  651,  146,  147,  146,  147,  148,
-      147,  672,  146,  662,  147,  147,  650,  149,  665,  148,
-      151,  148,  673,  148,  675,  652,  680,  149,  148,  149,
-      151,  149,  151,  152,  151,  149,  149,  682,  151,  151,
-      668,  686,  681,  152,  153,  152,  667,  152,  687,  705,
-      690,  674,  152,  152,  153,  670,  153,  154,  153,  688,
-      154,  685,  692,  153,  154,  694,  678,  154,  672,  154,
+      139,  138,  139,  138,  602,  138,  139,  139,  634,  140,
+      138,  140,  141,  140,  706,  638,  655,  144,  140,  619,
+      621,  654,  141,  653,  141,  141,  141,  144,  637,  661,
+      145,  141,  721,  145,  659,  628,  639,  144,  146,  144,
+      145,  144,  145,  662,  145,  664,  144,  705,  146,  145,
+      146,  763,  146,  147,  147,  763,  666,  146,  698,  670,
+      697,  668,  695,  147,  148,  147,  690,  147,  634,  655,
+      147,  147,  147,  679,  148,  149,  148,  148,  148,  681,
+      763,  150,  661,  148,  688,  149,  684,  149,  721,  149,
+      685,  150,  151,  150,  149,  150,  639,  149,  669,  687,
 
-      693,  154,  156,  156,  695,  677,  154,  680,  715,  157,
-      725,  675,  673,  156,  676,  156,  671,  156,  682,  157,
-      158,  157,  156,  157,  157,  681,  159,  157,  157,  687,
-      158,  710,  158,  690,  158,  161,  159,  160,  159,  158,
-      159,  705,  159,  692,  158,  159,  669,  160,  161,  160,
-      666,  160,  694,  693,  162,  695,  160,  715,  161,  162,
-      161,  707,  161,  658,  162,  163,  162,  161,  162,  654,
-      725,  165,  653,  162,  649,  163,  647,  163,  165,  163,
-      645,  165,  710,  165,  163,  165,  169,  166,  166,  743,
-      165,  166,  588,  588,  588,  588,  169,  166,  169,  166,
+      150,  689,  151,  662,  151,  153,  151,  664,  154,  666,
+      686,  151,  670,  153,  691,  153,  694,  153,  154,  153,
+      154,  155,  154,  668,  153,  693,  154,  154,  708,  156,
+      679,  155,  158,  155,  692,  155,  681,  684,  700,  156,
+      155,  156,  158,  156,  158,  159,  158,  156,  156,  702,
+      158,  158,  687,  677,  701,  159,  160,  159,  669,  159,
+      707,  689,  710,  745,  159,  159,  160,  686,  160,  161,
+      160,  691,  161,  694,  712,  160,  161,  714,  693,  161,
+      673,  161,  713,  161,  163,  163,  715,  708,  161,  700,
+      725,  164,  672,  737,  692,  163,  735,  163,  671,  163,
 
-      169,  166,  718,  175,  169,  169,  166,  175,  175,  175,
-      175,  175,  175,  175,  175,  176,  743,  709,  707,  176,
-      176,  176,  176,  176,  176,  176,  176,  203,  642,  203,
-      203,  203,  203,  203,  203,  203,  203,  206,  206,  206,
-      206,  206,  206,  206,  206,  210,  203,  632,  210,  719,
-      626,  211,  625,  718,  616,  210,  613,  210,  744,  210,
-      610,  211,  605,  211,  210,  211,  593,  212,  213,  590,
-      211,  576,  572,  588,  709,  203,  208,  212,  213,  212,
-      213,  212,  213,  214,  539,  744,  212,  213,  530,  525,
-      492,  216,  491,  214,  217,  214,  214,  214,  216,  472,
+      702,  164,  165,  164,  163,  164,  164,  701,  166,  164,
+      164,  707,  165,  730,  165,  710,  165,  168,  166,  167,
+      166,  165,  166,  745,  166,  712,  165,  166,  667,  167,
+      168,  167,  665,  167,  714,  713,  169,  715,  167,  663,
+      168,  169,  168,  727,  168,  735,  169,  170,  169,  168,
+      169,  737,  725,  172,  660,  169,  650,  170,  644,  170,
+      172,  170,  643,  172,  730,  172,  170,  172,  176,  173,
+      173,  642,  172,  173,  729,  633,  630,  627,  176,  173,
+      176,  173,  176,  173,  738,  182,  176,  176,  173,  182,
+      182,  182,  182,  182,  182,  182,  182,  183,  622,  610,
 
-      719,  216,  214,  216,  217,  216,  217,  430,  217,  365,
-      216,  363,  294,  217,  287,  623,  623,  623,  623,  286,
-      285,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  218,  219,  284,  283,  280,  276,  215,
-      209,  200,  198,  218,  219,  218,  219,  218,  219,  220,
-      218,  196,  218,  219,  194,  192,  187,  221,  185,  220,
-      222,  220,  180,  220,  221,  220,  177,  221,  220,  221,
-      222,  221,  222,  223,  222,  173,  221,  222,  120,  222,
-      112,  224,  106,  223,  102,  223,  623,  223,  100,   98,
+      727,  183,  183,  183,  183,  183,  183,  183,  183,  213,
+      607,  213,  213,  213,  213,  213,  213,  213,  213,  216,
+      216,  216,  216,  216,  216,  216,  216,  220,  213,  606,
+      220,  729,  592,  221,  588,  738,  561,  220,  739,  220,
+      554,  220,  545,  221,  540,  221,  220,  221,  507,  222,
+      223,  506,  221,  505,  486,  444,  443,  213,  218,  222,
+      223,  222,  223,  222,  223,  224,  378,  764,  222,  223,
+      377,  764,  375,  226,  306,  224,  227,  224,  224,  224,
+      226,  299,  298,  226,  224,  226,  227,  226,  227,  739,
+      227,  297,  226,  296,  295,  227,  764,  640,  640,  640,
 
-       97,  224,  223,  224,   96,  224,  225,  225,  224,  224,
-      224,   93,   88,  226,  225,   87,  226,  225,   86,  225,
-       73,  225,   70,  226,  227,  226,  225,  226,   66,   65,
-      228,   62,  226,   61,  227,   55,  227,  227,  227,   53,
-      228,  229,  228,  227,  228,   32,   28,  230,   22,  228,
-      230,  229,  229,  229,   21,  229,   18,  230,  231,  230,
-      229,  230,   17,    0,  232,    0,  230,  232,  231,    0,
-      231,  231,  231,    0,  232,  233,  232,  231,  232,    0,
-        0,    0,    0,  232,    0,  233,  234,  233,    0,  233,
-        0,    0,  233,    0,  233,    0,  234,  234,  234,  237,
+      640,  640,  294,  218,  218,  218,  218,  218,  218,  218,
+      218,  218,  218,  218,  218,  218,  218,  218,  218,  218,
+      218,  218,  218,  218,  218,  228,  229,  293,  290,  286,
+      225,  219,  210,  208,  206,  228,  229,  228,  229,  228,
+      229,  230,  228,  204,  228,  229,  202,  200,  199,  231,
+      194,  230,  232,  230,  192,  230,  231,  230,  187,  231,
+      230,  231,  232,  231,  232,  233,  232,  184,  231,  232,
+      180,  232,  127,  234,  119,  233,  113,  233,  109,  233,
+      640,  107,  105,  234,  233,  234,  104,  234,  235,  235,
+      234,  234,  234,  103,  100,  236,  235,   99,  236,  235,
 
-      234,    0,    0,    0,    0,  234,    0,  238,    0,  237,
-      239,  237,    0,  237,    0,    0,  237,  238,  237,  238,
-      239,  238,  239,  239,  239,  240,  238,    0,  241,  239,
-        0,  242,    0,    0,  242,  240,    0,  240,  241,  240,
-      241,  242,  241,  242,  240,  242,  241,  241,  243,  244,
-      242,    0,    0,    0,    0,    0,    0,  243,    0,  244,
-      245,  244,    0,  244,    0,    0,    0,  243,  244,  243,
-      245,  243,  245,  246,  245,    0,  243,    0,    0,  245,
-        0,  248,    0,  246,  248,  246,    0,  246,    0,    0,
-        0,  248,  246,  248,  249,  248,    0,  249,    0,    0,
+       98,  235,   97,  235,   90,  236,  237,  236,  235,  236,
+       89,   88,  238,   75,  236,   72,  237,   68,  237,  237,
+      237,   67,  238,  239,  238,  237,  238,   64,   63,  240,
+       57,  238,  240,  239,  239,  239,   55,  239,   34,  240,
+      241,  240,  239,  240,   30,   24,  242,   23,  240,  242,
+      241,   20,  241,  241,  241,   19,  242,  243,  242,  241,
+      242,    0,    0,    0,    0,  242,    0,  243,  244,  243,
+        0,  243,    0,    0,  243,    0,  243,    0,  244,  244,
+      244,  247,  244,    0,    0,    0,    0,  244,    0,  248,
+        0,  247,  249,  247,    0,  247,    0,    0,  247,  248,
 
-      248,    0,  250,    0,  249,  252,  249,    0,  249,  250,
-        0,    0,  250,  249,  250,  252,  250,  252,  253,  252,
-        0,  250,    0,  252,  252,    0,  254,    0,  253,    0,
-      253,    0,  253,    0,  255,    0,  254,  253,  254,    0,
-      254,    0,  256,  254,  255,  254,  255,    0,  255,    0,
-        0,  255,  256,  255,  256,  258,  256,  259,  259,    0,
-        0,  256,  256,    0,    0,  258,  260,  258,  259,  258,
-      259,    0,  259,    0,  258,    0,  260,  259,  260,  261,
-      260,    0,    0,    0,    0,  260,    0,  262,    0,  261,
-      262,  261,    0,  261,    0,  263,    0,  262,  261,  262,
+      247,  248,  249,  248,  249,  249,  249,  250,  248,    0,
+      251,  249,    0,  252,    0,    0,  252,  250,    0,  250,
+      251,  250,  251,  252,  251,  252,  250,  252,  251,  251,
+      253,  254,  252,    0,    0,    0,    0,    0,    0,  253,
+        0,  254,  255,  254,    0,  254,    0,    0,    0,  253,
+      254,  253,  255,  253,  255,  256,  255,    0,  253,    0,
+        0,  255,    0,  258,    0,  256,  258,  256,    0,  256,
+        0,    0,    0,  258,  256,  258,  259,  258,    0,  259,
+        0,    0,  258,    0,  260,    0,  259,  262,  259,    0,
+      259,  260,    0,    0,  260,  259,  260,  262,  260,  262,
 
-        0,  262,  263,  264,    0,  263,  262,  263,    0,  263,
-        0,    0,    0,  264,  263,  264,  265,  264,    0,    0,
-        0,  264,  264,    0,  266,    0,  265,    0,  265,    0,
-      265,    0,    0,  265,  266,  265,  266,  267,  266,    0,
-      267,  266,    0,  266,    0,  269,    0,  267,    0,  267,
-        0,  267,    0,    0,  271,  269,  267,  269,  269,  269,
-      269,  270,  271,    0,  269,  269,    0,    0,    0,    0,
-        0,  270,  271,  270,  271,  270,  271,  275,    0,  270,
-      270,  271,    0,  275,    0,    0,    0,  275,    0,  275,
-        0,  275,  277,  277,  277,  277,  275,    0,    0,    0,
+      263,  262,    0,  260,    0,  262,  262,    0,  264,    0,
+      263,    0,  263,    0,  263,    0,  265,    0,  264,  263,
+      264,    0,  264,    0,  266,  264,  265,  264,  265,    0,
+      265,    0,    0,  265,  266,  265,  266,  268,  266,  269,
+      269,    0,    0,  266,  266,    0,    0,  268,  270,  268,
+      269,  268,  269,    0,  269,    0,  268,    0,  270,  269,
+      270,  271,  270,    0,    0,    0,    0,  270,    0,  272,
+        0,  271,  272,  271,    0,  271,    0,  273,    0,  272,
+      271,  272,    0,  272,  273,  274,    0,  273,  272,  273,
+        0,  273,    0,    0,    0,  274,  273,  274,  275,  274,
 
-      278,  278,  278,  278,    0,    0,    0,  277,  277,  277,
-      277,  277,  277,  277,  277,  278,  278,  278,  278,  278,
-      278,  278,  278,  295,  296,    0,    0,    0,    0,    0,
-        0,  296,    0,  295,  296,  295,  296,  295,  296,  297,
-        0,    0,  295,  296,    0,  298,    0,    0,    0,  297,
-      297,  297,    0,  297,    0,  298,  299,  298,  297,  298,
-        0,    0,  300,    0,  298,  300,  299,    0,  299,    0,
-      299,    0,  300,    0,  300,  299,  300,  301,  301,  302,
-      302,  300,    0,    0,    0,    0,    0,    0,  301,  302,
-      301,  302,  301,  302,  303,    0,    0,  301,  302,    0,
+        0,    0,    0,  274,  274,    0,  276,    0,  275,    0,
+      275,    0,  275,    0,    0,  275,  276,  275,  276,  277,
+      276,    0,  277,  276,    0,  276,    0,  279,    0,  277,
+        0,  277,    0,  277,    0,    0,  281,  279,  277,  279,
+      279,  279,  279,  280,  281,    0,  279,  279,    0,    0,
+        0,    0,    0,  280,  281,  280,  281,  280,  281,  285,
+        0,  280,  280,  281,    0,  285,    0,    0,    0,  285,
+        0,  285,    0,  285,    0,    0,    0,    0,  285,  287,
+      287,  287,  287,  287,    0,    0,    0,  288,  288,  288,
+      288,  288,    0,    0,    0,    0,  287,  287,  287,  287,
 
-        0,  299,  304,    0,  303,    0,  303,    0,  303,    0,
-      305,  303,  304,  303,  304,  304,  304,    0,    0,    0,
-      305,  304,  305,  307,  305,  306,  306,    0,  305,  305,
-        0,    0,    0,  307,  308,  307,  306,  307,  306,    0,
-      306,    0,  307,    0,  308,  306,  308,  309,  308,  309,
-      310,    0,  310,  308,    0,    0,    0,  309,    0,  309,
-      310,  309,  310,    0,  310,  311,  309,    0,  311,  310,
-        0,  312,    0,    0,    0,  311,    0,  311,    0,  311,
-        0,  312,  313,  312,  311,  312,    0,    0,  314,  313,
-      312,    0,  313,    0,  313,    0,  313,    0,  314,  315,
+      287,  287,  287,  287,  288,  288,  288,  288,  288,  288,
+      288,  288,  307,  308,    0,    0,    0,    0,    0,    0,
+      308,    0,  307,  308,  307,  308,  307,  308,  309,    0,
+        0,  307,  308,    0,  310,    0,    0,    0,  309,  309,
+      309,    0,  309,    0,  310,  311,  310,  309,  310,    0,
+        0,  312,    0,  310,  312,  311,    0,  311,    0,  311,
+        0,  312,    0,  312,  311,  312,  313,  313,  314,  314,
+      312,    0,    0,    0,    0,    0,    0,  313,  314,  313,
+      314,  313,  314,  315,    0,    0,  313,  314,    0,    0,
+      311,  316,    0,  315,    0,  315,    0,  315,    0,  317,
 
-      314,  313,  314,    0,  314,    0,    0,  314,    0,  315,
-        0,  315,    0,  315,  316,  315,    0,  316,  315,    0,
-      317,    0,    0,    0,  316,    0,  316,    0,  316,    0,
-      317,  320,  317,  316,  317,    0,    0,  321,    0,  317,
-        0,  320,    0,  320,    0,  320,    0,  321,    0,  321,
-      320,  321,  322,  323,    0,  321,  321,    0,    0,  322,
-        0,    0,  322,  323,  322,  323,  322,  323,  324,  323,
-        0,  322,  323,  325,  325,    0,  320,    0,  324,    0,
-      324,  327,  324,    0,  325,    0,  325,  324,  325,  326,
-      325,    0,  327,  325,  326,    0,    0,    0,    0,  326,
+      315,  316,  315,  316,  316,  316,    0,    0,    0,  317,
+      316,  317,  319,  317,  318,  318,    0,  317,  317,    0,
+        0,    0,  319,  320,  319,  318,  319,  318,    0,  318,
+        0,  319,    0,  320,  318,  320,  321,  320,  321,  322,
+        0,  322,  320,    0,    0,    0,  321,    0,  321,  322,
+      321,  322,    0,  322,  323,  321,    0,  323,  322,    0,
+      324,    0,    0,    0,  323,    0,  323,    0,  323,    0,
+      324,  325,  324,  323,  324,    0,    0,  326,  325,  324,
+        0,  325,    0,  325,    0,  325,    0,  326,  327,  326,
+      325,  326,    0,  326,    0,    0,  326,    0,  327,    0,
 
-      328,  326,  327,  326,  327,  326,  327,    0,  326,    0,
-      328,  327,  328,  329,  328,    0,    0,  328,    0,  328,
-        0,  331,  331,  329,  332,  329,    0,  329,    0,    0,
-        0,  331,  329,  331,  332,  331,  332,  333,  332,    0,
-      331,  336,  332,  332,    0,  335,    0,  333,  335,  333,
-      333,  333,    0,    0,    0,  335,  333,  335,  336,  335,
-        0,    0,    0,    0,  335,    0,  337,    0,  336,  337,
-      336,    0,  336,  338,  338,    0,  337,  336,  337,    0,
-      337,    0,  340,    0,  338,  337,  338,    0,  338,    0,
-      341,    0,  340,  338,  340,    0,  340,    0,    0,    0,
+      327,    0,  327,  328,  327,    0,  328,  327,    0,  329,
+        0,    0,    0,  328,    0,  328,    0,  328,    0,  329,
+      332,  329,  328,  329,    0,    0,  333,    0,  329,    0,
+      332,    0,  332,    0,  332,    0,  333,    0,  333,  332,
+      333,  334,  335,    0,  333,  333,    0,    0,  334,    0,
+        0,  334,  335,  334,  335,  334,  335,  336,  335,    0,
+      334,  335,  337,  337,    0,  332,    0,  336,    0,  336,
+      339,  336,    0,  337,    0,  337,  336,  337,  338,  337,
+        0,  339,  337,  338,    0,    0,    0,    0,  338,  340,
+      338,  339,  338,  339,  338,  339,    0,  338,    0,  340,
 
-      341,  340,  341,  342,  341,    0,  342,    0,  341,  341,
-        0,  343,    0,  342,  344,  342,    0,  342,    0,    0,
-        0,  343,  342,  343,  344,  343,  344,    0,  344,  346,
-      343,  345,  345,  344,    0,  347,    0,    0,    0,  346,
-        0,  346,  345,  346,  345,  347,  345,  347,  346,  347,
-      348,  345,    0,  350,  347,    0,  351,    0,    0,    0,
-      348,    0,  348,  350,  348,  350,  351,  350,  351,  348,
-      351,    0,  350,  352,  346,  351,  352,    0,    0,  353,
-        0,    0,    0,  352,    0,  352,    0,  352,    0,  353,
-      354,  353,  352,  353,    0,    0,    0,    0,  353,    0,
+      339,  340,  341,  340,    0,    0,  340,    0,  340,    0,
+      343,  343,  341,  344,  341,    0,  341,    0,    0,    0,
+      343,  341,  343,  344,  343,  344,  345,  344,    0,  343,
+      348,  344,  344,    0,  347,    0,  345,  347,  345,  345,
+      345,    0,    0,    0,  347,  345,  347,  348,  347,    0,
+        0,    0,    0,  347,    0,  349,    0,  348,  349,  348,
+        0,  348,  350,  350,    0,  349,  348,  349,    0,  349,
+        0,  352,    0,  350,  349,  350,    0,  350,    0,  353,
+        0,  352,  350,  352,    0,  352,    0,    0,    0,  353,
+      352,  353,  354,  353,    0,  354,    0,  353,  353,    0,
 
-      354,    0,  354,    0,  354,    0,  358,  354,    0,  354,
-        0,  359,  359,  359,  359,  353,  358,    0,  358,    0,
-      358,    0,    0,    0,    0,  358,  359,  359,  359,  359,
-      359,  359,  359,  359,  360,  360,  360,  360,    0,    0,
-        0,    0,    0,    0,    0,  360,    0,    0,    0,  360,
-      360,  360,  360,  360,  360,  360,  360,  361,  361,  361,
-      361,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  361,  361,  361,  361,  361,  361,  361,  361,
-      362,    0,  366,    0,  362,  362,  362,  362,  362,  362,
-      362,  362,  366,    0,  366,    0,  366,  367,  367,    0,
+      355,    0,  354,  356,  354,    0,  354,    0,    0,    0,
+      355,  354,  355,  356,  355,  356,    0,  356,  358,  355,
+      357,  357,  356,    0,  359,    0,    0,    0,  358,    0,
+      358,  357,  358,  357,  359,  357,  359,  358,  359,  360,
+      357,    0,  362,  359,    0,  363,    0,    0,    0,  360,
+        0,  360,  362,  360,  362,  363,  362,  363,  360,  363,
+        0,  362,  364,  358,  363,  364,    0,    0,  365,    0,
+        0,    0,  364,    0,  364,    0,  364,    0,  365,  366,
+      365,  364,  365,    0,    0,    0,    0,  365,    0,  366,
+        0,  366,    0,  366,    0,  370,  366,    0,  366,  371,
 
-      366,  366,    0,    0,    0,    0,    0,  367,    0,  367,
-      369,  367,  368,  368,    0,  360,  367,    0,    0,    0,
-      369,    0,  369,  368,  369,  368,    0,  368,    0,  369,
-      371,  371,  368,    0,  372,  372,    0,  373,    0,    0,
-      373,  371,    0,  371,  372,  371,  372,  373,  372,  373,
-      371,  373,  374,  372,    0,  375,  373,    0,    0,    0,
-        0,    0,  374,  376,  374,  375,  374,  375,    0,  375,
-        0,  374,    0,  376,  375,  376,  377,  376,    0,  376,
-        0,    0,  376,  377,  378,    0,  377,    0,  377,    0,
-      377,    0,    0,    0,  378,  377,  378,  379,  378,    0,
+      371,  371,  371,  371,  365,  370,    0,  370,    0,  370,
+        0,    0,    0,    0,  370,    0,  371,  371,  371,  371,
+      371,  371,  371,  371,  372,  372,  372,  372,  372,    0,
+        0,    0,  373,  373,  373,  373,  373,  372,    0,    0,
+        0,  372,  372,  372,  372,  372,  372,  372,  372,  373,
+      373,  373,  373,  373,  373,  373,  373,  374,    0,  379,
+        0,  374,  374,  374,  374,  374,  374,  374,  374,  379,
+        0,  379,    0,  379,  380,  380,    0,  379,  379,  381,
+      381,    0,    0,    0,  380,    0,  380,    0,  380,    0,
+      381,  382,  381,  380,  381,    0,    0,    0,    0,  381,
 
-      379,    0,    0,  378,  379,    0,    0,  379,  380,  379,
-      380,  379,    0,    0,  381,    0,  379,  381,  380,    0,
-      380,  381,  380,    0,  381,  382,  381,  380,  381,    0,
-        0,    0,    0,  381,    0,  382,  383,  382,    0,  382,
-        0,  382,    0,    0,  382,    0,  383,    0,  383,    0,
-      383,  384,  384,    0,  383,  383,    0,  385,    0,    0,
-        0,  384,    0,  384,    0,  384,    0,  385,  386,  385,
-      384,  385,    0,    0,  387,  385,  385,    0,  386,    0,
-      386,    0,  386,    0,  387,  386,  387,  386,  387,  388,
-      392,    0,    0,  387,    0,    0,    0,  392,    0,  388,
+        0,  382,    0,  382,    0,  382,    0,  372,  384,  384,
+      382,    0,  385,  385,    0,  386,    0,    0,  386,  384,
+        0,  384,  385,  384,  385,  386,  385,  386,  384,  386,
+      387,  385,    0,  388,  386,    0,    0,    0,    0,    0,
+      387,  389,  387,  388,  387,  388,    0,  388,    0,  387,
+        0,  389,  388,  389,  390,  389,    0,  389,    0,    0,
+      389,  390,  391,    0,  390,    0,  390,    0,  390,    0,
+        0,    0,  391,  390,  391,  392,  391,    0,  392,    0,
+        0,  391,  392,    0,    0,  392,  393,  392,  393,  392,
+        0,    0,  394,    0,  392,  394,  393,    0,  393,  394,
 
-      392,  388,  392,  388,  392,    0,    0,  394,  388,  392,
-      393,  393,    0,  393,    0,    0,    0,  394,    0,  394,
-      393,  394,  393,    0,  393,  394,  394,  396,  395,  393,
-      395,    0,    0,    0,    0,    0,    0,  396,  395,  396,
-      395,  396,  395,  397,    0,    0,  396,  395,    0,  398,
-        0,    0,  398,  397,    0,  397,    0,  397,    0,  398,
-      399,  398,  397,  398,  400,    0,    0,  401,  398,    0,
-      399,    0,  399,  400,  399,    0,    0,  399,    0,  399,
-        0,  403,    0,  400,  401,  400,    0,  400,    0,    0,
-        0,  403,  400,  403,  401,  403,  401,  404,  401,  403,
+      393,    0,  394,  395,  394,  393,  394,    0,    0,    0,
+        0,  394,    0,  395,  396,  395,    0,  395,    0,  395,
+        0,    0,  395,    0,  396,    0,  396,    0,  396,  397,
+      397,    0,  396,  396,    0,  398,    0,    0,    0,  397,
+        0,  397,    0,  397,    0,  398,  399,  398,  397,  398,
+        0,    0,  400,  398,  398,    0,  399,    0,  399,    0,
+      399,    0,  400,  399,  400,  399,  400,  401,  405,    0,
+        0,  400,    0,    0,    0,  405,    0,  401,  405,  401,
+      405,  401,  405,    0,    0,  407,  401,  405,  406,  406,
+        0,  406,    0,    0,    0,  407,    0,  407,  406,  407,
 
-      403,    0,    0,  401,    0,  405,    0,  404,    0,  404,
-        0,  404,    0,  407,    0,  405,  404,  405,    0,  405,
-        0,  409,    0,  407,  405,  407,    0,  407,    0,  407,
-        0,  409,  407,  409,  410,  409,    0,    0,    0,    0,
-      409,    0,    0,    0,  410,    0,  410,  412,  410,    0,
-      413,    0,  410,  410,  412,    0,    0,  412,  414,  412,
-      413,  412,  413,  414,  413,    0,  412,    0,  414,  413,
-      414,  415,  414,    0,    0,    0,    0,  414,    0,    0,
-        0,  415,  418,  415,    0,  415,    0,    0,  419,    0,
-      415,  419,  418,  415,  418,    0,  418,    0,  419,  420,
+      406,    0,  406,  407,  407,  409,  408,  406,  408,    0,
+        0,    0,    0,    0,    0,  409,  408,  409,  408,  409,
+      408,  410,    0,    0,  409,  408,    0,  411,    0,    0,
+      411,  410,    0,  410,    0,  410,    0,  411,  412,  411,
+      410,  411,  413,    0,    0,  414,  411,    0,  412,    0,
+      412,  413,  412,    0,    0,  412,    0,  412,    0,  416,
+        0,  413,  414,  413,    0,  413,    0,    0,    0,  416,
+      413,  416,  414,  416,  414,  417,  414,  416,  416,    0,
+        0,  414,    0,  418,    0,  417,    0,  417,    0,  417,
+        0,  420,    0,  418,  417,  418,    0,  418,    0,  422,
 
-      419,  418,  419,    0,    0,    0,    0,  419,    0,  420,
-      422,  420,    0,  420,    0,  420,    0,    0,  420,    0,
-      422,    0,  422,    0,  422,  427,  427,  427,  427,  422,
-        0,    0,    0,    0,    0,    0,    0,    0,  431,    0,
-      427,  427,  427,  427,  427,  427,  427,  427,  431,    0,
-      431,  433,  431,  432,  432,  422,    0,  431,    0,    0,
-        0,  433,  435,  433,  432,  433,  432,    0,  432,  433,
-      433,    0,  435,  432,  435,  436,  435,    0,  437,    0,
-        0,  435,    0,    0,    0,  436,    0,  436,  437,  436,
-      437,    0,  437,  436,  436,  438,    0,  437,  438,    0,
+        0,  420,  418,  420,    0,  420,    0,  420,    0,  422,
+      420,  422,  423,  422,    0,    0,    0,    0,  422,    0,
+        0,    0,  423,    0,  423,  425,  423,    0,  426,    0,
+      423,  423,  425,    0,    0,  425,  427,  425,  426,  425,
+      426,  427,  426,    0,  425,    0,  427,  426,  427,  428,
+      427,    0,    0,    0,    0,  427,    0,    0,    0,  428,
+      431,  428,    0,  428,    0,    0,  432,    0,  428,  432,
+      431,  428,  431,    0,  431,    0,  432,  433,  432,  431,
+      432,    0,    0,    0,    0,  432,    0,  433,  435,  433,
+        0,  433,    0,  433,    0,    0,  433,    0,  435,    0,
 
-      439,  439,    0,    0,    0,  438,    0,  438,    0,  438,
-        0,  439,  440,  439,  438,  439,    0,    0,  441,    0,
-      439,    0,  440,    0,  440,    0,  440,    0,  441,    0,
-      441,  440,  441,  442,    0,  442,  441,  441,    0,  443,
-        0,    0,    0,  442,    0,  442,    0,  442,    0,  443,
-        0,  443,  442,  443,    0,    0,  444,  443,  443,  444,
-        0,    0,  445,    0,  445,    0,  444,    0,  444,    0,
-      444,    0,  445,  446,  445,  444,  445,    0,  447,  447,
-        0,  445,    0,  446,    0,  446,    0,  446,    0,  447,
-      448,  447,  446,  447,    0,    0,  449,    0,  447,    0,
+      435,    0,  435,  445,    0,    0,    0,  435,  440,  440,
+      440,  440,  440,  445,    0,  445,    0,  445,    0,    0,
+        0,    0,  445,  446,  446,  440,  440,  440,  440,  440,
+      440,  440,  440,  435,  446,  447,  446,    0,  446,    0,
+        0,    0,    0,  446,    0,  447,  449,  447,    0,  447,
+        0,    0,  450,  447,  447,    0,  449,    0,  449,    0,
+      449,    0,  450,  451,  450,  449,  450,    0,    0,  452,
+      450,  450,  452,  451,    0,  451,    0,  451,    0,  452,
+        0,  452,  451,  452,  453,  453,  454,    0,  452,    0,
+        0,    0,    0,    0,    0,  453,  454,  453,  454,  453,
 
-      448,    0,  448,  449,  448,    0,  449,  450,  449,  448,
-      449,    0,    0,  451,    0,  449,    0,  450,    0,  450,
-      451,  450,    0,  451,  450,  451,  450,  451,  452,  452,
-      456,    0,  451,    0,  456,    0,    0,    0,    0,  452,
-      456,  452,  456,  452,  456,  457,    0,    0,  452,  456,
-        0,  458,  457,  458,    0,  457,    0,  457,    0,  457,
-        0,  458,  459,  458,  457,  458,    0,    0,  460,    0,
-      458,  460,  459,    0,  459,    0,  459,    0,  460,  459,
-      460,  459,  460,  461,  461,    0,    0,  460,    0,  462,
-      462,    0,    0,  461,    0,  461,    0,  461,    0,  462,
+      454,  455,    0,    0,  453,  454,    0,    0,    0,    0,
+        0,  455,  456,  455,  456,  455,    0,    0,  457,  455,
+      455,    0,  456,    0,  456,    0,  456,    0,  457,    0,
+      457,  456,  457,    0,    0,  458,  457,  457,  458,    0,
+        0,  459,    0,  459,    0,  458,    0,  458,    0,  458,
+        0,  459,  460,  459,  458,  459,    0,  461,  461,    0,
+      459,    0,  460,    0,  460,    0,  460,    0,  461,  462,
+      461,  460,  461,    0,    0,  463,    0,  461,    0,  462,
+        0,  462,  463,  462,    0,  463,  464,  463,  462,  463,
+        0,    0,  465,    0,  463,    0,  464,    0,  464,  465,
 
-      463,  462,  461,  462,    0,    0,    0,    0,  462,    0,
-      463,    0,  463,    0,  463,  464,  463,    0,  464,  463,
-        0,  465,    0,    0,    0,  464,    0,  464,    0,  464,
-        0,  465,  468,  465,  464,  465,    0,    0,  465,    0,
-      465,    0,  468,    0,  468,  471,  468,  469,  469,    0,
-        0,  468,    0,    0,    0,  471,  473,  471,  469,  471,
-      469,    0,  469,    0,  471,    0,  473,  469,  473,  474,
-      473,    0,  474,    0,  473,  473,    0,  476,    0,  474,
-        0,  474,    0,  474,    0,    0,    0,  476,  474,  476,
-        0,  476,  477,  477,    0,  478,  476,  476,  479,    0,
+      464,    0,  465,  464,  465,  464,  465,  466,  466,  470,
+        0,  465,    0,  470,    0,    0,    0,    0,  466,  470,
+      466,  470,  466,  470,  471,    0,    0,  466,  470,    0,
+      472,  471,  472,    0,  471,    0,  471,    0,  471,    0,
+      472,  473,  472,  471,  472,    0,    0,  474,    0,  472,
+      474,  473,    0,  473,    0,  473,    0,  474,  473,  474,
+      473,  474,  475,  475,    0,    0,  474,    0,  476,  476,
+        0,    0,  475,    0,  475,    0,  475,    0,  476,  477,
+      476,  475,  476,    0,    0,    0,    0,  476,    0,  477,
+        0,  477,    0,  477,  478,  477,    0,  478,  477,    0,
 
-        0,    0,  477,    0,  477,  478,  477,  478,  479,  478,
-      479,  477,  479,  482,  478,    0,  483,  479,    0,    0,
-        0,    0,    0,  482,    0,  482,  483,  482,  483,    0,
-      483,  493,  482,  483,    0,  483,  489,  489,  489,  489,
-        0,  493,    0,  493,    0,  493,    0,    0,    0,  493,
-      493,  489,  489,  489,  489,  489,  489,  489,  489,  490,
-        0,    0,    0,  490,  490,  490,  490,  490,  490,  490,
-      490,  494,  496,    0,    0,    0,    0,    0,  494,    0,
-        0,  494,  496,  494,  496,  494,  496,    0,  498,  497,
-      494,  496,  497,    0,    0,    0,    0,    0,  498,  497,
+      479,    0,    0,    0,  478,    0,  478,    0,  478,    0,
+      479,  482,  479,  478,  479,    0,    0,  479,    0,  479,
+        0,  482,    0,  482,  485,  482,  483,  483,    0,    0,
+      482,    0,    0,    0,  485,  487,  485,  483,  485,  483,
+        0,  483,    0,  485,    0,  487,  483,  487,  488,  487,
+        0,  488,    0,  487,  487,    0,  490,    0,  488,    0,
+      488,    0,  488,    0,    0,    0,  490,  488,  490,    0,
+      490,  491,  491,    0,  492,  490,  490,  493,    0,    0,
+        0,  491,    0,  491,  492,  491,  492,  493,  492,  493,
+      491,  493,  496,  492,    0,  497,  493,    0,    0,    0,
 
-      498,  497,  498,  497,  499,  500,    0,  498,  497,    0,
-        0,  499,  500,    0,  499,  500,  499,  500,  499,  500,
-      501,  502,    0,  499,  500,    0,    0,    0,    0,    0,
-      501,  502,  501,  502,  501,  502,  503,    0,    0,  501,
-      502,    0,  504,  503,  504,    0,  503,    0,  503,    0,
-      503,    0,  504,  505,  504,  503,  504,    0,    0,  506,
-        0,  504,    0,  505,  506,  505,    0,  505,    0,  506,
-      507,  506,  505,  506,    0,    0,    0,    0,  506,    0,
-      507,  508,  507,    0,  507,    0,    0,    0,  507,  507,
-        0,  508,  509,  508,    0,  508,    0,    0,  510,  508,
+        0,    0,  496,    0,  496,  497,  496,  497,    0,  497,
+        0,  496,  497,    0,  497,  503,  503,  503,  503,  503,
+      504,    0,    0,    0,  504,  504,  504,  504,  504,  504,
+      504,  504,  503,  503,  503,  503,  503,  503,  503,  503,
+      508,  509,    0,    0,    0,    0,    0,    0,  509,    0,
+      508,  509,  508,  509,  508,  509,  511,    0,  508,  508,
+      509,    0,  512,    0,    0,  512,  511,    0,  511,    0,
+      511,    0,  512,  513,  512,  511,  512,    0,    0,  514,
+        0,  512,    0,  513,    0,  513,  514,  513,    0,  514,
+      515,  514,  513,  514,    0,    0,  516,  515,  514,    0,
 
-      508,    0,  509,    0,  509,    0,  509,    0,  510,  511,
-      510,  509,  510,    0,    0,  515,    0,  510,    0,  511,
-        0,  511,  515,  511,    0,  515,  516,  515,  511,  515,
-        0,    0,    0,    0,  515,    0,  516,  517,  516,    0,
-      516,    0,    0,  518,  516,  516,    0,  517,    0,  517,
-        0,  517,    0,  518,  519,  518,  517,  518,    0,    0,
-      520,    0,  518,  520,  519,    0,  519,    0,  519,    0,
-      520,  519,  520,  519,  520,  521,  522,    0,    0,  520,
-        0,    0,    0,    0,    0,  521,  522,  521,  522,  521,
-      522,  523,  523,  521,  521,  522,    0,  524,    0,    0,
+      515,    0,  515,    0,  515,    0,  516,  517,  516,  515,
+      516,    0,    0,  518,    0,  516,    0,  517,    0,  517,
+      518,  517,    0,  518,    0,  518,  517,  518,  519,  520,
+      519,    0,  518,    0,    0,    0,    0,    0,  519,  520,
+      519,  520,  519,  520,  521,    0,    0,  519,  520,  521,
+      522,    0,    0,    0,  521,    0,  521,    0,  521,    0,
+      522,  523,  522,  521,  522,    0,    0,    0,  522,  522,
+        0,  523,  524,  523,    0,  523,    0,    0,  525,  523,
+      523,    0,  524,    0,  524,    0,  524,    0,  525,  526,
+      525,  524,  525,    0,    0,  530,    0,  525,    0,  526,
 
-        0,  523,    0,  523,    0,  523,    0,  524,  527,  524,
-      523,  524,    0,    0,  529,    0,  524,    0,  527,    0,
-      527,    0,  527,    0,  529,  531,  529,  527,  529,    0,
-        0,  532,    0,  529,    0,  531,    0,  531,    0,  531,
-        0,  532,  524,  532,  531,  532,  534,    0,    0,  534,
-      532,    0,  535,    0,    0,  535,  534,    0,  534,    0,
-      534,    0,  535,    0,  535,  534,  535,  538,  538,    0,
-        0,  535,    0,  544,  544,  544,  544,    0,  538,    0,
-      538,    0,  538,    0,    0,    0,    0,  538,  544,  544,
-      544,  544,  544,  544,  544,  544,  547,  548,  548,    0,
+        0,  526,  530,  526,    0,  530,  531,  530,  526,  530,
+        0,    0,    0,    0,  530,    0,  531,  532,  531,    0,
+      531,    0,    0,  533,  531,  531,    0,  532,    0,  532,
+        0,  532,    0,  533,  534,  533,  532,  533,    0,    0,
+      535,    0,  533,  535,  534,    0,  534,    0,  534,    0,
+      535,  534,  535,  534,  535,  536,  537,    0,    0,  535,
+        0,    0,    0,    0,    0,  536,  537,  536,  537,  536,
+      537,  538,  538,  536,  536,  537,    0,  539,    0,    0,
+        0,  538,    0,  538,    0,  538,    0,  539,  542,  539,
+      538,  539,    0,    0,  544,    0,  539,    0,  542,    0,
 
-        0,    0,    0,  547,    0,    0,  547,  548,  547,  548,
-      547,  548,  550,    0,    0,  547,  548,    0,    0,    0,
-      551,    0,  550,  552,  550,    0,  550,    0,  550,    0,
-      551,  550,  551,  552,  551,  552,  553,  552,  551,  551,
-        0,    0,  552,  556,  554,    0,  553,    0,  553,    0,
-      553,    0,  555,    0,  554,  553,  554,  554,  554,    0,
-      556,    0,  555,  554,  555,    0,  555,    0,    0,    0,
-      556,  555,  556,  557,  556,    0,  557,    0,    0,  556,
-        0,  558,    0,  557,    0,  557,    0,  557,    0,  559,
-        0,  558,  557,  558,    0,  558,  559,  560,    0,  559,
+      542,    0,  542,    0,  544,  546,  544,  542,  544,    0,
+        0,  547,    0,  544,    0,  546,    0,  546,    0,  546,
+        0,  547,  539,  547,  546,  547,  549,    0,    0,  549,
+      547,    0,  550,    0,    0,  550,  549,    0,  549,    0,
+      549,    0,  550,    0,  550,  549,  550,  553,  553,  564,
+      564,  550,  559,  559,  559,  559,  559,    0,  553,  564,
+      553,  564,  553,  564,    0,    0,    0,  553,  564,  559,
+      559,  559,  559,  559,  559,  559,  559,  563,  566,    0,
+        0,    0,    0,    0,  563,    0,    0,  563,  566,  563,
+      566,  563,  566,  567,  566,    0,  563,  566,    0,    0,
 
-      558,  559,    0,  559,    0,    0,    0,  560,  559,  560,
-      565,  560,    0,  565,    0,    0,  560,    0,  566,    0,
-      565,  567,  565,    0,  565,    0,    0,    0,  566,  565,
-      566,  567,  566,  567,  568,  567,    0,  566,    0,    0,
-      567,    0,  569,    0,  568,  570,  568,    0,  568,  569,
-        0,    0,  569,  568,  569,  570,  569,  570,  574,  570,
-        0,  569,  578,  570,  570,    0,  579,    0,  574,    0,
-      574,    0,  574,    0,    0,    0,  579,  574,  579,  578,
-      579,    0,  582,    0,    0,  579,    0,    0,    0,  578,
-        0,  578,  582,  578,  582,    0,  582,  591,  578,    0,
+        0,    0,    0,  567,  568,  567,    0,  567,    0,    0,
+      569,  567,  567,    0,  568,    0,  568,    0,  568,    0,
+      569,  570,  569,  568,  569,  572,    0,  571,    0,  569,
+        0,  570,    0,  570,  570,  570,    0,  571,    0,  571,
+      570,  571,  572,    0,    0,  573,  571,    0,  573,    0,
+        0,    0,  572,  574,  572,  573,  572,  573,    0,  573,
+        0,  572,    0,  574,  573,  574,  575,  574,    0,  576,
+        0,    0,  574,  575,    0,    0,  575,    0,  575,  576,
+      575,  576,    0,  576,  581,  575,    0,  581,  576,    0,
+      582,    0,    0,    0,  581,    0,  581,    0,  581,    0,
 
-        0,  582,  587,  587,  587,  587,    0,  591,    0,  591,
-      591,  591,    0,    0,    0,  592,  591,  587,  587,  587,
-      587,  587,  587,  587,  587,  592,  594,  592,    0,  592,
-        0,    0,  595,    0,  592,    0,  594,    0,  594,    0,
-      594,    0,  595,    0,  595,  594,  595,  596,  597,  595,
-      596,  595,    0,  597,    0,    0,    0,  596,  597,  596,
-      597,  596,  597,  598,    0,    0,  596,  597,    0,  600,
-        0,  600,    0,  598,    0,  598,    0,  598,    0,  600,
-      601,  600,  598,  600,    0,    0,  606,    0,  600,    0,
-      601,    0,  601,    0,  601,    0,  606,  607,  606,  601,
+      582,  583,  582,  581,  582,    0,    0,  584,    0,  582,
+        0,  583,    0,  583,    0,  583,    0,  584,  585,  584,
+      583,  584,    0,    0,  586,  585,  584,    0,  585,  594,
+      585,    0,  585,    0,  586,  590,  586,  585,  586,    0,
+        0,    0,  586,  586,    0,  590,  594,  590,    0,  590,
+        0,    0,  595,    0,  590,    0,  594,    0,  594,    0,
+      594,    0,  595,  598,  595,  594,  595,    0,    0,    0,
+        0,  595,    0,  598,    0,  598,    0,  598,  608,    0,
+        0,    0,  598,  603,  603,  603,  603,  603,  608,    0,
+      608,  608,  608,    0,    0,    0,    0,  608,    0,    0,
 
-      606,    0,  606,    0,    0,  606,    0,  607,  608,  607,
-      607,  607,    0,    0,  618,  608,  607,    0,  608,    0,
-      608,    0,  608,    0,  618,  627,  618,  608,  618,    0,
-        0,  628,    0,  618,    0,  627,    0,  627,    0,  627,
-        0,  628,    0,  628,  627,  628,  629,  630,  629,    0,
-      628,    0,    0,    0,    0,    0,  629,  630,  629,  630,
-      629,  630,  631,  633,    0,  629,  630,    0,    0,    0,
-        0,    0,  631,  633,  631,  633,  631,  633,  634,  631,
-        0,  631,  633,    0,  638,  634,    0,    0,  634,    0,
-      634,    0,  634,    0,  638,  639,  638,  634,  638,    0,
+      603,  603,  603,  603,  603,  603,  603,  603,  604,  604,
+      604,  604,  604,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  609,  611,  604,  604,  604,  604,  604,
+      604,  604,  604,  609,  611,  609,  611,  609,  611,  612,
+        0,    0,  609,  611,    0,  613,    0,    0,  613,  612,
+        0,  612,    0,  612,    0,  613,  612,  613,  612,  613,
+      614,  615,    0,    0,  613,  614,    0,    0,    0,    0,
+      614,  615,  614,  615,  614,  615,  617,    0,  617,  614,
+      615,    0,  618,    0,    0,    0,  617,    0,  617,    0,
+      617,  604,  618,  623,  618,  617,  618,    0,    0,    0,
 
-        0,    0,    0,  638,    0,  639,  640,  639,    0,  639,
-        0,    0,  655,    0,  639,    0,  640,    0,  640,  640,
-      640,    0,  655,  656,  655,  640,  655,    0,    0,  657,
-        0,  655,    0,  656,    0,  656,    0,  656,    0,  657,
-      659,  657,  656,  657,    0,    0,    0,    0,  657,    0,
-      659,  663,  659,    0,  659,    0,    0,  664,  659,  659,
-        0,  663,    0,  663,    0,  663,    0,  664,  663,  664,
-      663,  664,  679,  683,    0,    0,  664,    0,    0,    0,
-        0,    0,  679,  683,  679,  683,  679,  683,  684,  699,
-        0,  679,  683,    0,    0,  679,    0,    0,  684,  699,
+        0,  618,    0,  623,  624,  623,    0,  623,    0,  623,
+        0,    0,  623,    0,  624,  625,  624,  624,  624,    0,
+        0,  635,  625,  624,    0,  625,    0,  625,    0,  625,
+        0,  635,  645,  635,  625,  635,    0,    0,  646,    0,
+      635,    0,  645,    0,  645,    0,  645,    0,  646,    0,
+      646,  645,  646,  647,  648,  647,    0,  646,    0,    0,
+        0,    0,    0,  647,  648,  647,  648,  647,  648,  649,
+      651,    0,  647,  648,    0,    0,    0,    0,    0,  649,
+      651,  649,  651,  649,  651,  652,  649,    0,  649,  651,
+        0,  656,  652,    0,    0,  652,    0,  652,    0,  652,
 
-      684,  699,  684,  699,    0,    0,    0,  684,  699,  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,  751,
-      751,  751,  751,  751,  751,  751,  751,  751,  752,  752,
-      752,  752,  752,  752,  752,  752,  752,  752,  752,  752,
-      752,  753,  753,  753,  753,  753,  753,  753,  753,  753,
-      753,  753,  753,  753,  754,  754,  754,  754,    0,  754,
-      754,  754,  754,  754,  754,  754,  754,  755,  755,  755,
-        0,  755,    0,  755,    0,  755,  756,  756,    0,  756,
+        0,  656,  657,  656,  652,  656,    0,    0,    0,    0,
+      656,    0,  657,  658,  657,    0,  657,    0,    0,  674,
+        0,  657,    0,  658,    0,  658,  658,  658,    0,  674,
+      675,  674,  658,  674,    0,    0,  676,    0,  674,    0,
+      675,    0,  675,    0,  675,    0,  676,  678,  676,  675,
+      676,    0,    0,    0,    0,  676,    0,  678,  682,  678,
+        0,  678,    0,    0,  683,  678,  678,    0,  682,    0,
+      682,    0,  682,    0,  683,  682,  683,  682,  683,  699,
+      703,    0,    0,  683,    0,    0,    0,    0,    0,  699,
+      703,  699,  703,  699,  703,  704,  719,    0,  699,  703,
 
-      756,  757,  757,    0,    0,  757,  757,    0,  757,  757,
-      757,  757,  757,  757,  758,  758,  758,  758,    0,  758,
-      758,  758,  758,  758,  758,  758,  758,  759,  759,  759,
-      759,  759,  759,  759,  759,    0,  759,  759,  760,    0,
-        0,    0,  760,  760,  760,  760,  760,  760,  760,  761,
-        0,    0,    0,  761,  761,  761,  761,  761,  761,  761,
-      762,  762,    0,  762,  762,  763,  763,    0,  763,  763,
-      764,  764,    0,  764,  764,  765,    0,  765,  765,  766,
-      766,    0,  766,  766,  767,    0,  767,  767,  768,    0,
-      768,  768,  769,    0,  769,  769,  770,    0,  770,  770,
-
+        0,    0,  699,    0,    0,  704,  719,  704,  719,  704,
+      719,    0,    0,    0,  704,  719,  769,  769,  769,  769,
+      769,  769,  769,  769,  769,  769,  769,  769,  770,  770,
+      770,  770,  770,  770,  770,  770,  770,  770,  770,  770,
       771,  771,  771,  771,  771,  771,  771,  771,  771,  771,
-      771,  771,  771,  772,  772,    0,  772,  772,  773,  773,
-        0,  773,  773,  773,  773,  773,  773,  773,  773,  773,
-      773,  774,  774,  774,    0,    0,    0,  774,    0,    0,
-        0,    0,  774,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
+      771,  771,  772,  772,  772,  772,  772,  772,  772,  772,
+      772,  772,  772,  772,  773,  773,  773,  773,  773,  773,
+      773,  773,  773,  773,  773,  773,  774,  774,  774,  774,
+        0,  774,  774,  774,  774,  774,  774,  774,  775,  775,
+      775,    0,  775,    0,  775,  776,  776,    0,  776,  776,
 
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748,
-      748,  748,  748,  748,  748,  748,  748,  748,  748,  748
+      777,  777,    0,    0,  777,  777,    0,  777,  777,  777,
+      777,  777,  778,  778,  778,  778,    0,  778,  778,  778,
+      778,  778,  778,  778,  779,  779,  779,  779,  779,  779,
+      779,  779,    0,  779,  779,  780,    0,    0,    0,  780,
+      780,  780,  780,  780,  780,  780,  781,    0,    0,    0,
+      781,  781,  781,  781,  781,  781,  781,  782,  782,    0,
+      782,  782,  783,  783,    0,  783,  784,  784,    0,  784,
+      784,  785,  785,    0,  785,  785,  786,    0,  786,  786,
+      787,  787,    0,  787,  787,  788,    0,  788,  788,  789,
+        0,  789,  789,  790,    0,  790,  791,    0,  791,  791,
+
+      792,    0,  792,  792,  793,  793,  793,  793,  793,  793,
+      793,  793,  793,  793,  793,  793,  794,  794,    0,  794,
+      794,  795,  795,    0,  795,  795,  795,  795,  795,  795,
+      795,  795,  795,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768,  768,  768,  768,  768,  768,  768,  768,  768,
+      768,  768
     } ;
 
 /* Table of booleans, true if rule could match eol. */
-static yyconst flex_int32_t yy_rule_can_match_eol[142] =
+static yyconst flex_int32_t yy_rule_can_match_eol[143] =
     {   0,
-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, 1, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 1, 
-    0, 0,     };
+    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[141] =
+static yyconst flex_int16_t yy_rule_linenum[142] =
     {   0,
-       96,   98,   99,  101,  104,  106,  109,  111,  112,  113,
-      116,  118,  119,  120,  132,  139,  146,  152,  161,  169,
-      177,  178,  180,  199,  205,  206,  207,  208,  209,  212,
-      218,  225,  232,  239,  246,  253,  254,  255,  263,  264,
-      265,  266,  267,  272,  273,  274,  275,  276,  277,  278,
-      279,  280,  281,  282,  291,  292,  293,  294,  295,  296,
-      297,  298,  299,  300,  301,  302,  303,  304,  305,  306,
-      307,  308,  309,  310,  311,  312,  313,  314,  315,  316,
-      317,  318,  319,  320,  321,  322,  323,  324,  325,  326,
-      327,  328,  329,  330,  331,  332,  333,  334,  335,  336,
+       98,  100,  101,  103,  106,  109,  115,  118,  120,  121,
+      122,  125,  127,  128,  129,  141,  148,  155,  161,  170,
+      178,  186,  187,  189,  208,  214,  215,  216,  217,  218,
+      221,  227,  234,  241,  248,  255,  262,  263,  264,  272,
+      273,  274,  280,  281,  286,  287,  288,  289,  290,  291,
+      292,  293,  294,  295,  296,  305,  306,  307,  308,  309,
+      315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
+      325,  326,  327,  328,  329,  330,  331,  332,  333,  334,
+      335,  336,  337,  338,  339,  340,  341,  342,  343,  344,
+      345,  346,  347,  348,  349,  350,  351,  352,  353,  354,
 
-      337,  338,  339,  340,  341,  342,  343,  344,  345,  346,
-      347,  348,  353,  354,  359,  360,  361,  364,  369,  375,
-      383,  393,  398,  400,  401,  405,  410,  415,  421,  422,
-      424,  430,  443,  446,  471,  515,  516,  518,  520,  531
+      355,  356,  357,  358,  359,  360,  361,  362,  363,  364,
+      365,  366,  367,  372,  373,  378,  379,  380,  383,  388,
+      394,  402,  412,  417,  419,  420,  424,  429,  434,  440,
+      441,  443,  449,  462,  465,  490,  534,  535,  537,  539,
+      550
     } ;
 
 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
@@ -2041,6 +2073,7 @@
 int asn1p_lexer_pedantic_1990 = 0;
 int asn1p_lexer_types_year = 0;
 int asn1p_lexer_constructs_year = 0;
+int asn1p_lexer_extended_values = 0;
 
 int asn1p_as_pointer;
 
@@ -2094,9 +2127,10 @@
 
 
 
+
 /* Newline */
 /* White-space */
-#line 2100 "asn1p_l.c"
+#line 2134 "asn1p_l.c"
 
 #define INITIAL 0
 #define dash_comment 1
@@ -2106,6 +2140,7 @@
 #define opaque 5
 #define encoding_control 6
 #define with_syntax 7
+#define extended_values 8
 
 #ifndef YY_NO_UNISTD_H
 /* Special case for "unistd.h", since it is non-ANSI. We include it way
@@ -2355,10 +2390,10 @@
 	register int yy_act;
     
 /* %% [7.0] user's declarations go here */
-#line 94 "asn1p_l.l"
+#line 96 "asn1p_l.l"
 
 
-#line 2362 "asn1p_l.c"
+#line 2397 "asn1p_l.c"
 
 	if ( !(yy_init) )
 		{
@@ -2426,14 +2461,14 @@
 			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 >= 749 )
+				if ( yy_current_state >= 769 )
 					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 != 748 );
+		while ( yy_current_state != 768 );
 
 yy_find_action:
 /* %% [10.0] code to find the action number goes here */
@@ -2477,13 +2512,13 @@
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 141 )
+			else if ( yy_act < 142 )
 				fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
 				         (long)yy_rule_linenum[yy_act], asn1p_text );
-			else if ( yy_act == 141 )
+			else if ( yy_act == 142 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         asn1p_text );
-			else if ( yy_act == 142 )
+			else if ( yy_act == 143 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2494,7 +2529,7 @@
 /* %% [13.0] actions go here */
 case 1:
 YY_RULE_SETUP
-#line 96 "asn1p_l.l"
+#line 98 "asn1p_l.l"
 return UTF8_BOM;
 	YY_BREAK
 case 2:
@@ -2503,7 +2538,7 @@
 (yy_c_buf_p) = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up asn1p_text again */
 YY_RULE_SETUP
-#line 98 "asn1p_l.l"
+#line 100 "asn1p_l.l"
 /* Immediately terminated long comment */
 	YY_BREAK
 case 3:
@@ -2511,69 +2546,79 @@
 (yy_c_buf_p) = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up asn1p_text again */
 YY_RULE_SETUP
-#line 99 "asn1p_l.l"
+#line 101 "asn1p_l.l"
 yy_push_state(idash_comment);	/* Incorrect, but acceptable */
 	YY_BREAK
 
 case 4:
 YY_RULE_SETUP
-#line 101 "asn1p_l.l"
+#line 103 "asn1p_l.l"
 yy_pop_state(); /* Acceptable end of comment */
 	YY_BREAK
 
 case 5:
 YY_RULE_SETUP
-#line 104 "asn1p_l.l"
+#line 106 "asn1p_l.l"
 asn1p_as_pointer = 1;
 	YY_BREAK
+
 case 6:
 YY_RULE_SETUP
-#line 106 "asn1p_l.l"
-yy_push_state(dash_comment);
+#line 109 "asn1p_l.l"
+{
+        yy_pop_state();
+        return TOK_ExtValue_BIT_STRING;
+    }
 	YY_BREAK
 
 case 7:
-/* rule 7 can match eol */
 YY_RULE_SETUP
-#line 109 "asn1p_l.l"
-yy_pop_state();
+#line 115 "asn1p_l.l"
+yy_push_state(dash_comment);
 	YY_BREAK
+
 case 8:
+/* rule 8 can match eol */
 YY_RULE_SETUP
-#line 111 "asn1p_l.l"
-yy_pop_state();	/* End of comment */
+#line 118 "asn1p_l.l"
+yy_pop_state();
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 112 "asn1p_l.l"
-/* Eat single dash */
+#line 120 "asn1p_l.l"
+yy_pop_state();	/* End of comment */
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 113 "asn1p_l.l"
-/* Eat */
+#line 121 "asn1p_l.l"
+/* Eat single dash */
 	YY_BREAK
-
 case 11:
 YY_RULE_SETUP
-#line 116 "asn1p_l.l"
-yy_push_state(cpp_comment);
+#line 122 "asn1p_l.l"
+/* Eat */
 	YY_BREAK
 
 case 12:
-/* rule 12 can match eol */
 YY_RULE_SETUP
-#line 118 "asn1p_l.l"
-/* Eat */
+#line 125 "asn1p_l.l"
+yy_push_state(cpp_comment);
 	YY_BREAK
+
 case 13:
+/* rule 13 can match eol */
 YY_RULE_SETUP
-#line 119 "asn1p_l.l"
-yy_pop_state();
+#line 127 "asn1p_l.l"
+/* Eat */
 	YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 120 "asn1p_l.l"
+#line 128 "asn1p_l.l"
+yy_pop_state();
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 129 "asn1p_l.l"
 /* Eat */
 	YY_BREAK
 
@@ -2584,9 +2629,9 @@
 	 * everything for later processing.
 	 */
 
-case 15:
+case 16:
 YY_RULE_SETUP
-#line 132 "asn1p_l.l"
+#line 141 "asn1p_l.l"
 {
 			yy_push_state(opaque);
 			asn1p_lval.tv_opaque.buf = strdup(asn1p_text);
@@ -2594,9 +2639,9 @@
 			return TOK_opaque;
 		}
 	YY_BREAK
-case 16:
+case 17:
 YY_RULE_SETUP
-#line 139 "asn1p_l.l"
+#line 148 "asn1p_l.l"
 {
 			yy_pop_state();
 			asn1p_lval.tv_opaque.buf = strdup(asn1p_text);
@@ -2604,19 +2649,19 @@
 			return TOK_opaque;
 		}
 	YY_BREAK
-case 17:
-/* rule 17 can match eol */
+case 18:
+/* rule 18 can match eol */
 YY_RULE_SETUP
-#line 146 "asn1p_l.l"
+#line 155 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(asn1p_text);
 			asn1p_lval.tv_opaque.len = asn1p_leng;
 			return TOK_opaque;
 		}
 	YY_BREAK
-case 18:
+case 19:
 YY_RULE_SETUP
-#line 152 "asn1p_l.l"
+#line 161 "asn1p_l.l"
 {
 			fprintf(stderr,
 				"ASN.1 Parser syncronization failure: "
@@ -2626,9 +2671,9 @@
 			return -1;
 		}
 	YY_BREAK
-case 19:
+case 20:
 YY_RULE_SETUP
-#line 161 "asn1p_l.l"
+#line 170 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(asn1p_text);
 			asn1p_lval.tv_opaque.len = asn1p_leng;
@@ -2636,10 +2681,10 @@
 		}
 	YY_BREAK
 
-case 20:
-/* rule 20 can match eol */
+case 21:
+/* rule 21 can match eol */
 YY_RULE_SETUP
-#line 169 "asn1p_l.l"
+#line 178 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = 0;
 			asn1p_lval.tv_opaque.len = 0;
@@ -2648,20 +2693,20 @@
 		}
 	YY_BREAK
 
-case 21:
+case 22:
 YY_RULE_SETUP
-#line 177 "asn1p_l.l"
+#line 186 "asn1p_l.l"
 { QAPPEND(asn1p_text, asn1p_leng-1); }	/* Add a single quote */
 	YY_BREAK
-case 22:
-/* rule 22 can match eol */
+case 23:
+/* rule 23 can match eol */
 YY_RULE_SETUP
-#line 178 "asn1p_l.l"
+#line 187 "asn1p_l.l"
 { QAPPEND(asn1p_text, asn1p_leng); }
 	YY_BREAK
-case 23:
+case 24:
 YY_RULE_SETUP
-#line 180 "asn1p_l.l"
+#line 189 "asn1p_l.l"
 {
 			yy_pop_state();
 			/* Do not append last quote:
@@ -2680,9 +2725,9 @@
 	YY_BREAK
 
 
-case 24:
+case 25:
 YY_RULE_SETUP
-#line 199 "asn1p_l.l"
+#line 208 "asn1p_l.l"
 {
 			const char *s = "ENCODING-CONTROL";
 			const char *p = s + sizeof("ENCODING-CONTROL") - 2;
@@ -2690,56 +2735,56 @@
 			yy_pop_state();
 		}
 	YY_BREAK
-case 25:
-YY_RULE_SETUP
-#line 205 "asn1p_l.l"
-unput('D'); unput('N'); unput('E'); yy_pop_state();
-	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 206 "asn1p_l.l"
-
+#line 214 "asn1p_l.l"
+unput('D'); unput('N'); unput('E'); yy_pop_state();
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 207 "asn1p_l.l"
+#line 215 "asn1p_l.l"
 
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 208 "asn1p_l.l"
-/* Eat everything else */
+#line 216 "asn1p_l.l"
+
 	YY_BREAK
 case 29:
-/* rule 29 can match eol */
 YY_RULE_SETUP
-#line 209 "asn1p_l.l"
-
+#line 217 "asn1p_l.l"
+/* Eat everything else */
 	YY_BREAK
-
 case 30:
 /* rule 30 can match eol */
 YY_RULE_SETUP
-#line 212 "asn1p_l.l"
+#line 218 "asn1p_l.l"
+
+	YY_BREAK
+
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+#line 221 "asn1p_l.l"
 {
 		/* " \t\r\n" weren't allowed in ASN.1:1990. */
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_hstring;
 	}
 	YY_BREAK
-case 31:
-/* rule 31 can match eol */
+case 32:
+/* rule 32 can match eol */
 YY_RULE_SETUP
-#line 218 "asn1p_l.l"
+#line 227 "asn1p_l.l"
 {
 		/* " \t\r\n" weren't allowed in ASN.1:1990. */
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_bstring;
 	}
 	YY_BREAK
-case 32:
+case 33:
 YY_RULE_SETUP
-#line 225 "asn1p_l.l"
+#line 234 "asn1p_l.l"
 {
 		asn1p_lval.a_int = _lex_atoi(asn1p_text);
 		if(errno == ERANGE)
@@ -2747,19 +2792,9 @@
 		return TOK_number_negative;
 	}
 	YY_BREAK
-case 33:
-YY_RULE_SETUP
-#line 232 "asn1p_l.l"
-{
-		asn1p_lval.a_int = _lex_atoi(asn1p_text);
-		if(errno == ERANGE)
-			return -1;
-		return TOK_number;
-	}
-	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 239 "asn1p_l.l"
+#line 241 "asn1p_l.l"
 {
 		asn1p_lval.a_int = _lex_atoi(asn1p_text);
 		if(errno == ERANGE)
@@ -2769,7 +2804,17 @@
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 246 "asn1p_l.l"
+#line 248 "asn1p_l.l"
+{
+		asn1p_lval.a_int = _lex_atoi(asn1p_text);
+		if(errno == ERANGE)
+			return -1;
+		return TOK_number;
+	}
+	YY_BREAK
+case 36:
+YY_RULE_SETUP
+#line 255 "asn1p_l.l"
 {
 		asn1p_lval.a_dbl = _lex_atod(asn1p_text);
 		if(errno == ERANGE)
@@ -2777,19 +2822,19 @@
 		return TOK_realnumber;
 	}
 	YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 253 "asn1p_l.l"
-return TOK_ABSENT;
-	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 254 "asn1p_l.l"
-return TOK_ALL;
+#line 262 "asn1p_l.l"
+return TOK_ABSENT;
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 255 "asn1p_l.l"
+#line 263 "asn1p_l.l"
+return TOK_ALL;
+	YY_BREAK
+case 39:
+YY_RULE_SETUP
+#line 264 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2799,88 +2844,93 @@
 				REJECT;
 			}
 	YY_BREAK
-case 39:
-YY_RULE_SETUP
-#line 263 "asn1p_l.l"
-return TOK_APPLICATION;
-	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 264 "asn1p_l.l"
-return TOK_AUTOMATIC;
+#line 272 "asn1p_l.l"
+return TOK_APPLICATION;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 265 "asn1p_l.l"
-return TOK_BEGIN;
+#line 273 "asn1p_l.l"
+return TOK_AUTOMATIC;
 	YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 266 "asn1p_l.l"
-return TOK_BIT;
+#line 274 "asn1p_l.l"
+{
+        if(asn1p_lexer_extended_values) {
+            yy_push_state(extended_values);
+        }
+        return TOK_BEGIN;
+    }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 267 "asn1p_l.l"
+#line 280 "asn1p_l.l"
+return TOK_BIT;
+	YY_BREAK
+case 44:
+YY_RULE_SETUP
+#line 281 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_BMPString;
 				REJECT;
 			}
 	YY_BREAK
-case 44:
-YY_RULE_SETUP
-#line 272 "asn1p_l.l"
-return TOK_BOOLEAN;
-	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 273 "asn1p_l.l"
-return TOK_BY;
+#line 286 "asn1p_l.l"
+return TOK_BOOLEAN;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 274 "asn1p_l.l"
-return TOK_CHARACTER;
+#line 287 "asn1p_l.l"
+return TOK_BY;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 275 "asn1p_l.l"
-return TOK_CHOICE;
+#line 288 "asn1p_l.l"
+return TOK_CHARACTER;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 276 "asn1p_l.l"
-return TOK_CLASS;
+#line 289 "asn1p_l.l"
+return TOK_CHOICE;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 277 "asn1p_l.l"
-return TOK_COMPONENT;
+#line 290 "asn1p_l.l"
+return TOK_CLASS;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 278 "asn1p_l.l"
-return TOK_COMPONENTS;
+#line 291 "asn1p_l.l"
+return TOK_COMPONENT;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 279 "asn1p_l.l"
-return TOK_CONSTRAINED;
+#line 292 "asn1p_l.l"
+return TOK_COMPONENTS;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 280 "asn1p_l.l"
-return TOK_CONTAINING;
+#line 293 "asn1p_l.l"
+return TOK_CONSTRAINED;
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 281 "asn1p_l.l"
-return TOK_DEFAULT;
+#line 294 "asn1p_l.l"
+return TOK_CONTAINING;
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 282 "asn1p_l.l"
+#line 295 "asn1p_l.l"
+return TOK_DEFAULT;
+	YY_BREAK
+case 55:
+YY_RULE_SETUP
+#line 296 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2891,348 +2941,353 @@
 				REJECT;
 			}
 	YY_BREAK
-case 55:
-YY_RULE_SETUP
-#line 291 "asn1p_l.l"
-return TOK_DEFINITIONS;
-	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 292 "asn1p_l.l"
-return TOK_EMBEDDED;
+#line 305 "asn1p_l.l"
+return TOK_DEFINITIONS;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 293 "asn1p_l.l"
-return TOK_ENCODED;
+#line 306 "asn1p_l.l"
+return TOK_EMBEDDED;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 294 "asn1p_l.l"
-return TOK_ENCODING_CONTROL;
+#line 307 "asn1p_l.l"
+return TOK_ENCODED;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 295 "asn1p_l.l"
-return TOK_END;
+#line 308 "asn1p_l.l"
+return TOK_ENCODING_CONTROL;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 296 "asn1p_l.l"
-return TOK_ENUMERATED;
+#line 309 "asn1p_l.l"
+{
+		    if(YYSTATE == extended_values) {
+                yy_pop_state();
+            }
+            return TOK_END;
+        }
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 297 "asn1p_l.l"
-return TOK_EXCEPT;
+#line 315 "asn1p_l.l"
+return TOK_ENUMERATED;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 298 "asn1p_l.l"
-return TOK_EXPLICIT;
+#line 316 "asn1p_l.l"
+return TOK_EXCEPT;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 299 "asn1p_l.l"
-return TOK_EXPORTS;
+#line 317 "asn1p_l.l"
+return TOK_EXPLICIT;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 300 "asn1p_l.l"
-return TOK_EXTENSIBILITY;
+#line 318 "asn1p_l.l"
+return TOK_EXPORTS;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 301 "asn1p_l.l"
-return TOK_EXTERNAL;
+#line 319 "asn1p_l.l"
+return TOK_EXTENSIBILITY;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 302 "asn1p_l.l"
-return TOK_FALSE;
+#line 320 "asn1p_l.l"
+return TOK_EXTERNAL;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 303 "asn1p_l.l"
-return TOK_FROM;
+#line 321 "asn1p_l.l"
+return TOK_FALSE;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 304 "asn1p_l.l"
-return TOK_GeneralizedTime;
+#line 322 "asn1p_l.l"
+return TOK_FROM;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 305 "asn1p_l.l"
-return TOK_GeneralString;
+#line 323 "asn1p_l.l"
+return TOK_GeneralizedTime;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 306 "asn1p_l.l"
-return TOK_GraphicString;
+#line 324 "asn1p_l.l"
+return TOK_GeneralString;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 307 "asn1p_l.l"
-return TOK_IA5String;
+#line 325 "asn1p_l.l"
+return TOK_GraphicString;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 308 "asn1p_l.l"
-return TOK_IDENTIFIER;
+#line 326 "asn1p_l.l"
+return TOK_IA5String;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 309 "asn1p_l.l"
-return TOK_IMPLICIT;
+#line 327 "asn1p_l.l"
+return TOK_IDENTIFIER;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 310 "asn1p_l.l"
-return TOK_IMPLIED;
+#line 328 "asn1p_l.l"
+return TOK_IMPLICIT;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 311 "asn1p_l.l"
-return TOK_IMPORTS;
+#line 329 "asn1p_l.l"
+return TOK_IMPLIED;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 312 "asn1p_l.l"
-return TOK_INCLUDES;
+#line 330 "asn1p_l.l"
+return TOK_IMPORTS;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 313 "asn1p_l.l"
-return TOK_INSTANCE;
+#line 331 "asn1p_l.l"
+return TOK_INCLUDES;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 314 "asn1p_l.l"
-return TOK_INSTRUCTIONS;
+#line 332 "asn1p_l.l"
+return TOK_INSTANCE;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 315 "asn1p_l.l"
-return TOK_INTEGER;
+#line 333 "asn1p_l.l"
+return TOK_INSTRUCTIONS;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 316 "asn1p_l.l"
-return TOK_INTERSECTION;
+#line 334 "asn1p_l.l"
+return TOK_INTEGER;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 317 "asn1p_l.l"
-return TOK_ISO646String;
+#line 335 "asn1p_l.l"
+return TOK_INTERSECTION;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 318 "asn1p_l.l"
-return TOK_MAX;
+#line 336 "asn1p_l.l"
+return TOK_ISO646String;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 319 "asn1p_l.l"
-return TOK_MIN;
+#line 337 "asn1p_l.l"
+return TOK_MAX;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 320 "asn1p_l.l"
-return TOK_MINUS_INFINITY;
+#line 338 "asn1p_l.l"
+return TOK_MIN;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 321 "asn1p_l.l"
-return TOK_NULL;
+#line 339 "asn1p_l.l"
+return TOK_MINUS_INFINITY;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 322 "asn1p_l.l"
-return TOK_NumericString;
+#line 340 "asn1p_l.l"
+return TOK_NULL;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 323 "asn1p_l.l"
-return TOK_OBJECT;
+#line 341 "asn1p_l.l"
+return TOK_NumericString;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 324 "asn1p_l.l"
-return TOK_ObjectDescriptor;
+#line 342 "asn1p_l.l"
+return TOK_OBJECT;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 325 "asn1p_l.l"
-return TOK_OCTET;
+#line 343 "asn1p_l.l"
+return TOK_ObjectDescriptor;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 326 "asn1p_l.l"
-return TOK_OF;
+#line 344 "asn1p_l.l"
+return TOK_OCTET;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 327 "asn1p_l.l"
-return TOK_OPTIONAL;
+#line 345 "asn1p_l.l"
+return TOK_OF;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 328 "asn1p_l.l"
-return TOK_PATTERN;
+#line 346 "asn1p_l.l"
+return TOK_OPTIONAL;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 329 "asn1p_l.l"
-return TOK_PDV;
+#line 347 "asn1p_l.l"
+return TOK_PATTERN;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 330 "asn1p_l.l"
-return TOK_PLUS_INFINITY;
+#line 348 "asn1p_l.l"
+return TOK_PDV;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 331 "asn1p_l.l"
-return TOK_PRESENT;
+#line 349 "asn1p_l.l"
+return TOK_PLUS_INFINITY;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 332 "asn1p_l.l"
-return TOK_PrintableString;
+#line 350 "asn1p_l.l"
+return TOK_PRESENT;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 333 "asn1p_l.l"
-return TOK_PRIVATE;
+#line 351 "asn1p_l.l"
+return TOK_PrintableString;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 334 "asn1p_l.l"
-return TOK_REAL;
+#line 352 "asn1p_l.l"
+return TOK_PRIVATE;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 335 "asn1p_l.l"
-return TOK_RELATIVE_OID;
+#line 353 "asn1p_l.l"
+return TOK_REAL;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 336 "asn1p_l.l"
-return TOK_SEQUENCE;
+#line 354 "asn1p_l.l"
+return TOK_RELATIVE_OID;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 337 "asn1p_l.l"
-return TOK_SET;
+#line 355 "asn1p_l.l"
+return TOK_SEQUENCE;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 338 "asn1p_l.l"
-return TOK_SIZE;
+#line 356 "asn1p_l.l"
+return TOK_SET;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 339 "asn1p_l.l"
-return TOK_STRING;
+#line 357 "asn1p_l.l"
+return TOK_SIZE;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 340 "asn1p_l.l"
-return TOK_SYNTAX;
+#line 358 "asn1p_l.l"
+return TOK_STRING;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 341 "asn1p_l.l"
-return TOK_T61String;
+#line 359 "asn1p_l.l"
+return TOK_SYNTAX;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 342 "asn1p_l.l"
-return TOK_TAGS;
+#line 360 "asn1p_l.l"
+return TOK_T61String;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 343 "asn1p_l.l"
-return TOK_TeletexString;
+#line 361 "asn1p_l.l"
+return TOK_TAGS;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 344 "asn1p_l.l"
-return TOK_TRUE;
+#line 362 "asn1p_l.l"
+return TOK_TeletexString;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 345 "asn1p_l.l"
-return TOK_UNION;
+#line 363 "asn1p_l.l"
+return TOK_TRUE;
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 346 "asn1p_l.l"
-return TOK_UNIQUE;
+#line 364 "asn1p_l.l"
+return TOK_UNION;
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 347 "asn1p_l.l"
-return TOK_UNIVERSAL;
+#line 365 "asn1p_l.l"
+return TOK_UNIQUE;
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 348 "asn1p_l.l"
+#line 366 "asn1p_l.l"
+return TOK_UNIVERSAL;
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 367 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UniversalString;
 				REJECT;
 			}
 	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 353 "asn1p_l.l"
-return TOK_UTCTime;
-	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 354 "asn1p_l.l"
+#line 372 "asn1p_l.l"
+return TOK_UTCTime;
+	YY_BREAK
+case 115:
+YY_RULE_SETUP
+#line 373 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UTF8String;
 				REJECT;
 			}
 	YY_BREAK
-case 115:
-YY_RULE_SETUP
-#line 359 "asn1p_l.l"
-return TOK_VideotexString;
-	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 360 "asn1p_l.l"
-return TOK_VisibleString;
+#line 378 "asn1p_l.l"
+return TOK_VideotexString;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 361 "asn1p_l.l"
-return TOK_WITH;
+#line 379 "asn1p_l.l"
+return TOK_VisibleString;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 364 "asn1p_l.l"
+#line 380 "asn1p_l.l"
+return TOK_WITH;
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 383 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_typefieldreference;
 	}
 	YY_BREAK
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 369 "asn1p_l.l"
+#line 388 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_valuefieldreference;
 	}
 	YY_BREAK
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 375 "asn1p_l.l"
+#line 394 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_identifier;
@@ -3241,9 +3296,9 @@
 /*
 	 * objectclassreference
 	 */
-case 121:
+case 122:
 YY_RULE_SETUP
-#line 383 "asn1p_l.l"
+#line 402 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_capitalreference;
@@ -3254,41 +3309,33 @@
 	 * NOTE: TOK_objectclassreference must be combined
 	 * with this token to produce true typereference.
 	 */
-case 122:
+case 123:
 YY_RULE_SETUP
-#line 393 "asn1p_l.l"
+#line 412 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(asn1p_text);
 		return TOK_typereference;
 	}
 	YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 398 "asn1p_l.l"
-return TOK_PPEQ;
-	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 400 "asn1p_l.l"
-return TOK_ThreeDots;
+#line 417 "asn1p_l.l"
+return TOK_PPEQ;
 	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 401 "asn1p_l.l"
+#line 419 "asn1p_l.l"
+return TOK_ThreeDots;
+	YY_BREAK
+case 126:
+YY_RULE_SETUP
+#line 420 "asn1p_l.l"
 return TOK_TwoDots;
 	YY_BREAK
 
-case 126:
-YY_RULE_SETUP
-#line 405 "asn1p_l.l"
-{
-				asn1p_lval.tv_str = strdup(asn1p_text);
-				return TOK_Literal;
-			}
-	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 410 "asn1p_l.l"
+#line 424 "asn1p_l.l"
 {
 				asn1p_lval.tv_str = strdup(asn1p_text);
 				return TOK_Literal;
@@ -3296,36 +3343,44 @@
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 415 "asn1p_l.l"
+#line 429 "asn1p_l.l"
 {
-				yy_push_state(with_syntax);
 				asn1p_lval.tv_str = strdup(asn1p_text);
 				return TOK_Literal;
 			}
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 421 "asn1p_l.l"
-return '[';
+#line 434 "asn1p_l.l"
+{
+				yy_push_state(with_syntax);
+				asn1p_lval.tv_str = strdup(asn1p_text);
+				return TOK_Literal;
+			}
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 422 "asn1p_l.l"
-return ']';
+#line 440 "asn1p_l.l"
+return '[';
 	YY_BREAK
 case 131:
-/* rule 131 can match eol */
 YY_RULE_SETUP
-#line 424 "asn1p_l.l"
+#line 441 "asn1p_l.l"
+return ']';
+	YY_BREAK
+case 132:
+/* rule 132 can match eol */
+YY_RULE_SETUP
+#line 443 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(asn1p_text);
 			asn1p_lval.tv_opaque.len = asn1p_leng;
 			return TOK_whitespace;
 			}
 	YY_BREAK
-case 132:
+case 133:
 YY_RULE_SETUP
-#line 430 "asn1p_l.l"
+#line 449 "asn1p_l.l"
 {
 				yy_pop_state();
 				if(YYSTATE == with_syntax) {
@@ -3337,16 +3392,16 @@
 			}
 	YY_BREAK
 
-case 133:
-/* rule 133 can match eol */
-YY_RULE_SETUP
-#line 443 "asn1p_l.l"
-/* Ignore whitespace */
-	YY_BREAK
 case 134:
 /* rule 134 can match eol */
 YY_RULE_SETUP
-#line 446 "asn1p_l.l"
+#line 462 "asn1p_l.l"
+/* Ignore whitespace */
+	YY_BREAK
+case 135:
+/* rule 135 can match eol */
+YY_RULE_SETUP
+#line 465 "asn1p_l.l"
 {
 		asn1c_integer_t v1 = -1, v2 = -1;
 		char *p;
@@ -3372,10 +3427,10 @@
 		return TOK_tuple;
 	}
 	YY_BREAK
-case 135:
-/* rule 135 can match eol */
+case 136:
+/* rule 136 can match eol */
 YY_RULE_SETUP
-#line 471 "asn1p_l.l"
+#line 490 "asn1p_l.l"
 {
 		asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1;
 		char *p;
@@ -3419,25 +3474,25 @@
 		return TOK_quadruple;
 	}
 	YY_BREAK
-case 136:
-YY_RULE_SETUP
-#line 515 "asn1p_l.l"
-return TOK_VBracketLeft;
-	YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 516 "asn1p_l.l"
-return TOK_VBracketRight;
+#line 534 "asn1p_l.l"
+return TOK_VBracketLeft;
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 518 "asn1p_l.l"
-return asn1p_text[0];
+#line 535 "asn1p_l.l"
+return TOK_VBracketRight;
 	YY_BREAK
 case 139:
-/* rule 139 can match eol */
 YY_RULE_SETUP
-#line 520 "asn1p_l.l"
+#line 537 "asn1p_l.l"
+return asn1p_text[0];
+	YY_BREAK
+case 140:
+/* rule 140 can match eol */
+YY_RULE_SETUP
+#line 539 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -3449,9 +3504,9 @@
 			return -1;
 	}
 	YY_BREAK
-case 140:
+case 141:
 YY_RULE_SETUP
-#line 531 "asn1p_l.l"
+#line 550 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
@@ -3473,19 +3528,20 @@
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 544 "asn1p_l.l"
+case YY_STATE_EOF(extended_values):
+#line 563 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 141:
+case 142:
 YY_RULE_SETUP
-#line 551 "asn1p_l.l"
+#line 570 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 3489 "asn1p_l.c"
+#line 3545 "asn1p_l.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3765,7 +3821,7 @@
 		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 >= 749 )
+			if ( yy_current_state >= 769 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3793,11 +3849,11 @@
 	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 >= 749 )
+		if ( yy_current_state >= 769 )
 			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 == 748);
+	yy_is_jam = (yy_current_state == 768);
 	if ( ! yy_is_jam )
 		*(yy_state_ptr)++ = yy_current_state;
 
@@ -4655,7 +4711,7 @@
 
 /* %ok-for-header */
 
-#line 551 "asn1p_l.l"
+#line 570 "asn1p_l.l"
 
 
 
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index c96a162..4317d5b 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -23,6 +23,7 @@
 int asn1p_lexer_pedantic_1990 = 0;
 int asn1p_lexer_types_year = 0;
 int asn1p_lexer_constructs_year = 0;
+int asn1p_lexer_extended_values = 0;
 
 int asn1p_as_pointer;
 
@@ -85,6 +86,7 @@
 %x opaque
 %x encoding_control
 %x with_syntax
+%x extended_values
 
 /* Newline */
 NL	[\r\v\f\n]
@@ -103,6 +105,13 @@
 
 --<[ \t]*ASN1C.RepresentAsPointer[ \t]*>--	asn1p_as_pointer = 1;
 
+<extended_values>{
+    "#BIT STRING"    {
+        yy_pop_state();
+        return TOK_ExtValue_BIT_STRING;
+    }
+}
+
 <INITIAL,with_syntax>--		yy_push_state(dash_comment);
 <dash_comment,idash_comment>{
 
@@ -262,7 +271,12 @@
 			}
 APPLICATION		return TOK_APPLICATION;
 AUTOMATIC		return TOK_AUTOMATIC;
-BEGIN			return TOK_BEGIN;
+BEGIN			{
+        if(asn1p_lexer_extended_values) {
+            yy_push_state(extended_values);
+        }
+        return TOK_BEGIN;
+    }
 BIT			return TOK_BIT;
 BMPString		{
 				if(TYPE_LIFETIME(1994, 0))
@@ -292,7 +306,12 @@
 EMBEDDED		return TOK_EMBEDDED;
 ENCODED			return TOK_ENCODED;
 ENCODING-CONTROL	return TOK_ENCODING_CONTROL;
-END			return TOK_END;
+END			{
+		    if(YYSTATE == extended_values) {
+                yy_pop_state();
+            }
+            return TOK_END;
+        }
 ENUMERATED		return TOK_ENUMERATED;
 EXCEPT			return TOK_EXCEPT;
 EXPLICIT		return TOK_EXPLICIT;
@@ -380,7 +399,7 @@
 	/*
 	 * objectclassreference
 	 */
-[A-Z][A-Z0-9]*([-][A-Z0-9]+)*	{
+<INITIAL,extended_values>[A-Z][A-Z0-9]*([-][A-Z0-9]+)*	{
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_capitalreference;
 	}
@@ -395,7 +414,7 @@
 		return TOK_typereference;
 	}
 
-"::="		return TOK_PPEQ;
+<INITIAL,extended_values>"::="		return TOK_PPEQ;
 
 "..."		return TOK_ThreeDots;
 ".."		return TOK_TwoDots;
@@ -440,7 +459,7 @@
 }
 
 
-{WSP}+	/* Ignore whitespace */
+<INITIAL,extended_values>{WSP}+	/* Ignore whitespace */
 
 
 [{][\t\r\v\f\n ]*[0-7][,][\t\r\v\f\n ]*[0-9]+[\t\r\v\f\n ]*[}]	{
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 5f71f3f..ec688ab 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -93,93 +93,94 @@
      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,
-     UTF8_BOM = 358,
-     TOK_EXCEPT = 359,
-     TOK_INTERSECTION = 360,
-     TOK_UNION = 361,
-     TOK_TwoDots = 362,
-     TOK_ThreeDots = 363
+     TOK_ExtValue_BIT_STRING = 277,
+     TOK_ABSENT = 278,
+     TOK_ABSTRACT_SYNTAX = 279,
+     TOK_ALL = 280,
+     TOK_ANY = 281,
+     TOK_APPLICATION = 282,
+     TOK_AUTOMATIC = 283,
+     TOK_BEGIN = 284,
+     TOK_BIT = 285,
+     TOK_BMPString = 286,
+     TOK_BOOLEAN = 287,
+     TOK_BY = 288,
+     TOK_CHARACTER = 289,
+     TOK_CHOICE = 290,
+     TOK_CLASS = 291,
+     TOK_COMPONENT = 292,
+     TOK_COMPONENTS = 293,
+     TOK_CONSTRAINED = 294,
+     TOK_CONTAINING = 295,
+     TOK_DEFAULT = 296,
+     TOK_DEFINITIONS = 297,
+     TOK_DEFINED = 298,
+     TOK_EMBEDDED = 299,
+     TOK_ENCODED = 300,
+     TOK_ENCODING_CONTROL = 301,
+     TOK_END = 302,
+     TOK_ENUMERATED = 303,
+     TOK_EXPLICIT = 304,
+     TOK_EXPORTS = 305,
+     TOK_EXTENSIBILITY = 306,
+     TOK_EXTERNAL = 307,
+     TOK_FALSE = 308,
+     TOK_FROM = 309,
+     TOK_GeneralizedTime = 310,
+     TOK_GeneralString = 311,
+     TOK_GraphicString = 312,
+     TOK_IA5String = 313,
+     TOK_IDENTIFIER = 314,
+     TOK_IMPLICIT = 315,
+     TOK_IMPLIED = 316,
+     TOK_IMPORTS = 317,
+     TOK_INCLUDES = 318,
+     TOK_INSTANCE = 319,
+     TOK_INSTRUCTIONS = 320,
+     TOK_INTEGER = 321,
+     TOK_ISO646String = 322,
+     TOK_MAX = 323,
+     TOK_MIN = 324,
+     TOK_MINUS_INFINITY = 325,
+     TOK_NULL = 326,
+     TOK_NumericString = 327,
+     TOK_OBJECT = 328,
+     TOK_ObjectDescriptor = 329,
+     TOK_OCTET = 330,
+     TOK_OF = 331,
+     TOK_OPTIONAL = 332,
+     TOK_PATTERN = 333,
+     TOK_PDV = 334,
+     TOK_PLUS_INFINITY = 335,
+     TOK_PRESENT = 336,
+     TOK_PrintableString = 337,
+     TOK_PRIVATE = 338,
+     TOK_REAL = 339,
+     TOK_RELATIVE_OID = 340,
+     TOK_SEQUENCE = 341,
+     TOK_SET = 342,
+     TOK_SIZE = 343,
+     TOK_STRING = 344,
+     TOK_SYNTAX = 345,
+     TOK_T61String = 346,
+     TOK_TAGS = 347,
+     TOK_TeletexString = 348,
+     TOK_TRUE = 349,
+     TOK_TYPE_IDENTIFIER = 350,
+     TOK_UNIQUE = 351,
+     TOK_UNIVERSAL = 352,
+     TOK_UniversalString = 353,
+     TOK_UTCTime = 354,
+     TOK_UTF8String = 355,
+     TOK_VideotexString = 356,
+     TOK_VisibleString = 357,
+     TOK_WITH = 358,
+     UTF8_BOM = 359,
+     TOK_EXCEPT = 360,
+     TOK_INTERSECTION = 361,
+     TOK_UNION = 362,
+     TOK_TwoDots = 363,
+     TOK_ThreeDots = 364
    };
 #endif
 /* Tokens.  */
@@ -202,93 +203,94 @@
 #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 UTF8_BOM 358
-#define TOK_EXCEPT 359
-#define TOK_INTERSECTION 360
-#define TOK_UNION 361
-#define TOK_TwoDots 362
-#define TOK_ThreeDots 363
+#define TOK_ExtValue_BIT_STRING 277
+#define TOK_ABSENT 278
+#define TOK_ABSTRACT_SYNTAX 279
+#define TOK_ALL 280
+#define TOK_ANY 281
+#define TOK_APPLICATION 282
+#define TOK_AUTOMATIC 283
+#define TOK_BEGIN 284
+#define TOK_BIT 285
+#define TOK_BMPString 286
+#define TOK_BOOLEAN 287
+#define TOK_BY 288
+#define TOK_CHARACTER 289
+#define TOK_CHOICE 290
+#define TOK_CLASS 291
+#define TOK_COMPONENT 292
+#define TOK_COMPONENTS 293
+#define TOK_CONSTRAINED 294
+#define TOK_CONTAINING 295
+#define TOK_DEFAULT 296
+#define TOK_DEFINITIONS 297
+#define TOK_DEFINED 298
+#define TOK_EMBEDDED 299
+#define TOK_ENCODED 300
+#define TOK_ENCODING_CONTROL 301
+#define TOK_END 302
+#define TOK_ENUMERATED 303
+#define TOK_EXPLICIT 304
+#define TOK_EXPORTS 305
+#define TOK_EXTENSIBILITY 306
+#define TOK_EXTERNAL 307
+#define TOK_FALSE 308
+#define TOK_FROM 309
+#define TOK_GeneralizedTime 310
+#define TOK_GeneralString 311
+#define TOK_GraphicString 312
+#define TOK_IA5String 313
+#define TOK_IDENTIFIER 314
+#define TOK_IMPLICIT 315
+#define TOK_IMPLIED 316
+#define TOK_IMPORTS 317
+#define TOK_INCLUDES 318
+#define TOK_INSTANCE 319
+#define TOK_INSTRUCTIONS 320
+#define TOK_INTEGER 321
+#define TOK_ISO646String 322
+#define TOK_MAX 323
+#define TOK_MIN 324
+#define TOK_MINUS_INFINITY 325
+#define TOK_NULL 326
+#define TOK_NumericString 327
+#define TOK_OBJECT 328
+#define TOK_ObjectDescriptor 329
+#define TOK_OCTET 330
+#define TOK_OF 331
+#define TOK_OPTIONAL 332
+#define TOK_PATTERN 333
+#define TOK_PDV 334
+#define TOK_PLUS_INFINITY 335
+#define TOK_PRESENT 336
+#define TOK_PrintableString 337
+#define TOK_PRIVATE 338
+#define TOK_REAL 339
+#define TOK_RELATIVE_OID 340
+#define TOK_SEQUENCE 341
+#define TOK_SET 342
+#define TOK_SIZE 343
+#define TOK_STRING 344
+#define TOK_SYNTAX 345
+#define TOK_T61String 346
+#define TOK_TAGS 347
+#define TOK_TeletexString 348
+#define TOK_TRUE 349
+#define TOK_TYPE_IDENTIFIER 350
+#define TOK_UNIQUE 351
+#define TOK_UNIVERSAL 352
+#define TOK_UniversalString 353
+#define TOK_UTCTime 354
+#define TOK_UTF8String 355
+#define TOK_VideotexString 356
+#define TOK_VisibleString 357
+#define TOK_WITH 358
+#define UTF8_BOM 359
+#define TOK_EXCEPT 360
+#define TOK_INTERSECTION 361
+#define TOK_UNION 362
+#define TOK_TwoDots 363
+#define TOK_ThreeDots 364
 
 
 
@@ -434,7 +436,7 @@
 	} tv_nametag;
 }
 /* Line 193 of yacc.c.  */
-#line 438 "asn1p_y.c"
+#line 440 "asn1p_y.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -447,7 +449,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 451 "asn1p_y.c"
+#line 453 "asn1p_y.c"
 
 #ifdef short
 # undef short
@@ -662,20 +664,20 @@
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  9
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   839
+#define YYLAST   932
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  124
+#define YYNTOKENS  125
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  131
+#define YYNNTS  137
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  325
+#define YYNRULES  339
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  489
+#define YYNSTATES  524
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   363
+#define YYMAXUTOK   364
 
 #define YYTRANSLATE(YYX)						\
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -686,16 +688,16 @@
        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,   120,     2,     2,     2,     2,     2,     2,
-     113,   114,     2,     2,   116,     2,   121,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   117,   115,
-     122,     2,     2,     2,   123,     2,     2,     2,     2,     2,
+       2,     2,     2,   121,     2,     2,     2,     2,     2,     2,
+     114,   115,     2,     2,   117,     2,   122,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   118,   116,
+     123,     2,     2,     2,   124,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   118,     2,   119,   105,     2,     2,     2,     2,     2,
+       2,   119,     2,   120,   106,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   111,   107,   112,     2,     2,     2,     2,
+       2,     2,     2,   112,   108,   113,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -719,7 +721,7 @@
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     106,   108,   109,   110
+     105,   107,   109,   110,   111
 };
 
 #if YYDEBUG
@@ -744,156 +746,163 @@
      426,   428,   432,   434,   438,   440,   442,   444,   446,   450,
      454,   456,   461,   463,   465,   469,   470,   474,   476,   478,
      480,   482,   484,   486,   488,   490,   494,   496,   498,   500,
-     502,   505,   507,   509,   511,   513,   516,   519,   521,   523,
-     526,   529,   531,   533,   535,   537,   539,   542,   544,   547,
-     549,   551,   553,   555,   557,   559,   561,   563,   565,   567,
-     569,   571,   573,   575,   577,   579,   581,   583,   584,   586,
-     587,   589,   594,   596,   600,   605,   607,   609,   611,   613,
-     615,   619,   625,   627,   631,   633,   637,   639,   643,   645,
-     649,   654,   658,   660,   662,   666,   670,   674,   678,   680,
-     682,   683,   687,   690,   693,   695,   697,   699,   701,   703,
-     705,   707,   709,   711,   713,   715,   719,   723,   725,   727,
-     729,   733,   739,   741,   745,   749,   750,   752,   754,   756,
-     758,   760,   762,   764,   765,   771,   774,   776,   779,   782,
-     786,   788,   790,   794,   799,   801,   805,   808,   812,   814,
-     818,   819,   821,   823,   826,   829,   833,   835,   839,   841,
-     846,   851,   853,   855,   857,   859,   861,   863,   864,   866,
-     869,   874,   875,   877,   879,   881,   882,   884,   886,   888,
-     890,   892,   893,   895,   897,   899
+     502,   505,   507,   509,   511,   514,   517,   519,   521,   524,
+     527,   529,   531,   533,   535,   537,   539,   542,   544,   549,
+     554,   560,   565,   569,   571,   573,   575,   577,   579,   581,
+     583,   585,   587,   589,   591,   593,   595,   597,   599,   601,
+     603,   605,   606,   608,   609,   611,   616,   618,   622,   627,
+     629,   631,   633,   635,   637,   641,   647,   649,   653,   655,
+     659,   661,   665,   667,   671,   676,   680,   682,   684,   688,
+     692,   696,   700,   702,   704,   705,   709,   712,   715,   717,
+     719,   721,   723,   725,   727,   729,   731,   733,   735,   737,
+     741,   745,   747,   749,   751,   755,   761,   763,   767,   771,
+     772,   774,   776,   778,   780,   782,   784,   786,   787,   793,
+     796,   798,   801,   804,   808,   810,   812,   816,   821,   823,
+     827,   830,   834,   836,   840,   841,   843,   845,   848,   850,
+     854,   856,   858,   862,   867,   872,   874,   878,   883,   888,
+     890,   892,   896,   898,   903,   908,   910,   912,   914,   916,
+     918,   920,   921,   923,   926,   931,   932,   934,   936,   938,
+     939,   941,   943,   945,   947,   949,   950,   952,   954,   956
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     125,     0,    -1,   103,   126,    -1,   126,    -1,   127,    -1,
-     126,   127,    -1,    -1,   249,   128,   129,    41,   133,     3,
-      28,   136,    46,    -1,    -1,   130,    -1,   111,   131,   112,
-      -1,   111,   112,    -1,   132,    -1,   131,   132,    -1,   252,
-      -1,   252,   113,    12,   114,    -1,    12,    -1,    -1,   134,
-      -1,   135,    -1,   134,   135,    -1,    48,    91,    -1,    59,
-      91,    -1,    27,    91,    -1,    50,    60,    -1,    18,    64,
-      -1,    -1,   137,    -1,   149,   141,   138,    -1,   139,    -1,
-     138,   139,    -1,   156,    -1,   186,    -1,   154,    -1,    -1,
-      45,    18,   140,    -1,   196,    -1,    -1,   142,    -1,    61,
-     143,   115,    -1,    61,    53,    -1,    -1,   144,    -1,   146,
-      -1,   144,   146,    -1,    -1,   130,    -1,   147,    53,   249,
-     145,    -1,   148,    -1,   147,   116,   148,    -1,   249,    -1,
-     249,   111,   112,    -1,   252,    -1,    -1,   150,    -1,    49,
-     151,   115,    -1,    49,    24,   115,    -1,    49,   115,    -1,
-     152,    -1,   151,   116,   152,    -1,   249,    -1,   249,   111,
-     112,    -1,   252,    -1,   111,   205,   112,    -1,   249,   155,
-       3,   153,    -1,   195,    -1,   180,    -1,   180,   111,   159,
-     112,    -1,   249,     3,   176,    -1,   249,     3,   166,    -1,
-     249,   111,   157,   112,     3,   176,    -1,   249,   111,   157,
-     112,     3,   166,    -1,   158,    -1,   157,   116,   158,    -1,
-     249,    -1,   249,   117,   252,    -1,   249,   117,   249,    -1,
-     193,   117,   252,    -1,   193,   117,   249,    -1,   160,    -1,
-     159,   116,   160,    -1,   176,    -1,   189,    -1,   252,    -1,
-     153,    -1,    -1,   162,    -1,   163,    -1,   162,   116,   163,
-      -1,   162,   116,     4,   162,     5,    -1,   252,   176,   237,
-      -1,   176,   237,    -1,    37,    75,   176,    -1,   175,    -1,
-     165,    -1,   164,   116,   165,    -1,   252,   176,    -1,   175,
-      -1,   176,    -1,    35,   111,   168,   112,   170,    -1,    -1,
-      95,    -1,   169,    -1,   168,   116,   169,    -1,    19,   237,
-      -1,    20,   176,   167,   237,    -1,    20,   184,   237,    -1,
-      20,   185,   237,    -1,    19,   184,   237,    -1,    19,   176,
-     237,    -1,    19,   185,   237,    -1,    -1,   171,    -1,    -1,
-     102,    89,   111,   172,   173,   112,    -1,   174,    -1,   173,
-     174,    -1,     6,    -1,    21,    -1,   183,    -1,   118,   173,
-     119,    -1,   110,    -1,   110,   120,   190,    -1,   110,   120,
-     242,    -1,   244,   178,   199,    -1,    -1,   177,   179,    -1,
-     155,    -1,    34,   111,   164,   112,    -1,    85,   111,   161,
-     112,    -1,    86,   111,   161,   112,    -1,    85,   200,    75,
-     251,   244,   178,    -1,    86,   200,    75,   251,   244,   178,
-      -1,    25,    -1,    25,    42,    32,   252,    -1,    63,    75,
-     180,    -1,    17,    -1,    17,   121,   249,    -1,   250,   121,
-     249,    -1,    17,   121,   252,    -1,   250,    -1,   250,   121,
-     181,    -1,   182,    -1,   181,   121,   182,    -1,   183,    -1,
-      19,    -1,    20,    -1,    19,    -1,   184,   121,    19,    -1,
-     184,   121,    20,    -1,    18,    -1,   252,   176,     3,   187,
-      -1,   189,    -1,   190,    -1,   252,   117,   187,    -1,    -1,
-     111,   188,   192,    -1,    70,    -1,    52,    -1,    93,    -1,
-       8,    -1,    10,    -1,   191,    -1,   242,    -1,   252,    -1,
-     249,   121,   252,    -1,     9,    -1,    15,    -1,    16,    -1,
-       7,    -1,   192,     7,    -1,    31,    -1,    70,    -1,    83,
-      -1,   194,    -1,    74,    88,    -1,    72,    58,    -1,    84,
-      -1,    51,    -1,    43,    78,    -1,    33,    88,    -1,    98,
-      -1,    54,    -1,   196,    -1,    65,    -1,    47,    -1,    29,
-      88,    -1,   193,    -1,   194,   239,    -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,   107,    -1,   108,    -1,   105,
-      -1,   106,    -1,    -1,   201,    -1,    -1,   201,    -1,    87,
-     113,   203,   114,    -1,   202,    -1,   113,   203,   114,    -1,
-     202,   113,   203,   114,    -1,   204,    -1,   226,    -1,   205,
-      -1,   110,    -1,   206,    -1,   206,   116,   110,    -1,   206,
-     116,   110,   116,   206,    -1,   207,    -1,    24,   104,   210,
-      -1,   208,    -1,   207,   197,   208,    -1,   209,    -1,   208,
-     198,   209,    -1,   210,    -1,   210,   104,   210,    -1,   213,
-     113,   205,   114,    -1,   113,   205,   114,    -1,   214,    -1,
-     216,    -1,   214,   230,   214,    -1,    68,   230,   214,    -1,
-     214,   230,    67,    -1,    68,   230,    67,    -1,   217,    -1,
-     212,    -1,    -1,   111,   211,   192,    -1,    77,     9,    -1,
-      77,   252,    -1,    87,    -1,    53,    -1,    52,    -1,    93,
-      -1,   243,    -1,   191,    -1,   215,    -1,   252,    -1,     8,
-      -1,    10,    -1,   176,    -1,   102,    36,   218,    -1,   102,
-      37,   219,    -1,   201,    -1,   220,    -1,   221,    -1,   111,
-     222,   112,    -1,   111,   110,   116,   222,   112,    -1,   223,
-      -1,   222,   116,   223,    -1,   254,   199,   224,    -1,    -1,
-     225,    -1,    80,    -1,    22,    -1,    76,    -1,   227,    -1,
-     231,    -1,   229,    -1,    -1,    38,    32,   111,   228,   192,
-      -1,    39,   176,    -1,   109,    -1,   109,   122,    -1,   122,
-     109,    -1,   122,   109,   122,    -1,   232,    -1,   233,    -1,
-     111,   249,   112,    -1,   232,   111,   234,   112,    -1,   235,
-      -1,   234,   116,   235,    -1,   123,   236,    -1,   123,   121,
-     236,    -1,   252,    -1,   236,   121,   252,    -1,    -1,   238,
-      -1,    76,    -1,    40,   187,    -1,   111,   112,    -1,   111,
-     240,   112,    -1,   241,    -1,   240,   116,   241,    -1,   252,
-      -1,   252,   113,   242,   114,    -1,   252,   113,   190,   114,
-      -1,   242,    -1,   110,    -1,    12,    -1,    13,    -1,   242,
-      -1,    14,    -1,    -1,   245,    -1,   246,   248,    -1,   118,
-     247,    12,   119,    -1,    -1,    96,    -1,    26,    -1,    82,
-      -1,    -1,    59,    -1,    48,    -1,    17,    -1,    18,    -1,
-      18,    -1,    -1,   252,    -1,    11,    -1,   252,    -1,   253,
-      -1
+     126,     0,    -1,   104,   127,    -1,   127,    -1,   128,    -1,
+     127,   128,    -1,    -1,   256,   129,   130,    42,   134,     3,
+      29,   137,    47,    -1,    -1,   131,    -1,   112,   132,   113,
+      -1,   112,   113,    -1,   133,    -1,   132,   133,    -1,   259,
+      -1,   259,   114,    12,   115,    -1,    12,    -1,    -1,   135,
+      -1,   136,    -1,   135,   136,    -1,    49,    92,    -1,    60,
+      92,    -1,    28,    92,    -1,    51,    61,    -1,    18,    65,
+      -1,    -1,   138,    -1,   150,   142,   139,    -1,   140,    -1,
+     139,   140,    -1,   157,    -1,   187,    -1,   155,    -1,    -1,
+      46,    18,   141,    -1,   197,    -1,    -1,   143,    -1,    62,
+     144,   116,    -1,    62,    54,    -1,    -1,   145,    -1,   147,
+      -1,   145,   147,    -1,    -1,   131,    -1,   148,    54,   256,
+     146,    -1,   149,    -1,   148,   117,   149,    -1,   256,    -1,
+     256,   112,   113,    -1,   259,    -1,    -1,   151,    -1,    50,
+     152,   116,    -1,    50,    25,   116,    -1,    50,   116,    -1,
+     153,    -1,   152,   117,   153,    -1,   256,    -1,   256,   112,
+     113,    -1,   259,    -1,   112,   206,   113,    -1,   256,   156,
+       3,   154,    -1,   196,    -1,   181,    -1,   181,   112,   160,
+     113,    -1,   256,     3,   177,    -1,   256,     3,   167,    -1,
+     256,   112,   158,   113,     3,   177,    -1,   256,   112,   158,
+     113,     3,   167,    -1,   159,    -1,   158,   117,   159,    -1,
+     256,    -1,   256,   118,   259,    -1,   256,   118,   256,    -1,
+     194,   118,   259,    -1,   194,   118,   256,    -1,   161,    -1,
+     160,   117,   161,    -1,   177,    -1,   190,    -1,   259,    -1,
+     154,    -1,    -1,   163,    -1,   164,    -1,   163,   117,   164,
+      -1,   163,   117,     4,   163,     5,    -1,   259,   177,   238,
+      -1,   177,   238,    -1,    38,    76,   177,    -1,   176,    -1,
+     166,    -1,   165,   117,   166,    -1,   259,   177,    -1,   176,
+      -1,   177,    -1,    36,   112,   169,   113,   171,    -1,    -1,
+      96,    -1,   170,    -1,   169,   117,   170,    -1,    19,   238,
+      -1,    20,   177,   168,   238,    -1,    20,   185,   238,    -1,
+      20,   186,   238,    -1,    19,   185,   238,    -1,    19,   177,
+     238,    -1,    19,   186,   238,    -1,    -1,   172,    -1,    -1,
+     103,    90,   112,   173,   174,   113,    -1,   175,    -1,   174,
+     175,    -1,     6,    -1,    21,    -1,   184,    -1,   119,   174,
+     120,    -1,   111,    -1,   111,   121,   191,    -1,   111,   121,
+     249,    -1,   251,   179,   200,    -1,    -1,   178,   180,    -1,
+     156,    -1,    35,   112,   165,   113,    -1,    86,   112,   162,
+     113,    -1,    87,   112,   162,   113,    -1,    86,   201,    76,
+     258,   251,   179,    -1,    87,   201,    76,   258,   251,   179,
+      -1,    26,    -1,    26,    43,    33,   259,    -1,    64,    76,
+     181,    -1,    17,    -1,    17,   122,   256,    -1,   257,   122,
+     256,    -1,    17,   122,   259,    -1,   257,    -1,   257,   122,
+     182,    -1,   183,    -1,   182,   122,   183,    -1,   184,    -1,
+      19,    -1,    20,    -1,    19,    -1,   185,   122,    19,    -1,
+     185,   122,    20,    -1,    18,    -1,   259,   177,     3,   188,
+      -1,   190,    -1,   191,    -1,   259,   118,   188,    -1,    -1,
+     112,   189,   193,    -1,    71,    -1,    53,    -1,    94,    -1,
+       8,    -1,    10,    -1,   192,    -1,   249,    -1,   259,    -1,
+     256,   122,   259,    -1,     9,    -1,    15,    -1,    16,    -1,
+       7,    -1,   193,     7,    -1,    32,    -1,    71,    -1,    84,
+      -1,    75,    89,    -1,    73,    59,    -1,    85,    -1,    52,
+      -1,    44,    79,    -1,    34,    89,    -1,    99,    -1,    55,
+      -1,   197,    -1,   195,    -1,    66,    -1,    48,    -1,    30,
+      89,    -1,   194,    -1,    66,   112,   242,   113,    -1,    48,
+     112,   246,   113,    -1,    30,    89,   112,   244,   113,    -1,
+      22,   112,   240,   113,    -1,    22,   112,   113,    -1,    31,
+      -1,    56,    -1,    57,    -1,    58,    -1,    67,    -1,    72,
+      -1,    82,    -1,    91,    -1,    93,    -1,    98,    -1,   100,
+      -1,   101,    -1,   102,    -1,    74,    -1,   108,    -1,   109,
+      -1,   106,    -1,   107,    -1,    -1,   202,    -1,    -1,   202,
+      -1,    88,   114,   204,   115,    -1,   203,    -1,   114,   204,
+     115,    -1,   203,   114,   204,   115,    -1,   205,    -1,   227,
+      -1,   206,    -1,   111,    -1,   207,    -1,   207,   117,   111,
+      -1,   207,   117,   111,   117,   207,    -1,   208,    -1,    25,
+     105,   211,    -1,   209,    -1,   208,   198,   209,    -1,   210,
+      -1,   209,   199,   210,    -1,   211,    -1,   211,   105,   211,
+      -1,   214,   114,   206,   115,    -1,   114,   206,   115,    -1,
+     215,    -1,   217,    -1,   215,   231,   215,    -1,    69,   231,
+     215,    -1,   215,   231,    68,    -1,    69,   231,    68,    -1,
+     218,    -1,   213,    -1,    -1,   112,   212,   193,    -1,    78,
+       9,    -1,    78,   259,    -1,    88,    -1,    54,    -1,    53,
+      -1,    94,    -1,   250,    -1,   192,    -1,   216,    -1,   259,
+      -1,     8,    -1,    10,    -1,   177,    -1,   103,    37,   219,
+      -1,   103,    38,   220,    -1,   202,    -1,   221,    -1,   222,
+      -1,   112,   223,   113,    -1,   112,   111,   117,   223,   113,
+      -1,   224,    -1,   223,   117,   224,    -1,   261,   200,   225,
+      -1,    -1,   226,    -1,    81,    -1,    23,    -1,    77,    -1,
+     228,    -1,   232,    -1,   230,    -1,    -1,    39,    33,   112,
+     229,   193,    -1,    40,   177,    -1,   110,    -1,   110,   123,
+      -1,   123,   110,    -1,   123,   110,   123,    -1,   233,    -1,
+     234,    -1,   112,   256,   113,    -1,   233,   112,   235,   113,
+      -1,   236,    -1,   235,   117,   236,    -1,   124,   237,    -1,
+     124,   122,   237,    -1,   259,    -1,   237,   122,   259,    -1,
+      -1,   239,    -1,    77,    -1,    41,   188,    -1,   241,    -1,
+     240,   117,   241,    -1,   259,    -1,   243,    -1,   242,   117,
+     243,    -1,   259,   114,   249,   115,    -1,   259,   114,   191,
+     115,    -1,   245,    -1,   244,   117,   245,    -1,   259,   114,
+      12,   115,    -1,   259,   114,   191,   115,    -1,   247,    -1,
+     248,    -1,   247,   117,   248,    -1,   259,    -1,   259,   114,
+     249,   115,    -1,   259,   114,   191,   115,    -1,   249,    -1,
+     111,    -1,    12,    -1,    13,    -1,   249,    -1,    14,    -1,
+      -1,   252,    -1,   253,   255,    -1,   119,   254,    12,   120,
+      -1,    -1,    97,    -1,    27,    -1,    83,    -1,    -1,    60,
+      -1,    49,    -1,    17,    -1,    18,    -1,    18,    -1,    -1,
+     259,    -1,    11,    -1,   259,    -1,   260,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   367,   367,   370,   376,   381,   398,   398,   427,   428,
-     432,   435,   441,   447,   456,   460,   464,   474,   475,   484,
-     487,   496,   499,   502,   505,   509,   530,   531,   540,   553,
-     556,   573,   580,   594,   602,   601,   615,   628,   629,   632,
-     642,   648,   649,   652,   657,   664,   665,   669,   680,   685,
-     692,   698,   704,   714,   715,   727,   730,   733,   741,   746,
-     753,   759,   765,   774,   777,   787,   800,   810,   830,   836,
-     852,   858,   866,   875,   886,   890,   898,   906,   914,   925,
-     930,   937,   940,   948,   959,   982,   983,   986,   991,   995,
-    1003,  1010,  1016,  1023,  1029,  1034,  1041,  1046,  1049,  1056,
-    1066,  1067,  1071,  1078,  1088,  1098,  1109,  1119,  1130,  1140,
-    1151,  1163,  1164,  1171,  1170,  1179,  1183,  1190,  1194,  1197,
-    1201,  1207,  1215,  1224,  1236,  1260,  1267,  1286,  1289,  1295,
-    1301,  1307,  1317,  1327,  1333,  1345,  1360,  1368,  1379,  1390,
-    1401,  1409,  1431,  1439,  1448,  1452,  1457,  1466,  1471,  1476,
-    1484,  1507,  1517,  1518,  1519,  1526,  1526,  1531,  1539,  1544,
-    1549,  1554,  1559,  1562,  1568,  1579,  1597,  1601,  1606,  1614,
-    1623,  1638,  1639,  1640,  1641,  1642,  1643,  1644,  1645,  1646,
-    1647,  1648,  1649,  1650,  1657,  1658,  1659,  1663,  1669,  1682,
-    1683,  1687,  1691,  1692,  1693,  1694,  1695,  1699,  1700,  1701,
-    1702,  1706,  1707,  1714,  1714,  1715,  1715,  1719,  1720,  1724,
-    1725,  1726,  1732,  1738,  1741,  1746,  1746,  1748,  1751,  1755,
-    1756,  1762,  1773,  1774,  1780,  1781,  1787,  1788,  1795,  1796,
-    1802,  1810,  1818,  1824,  1830,  1837,  1845,  1853,  1862,  1863,
-    1864,  1864,  1874,  1879,  1891,  1894,  1900,  1905,  1910,  1911,
-    1912,  1913,  1927,  1932,  1940,  1951,  1954,  1960,  1961,  1961,
-    1962,  1964,  1977,  1982,  1988,  2002,  2003,  2007,  2010,  2013,
-    2021,  2022,  2023,  2028,  2027,  2039,  2048,  2049,  2050,  2051,
-    2054,  2057,  2066,  2082,  2088,  2094,  2108,  2119,  2135,  2138,
-    2158,  2162,  2166,  2170,  2193,  2197,  2203,  2208,  2215,  2222,
-    2230,  2238,  2245,  2256,  2260,  2267,  2268,  2299,  2300,  2304,
-    2311,  2317,  2318,  2319,  2320,  2324,  2325,  2326,  2330,  2334,
-    2342,  2349,  2350,  2356,  2363,  2369
+       0,   378,   378,   381,   387,   392,   409,   409,   438,   439,
+     443,   446,   452,   458,   467,   471,   475,   485,   486,   495,
+     498,   507,   510,   513,   516,   520,   541,   542,   551,   564,
+     567,   584,   591,   605,   613,   612,   626,   639,   640,   643,
+     653,   659,   660,   663,   668,   675,   676,   680,   691,   696,
+     703,   709,   715,   725,   726,   738,   741,   744,   752,   757,
+     764,   770,   776,   785,   788,   798,   811,   821,   841,   847,
+     863,   869,   877,   886,   897,   901,   909,   917,   925,   936,
+     941,   948,   951,   959,   970,   993,   994,   997,  1002,  1006,
+    1014,  1021,  1027,  1034,  1040,  1045,  1052,  1057,  1060,  1067,
+    1077,  1078,  1082,  1089,  1099,  1109,  1120,  1130,  1141,  1151,
+    1162,  1174,  1175,  1182,  1181,  1190,  1194,  1201,  1205,  1208,
+    1212,  1218,  1226,  1235,  1247,  1271,  1278,  1297,  1300,  1306,
+    1312,  1318,  1328,  1338,  1344,  1356,  1371,  1379,  1390,  1401,
+    1412,  1420,  1442,  1450,  1459,  1463,  1468,  1477,  1482,  1487,
+    1495,  1518,  1528,  1529,  1530,  1537,  1537,  1542,  1550,  1555,
+    1560,  1565,  1570,  1573,  1579,  1590,  1608,  1612,  1617,  1625,
+    1634,  1649,  1650,  1651,  1652,  1653,  1654,  1655,  1656,  1657,
+    1658,  1659,  1660,  1661,  1668,  1669,  1670,  1674,  1680,  1685,
+    1690,  1695,  1700,  1709,  1710,  1714,  1718,  1719,  1720,  1721,
+    1722,  1726,  1727,  1728,  1729,  1733,  1734,  1741,  1741,  1742,
+    1742,  1746,  1747,  1751,  1752,  1753,  1759,  1765,  1768,  1773,
+    1773,  1775,  1778,  1782,  1783,  1789,  1800,  1801,  1807,  1808,
+    1814,  1815,  1822,  1823,  1829,  1837,  1845,  1851,  1857,  1864,
+    1872,  1880,  1889,  1890,  1891,  1891,  1901,  1906,  1918,  1921,
+    1927,  1932,  1937,  1938,  1939,  1940,  1954,  1959,  1967,  1978,
+    1981,  1987,  1988,  1988,  1989,  1991,  2004,  2009,  2015,  2029,
+    2030,  2034,  2037,  2040,  2048,  2049,  2050,  2055,  2054,  2066,
+    2075,  2076,  2077,  2078,  2081,  2084,  2093,  2109,  2115,  2121,
+    2135,  2146,  2162,  2165,  2185,  2189,  2193,  2197,  2204,  2209,
+    2215,  2224,  2229,  2236,  2244,  2254,  2259,  2266,  2274,  2284,
+    2299,  2304,  2311,  2318,  2326,  2334,  2341,  2352,  2356,  2363,
+    2364,  2395,  2396,  2400,  2407,  2413,  2414,  2415,  2416,  2420,
+    2421,  2422,  2426,  2430,  2438,  2445,  2446,  2452,  2459,  2465
 };
 #endif
 
@@ -904,34 +913,34 @@
 {
   "$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_cstring", "TOK_hstring", "\"identifier\"", "\"number\"",
+  "\"negative number\"", "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_valuefieldreference", "TOK_Literal", "TOK_ExtValue_BIT_STRING",
+  "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",
   "\"UTF-8 byte order mark\"", "TOK_EXCEPT", "'^'", "TOK_INTERSECTION",
-  "'|'", "TOK_UNION", "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('",
-  "')'", "';'", "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'",
-  "$accept", "ParsedGrammar", "ModuleList", "ModuleDefinition", "@1",
+  "'|'", "TOK_UNION", "\"..\"", "\"...\"", "'{'", "'}'", "'('", "')'",
+  "';'", "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept",
+  "ParsedGrammar", "ModuleList", "ModuleDefinition", "@1",
   "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody",
   "ObjectIdentifierElement", "optModuleDefinitionFlags",
   "ModuleDefinitionFlags", "ModuleDefinitionFlag", "optModuleBody",
@@ -964,10 +973,12 @@
   "ContentsConstraint", "ConstraintRangeSpec", "TableConstraint",
   "SimpleTableConstraint", "ComponentRelationConstraint", "AtNotationList",
   "AtNotationElement", "ComponentIdList", "optMarker", "Marker",
-  "UniverationDefinition", "UniverationList", "UniverationElement",
-  "SignedNumber", "RealValue", "optTag", "Tag", "TagTypeValue", "TagClass",
-  "TagPlicit", "TypeRefName", "ObjectClassReference", "optIdentifier",
-  "Identifier", "IdentifierAsReference", "IdentifierAsValue", 0
+  "IdentifierList", "IdentifierElement", "NamedNumberList", "NamedNumber",
+  "NamedBitList", "NamedBit", "Enumerations", "UniverationList",
+  "UniverationElement", "SignedNumber", "RealValue", "optTag", "Tag",
+  "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName",
+  "ObjectClassReference", "optIdentifier", "Identifier",
+  "IdentifierAsReference", "IdentifierAsValue", 0
 };
 #endif
 
@@ -986,48 +997,49 @@
      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
-     355,   356,   357,   358,   359,    94,   360,   124,   361,   362,
-     363,   123,   125,    40,    41,    59,    44,    58,    91,    93,
-      33,    46,    60,    64
+     355,   356,   357,   358,   359,   360,    94,   361,   124,   362,
+     363,   364,   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 yytype_uint8 yyr1[] =
+static const yytype_uint16 yyr1[] =
 {
-       0,   124,   125,   125,   126,   126,   128,   127,   129,   129,
-     130,   130,   131,   131,   132,   132,   132,   133,   133,   134,
-     134,   135,   135,   135,   135,   135,   136,   136,   137,   138,
-     138,   139,   139,   139,   140,   139,   139,   141,   141,   142,
-     142,   143,   143,   144,   144,   145,   145,   146,   147,   147,
-     148,   148,   148,   149,   149,   150,   150,   150,   151,   151,
-     152,   152,   152,   153,   154,   155,   155,   155,   156,   156,
-     156,   156,   157,   157,   158,   158,   158,   158,   158,   159,
-     159,   160,   160,   160,   160,   161,   161,   162,   162,   162,
-     163,   163,   163,   163,   164,   164,   165,   165,   165,   166,
-     167,   167,   168,   168,   169,   169,   169,   169,   169,   169,
-     169,   170,   170,   172,   171,   173,   173,   174,   174,   174,
-     174,   175,   175,   175,   176,   177,   178,   179,   179,   179,
-     179,   179,   179,   179,   179,   179,   180,   180,   180,   180,
-     180,   180,   181,   181,   182,   183,   183,   184,   184,   184,
-     185,   186,   187,   187,   187,   188,   187,   187,   189,   189,
-     189,   189,   189,   189,   190,   190,   191,   191,   191,   192,
-     192,   193,   193,   193,   193,   193,   193,   193,   193,   193,
-     193,   193,   193,   193,   194,   194,   194,   195,   195,   196,
-     196,   196,   196,   196,   196,   196,   196,   196,   196,   196,
-     196,   196,   196,   197,   197,   198,   198,   199,   199,   200,
-     200,   200,   201,   202,   202,   203,   203,   204,   205,   205,
-     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
-     210,   210,   210,   210,   210,   210,   210,   210,   210,   210,
-     211,   210,   212,   212,   213,   213,   214,   214,   214,   214,
-     214,   214,   215,   215,   216,   217,   217,   218,   219,   219,
-     220,   221,   222,   222,   223,   224,   224,   225,   225,   225,
-     226,   226,   226,   228,   227,   229,   230,   230,   230,   230,
-     231,   231,   232,   233,   234,   234,   235,   235,   236,   236,
-     237,   237,   238,   238,   239,   239,   240,   240,   241,   241,
-     241,   241,   241,   242,   242,   243,   243,   244,   244,   245,
-     246,   247,   247,   247,   247,   248,   248,   248,   249,   249,
-     250,   251,   251,   252,   253,   254
+       0,   125,   126,   126,   127,   127,   129,   128,   130,   130,
+     131,   131,   132,   132,   133,   133,   133,   134,   134,   135,
+     135,   136,   136,   136,   136,   136,   137,   137,   138,   139,
+     139,   140,   140,   140,   141,   140,   140,   142,   142,   143,
+     143,   144,   144,   145,   145,   146,   146,   147,   148,   148,
+     149,   149,   149,   150,   150,   151,   151,   151,   152,   152,
+     153,   153,   153,   154,   155,   156,   156,   156,   157,   157,
+     157,   157,   158,   158,   159,   159,   159,   159,   159,   160,
+     160,   161,   161,   161,   161,   162,   162,   163,   163,   163,
+     164,   164,   164,   164,   165,   165,   166,   166,   166,   167,
+     168,   168,   169,   169,   170,   170,   170,   170,   170,   170,
+     170,   171,   171,   173,   172,   174,   174,   175,   175,   175,
+     175,   176,   176,   176,   177,   178,   179,   180,   180,   180,
+     180,   180,   180,   180,   180,   180,   181,   181,   181,   181,
+     181,   181,   182,   182,   183,   184,   184,   185,   185,   185,
+     186,   187,   188,   188,   188,   189,   188,   188,   190,   190,
+     190,   190,   190,   190,   191,   191,   192,   192,   192,   193,
+     193,   194,   194,   194,   194,   194,   194,   194,   194,   194,
+     194,   194,   194,   194,   195,   195,   195,   196,   196,   196,
+     196,   196,   196,   197,   197,   197,   197,   197,   197,   197,
+     197,   197,   197,   197,   197,   197,   197,   198,   198,   199,
+     199,   200,   200,   201,   201,   201,   202,   203,   203,   204,
+     204,   205,   206,   206,   206,   206,   207,   207,   208,   208,
+     209,   209,   210,   210,   211,   211,   211,   211,   211,   211,
+     211,   211,   211,   211,   212,   211,   213,   213,   214,   214,
+     215,   215,   215,   215,   215,   215,   216,   216,   217,   218,
+     218,   219,   220,   220,   221,   222,   223,   223,   224,   225,
+     225,   226,   226,   226,   227,   227,   227,   229,   228,   230,
+     231,   231,   231,   231,   232,   232,   233,   234,   235,   235,
+     236,   236,   237,   237,   238,   238,   239,   239,   240,   240,
+     241,   242,   242,   243,   243,   244,   244,   245,   245,   246,
+     247,   247,   248,   248,   248,   248,   248,   249,   249,   250,
+     250,   251,   251,   252,   253,   254,   254,   254,   254,   255,
+     255,   255,   256,   256,   257,   258,   258,   259,   260,   261
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1050,22 +1062,23 @@
        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,
+       2,     1,     1,     1,     2,     2,     1,     1,     2,     2,
+       1,     1,     1,     1,     1,     1,     2,     1,     4,     4,
+       5,     4,     3,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     1,     0,
-       1,     4,     1,     3,     4,     1,     1,     1,     1,     1,
-       3,     5,     1,     3,     1,     3,     1,     3,     1,     3,
-       4,     3,     1,     1,     3,     3,     3,     3,     1,     1,
-       0,     3,     2,     2,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     3,     1,     1,     1,
-       3,     5,     1,     3,     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,     0,     1,     0,     1,     4,     1,     3,     4,     1,
+       1,     1,     1,     1,     3,     5,     1,     3,     1,     3,
+       1,     3,     1,     3,     4,     3,     1,     1,     3,     3,
+       3,     3,     1,     1,     0,     3,     2,     2,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
+       3,     1,     1,     1,     3,     5,     1,     3,     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,     1,     3,
+       1,     1,     3,     4,     4,     1,     3,     4,     4,     1,
+       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
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1073,385 +1086,417 @@
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       0,   318,   319,     0,     0,     3,     4,     6,     2,     1,
-       5,     8,     0,     0,     9,   323,    16,    11,     0,    12,
+       0,   332,   333,     0,     0,     3,     4,     6,     2,     1,
+       5,     8,     0,     0,     9,   337,    16,    11,     0,    12,
       14,    17,    10,    13,     0,     0,     0,     0,     0,     0,
        0,    18,    19,     0,    25,    23,    21,    24,    22,     0,
       20,    15,    53,     0,     0,    27,    37,    54,     0,    57,
        0,    58,    60,    62,     7,    41,     0,    38,    56,    55,
        0,     0,    40,     0,    42,    43,     0,    48,    50,    52,
-     189,     0,   190,   191,   192,   193,   194,   202,   195,   196,
-     197,   198,   199,   200,   201,    28,    29,    33,    31,    32,
-      36,     0,   307,    59,    61,    39,    44,     0,     0,     0,
-      34,    30,   307,   136,   320,     0,   171,     0,     0,   185,
-     178,   182,   184,   172,     0,     0,   173,   177,   181,     0,
-       0,    66,   187,   174,    65,   183,   140,   311,     0,   125,
-     308,   315,    45,    49,    51,    35,     0,    69,    68,     0,
-     186,   180,   179,   176,   175,     0,    72,     0,   174,    74,
-       0,   307,     0,   188,     0,   313,   314,   312,     0,     0,
-       0,   207,   317,   316,   309,    46,    47,     0,   137,   139,
-       0,     0,     0,     0,   307,    64,   160,   166,   161,   303,
-     304,   167,   168,   158,   159,    84,     0,    79,    81,    82,
-     162,   163,    83,   302,   294,     0,   296,   301,   298,   145,
-     146,   141,   142,   144,   138,     0,   157,   155,   151,   152,
-     153,     0,   164,   133,     0,     0,   209,   209,   127,   126,
-     307,   124,   208,   212,   307,   307,     0,   102,   307,    73,
-      78,    77,    76,    75,   252,   253,   306,     0,   246,   245,
-       0,     0,   244,   247,     0,   218,   240,   307,   254,   249,
-       0,   219,   222,   224,   226,   228,   239,     0,   232,   250,
-     233,   238,   305,   248,   251,    67,   307,   295,     0,     0,
-       0,   310,     0,     0,     0,     0,   307,     0,     0,   307,
-       0,   210,   307,     0,     0,   307,   240,     0,   215,   217,
-     216,   270,   272,   271,   280,   281,   307,   150,   147,     0,
-     292,   290,   290,   290,   104,   291,   100,   290,   290,   111,
-       0,    71,    70,   307,   276,     0,     0,   242,   243,     0,
-       0,     0,     0,    63,     0,   203,   204,   307,   205,   206,
-     307,   307,   307,     0,    80,   297,     0,     0,   164,   143,
-     169,   156,   165,   154,     0,   121,     0,    94,    97,    98,
-     307,   135,   307,     0,     0,    86,    87,    93,   290,   307,
-     321,     0,   321,     0,   275,     0,   213,     0,     0,   293,
-     109,     0,   108,   110,   101,   290,   106,   107,     0,    99,
-     112,   103,   223,   277,   278,   237,   235,   257,   255,     0,
-     256,   258,   259,   241,   231,   220,   225,   227,   229,     0,
-     236,   234,   300,   299,   170,   134,     0,   128,   307,    96,
-       0,   307,   129,   307,    91,   290,   307,   322,   130,   307,
-     273,   282,     0,     0,   284,   214,   148,   149,   105,     0,
-     279,     0,     0,   262,   324,   325,   207,   307,   230,   122,
-     123,    95,   211,    92,   307,    88,    90,   125,   125,     0,
-       0,   286,   288,   283,     0,   113,     0,   260,     0,   265,
-     221,     0,   131,   132,   274,   287,     0,   285,     0,     0,
-     263,   268,   269,   267,   264,   266,    89,   289,   117,   118,
-       0,     0,   115,   119,   261,     0,   114,   116,   120
+     193,     0,   194,   195,   196,   197,   198,   206,   199,   200,
+     201,   202,   203,   204,   205,    28,    29,    33,    31,    32,
+      36,     0,   321,    59,    61,    39,    44,     0,     0,     0,
+      34,    30,   321,   136,   334,     0,     0,   171,     0,     0,
+     185,   177,   181,   184,   172,     0,     0,   173,   176,   180,
+       0,     0,    66,   187,   183,    65,   182,   140,   325,     0,
+     125,   322,   329,    45,    49,    51,    35,     0,    69,    68,
+       0,     0,   186,   179,   178,     0,     0,   175,   174,     0,
+     185,   184,     0,    72,     0,    74,     0,   321,     0,   327,
+     328,   326,     0,     0,     0,   211,   331,   330,   323,    46,
+      47,     0,   137,   139,   192,     0,   298,   300,     0,   317,
+     318,   316,     0,   309,   310,   315,   312,     0,   301,     0,
+     186,     0,     0,     0,     0,   321,    64,   160,   166,   161,
+     167,   168,   158,   159,    84,     0,    79,    81,    82,   162,
+     163,    83,   145,   146,   141,   142,   144,   138,     0,   157,
+     155,   151,   152,   153,     0,   164,   133,     0,     0,   213,
+     213,   127,   126,   321,   124,   212,   216,   321,   321,     0,
+     102,   191,     0,     0,   305,     0,   189,     0,     0,   188,
+       0,     0,   321,    73,    78,    77,    76,    75,   256,   257,
+     320,     0,   250,   249,     0,     0,   248,   251,     0,   222,
+     244,   321,   258,   253,     0,   223,   226,   228,   230,   232,
+     243,     0,   236,   254,   237,   242,   319,   252,   255,    67,
+     321,     0,   324,     0,     0,     0,     0,   321,     0,     0,
+     321,     0,   214,   321,     0,     0,   321,   244,     0,   219,
+     221,   220,   274,   276,   275,   284,   285,   321,   150,   147,
+       0,   296,   294,   294,   294,   104,   295,   100,   294,   294,
+     111,     0,   299,   190,     0,     0,   311,     0,     0,   164,
+     302,     0,     0,    71,    70,   321,   280,     0,     0,   246,
+     247,     0,     0,     0,     0,    63,     0,   207,   208,   321,
+     209,   210,   321,   321,   321,     0,    80,   143,   169,   156,
+     165,   154,     0,   121,     0,    94,    97,    98,   321,   135,
+     321,     0,     0,    86,    87,    93,   294,   321,   335,     0,
+     335,     0,   279,     0,   217,     0,     0,   297,   109,     0,
+     108,   110,   101,   294,   106,   107,     0,    99,   112,   103,
+     306,     0,     0,   314,   313,   304,   303,   227,   281,   282,
+     241,   239,   261,   259,     0,   260,   262,   263,   245,   235,
+     224,   229,   231,   233,     0,   240,   238,   170,   134,     0,
+     128,   321,    96,     0,   321,   129,   321,    91,   294,   321,
+     336,   130,   321,   277,   286,     0,     0,   288,   218,   148,
+     149,   105,     0,   307,   308,   283,     0,     0,   266,   338,
+     339,   211,   321,   234,   122,   123,    95,   215,    92,   321,
+      88,    90,   125,   125,     0,     0,   290,   292,   287,     0,
+     113,     0,   264,     0,   269,   225,     0,   131,   132,   278,
+     291,     0,   289,     0,     0,   267,   272,   273,   271,   268,
+     270,    89,   293,   117,   118,     0,     0,   115,   119,   265,
+       0,   114,   116,   120
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     4,     5,     6,    11,    13,    14,    18,    19,    30,
-      31,    32,    44,    45,    85,    86,   135,    56,    57,    63,
-      64,   166,    65,    66,    67,    46,    47,    50,    51,   185,
-      87,   120,    88,   145,   146,   186,   187,   354,   355,   356,
-     346,   347,   137,   375,   226,   227,   379,   380,   468,   481,
-     482,   357,   248,   160,   161,   219,   121,   201,   202,   483,
-     302,   303,    89,   208,   272,   209,   210,   249,   341,   122,
-     123,   124,   125,   327,   330,   221,   280,   222,   223,   287,
-     288,   289,   251,   252,   253,   254,   255,   321,   256,   257,
-     258,   259,   260,   261,   388,   390,   391,   392,   432,   433,
-     474,   475,   290,   291,   449,   292,   316,   293,   294,   295,
-     423,   424,   451,   304,   305,   153,   195,   196,   262,   263,
-     129,   130,   131,   158,   164,   211,   126,   416,   264,   435,
-     436
+      31,    32,    44,    45,    85,    86,   136,    56,    57,    63,
+      64,   170,    65,    66,    67,    46,    47,    50,    51,   204,
+      87,   121,    88,   152,   153,   205,   206,   382,   383,   384,
+     374,   375,   138,   403,   239,   240,   407,   408,   503,   516,
+     517,   385,   272,   164,   165,   232,   122,   214,   215,   518,
+     323,   324,    89,   221,   293,   222,   223,   273,   369,   123,
+     124,   125,   126,   359,   362,   234,   301,   235,   236,   308,
+     309,   310,   275,   276,   277,   278,   279,   353,   280,   281,
+     282,   283,   284,   285,   423,   425,   426,   427,   467,   468,
+     509,   510,   311,   312,   484,   313,   348,   314,   315,   316,
+     456,   457,   486,   325,   326,   175,   176,   187,   188,   243,
+     244,   182,   183,   184,   286,   287,   130,   131,   132,   162,
+     168,   224,   127,   449,   288,   470,   471
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -320
+#define YYPACT_NINF -330
 static const yytype_int16 yypact[] =
 {
-      70,  -320,  -320,    95,    24,    95,  -320,  -320,    95,  -320,
-    -320,   -81,    46,     4,  -320,  -320,  -320,  -320,    64,  -320,
-     -52,   199,  -320,  -320,    93,    86,    68,    74,   149,   123,
-     224,   199,  -320,   159,  -320,  -320,  -320,  -320,  -320,   214,
-    -320,  -320,   246,    72,   202,  -320,   222,  -320,   138,  -320,
-     150,  -320,   180,  -320,  -320,    92,   585,  -320,  -320,  -320,
-     207,   209,  -320,   220,   207,  -320,    53,  -320,   231,  -320,
-    -320,   301,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,
-    -320,  -320,  -320,  -320,  -320,   585,  -320,  -320,  -320,  -320,
-    -320,   535,   226,  -320,  -320,  -320,  -320,    95,   207,   233,
-    -320,  -320,   -16,   228,  -320,   258,  -320,   259,   273,  -320,
-    -320,  -320,  -320,  -320,   294,   266,  -320,  -320,  -320,   738,
-     361,   254,  -320,   255,  -320,  -320,   248,    90,   367,  -320,
-    -320,   164,   -81,  -320,  -320,  -320,   261,  -320,  -320,   207,
-    -320,  -320,  -320,  -320,  -320,    77,  -320,   256,  -320,   257,
-     264,   225,    80,  -320,   280,  -320,  -320,  -320,   364,   469,
-     662,   265,  -320,  -320,  -320,  -320,  -320,   252,  -320,  -320,
-     376,   738,   207,   207,   315,  -320,  -320,  -320,  -320,  -320,
-    -320,  -320,  -320,  -320,  -320,  -320,    99,  -320,  -320,  -320,
-    -320,  -320,  -320,  -320,  -320,   116,  -320,  -320,   267,  -320,
-    -320,   260,  -320,  -320,  -320,   268,  -320,  -320,  -320,  -320,
-    -320,   269,   272,   340,   274,   309,   108,   109,  -320,  -320,
-     192,  -320,  -320,   275,   134,    62,   127,  -320,   -16,  -320,
-    -320,  -320,  -320,  -320,  -320,  -320,  -320,   282,  -320,  -320,
-      29,   188,  -320,  -320,   271,  -320,  -320,   315,  -320,  -320,
-     279,   277,   204,   208,  -320,   291,  -320,   284,    29,  -320,
-    -320,  -320,  -320,  -320,  -320,  -320,   225,  -320,    88,   263,
-     314,  -320,   391,   392,   469,   372,    60,   298,   292,    45,
-     331,  -320,    45,   332,   377,   226,    95,   297,  -320,  -320,
-    -320,  -320,  -320,  -320,   302,  -320,   192,  -320,  -320,   469,
-    -320,    39,   -17,    39,  -320,  -320,   317,   -17,    39,   312,
-     252,  -320,  -320,   458,   299,   307,   480,  -320,  -320,   265,
-     308,   391,   304,  -320,   310,  -320,  -320,   458,  -320,  -320,
-     458,   458,   315,   490,  -320,  -320,   313,   316,  -320,  -320,
-    -320,   415,  -320,  -320,   392,   303,   139,  -320,  -320,  -320,
-     226,  -320,   192,   354,   319,   320,  -320,  -320,    39,   226,
-     392,   323,   392,   326,  -320,   327,  -320,   322,   328,  -320,
-    -320,   318,  -320,  -320,  -320,    39,  -320,  -320,   352,  -320,
-    -320,  -320,  -320,  -320,   321,  -320,  -320,  -320,  -320,    67,
-    -320,  -320,  -320,   415,  -320,   334,   208,  -320,  -320,   333,
-    -320,  -320,  -320,  -320,  -320,  -320,   263,  -320,    60,  -320,
-     337,   226,  -320,    18,  -320,    39,   226,  -320,  -320,   226,
-    -320,  -320,    23,   166,  -320,  -320,  -320,  -320,  -320,   341,
-    -320,   339,   172,  -320,  -320,  -320,   265,   347,  -320,  -320,
-    -320,  -320,  -320,  -320,    61,  -320,  -320,  -320,  -320,   391,
-     392,   335,  -320,  -320,   322,  -320,   392,  -320,   392,    41,
-    -320,    16,  -320,  -320,   415,   335,   392,  -320,    30,   174,
-    -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,  -320,
-      30,     6,  -320,  -320,  -320,    48,  -320,  -320,  -320
+      90,  -330,  -330,   158,    53,   158,  -330,  -330,   158,  -330,
+    -330,   -47,    17,    30,  -330,  -330,  -330,  -330,    24,  -330,
+     -35,   203,  -330,  -330,    99,   122,   113,   132,   173,   148,
+     276,   203,  -330,   162,  -330,  -330,  -330,  -330,  -330,   266,
+    -330,  -330,   274,    74,   237,  -330,   238,  -330,   210,  -330,
+     116,  -330,   197,  -330,  -330,   193,   676,  -330,  -330,  -330,
+     281,   215,  -330,   236,   281,  -330,    -5,  -330,   242,  -330,
+    -330,   338,  -330,  -330,  -330,  -330,  -330,  -330,  -330,  -330,
+    -330,  -330,  -330,  -330,  -330,   676,  -330,  -330,  -330,  -330,
+    -330,   604,   240,  -330,  -330,  -330,  -330,   158,   281,   264,
+    -330,  -330,     1,   258,  -330,   269,   294,  -330,   295,   306,
+     275,  -330,  -330,   277,  -330,   327,   301,  -330,  -330,  -330,
+     830,   388,   283,  -330,  -330,  -330,  -330,   271,   140,   393,
+    -330,  -330,   123,   -47,  -330,  -330,  -330,   285,  -330,  -330,
+     281,    19,   287,  -330,  -330,    82,   389,  -330,  -330,   312,
+    -330,  -330,    71,  -330,   284,   286,   291,   106,   313,  -330,
+    -330,  -330,   394,   233,   753,   296,  -330,  -330,  -330,  -330,
+    -330,   328,  -330,  -330,  -330,    78,  -330,  -330,   389,  -330,
+    -330,  -330,   292,   297,  -330,  -330,   299,   103,  -330,   303,
+    -330,   405,   830,   281,   281,   437,  -330,  -330,  -330,  -330,
+    -330,  -330,  -330,  -330,  -330,   142,  -330,  -330,  -330,  -330,
+    -330,  -330,  -330,  -330,   289,  -330,  -330,  -330,   302,  -330,
+    -330,  -330,  -330,  -330,   308,   307,   366,   309,   343,   114,
+     115,  -330,  -330,   304,  -330,  -330,   310,   145,    22,   143,
+    -330,  -330,   389,   144,  -330,   314,  -330,    82,   263,  -330,
+     389,   263,     1,  -330,  -330,  -330,  -330,  -330,  -330,  -330,
+    -330,   321,  -330,  -330,   -20,   208,  -330,  -330,   324,  -330,
+    -330,   437,  -330,  -330,   318,   315,   255,   259,  -330,   330,
+    -330,   319,   -20,  -330,  -330,  -330,  -330,  -330,  -330,  -330,
+     106,   348,  -330,   429,   389,   233,   404,    66,   352,   325,
+      12,   362,  -330,    12,   364,   408,   240,   158,   329,  -330,
+    -330,  -330,  -330,  -330,  -330,   342,  -330,   304,  -330,  -330,
+     233,  -330,    10,    21,    10,  -330,  -330,   346,    21,    10,
+     353,   328,  -330,  -330,   389,   196,  -330,   340,   344,  -330,
+    -330,   345,   349,  -330,  -330,   555,   334,   351,   257,  -330,
+    -330,   296,   354,   429,   350,  -330,   347,  -330,  -330,   555,
+    -330,  -330,   555,   555,   437,   326,  -330,  -330,  -330,   456,
+    -330,  -330,   389,   356,   176,  -330,  -330,  -330,   240,  -330,
+     304,   392,   357,   358,  -330,  -330,    10,   240,   389,   359,
+     389,   368,  -330,   361,  -330,   360,   363,  -330,  -330,   355,
+    -330,  -330,  -330,    10,  -330,  -330,   379,  -330,  -330,  -330,
+    -330,   367,   370,  -330,  -330,  -330,  -330,  -330,  -330,   365,
+    -330,  -330,  -330,  -330,    31,  -330,  -330,  -330,   456,  -330,
+     369,   259,  -330,  -330,   372,  -330,  -330,  -330,  -330,   263,
+    -330,    66,  -330,   386,   240,  -330,    16,  -330,    10,   240,
+    -330,  -330,   240,  -330,  -330,    14,   177,  -330,  -330,  -330,
+    -330,  -330,   371,  -330,  -330,  -330,   385,   188,  -330,  -330,
+    -330,   296,   484,  -330,  -330,  -330,  -330,  -330,  -330,    46,
+    -330,  -330,  -330,  -330,   429,   389,   381,  -330,  -330,   360,
+    -330,   389,  -330,   389,    23,  -330,     9,  -330,  -330,   456,
+     381,   389,  -330,    61,   189,  -330,  -330,  -330,  -330,  -330,
+    -330,  -330,  -330,  -330,  -330,    61,    55,  -330,  -330,  -330,
+      50,  -330,  -330,  -330
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -320,  -320,   445,   296,  -320,  -320,   325,  -320,   435,  -320,
-    -320,   428,  -320,  -320,  -320,   378,  -320,  -320,  -320,  -320,
-    -320,  -320,   397,  -320,   366,  -320,  -320,  -320,   402,   357,
-    -320,   348,  -320,  -320,   305,  -320,   217,   193,    65,    84,
-    -320,   104,   285,  -320,  -320,   205,  -320,  -320,  -320,    34,
-    -192,  -262,   -91,  -320,  -107,  -320,   239,  -320,   247,  -151,
-     293,   295,  -320,  -237,  -320,  -144,  -264,  -131,  -319,   -87,
-     -86,  -320,   128,  -320,  -320,    83,   306,  -178,  -320,  -232,
-    -320,  -170,    85,  -320,   197,   195,  -296,  -320,  -320,  -320,
-    -222,  -320,  -320,  -320,  -320,  -320,  -320,  -320,    71,    73,
-    -320,  -320,  -320,  -320,  -320,  -320,   270,  -320,  -320,  -320,
-    -320,    75,    87,  -261,  -320,  -320,  -320,   262,  -143,  -320,
-    -110,  -320,  -320,  -320,  -320,    10,  -320,   171,   -12,  -320,
-    -320
+    -330,  -330,   468,   184,  -330,  -330,   374,  -330,   458,  -330,
+    -330,   473,  -330,  -330,  -330,   420,  -330,  -330,  -330,  -330,
+    -330,  -330,   444,  -330,   412,  -330,  -330,  -330,   451,   373,
+    -330,   375,  -330,  -330,   320,  -330,   223,   211,    37,    72,
+    -330,    76,   267,  -330,  -330,   190,  -330,  -330,  -330,     5,
+    -213,  -289,   -91,  -330,  -111,  -330,   224,  -330,   232,  -153,
+     288,   290,  -330,  -237,  -330,  -140,  -238,  -141,  -329,   -32,
+    -330,  -330,   -30,  -330,  -330,    56,   300,  -211,  -330,  -207,
+    -330,  -193,    52,  -330,   174,   170,  -300,  -330,  -330,  -330,
+    -209,  -330,  -330,  -330,  -330,  -330,  -330,  -330,    43,    42,
+    -330,  -330,  -330,  -330,  -330,  -330,   254,  -330,  -330,  -330,
+    -330,    54,    57,  -290,  -330,  -330,   305,  -330,   311,  -330,
+     207,  -330,  -330,   298,  -142,  -330,  -103,  -330,  -330,  -330,
+    -330,     4,  -330,   154,   -12,  -330,  -330
 };
 
 /* 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, syntax error.  */
-#define YYTABLE_NINF -291
+#define YYTABLE_NINF -295
 static const yytype_int16 yytable[] =
 {
-      20,   128,   393,   203,   250,   336,    20,   189,   191,   197,
-       7,   138,   478,     7,   348,     7,   191,   382,     7,   136,
-     190,   476,   444,   299,     9,   199,   200,   479,   190,    15,
-      12,    53,   147,   148,    15,   398,   478,   343,   281,   281,
-     370,   372,   373,    69,    92,    21,   376,   377,    53,   199,
-     200,   479,    69,    52,   478,   353,    15,    15,    16,   300,
-     188,    24,   369,   471,   368,    68,    91,   199,   200,   479,
-      52,    15,    15,    92,    68,    15,    16,   322,    15,   299,
-     297,   298,   353,    15,   147,   148,    69,     1,     2,     1,
-       2,    15,   179,   180,   386,    91,    48,   414,   353,    15,
-     179,   180,   127,    15,   371,    33,    97,   132,    68,     1,
-       2,   401,     1,     2,   428,   300,   155,   472,   486,   203,
-     410,   473,   189,   191,   480,   197,   337,   169,   345,   149,
-     464,   191,   413,   301,   306,   190,   127,   312,   314,   192,
-     198,   387,   439,   190,   450,    62,   348,   212,   480,   168,
-      34,   315,   297,   298,   446,   345,   191,   -85,    17,    35,
-     231,   233,   399,   127,   204,    36,   480,   488,   190,    98,
-     345,   345,   156,     3,   299,   188,    22,   431,   127,   127,
-     127,   149,   230,   232,    90,   349,   157,    49,   358,   170,
-     193,   358,   194,   171,   364,   278,   278,   317,   193,    15,
-     234,   177,   235,    15,   179,   180,   236,   181,   182,    37,
-     300,   265,   162,    90,    38,   266,   237,    25,    15,   279,
-     282,   220,   220,   163,     1,     2,    26,    39,   267,   318,
-     284,   285,   268,   176,   177,   178,    15,   179,   180,   309,
-     181,   182,    42,   310,   238,   239,  -290,    27,    54,    28,
-    -290,   407,   127,    58,   192,   408,   198,   338,    29,   409,
-     240,   342,   212,   440,   350,    59,    60,   359,   415,   241,
-     359,   224,   225,    41,    15,   179,   180,   183,   453,   242,
-       1,     2,   454,    55,   457,   243,   484,   212,   458,   487,
-     458,    61,   -26,   487,   244,    43,   365,     1,     2,   199,
-     200,    10,   245,   286,    10,   247,   447,   319,   320,   448,
-     127,   325,   326,   328,   329,   103,   104,   349,   184,   100,
-     443,    94,   358,   234,   177,   235,    15,   179,   180,   236,
-     181,   182,   405,   199,   200,    95,   174,   426,   427,   237,
-     462,   463,    99,   127,   127,   134,   140,   141,   417,   139,
-     417,   142,   143,   358,   144,   234,   177,   235,    15,   179,
-     180,   236,   181,   182,   150,   151,   152,   238,   239,   154,
-     159,   237,   167,   172,   173,   174,   205,   434,   220,   228,
-     269,   270,   275,   240,   277,   276,   313,   271,   296,   274,
-     273,   323,   241,   324,   338,   331,   350,   332,   340,   238,
-     239,   359,   242,    15,   344,   352,   360,   362,   243,   363,
-     452,   366,   374,   367,   378,   240,   384,   244,   394,   389,
-     395,   383,   404,   406,   241,   245,   246,   402,   247,   411,
-     403,   412,   359,   127,   242,   418,   413,   420,   452,   421,
-     243,   429,   425,   430,   434,   422,   434,   438,     8,   244,
-     437,   442,   455,    23,   477,   456,   466,   165,   246,    40,
-     247,    96,    93,   101,   133,   127,   234,   177,   235,    15,
-     179,   180,   236,   181,   182,   361,   229,   176,   177,   178,
-      15,   179,   180,   334,   181,   182,     1,     2,   234,   177,
-     235,    15,   179,   180,   236,   181,   182,   445,   234,   177,
-     235,    15,   179,   180,   236,   181,   182,   175,   218,   461,
-     238,   239,   441,   311,   485,   381,   351,   339,   307,   459,
-     308,   183,   460,   283,   396,   397,   240,   469,   333,   467,
-     335,   470,   238,   419,     0,   241,     0,   465,   102,   206,
-       0,     0,   238,     0,     0,   242,     0,   385,     0,     0,
-       0,   243,   103,   104,     0,     0,     0,   400,     0,     0,
-     244,     0,   184,     0,   105,    70,   106,     0,   107,   246,
-       0,   247,     0,   243,     0,     0,   127,     0,   108,     0,
-     207,     0,   109,   243,     0,     0,   110,     0,     0,   111,
-      72,    73,    74,     0,     0,     0,    15,     0,     0,     0,
-     112,    75,     1,     2,     0,   113,    76,   114,    77,   115,
-       0,     0,     0,     0,     0,    70,    78,     0,   116,   117,
-       0,     0,     0,     0,     0,    79,     0,    80,     0,     0,
-      71,     0,    81,   118,    82,    83,    84,     0,     0,     0,
-      72,    73,    74,     0,     0,     0,   119,     0,     0,     0,
-       0,    75,     0,     0,     0,     0,    76,     0,    77,     0,
-       0,     0,     0,     0,     0,     0,    78,     0,     0,     0,
-       0,     0,     0,     0,     0,    79,     0,    80,     0,   103,
-     104,     0,    81,     0,    82,    83,    84,   213,     0,     0,
-       0,   105,    70,   106,     0,   107,   214,     0,     0,     0,
-       0,     0,     0,     0,     0,   108,     0,     0,     0,   109,
-       0,     0,     0,   110,     0,     0,   111,    72,    73,    74,
-       0,     0,     0,     0,     0,   215,     0,   112,    75,     0,
-       0,     0,   113,    76,   114,    77,   115,     0,     0,     0,
-       0,     0,     0,    78,     0,   116,   117,   216,   217,     0,
-       0,     0,    79,     0,    80,     1,     2,     0,     0,    81,
-     118,    82,    83,    84,     0,     0,     0,   105,    70,   106,
-       0,   107,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   108,     0,     0,     0,   109,     0,     0,     0,   110,
-       0,     0,   111,    72,    73,    74,     0,     0,     0,     0,
-       0,     0,     0,   112,    75,     0,     0,     0,   113,    76,
-     114,    77,   115,     0,     0,     0,     0,     0,     0,    78,
-       0,   116,   117,     0,     0,     0,     0,     0,    79,     0,
-      80,     0,     0,     0,     0,    81,   118,    82,    83,    84
+      20,   129,   274,   185,     7,   216,    20,     7,   376,     7,
+     337,   139,     7,   341,   511,   210,   209,   208,   302,   302,
+     479,   210,   209,    15,   428,    15,    90,    15,    15,    16,
+      15,    53,   398,   400,   401,    15,    16,   137,   404,   405,
+     318,   319,    15,    69,    92,   417,   506,    52,    53,    97,
+     381,   320,    69,     9,   381,    90,   513,    15,   371,    68,
+      91,   513,   320,   433,    52,    12,   207,   513,    68,   212,
+     213,   514,    21,    92,   212,   213,   514,    15,   354,    24,
+     212,   213,   514,   397,   381,    15,    69,   321,   154,    91,
+     346,     1,     2,    15,   179,   180,   447,   412,   321,    48,
+     507,   133,    68,   347,   508,   185,   338,     1,     2,   342,
+     396,    33,    98,   461,   197,   198,   199,    15,   179,   180,
+     128,   200,   201,   373,   155,   -85,   446,   373,   173,   177,
+      17,   128,   174,   186,   189,   128,   485,    22,   216,   421,
+     422,   128,   466,   399,   172,   211,   322,   327,   210,   209,
+     208,   225,   376,   210,   209,   499,   436,   373,   481,   202,
+     154,   344,   217,   318,   319,   128,   245,   159,   521,   515,
+     523,   434,   166,   443,   515,     1,     2,   373,   210,   209,
+     515,   255,   257,   167,   191,   128,   320,    34,   192,    10,
+      49,   241,    10,   181,     3,   242,   155,   254,   256,   207,
+     203,   474,   299,   299,    15,    35,   377,    15,   411,   386,
+       1,     2,   386,     1,     2,   392,   249,   349,   195,    15,
+     250,    25,   321,   160,    36,   128,   300,   303,   233,   233,
+     177,    26,    59,    60,    37,   186,   339,   161,   189,   339,
+      38,   197,   198,   199,    15,   179,   180,    62,   200,   201,
+       1,     2,    27,   350,    28,   289,   330,   333,  -294,   290,
+     331,   334,  -294,    29,   128,   258,   198,   259,    15,   179,
+     180,   260,   200,   201,    15,   179,   180,    41,   211,    39,
+       1,     2,   370,   225,    54,   378,   202,   442,   387,   440,
+     488,   387,    15,   441,   489,    42,   448,   475,     1,     2,
+      55,   492,   519,   522,   219,   493,   493,   522,   225,    61,
+     262,   393,   258,   198,   259,    15,   179,   180,   260,   200,
+     201,   -26,   245,   339,    43,   420,    58,   203,    94,   261,
+       1,     2,   212,   213,   258,   198,   259,    15,   179,   180,
+     260,   200,   201,   305,   306,   220,   482,   237,   238,   483,
+     377,   267,    95,   478,    99,   386,   100,   262,   263,   128,
+     438,   351,   352,   357,   358,   360,   361,   212,   213,   103,
+     104,   497,   498,   264,   459,   460,   450,   135,   450,   262,
+     140,   141,   265,   142,   143,   144,   147,   145,   386,   146,
+     148,   156,   266,   158,   435,   157,   163,   171,   267,   178,
+      15,   190,   193,   195,   194,   246,   218,   268,   252,   296,
+     233,   291,   469,   248,   247,   269,   307,   251,   271,   298,
+     267,   297,   292,   128,   317,   295,   345,   339,   335,   378,
+     294,   355,   356,   364,   387,   363,   368,   372,   388,   380,
+     390,   391,   402,   487,   394,   258,   198,   259,    15,   179,
+     180,   260,   200,   201,   395,   413,   406,   418,   430,   414,
+     415,   419,   261,   437,   416,   429,   424,   387,   444,   462,
+     445,     8,   451,   487,   454,   446,    23,   439,   458,   469,
+     453,   469,   463,   490,   455,   464,   472,   473,   465,   512,
+     262,   263,   258,   198,   259,    15,   179,   180,   260,   200,
+     201,   477,   491,   501,    40,   101,   264,   169,    96,   261,
+     134,    93,   253,   366,   389,   265,   496,   476,   480,   343,
+     520,   409,   379,   367,   495,   266,   328,   494,   329,   196,
+     304,   267,   432,   431,   504,   505,   365,   262,   263,   231,
+     268,   410,   500,   502,   452,   336,     0,   332,   269,   270,
+       0,   271,     0,   264,     0,     0,   128,     0,     0,     0,
+       0,   340,   265,   258,   198,   259,    15,   179,   180,   260,
+     200,   201,   266,     0,     0,     0,     0,     0,   267,     0,
+       0,     0,     0,     0,     0,     0,     0,   268,     0,     0,
+       0,     0,     0,     0,     0,     0,   270,     0,   271,     0,
+       0,     0,     0,   128,     0,     0,     0,   102,   262,   263,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   103,   104,     0,   264,     0,   105,     0,     0,     0,
+       0,     0,     0,   265,   106,    70,   107,     0,   108,     0,
+       0,     0,     0,   266,     0,     0,     0,     0,   109,   267,
+       0,     0,   110,     0,     0,     0,   111,     0,   268,   112,
+      72,    73,    74,     0,     0,     0,     0,   270,     0,   271,
+     113,    75,     0,     0,   128,   114,    76,   115,    77,   116,
+       0,     0,     0,     0,     0,     0,    78,    15,   117,   118,
+       0,     0,     0,     1,     2,    79,     0,    80,     0,     0,
+       0,     0,    81,   119,    82,    83,    84,    70,     0,     0,
+       0,     0,     0,     0,     0,     0,   120,     0,     0,     0,
+       0,     0,    71,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    72,    73,    74,     0,     0,     0,     0,     0,
+       0,     0,     0,    75,     0,     0,     0,     0,    76,     0,
+      77,     0,     0,     0,     0,     0,     0,     0,    78,     0,
+       0,     0,     0,     0,     0,     0,     0,    79,     0,    80,
+     103,   104,     0,     0,    81,   105,    82,    83,    84,   226,
+       0,     0,     0,   106,    70,   107,     0,   108,   227,     0,
+       0,     0,     0,     0,     0,     0,     0,   109,     0,     0,
+       0,   110,     0,     0,     0,   111,     0,     0,   112,    72,
+      73,    74,     0,     0,     0,     0,     0,   228,     0,   113,
+      75,     0,     0,     0,   114,    76,   115,    77,   116,     0,
+       0,     0,     0,     0,     0,    78,     0,   117,   118,   229,
+     230,     0,     0,     0,    79,     0,    80,     1,     2,     0,
+       0,    81,   119,    82,    83,    84,     0,     0,     0,     0,
+     149,    70,   107,     0,   108,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   109,     0,     0,     0,   150,     0,
+       0,     0,   111,     0,     0,   112,    72,    73,    74,     0,
+       0,     0,     0,     0,     0,     0,   151,    75,     0,     0,
+       0,   114,    76,   115,    77,   116,     0,     0,     0,     0,
+       0,     0,    78,     0,   117,   118,     0,     0,     0,     0,
+       0,    79,     0,    80,     0,     0,     0,     0,    81,   119,
+      82,    83,    84
 };
 
 static const yytype_int16 yycheck[] =
 {
-      12,    92,   321,   154,   174,   269,    18,   151,   151,   152,
-       0,   102,     6,     3,   276,     5,   159,   313,     8,    35,
-     151,     5,     4,    40,     0,    19,    20,    21,   159,    11,
-     111,    43,   119,   119,    11,   331,     6,   274,   216,   217,
-     301,   302,   303,    55,    56,    41,   307,   308,    60,    19,
-      20,    21,    64,    43,     6,    37,    11,    11,    12,    76,
-     151,   113,   299,    22,   296,    55,    56,    19,    20,    21,
-      60,    11,    11,    85,    64,    11,    12,   247,    11,    40,
-      18,    19,    37,    11,   171,   171,    98,    17,    18,    17,
-      18,    11,    12,    13,   316,    85,    24,   358,    37,    11,
-      12,    13,   118,    11,   121,    12,    53,    97,    98,    17,
-      18,   333,    17,    18,   375,    76,    26,    76,   112,   270,
-     352,    80,   266,   266,   118,   268,   269,   139,   110,   119,
-     449,   274,   116,   224,   225,   266,   118,   228,   109,   151,
-     152,   319,   406,   274,   121,    53,   408,   159,   118,   139,
-      64,   122,    18,    19,   415,   110,   299,   112,   112,    91,
-     172,   173,   332,   118,   154,    91,   118,   119,   299,   116,
-     110,   110,    82,   103,    40,   266,   112,   110,   118,   118,
-     118,   171,   172,   173,    56,   276,    96,   115,   279,   112,
-     110,   282,   112,   116,   285,    87,    87,     9,   110,    11,
-       8,     9,    10,    11,    12,    13,    14,    15,    16,    60,
-      76,   112,    48,    85,    91,   116,    24,    18,    11,   111,
-     111,   113,   113,    59,    17,    18,    27,     3,   112,   241,
-      38,    39,   116,     8,     9,    10,    11,    12,    13,   112,
-      15,    16,    28,   116,    52,    53,   112,    48,    46,    50,
-     116,   112,   118,   115,   266,   116,   268,   269,    59,   350,
-      68,   273,   274,   406,   276,   115,   116,   279,   359,    77,
-     282,    19,    20,   114,    11,    12,    13,    52,   112,    87,
-      17,    18,   116,    61,   112,    93,   112,   299,   116,   481,
-     116,   111,    46,   485,   102,    49,   286,    17,    18,    19,
-      20,     5,   110,   111,     8,   113,   416,    36,    37,   419,
-     118,   107,   108,   105,   106,    17,    18,   408,    93,    18,
-     411,   112,   413,     8,     9,    10,    11,    12,    13,    14,
-      15,    16,   344,    19,    20,   115,   111,    19,    20,    24,
-     447,   448,   111,   118,   118,   112,    88,    88,   360,   121,
-     362,    78,    58,   444,    88,     8,     9,    10,    11,    12,
-      13,    14,    15,    16,     3,   111,   111,    52,    53,   121,
-       3,    24,   111,   117,   117,   111,    12,   389,   113,     3,
-     113,   121,    42,    68,    75,   111,   104,   119,   113,   117,
-     121,   112,    77,   116,   406,   104,   408,   113,     7,    52,
-      53,   413,    87,    11,    32,   113,    75,    75,    93,    32,
-     422,   114,    95,   111,   102,    68,   109,   102,   114,   111,
-     110,   122,     7,   120,    77,   110,   111,   114,   113,    75,
-     114,   112,   444,   118,    87,   112,   116,   111,   450,   112,
-      93,    89,   114,   122,   456,   123,   458,   114,     3,   102,
-     116,   114,   111,    18,   466,   116,   121,   132,   111,    31,
-     113,    64,    60,    85,    98,   118,     8,     9,    10,    11,
-      12,    13,    14,    15,    16,   282,   171,     8,     9,    10,
-      11,    12,    13,   266,    15,    16,    17,    18,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,   413,     8,     9,
-      10,    11,    12,    13,    14,    15,    16,   150,   160,   444,
-      52,    53,   408,   228,   480,   310,   277,   270,   225,   436,
-     225,    52,   437,   217,   327,   330,    68,   456,   258,   454,
-     268,   458,    52,   362,    -1,    77,    -1,   450,     3,    70,
-      -1,    -1,    52,    -1,    -1,    87,    -1,    67,    -1,    -1,
-      -1,    93,    17,    18,    -1,    -1,    -1,    67,    -1,    -1,
-     102,    -1,    93,    -1,    29,    30,    31,    -1,    33,   111,
-      -1,   113,    -1,    93,    -1,    -1,   118,    -1,    43,    -1,
-     111,    -1,    47,    93,    -1,    -1,    51,    -1,    -1,    54,
-      55,    56,    57,    -1,    -1,    -1,    11,    -1,    -1,    -1,
-      65,    66,    17,    18,    -1,    70,    71,    72,    73,    74,
-      -1,    -1,    -1,    -1,    -1,    30,    81,    -1,    83,    84,
-      -1,    -1,    -1,    -1,    -1,    90,    -1,    92,    -1,    -1,
-      45,    -1,    97,    98,    99,   100,   101,    -1,    -1,    -1,
-      55,    56,    57,    -1,    -1,    -1,   111,    -1,    -1,    -1,
-      -1,    66,    -1,    -1,    -1,    -1,    71,    -1,    73,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    90,    -1,    92,    -1,    17,
-      18,    -1,    97,    -1,    99,   100,   101,    25,    -1,    -1,
-      -1,    29,    30,    31,    -1,    33,    34,    -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,    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
+      12,    92,   195,   145,     0,   158,    18,     3,   297,     5,
+     248,   102,     8,   251,     5,   157,   157,   157,   229,   230,
+       4,   163,   163,    11,   353,    11,    56,    11,    11,    12,
+      11,    43,   322,   323,   324,    11,    12,    36,   328,   329,
+      18,    19,    11,    55,    56,   345,    23,    43,    60,    54,
+      38,    41,    64,     0,    38,    85,     6,    11,   295,    55,
+      56,     6,    41,   363,    60,   112,   157,     6,    64,    19,
+      20,    21,    42,    85,    19,    20,    21,    11,   271,   114,
+      19,    20,    21,   320,    38,    11,    98,    77,   120,    85,
+     110,    17,    18,    11,    12,    13,   386,   335,    77,    25,
+      77,    97,    98,   123,    81,   247,   248,    17,    18,   251,
+     317,    12,   117,   403,     8,     9,    10,    11,    12,    13,
+     119,    15,    16,   111,   120,   113,   117,   111,   140,   141,
+     113,   119,   113,   145,   146,   119,   122,   113,   291,   348,
+     351,   119,   111,   122,   140,   157,   237,   238,   290,   290,
+     290,   163,   441,   295,   295,   484,   365,   111,   448,    53,
+     192,   252,   158,    18,    19,   119,   178,    27,   113,   119,
+     120,   364,    49,   380,   119,    17,    18,   111,   320,   320,
+     119,   193,   194,    60,   113,   119,    41,    65,   117,     5,
+     116,   113,     8,   111,   104,   117,   192,   193,   194,   290,
+      94,   439,    88,    88,    11,    92,   297,    11,    12,   300,
+      17,    18,   303,    17,    18,   306,   113,     9,   112,    11,
+     117,    18,    77,    83,    92,   119,   112,   112,   114,   114,
+     242,    28,   116,   117,    61,   247,   248,    97,   250,   251,
+      92,     8,     9,    10,    11,    12,    13,    54,    15,    16,
+      17,    18,    49,   265,    51,   113,   113,   113,   113,   117,
+     117,   117,   117,    60,   119,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    11,    12,    13,   115,   290,     3,
+      17,    18,   294,   295,    47,   297,    53,   378,   300,   113,
+     113,   303,    11,   117,   117,    29,   387,   439,    17,    18,
+      62,   113,   113,   516,    71,   117,   117,   520,   320,   112,
+      53,   307,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    47,   334,   335,    50,    68,   116,    94,   113,    25,
+      17,    18,    19,    20,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    39,    40,   112,   449,    19,    20,   452,
+     441,    94,   116,   444,   112,   446,    18,    53,    54,   119,
+     372,    37,    38,   108,   109,   106,   107,    19,    20,    17,
+      18,   482,   483,    69,    19,    20,   388,   113,   390,    53,
+     122,   112,    78,    89,    89,    79,    59,   112,   479,   112,
+      89,     3,    88,   122,    68,   112,     3,   112,    94,   112,
+      11,    89,   118,   112,   118,   113,    12,   103,     3,    43,
+     114,   122,   424,   114,   117,   111,   112,   114,   114,    76,
+      94,   112,   120,   119,   114,   118,   105,   439,   114,   441,
+     122,   113,   117,   114,   446,   105,     7,    33,    76,   114,
+      76,    33,    96,   455,   115,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,   112,   115,   103,   123,   111,   115,
+     115,   110,    25,     7,   115,   115,   112,   479,    76,    90,
+     113,     3,   113,   485,   113,   117,    18,   121,   115,   491,
+     112,   493,   115,   112,   124,   115,   117,   115,   123,   501,
+      53,    54,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,   115,   117,   122,    31,    85,    69,   133,    64,    25,
+      98,    60,   192,   290,   303,    78,   479,   441,   446,   252,
+     515,   331,   298,   291,   472,    88,   238,   471,   238,   156,
+     230,    94,   362,   359,   491,   493,   282,    53,    54,   164,
+     103,   334,   485,   489,   390,   247,    -1,   242,   111,   112,
+      -1,   114,    -1,    69,    -1,    -1,   119,    -1,    -1,    -1,
+      -1,   250,    78,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    88,    -1,    -1,    -1,    -1,    -1,    94,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   103,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,   114,    -1,
+      -1,    -1,    -1,   119,    -1,    -1,    -1,     3,    53,    54,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    17,    18,    -1,    69,    -1,    22,    -1,    -1,    -1,
+      -1,    -1,    -1,    78,    30,    31,    32,    -1,    34,    -1,
+      -1,    -1,    -1,    88,    -1,    -1,    -1,    -1,    44,    94,
+      -1,    -1,    48,    -1,    -1,    -1,    52,    -1,   103,    55,
+      56,    57,    58,    -1,    -1,    -1,    -1,   112,    -1,   114,
+      66,    67,    -1,    -1,   119,    71,    72,    73,    74,    75,
+      -1,    -1,    -1,    -1,    -1,    -1,    82,    11,    84,    85,
+      -1,    -1,    -1,    17,    18,    91,    -1,    93,    -1,    -1,
+      -1,    -1,    98,    99,   100,   101,   102,    31,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
+      -1,    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    56,    57,    58,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,
+      74,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    82,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,    -1,    93,
+      17,    18,    -1,    -1,    98,    22,   100,   101,   102,    26,
+      -1,    -1,    -1,    30,    31,    32,    -1,    34,    35,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    44,    -1,    -1,
+      -1,    48,    -1,    -1,    -1,    52,    -1,    -1,    55,    56,
+      57,    58,    -1,    -1,    -1,    -1,    -1,    64,    -1,    66,
+      67,    -1,    -1,    -1,    71,    72,    73,    74,    75,    -1,
+      -1,    -1,    -1,    -1,    -1,    82,    -1,    84,    85,    86,
+      87,    -1,    -1,    -1,    91,    -1,    93,    17,    18,    -1,
+      -1,    98,    99,   100,   101,   102,    -1,    -1,    -1,    -1,
+      30,    31,    32,    -1,    34,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    44,    -1,    -1,    -1,    48,    -1,
+      -1,    -1,    52,    -1,    -1,    55,    56,    57,    58,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,
+      -1,    71,    72,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    -1,    82,    -1,    84,    85,    -1,    -1,    -1,    -1,
+      -1,    91,    -1,    93,    -1,    -1,    -1,    -1,    98,    99,
+     100,   101,   102
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const yytype_uint16 yystos[] =
 {
-       0,    17,    18,   103,   125,   126,   127,   249,   126,     0,
-     127,   128,   111,   129,   130,    11,    12,   112,   131,   132,
-     252,    41,   112,   132,   113,    18,    27,    48,    50,    59,
-     133,   134,   135,    12,    64,    91,    91,    60,    91,     3,
-     135,   114,    28,    49,   136,   137,   149,   150,    24,   115,
-     151,   152,   249,   252,    46,    61,   141,   142,   115,   115,
-     116,   111,    53,   143,   144,   146,   147,   148,   249,   252,
-      30,    45,    55,    56,    57,    66,    71,    73,    81,    90,
-      92,    97,    99,   100,   101,   138,   139,   154,   156,   186,
-     196,   249,   252,   152,   112,   115,   146,    53,   116,   111,
-      18,   139,     3,    17,    18,    29,    31,    33,    43,    47,
-      51,    54,    65,    70,    72,    74,    83,    84,    98,   111,
-     155,   180,   193,   194,   195,   196,   250,   118,   176,   244,
-     245,   246,   249,   148,   112,   140,    35,   166,   176,   121,
-      88,    88,    78,    58,    88,   157,   158,   193,   194,   249,
-       3,   111,   111,   239,   121,    26,    82,    96,   247,     3,
-     177,   178,    48,    59,   248,   130,   145,   111,   249,   252,
-     112,   116,   117,   117,   111,   153,     8,     9,    10,    12,
-      13,    15,    16,    52,    93,   153,   159,   160,   176,   189,
-     191,   242,   252,   110,   112,   240,   241,   242,   252,    19,
-      20,   181,   182,   183,   249,    12,    70,   111,   187,   189,
-     190,   249,   252,    25,    34,    63,    85,    86,   155,   179,
-     113,   199,   201,   202,    19,    20,   168,   169,     3,   158,
-     249,   252,   249,   252,     8,    10,    14,    24,    52,    53,
-      68,    77,    87,    93,   102,   110,   111,   113,   176,   191,
-     205,   206,   207,   208,   209,   210,   212,   213,   214,   215,
-     216,   217,   242,   243,   252,   112,   116,   112,   116,   113,
-     121,   119,   188,   121,   117,    42,   111,    75,    87,   111,
-     200,   201,   111,   200,    38,    39,   111,   203,   204,   205,
-     226,   227,   229,   231,   232,   233,   113,    18,    19,    40,
-      76,   176,   184,   185,   237,   238,   176,   184,   185,   112,
-     116,   166,   176,   104,   109,   122,   230,     9,   252,    36,
-      37,   211,   205,   112,   116,   107,   108,   197,   105,   106,
-     198,   104,   113,   230,   160,   241,   190,   242,   252,   182,
-       7,   192,   252,   187,    32,   110,   164,   165,   175,   176,
-     252,   180,   113,    37,   161,   162,   163,   175,   176,   252,
-      75,   161,    75,    32,   176,   249,   114,   111,   203,   187,
-     237,   121,   237,   237,    95,   167,   237,   237,   102,   170,
-     171,   169,   210,   122,   109,    67,   214,   201,   218,   111,
-     219,   220,   221,   192,   114,   110,   208,   209,   210,   205,
-      67,   214,   114,   114,     7,   252,   120,   112,   116,   176,
-     203,    75,   112,   116,   237,   176,   251,   252,   112,   251,
-     111,   112,   123,   234,   235,   114,    19,    20,   237,    89,
-     122,   110,   222,   223,   252,   253,   254,   116,   114,   190,
-     242,   165,   114,   176,     4,   163,   237,   244,   244,   228,
-     121,   236,   252,   112,   116,   111,   116,   112,   116,   199,
-     206,   162,   178,   178,   192,   236,   121,   235,   172,   222,
-     223,    22,    76,    80,   224,   225,     5,   252,     6,    21,
-     118,   173,   174,   183,   112,   173,   112,   174,   119
+       0,    17,    18,   104,   126,   127,   128,   256,   127,     0,
+     128,   129,   112,   130,   131,    11,    12,   113,   132,   133,
+     259,    42,   113,   133,   114,    18,    28,    49,    51,    60,
+     134,   135,   136,    12,    65,    92,    92,    61,    92,     3,
+     136,   115,    29,    50,   137,   138,   150,   151,    25,   116,
+     152,   153,   256,   259,    47,    62,   142,   143,   116,   116,
+     117,   112,    54,   144,   145,   147,   148,   149,   256,   259,
+      31,    46,    56,    57,    58,    67,    72,    74,    82,    91,
+      93,    98,   100,   101,   102,   139,   140,   155,   157,   187,
+     197,   256,   259,   153,   113,   116,   147,    54,   117,   112,
+      18,   140,     3,    17,    18,    22,    30,    32,    34,    44,
+      48,    52,    55,    66,    71,    73,    75,    84,    85,    99,
+     112,   156,   181,   194,   195,   196,   197,   257,   119,   177,
+     251,   252,   253,   256,   149,   113,   141,    36,   167,   177,
+     122,   112,    89,    89,    79,   112,   112,    59,    89,    30,
+      48,    66,   158,   159,   194,   256,     3,   112,   122,    27,
+      83,    97,   254,     3,   178,   179,    49,    60,   255,   131,
+     146,   112,   256,   259,   113,   240,   241,   259,   112,    12,
+      13,   111,   246,   247,   248,   249,   259,   242,   243,   259,
+      89,   113,   117,   118,   118,   112,   154,     8,     9,    10,
+      15,    16,    53,    94,   154,   160,   161,   177,   190,   192,
+     249,   259,    19,    20,   182,   183,   184,   256,    12,    71,
+     112,   188,   190,   191,   256,   259,    26,    35,    64,    86,
+      87,   156,   180,   114,   200,   202,   203,    19,    20,   169,
+     170,   113,   117,   244,   245,   259,   113,   117,   114,   113,
+     117,   114,     3,   159,   256,   259,   256,   259,     8,    10,
+      14,    25,    53,    54,    69,    78,    88,    94,   103,   111,
+     112,   114,   177,   192,   206,   207,   208,   209,   210,   211,
+     213,   214,   215,   216,   217,   218,   249,   250,   259,   113,
+     117,   122,   120,   189,   122,   118,    43,   112,    76,    88,
+     112,   201,   202,   112,   201,    39,    40,   112,   204,   205,
+     206,   227,   228,   230,   232,   233,   234,   114,    18,    19,
+      41,    77,   177,   185,   186,   238,   239,   177,   185,   186,
+     113,   117,   241,   113,   117,   114,   248,   191,   249,   259,
+     243,   191,   249,   167,   177,   105,   110,   123,   231,     9,
+     259,    37,    38,   212,   206,   113,   117,   108,   109,   198,
+     106,   107,   199,   105,   114,   231,   161,   183,     7,   193,
+     259,   188,    33,   111,   165,   166,   176,   177,   259,   181,
+     114,    38,   162,   163,   164,   176,   177,   259,    76,   162,
+      76,    33,   177,   256,   115,   112,   204,   188,   238,   122,
+     238,   238,    96,   168,   238,   238,   103,   171,   172,   170,
+     245,    12,   191,   115,   115,   115,   115,   211,   123,   110,
+      68,   215,   202,   219,   112,   220,   221,   222,   193,   115,
+     111,   209,   210,   211,   206,    68,   215,     7,   259,   121,
+     113,   117,   177,   204,    76,   113,   117,   238,   177,   258,
+     259,   113,   258,   112,   113,   124,   235,   236,   115,    19,
+      20,   238,    90,   115,   115,   123,   111,   223,   224,   259,
+     260,   261,   117,   115,   191,   249,   166,   115,   177,     4,
+     164,   238,   251,   251,   229,   122,   237,   259,   113,   117,
+     112,   117,   113,   117,   200,   207,   163,   179,   179,   193,
+     237,   122,   236,   173,   223,   224,    23,    77,    81,   225,
+     226,     5,   259,     6,    21,   119,   174,   175,   184,   113,
+     174,   113,   175,   120
 };
 
 #define yyerrok		(yyerrstatus = 0)
@@ -2266,21 +2311,21 @@
   switch (yyn)
     {
         case 2:
-#line 367 "asn1p_y.y"
+#line 378 "asn1p_y.y"
     {
 		*(void **)param = (yyvsp[(2) - (2)].a_grammar);
 	}
     break;
 
   case 3:
-#line 370 "asn1p_y.y"
+#line 381 "asn1p_y.y"
     {
 		*(void **)param = (yyvsp[(1) - (1)].a_grammar);
 	}
     break;
 
   case 4:
-#line 376 "asn1p_y.y"
+#line 387 "asn1p_y.y"
     {
 		(yyval.a_grammar) = asn1p_new();
 		checkmem((yyval.a_grammar));
@@ -2289,7 +2334,7 @@
     break;
 
   case 5:
-#line 381 "asn1p_y.y"
+#line 392 "asn1p_y.y"
     {
 		(yyval.a_grammar) = (yyvsp[(1) - (2)].a_grammar);
 		TQ_ADD(&((yyval.a_grammar)->modules), (yyvsp[(2) - (2)].a_module), mod_next);
@@ -2297,12 +2342,12 @@
     break;
 
   case 6:
-#line 398 "asn1p_y.y"
+#line 409 "asn1p_y.y"
     { currentModule = asn1p_module_new(); }
     break;
 
   case 7:
-#line 403 "asn1p_y.y"
+#line 414 "asn1p_y.y"
     {
 
 		(yyval.a_module) = currentModule;
@@ -2323,31 +2368,31 @@
     break;
 
   case 8:
-#line 427 "asn1p_y.y"
+#line 438 "asn1p_y.y"
     { (yyval.a_oid) = 0; }
     break;
 
   case 9:
-#line 428 "asn1p_y.y"
+#line 439 "asn1p_y.y"
     { (yyval.a_oid) = (yyvsp[(1) - (1)].a_oid); }
     break;
 
   case 10:
-#line 432 "asn1p_y.y"
+#line 443 "asn1p_y.y"
     {
 		(yyval.a_oid) = (yyvsp[(2) - (3)].a_oid);
 	}
     break;
 
   case 11:
-#line 435 "asn1p_y.y"
+#line 446 "asn1p_y.y"
     {
 		(yyval.a_oid) = 0;
 	}
     break;
 
   case 12:
-#line 441 "asn1p_y.y"
+#line 452 "asn1p_y.y"
     {
 		(yyval.a_oid) = asn1p_oid_new();
 		asn1p_oid_add_arc((yyval.a_oid), &(yyvsp[(1) - (1)].a_oid_arc));
@@ -2357,7 +2402,7 @@
     break;
 
   case 13:
-#line 447 "asn1p_y.y"
+#line 458 "asn1p_y.y"
     {
 		(yyval.a_oid) = (yyvsp[(1) - (2)].a_oid);
 		asn1p_oid_add_arc((yyval.a_oid), &(yyvsp[(2) - (2)].a_oid_arc));
@@ -2367,7 +2412,7 @@
     break;
 
   case 14:
-#line 456 "asn1p_y.y"
+#line 467 "asn1p_y.y"
     {					/* iso */
 		(yyval.a_oid_arc).name = (yyvsp[(1) - (1)].tv_str);
 		(yyval.a_oid_arc).number = -1;
@@ -2375,7 +2420,7 @@
     break;
 
   case 15:
-#line 460 "asn1p_y.y"
+#line 471 "asn1p_y.y"
     {		/* iso(1) */
 		(yyval.a_oid_arc).name = (yyvsp[(1) - (4)].tv_str);
 		(yyval.a_oid_arc).number = (yyvsp[(3) - (4)].a_int);
@@ -2383,7 +2428,7 @@
     break;
 
   case 16:
-#line 464 "asn1p_y.y"
+#line 475 "asn1p_y.y"
     {					/* 1 */
 		(yyval.a_oid_arc).name = 0;
 		(yyval.a_oid_arc).number = (yyvsp[(1) - (1)].a_int);
@@ -2391,61 +2436,61 @@
     break;
 
   case 17:
-#line 474 "asn1p_y.y"
+#line 485 "asn1p_y.y"
     { (yyval.a_module_flags) = MSF_NOFLAGS; }
     break;
 
   case 18:
-#line 475 "asn1p_y.y"
+#line 486 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = (yyvsp[(1) - (1)].a_module_flags);
 	}
     break;
 
   case 19:
-#line 484 "asn1p_y.y"
+#line 495 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = (yyvsp[(1) - (1)].a_module_flags);
 	}
     break;
 
   case 20:
-#line 487 "asn1p_y.y"
+#line 498 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = (yyvsp[(1) - (2)].a_module_flags) | (yyvsp[(2) - (2)].a_module_flags);
 	}
     break;
 
   case 21:
-#line 496 "asn1p_y.y"
+#line 507 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_EXPLICIT_TAGS;
 	}
     break;
 
   case 22:
-#line 499 "asn1p_y.y"
+#line 510 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_IMPLICIT_TAGS;
 	}
     break;
 
   case 23:
-#line 502 "asn1p_y.y"
+#line 513 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_AUTOMATIC_TAGS;
 	}
     break;
 
   case 24:
-#line 505 "asn1p_y.y"
+#line 516 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_EXTENSIBILITY_IMPLIED;
 	}
     break;
 
   case 25:
-#line 509 "asn1p_y.y"
+#line 520 "asn1p_y.y"
     {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp((yyvsp[(1) - (2)].tv_str), "TAG") == 0) {
@@ -2464,19 +2509,19 @@
     break;
 
   case 26:
-#line 530 "asn1p_y.y"
+#line 541 "asn1p_y.y"
     { (yyval.a_module) = 0; }
     break;
 
   case 27:
-#line 531 "asn1p_y.y"
+#line 542 "asn1p_y.y"
     {
 		(yyval.a_module) = (yyvsp[(1) - (1)].a_module);
 	}
     break;
 
   case 28:
-#line 540 "asn1p_y.y"
+#line 551 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		AL_IMPORT((yyval.a_module), exports, (yyvsp[(1) - (3)].a_module), xp_next);
@@ -2490,14 +2535,14 @@
     break;
 
   case 29:
-#line 553 "asn1p_y.y"
+#line 564 "asn1p_y.y"
     {
 		(yyval.a_module) = (yyvsp[(1) - (1)].a_module);
 	}
     break;
 
   case 30:
-#line 556 "asn1p_y.y"
+#line 567 "asn1p_y.y"
     {
 		if((yyvsp[(1) - (2)].a_module)) {
 			(yyval.a_module) = (yyvsp[(1) - (2)].a_module);
@@ -2511,7 +2556,7 @@
     break;
 
   case 31:
-#line 573 "asn1p_y.y"
+#line 584 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2522,7 +2567,7 @@
     break;
 
   case 32:
-#line 580 "asn1p_y.y"
+#line 591 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2533,7 +2578,7 @@
     break;
 
   case 33:
-#line 594 "asn1p_y.y"
+#line 605 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2544,12 +2589,12 @@
     break;
 
   case 34:
-#line 602 "asn1p_y.y"
+#line 613 "asn1p_y.y"
     { asn1p_lexer_hack_push_encoding_control(); }
     break;
 
   case 35:
-#line 603 "asn1p_y.y"
+#line 614 "asn1p_y.y"
     {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -2561,7 +2606,7 @@
     break;
 
   case 36:
-#line 615 "asn1p_y.y"
+#line 626 "asn1p_y.y"
     {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -2570,12 +2615,12 @@
     break;
 
   case 37:
-#line 628 "asn1p_y.y"
+#line 639 "asn1p_y.y"
     { (yyval.a_module) = 0; }
     break;
 
   case 39:
-#line 632 "asn1p_y.y"
+#line 643 "asn1p_y.y"
     {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -2586,19 +2631,19 @@
     break;
 
   case 40:
-#line 642 "asn1p_y.y"
+#line 653 "asn1p_y.y"
     {
 		return yyerror("Empty IMPORTS list");
 	}
     break;
 
   case 41:
-#line 648 "asn1p_y.y"
+#line 659 "asn1p_y.y"
     { (yyval.a_module) = asn1p_module_new(); }
     break;
 
   case 43:
-#line 652 "asn1p_y.y"
+#line 663 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2607,7 +2652,7 @@
     break;
 
   case 44:
-#line 657 "asn1p_y.y"
+#line 668 "asn1p_y.y"
     {
 		(yyval.a_module) = (yyvsp[(1) - (2)].a_module);
 		TQ_ADD(&((yyval.a_module)->imports), (yyvsp[(2) - (2)].a_xports), xp_next);
@@ -2615,17 +2660,17 @@
     break;
 
   case 45:
-#line 664 "asn1p_y.y"
+#line 675 "asn1p_y.y"
     { memset(&(yyval.a_aid), 0, sizeof((yyval.a_aid))); }
     break;
 
   case 46:
-#line 665 "asn1p_y.y"
+#line 676 "asn1p_y.y"
     { (yyval.a_aid).oid = (yyvsp[(1) - (1)].a_oid); }
     break;
 
   case 47:
-#line 669 "asn1p_y.y"
+#line 680 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(1) - (4)].a_xports);
 		(yyval.a_xports)->fromModuleName = (yyvsp[(3) - (4)].tv_str);
@@ -2637,7 +2682,7 @@
     break;
 
   case 48:
-#line 680 "asn1p_y.y"
+#line 691 "asn1p_y.y"
     {
 		(yyval.a_xports) = asn1p_xports_new();
 		checkmem((yyval.a_xports));
@@ -2646,7 +2691,7 @@
     break;
 
   case 49:
-#line 685 "asn1p_y.y"
+#line 696 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(1) - (3)].a_xports);
 		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(3) - (3)].a_expr), next);
@@ -2654,7 +2699,7 @@
     break;
 
   case 50:
-#line 692 "asn1p_y.y"
+#line 703 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2664,7 +2709,7 @@
     break;
 
   case 51:
-#line 698 "asn1p_y.y"
+#line 709 "asn1p_y.y"
     {		/* Completely equivalent to above */
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2674,7 +2719,7 @@
     break;
 
   case 52:
-#line 704 "asn1p_y.y"
+#line 715 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2684,12 +2729,12 @@
     break;
 
   case 53:
-#line 714 "asn1p_y.y"
+#line 725 "asn1p_y.y"
     { (yyval.a_module) = 0; }
     break;
 
   case 54:
-#line 715 "asn1p_y.y"
+#line 726 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2702,21 +2747,21 @@
     break;
 
   case 55:
-#line 727 "asn1p_y.y"
+#line 738 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(2) - (3)].a_xports);
 	}
     break;
 
   case 56:
-#line 730 "asn1p_y.y"
+#line 741 "asn1p_y.y"
     {
 		(yyval.a_xports) = 0;
 	}
     break;
 
   case 57:
-#line 733 "asn1p_y.y"
+#line 744 "asn1p_y.y"
     {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		(yyval.a_xports) = asn1p_xports_new();
@@ -2725,7 +2770,7 @@
     break;
 
   case 58:
-#line 741 "asn1p_y.y"
+#line 752 "asn1p_y.y"
     {
 		(yyval.a_xports) = asn1p_xports_new();
 		assert((yyval.a_xports));
@@ -2734,7 +2779,7 @@
     break;
 
   case 59:
-#line 746 "asn1p_y.y"
+#line 757 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(1) - (3)].a_xports);
 		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(3) - (3)].a_expr), next);
@@ -2742,7 +2787,7 @@
     break;
 
   case 60:
-#line 753 "asn1p_y.y"
+#line 764 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2752,7 +2797,7 @@
     break;
 
   case 61:
-#line 759 "asn1p_y.y"
+#line 770 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2762,7 +2807,7 @@
     break;
 
   case 62:
-#line 765 "asn1p_y.y"
+#line 776 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2772,12 +2817,12 @@
     break;
 
   case 63:
-#line 774 "asn1p_y.y"
+#line 785 "asn1p_y.y"
     { (yyval.a_constr) = (yyvsp[(2) - (3)].a_constr); }
     break;
 
   case 64:
-#line 777 "asn1p_y.y"
+#line 788 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (4)].a_expr);
 		assert((yyval.a_expr)->Identifier == 0);
@@ -2788,14 +2833,14 @@
     break;
 
   case 65:
-#line 787 "asn1p_y.y"
+#line 798 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 66:
-#line 800 "asn1p_y.y"
+#line 811 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2806,7 +2851,7 @@
     break;
 
   case 67:
-#line 810 "asn1p_y.y"
+#line 821 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2818,7 +2863,7 @@
     break;
 
   case 68:
-#line 830 "asn1p_y.y"
+#line 841 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (3)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -2828,7 +2873,7 @@
     break;
 
   case 69:
-#line 836 "asn1p_y.y"
+#line 847 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (3)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -2838,7 +2883,7 @@
     break;
 
   case 70:
-#line 852 "asn1p_y.y"
+#line 863 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(6) - (6)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (6)].tv_str);
@@ -2847,7 +2892,7 @@
     break;
 
   case 71:
-#line 858 "asn1p_y.y"
+#line 869 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(6) - (6)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (6)].tv_str);
@@ -2856,7 +2901,7 @@
     break;
 
   case 72:
-#line 866 "asn1p_y.y"
+#line 877 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_plist) = asn1p_paramlist_new(yylineno);
@@ -2869,7 +2914,7 @@
     break;
 
   case 73:
-#line 875 "asn1p_y.y"
+#line 886 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_plist) = (yyvsp[(1) - (3)].a_plist);
@@ -2881,7 +2926,7 @@
     break;
 
   case 74:
-#line 886 "asn1p_y.y"
+#line 897 "asn1p_y.y"
     {
 		(yyval.a_parg).governor = NULL;
 		(yyval.a_parg).argument = (yyvsp[(1) - (1)].tv_str);
@@ -2889,7 +2934,7 @@
     break;
 
   case 75:
-#line 890 "asn1p_y.y"
+#line 901 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2901,7 +2946,7 @@
     break;
 
   case 76:
-#line 898 "asn1p_y.y"
+#line 909 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2913,7 +2958,7 @@
     break;
 
   case 77:
-#line 906 "asn1p_y.y"
+#line 917 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2925,7 +2970,7 @@
     break;
 
   case 78:
-#line 914 "asn1p_y.y"
+#line 925 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2937,7 +2982,7 @@
     break;
 
   case 79:
-#line 925 "asn1p_y.y"
+#line 936 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2946,7 +2991,7 @@
     break;
 
   case 80:
-#line 930 "asn1p_y.y"
+#line 941 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -2954,14 +2999,14 @@
     break;
 
   case 81:
-#line 937 "asn1p_y.y"
+#line 948 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 82:
-#line 940 "asn1p_y.y"
+#line 951 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2973,7 +3018,7 @@
     break;
 
   case 83:
-#line 948 "asn1p_y.y"
+#line 959 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		(yyval.a_expr) = NEW_EXPR();
@@ -2988,7 +3033,7 @@
     break;
 
   case 84:
-#line 959 "asn1p_y.y"
+#line 970 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->expr_type = A1TC_VALUESET;
@@ -2998,17 +3043,17 @@
     break;
 
   case 85:
-#line 982 "asn1p_y.y"
+#line 993 "asn1p_y.y"
     { (yyval.a_expr) = NEW_EXPR(); }
     break;
 
   case 86:
-#line 983 "asn1p_y.y"
+#line 994 "asn1p_y.y"
     { (yyval.a_expr) = (yyvsp[(1) - (1)].a_expr); }
     break;
 
   case 87:
-#line 986 "asn1p_y.y"
+#line 997 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3017,7 +3062,7 @@
     break;
 
   case 88:
-#line 991 "asn1p_y.y"
+#line 1002 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3025,7 +3070,7 @@
     break;
 
   case 89:
-#line 995 "asn1p_y.y"
+#line 1006 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (5)].a_expr);
 		asn1p_expr_add_many((yyval.a_expr), (yyvsp[(4) - (5)].a_expr));
@@ -3034,7 +3079,7 @@
     break;
 
   case 90:
-#line 1003 "asn1p_y.y"
+#line 1014 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
 		assert((yyval.a_expr)->Identifier == 0);
@@ -3045,7 +3090,7 @@
     break;
 
   case 91:
-#line 1010 "asn1p_y.y"
+#line 1021 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (2)].a_expr);
 		(yyvsp[(2) - (2)].a_marker).flags |= (yyval.a_expr)->marker.flags;
@@ -3055,7 +3100,7 @@
     break;
 
   case 92:
-#line 1016 "asn1p_y.y"
+#line 1027 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3066,14 +3111,14 @@
     break;
 
   case 93:
-#line 1023 "asn1p_y.y"
+#line 1034 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 94:
-#line 1029 "asn1p_y.y"
+#line 1040 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3082,7 +3127,7 @@
     break;
 
   case 95:
-#line 1034 "asn1p_y.y"
+#line 1045 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3090,7 +3135,7 @@
     break;
 
   case 96:
-#line 1041 "asn1p_y.y"
+#line 1052 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
 		assert((yyval.a_expr)->Identifier == 0);
@@ -3099,14 +3144,14 @@
     break;
 
   case 97:
-#line 1046 "asn1p_y.y"
+#line 1057 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 98:
-#line 1049 "asn1p_y.y"
+#line 1060 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 		_fixup_anonymous_identifier((yyval.a_expr));
@@ -3114,7 +3159,7 @@
     break;
 
   case 99:
-#line 1056 "asn1p_y.y"
+#line 1067 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (5)].a_expr);
 		checkmem((yyval.a_expr));
@@ -3125,17 +3170,17 @@
     break;
 
   case 100:
-#line 1066 "asn1p_y.y"
+#line 1077 "asn1p_y.y"
     { (yyval.a_int) = 0; }
     break;
 
   case 101:
-#line 1067 "asn1p_y.y"
+#line 1078 "asn1p_y.y"
     { (yyval.a_int) = 1; }
     break;
 
   case 102:
-#line 1071 "asn1p_y.y"
+#line 1082 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3146,7 +3191,7 @@
     break;
 
   case 103:
-#line 1078 "asn1p_y.y"
+#line 1089 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3154,7 +3199,7 @@
     break;
 
   case 104:
-#line 1088 "asn1p_y.y"
+#line 1099 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3166,7 +3211,7 @@
     break;
 
   case 105:
-#line 1098 "asn1p_y.y"
+#line 1109 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
@@ -3179,7 +3224,7 @@
     break;
 
   case 106:
-#line 1109 "asn1p_y.y"
+#line 1120 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -3191,7 +3236,7 @@
     break;
 
   case 107:
-#line 1119 "asn1p_y.y"
+#line 1130 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3204,7 +3249,7 @@
     break;
 
   case 108:
-#line 1130 "asn1p_y.y"
+#line 1141 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -3216,7 +3261,7 @@
     break;
 
   case 109:
-#line 1140 "asn1p_y.y"
+#line 1151 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3229,7 +3274,7 @@
     break;
 
   case 110:
-#line 1151 "asn1p_y.y"
+#line 1162 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3242,31 +3287,31 @@
     break;
 
   case 111:
-#line 1163 "asn1p_y.y"
+#line 1174 "asn1p_y.y"
     { (yyval.a_wsynt) = 0; }
     break;
 
   case 112:
-#line 1164 "asn1p_y.y"
+#line 1175 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = (yyvsp[(1) - (1)].a_wsynt);
 	}
     break;
 
   case 113:
-#line 1171 "asn1p_y.y"
+#line 1182 "asn1p_y.y"
     { asn1p_lexer_hack_enable_with_syntax(); }
     break;
 
   case 114:
-#line 1173 "asn1p_y.y"
+#line 1184 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = (yyvsp[(5) - (6)].a_wsynt);
 	}
     break;
 
   case 115:
-#line 1179 "asn1p_y.y"
+#line 1190 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = asn1p_wsyntx_new();
 		TQ_ADD(&((yyval.a_wsynt)->chunks), (yyvsp[(1) - (1)].a_wchunk), next);
@@ -3274,7 +3319,7 @@
     break;
 
   case 116:
-#line 1183 "asn1p_y.y"
+#line 1194 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = (yyvsp[(1) - (2)].a_wsynt);
 		TQ_ADD(&((yyval.a_wsynt)->chunks), (yyvsp[(2) - (2)].a_wchunk), next);
@@ -3282,7 +3327,7 @@
     break;
 
   case 117:
-#line 1190 "asn1p_y.y"
+#line 1201 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].tv_opaque).buf, 0);
 		(yyval.a_wchunk)->type = WC_WHITESPACE;
@@ -3290,14 +3335,14 @@
     break;
 
   case 118:
-#line 1194 "asn1p_y.y"
+#line 1205 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].tv_str), 0);
 	}
     break;
 
   case 119:
-#line 1197 "asn1p_y.y"
+#line 1208 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].a_refcomp).name, 0);
 		(yyval.a_wchunk)->type = WC_FIELD;
@@ -3305,14 +3350,14 @@
     break;
 
   case 120:
-#line 1201 "asn1p_y.y"
+#line 1212 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromsyntax((yyvsp[(2) - (3)].a_wsynt));
 	}
     break;
 
   case 121:
-#line 1207 "asn1p_y.y"
+#line 1218 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3324,7 +3369,7 @@
     break;
 
   case 122:
-#line 1215 "asn1p_y.y"
+#line 1226 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3337,7 +3382,7 @@
     break;
 
   case 123:
-#line 1224 "asn1p_y.y"
+#line 1235 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3350,7 +3395,7 @@
     break;
 
   case 124:
-#line 1236 "asn1p_y.y"
+#line 1247 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
 		(yyval.a_expr)->tag = (yyvsp[(1) - (3)].a_tag);
@@ -3375,7 +3420,7 @@
     break;
 
   case 125:
-#line 1260 "asn1p_y.y"
+#line 1271 "asn1p_y.y"
     {
 		(yyval.a_int) = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
@@ -3383,7 +3428,7 @@
     break;
 
   case 126:
-#line 1267 "asn1p_y.y"
+#line 1278 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
 		(yyval.a_expr)->marker.flags |= (yyvsp[(1) - (2)].a_int);
@@ -3403,14 +3448,14 @@
     break;
 
   case 127:
-#line 1286 "asn1p_y.y"
+#line 1297 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 128:
-#line 1289 "asn1p_y.y"
+#line 1300 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
 		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
@@ -3420,7 +3465,7 @@
     break;
 
   case 129:
-#line 1295 "asn1p_y.y"
+#line 1306 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
 		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
@@ -3430,7 +3475,7 @@
     break;
 
   case 130:
-#line 1301 "asn1p_y.y"
+#line 1312 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
 		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
@@ -3440,7 +3485,7 @@
     break;
 
   case 131:
-#line 1307 "asn1p_y.y"
+#line 1318 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3454,7 +3499,7 @@
     break;
 
   case 132:
-#line 1317 "asn1p_y.y"
+#line 1328 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3468,7 +3513,7 @@
     break;
 
   case 133:
-#line 1327 "asn1p_y.y"
+#line 1338 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3478,7 +3523,7 @@
     break;
 
   case 134:
-#line 1333 "asn1p_y.y"
+#line 1344 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_expr) = NEW_EXPR();
@@ -3494,7 +3539,7 @@
     break;
 
   case 135:
-#line 1345 "asn1p_y.y"
+#line 1356 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3505,7 +3550,7 @@
     break;
 
   case 136:
-#line 1360 "asn1p_y.y"
+#line 1371 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3517,21 +3562,6 @@
     break;
 
   case 137:
-#line 1368 "asn1p_y.y"
-    {
-		int ret;
-		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
-		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_UNKNOWN);
-		checkmem(ret == 0);
-		free((yyvsp[(1) - (3)].tv_str));
-		free((yyvsp[(3) - (3)].tv_str));
-	}
-    break;
-
-  case 138:
 #line 1379 "asn1p_y.y"
     {
 		int ret;
@@ -3546,7 +3576,7 @@
 	}
     break;
 
-  case 139:
+  case 138:
 #line 1390 "asn1p_y.y"
     {
 		int ret;
@@ -3554,6 +3584,21 @@
 		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_UNKNOWN);
+		checkmem(ret == 0);
+		free((yyvsp[(1) - (3)].tv_str));
+		free((yyvsp[(3) - (3)].tv_str));
+	}
+    break;
+
+  case 139:
+#line 1401 "asn1p_y.y"
+    {
+		int ret;
+		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
+		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));
@@ -3562,7 +3607,7 @@
     break;
 
   case 140:
-#line 1401 "asn1p_y.y"
+#line 1412 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3574,7 +3619,7 @@
     break;
 
   case 141:
-#line 1409 "asn1p_y.y"
+#line 1420 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = (yyvsp[(3) - (3)].a_ref);
@@ -3597,7 +3642,7 @@
     break;
 
   case 142:
-#line 1431 "asn1p_y.y"
+#line 1442 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3609,7 +3654,7 @@
     break;
 
   case 143:
-#line 1439 "asn1p_y.y"
+#line 1450 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = (yyvsp[(1) - (3)].a_ref);
@@ -3620,7 +3665,7 @@
     break;
 
   case 145:
-#line 1452 "asn1p_y.y"
+#line 1463 "asn1p_y.y"
     {
 		(yyval.a_refcomp).lex_type = RLT_AmpUppercase;
 		(yyval.a_refcomp).name = (yyvsp[(1) - (1)].tv_str);
@@ -3628,7 +3673,7 @@
     break;
 
   case 146:
-#line 1457 "asn1p_y.y"
+#line 1468 "asn1p_y.y"
     {
 		(yyval.a_refcomp).lex_type = RLT_Amplowercase;
 		(yyval.a_refcomp).name = (yyvsp[(1) - (1)].tv_str);
@@ -3636,7 +3681,7 @@
     break;
 
   case 147:
-#line 1466 "asn1p_y.y"
+#line 1477 "asn1p_y.y"
     {
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_AmpUppercase);
@@ -3645,7 +3690,7 @@
     break;
 
   case 148:
-#line 1471 "asn1p_y.y"
+#line 1482 "asn1p_y.y"
     {
 		(yyval.a_ref) = (yyval.a_ref);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_AmpUppercase);
@@ -3654,7 +3699,7 @@
     break;
 
   case 149:
-#line 1476 "asn1p_y.y"
+#line 1487 "asn1p_y.y"
     {
 		(yyval.a_ref) = (yyval.a_ref);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_Amplowercase);
@@ -3663,7 +3708,7 @@
     break;
 
   case 150:
-#line 1484 "asn1p_y.y"
+#line 1495 "asn1p_y.y"
     {
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_CAPITALS);
@@ -3672,7 +3717,7 @@
     break;
 
   case 151:
-#line 1507 "asn1p_y.y"
+#line 1518 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (4)].a_expr);
 		assert((yyval.a_expr)->Identifier == NULL);
@@ -3683,7 +3728,7 @@
     break;
 
   case 154:
-#line 1519 "asn1p_y.y"
+#line 1530 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -3694,12 +3739,12 @@
     break;
 
   case 155:
-#line 1526 "asn1p_y.y"
+#line 1537 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 156:
-#line 1526 "asn1p_y.y"
+#line 1537 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_frombuf((yyvsp[(3) - (3)].tv_opaque).buf, (yyvsp[(3) - (3)].tv_opaque).len, 0);
 		checkmem((yyval.a_value));
@@ -3708,7 +3753,7 @@
     break;
 
   case 157:
-#line 1531 "asn1p_y.y"
+#line 1542 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -3717,7 +3762,7 @@
     break;
 
   case 158:
-#line 1539 "asn1p_y.y"
+#line 1550 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -3726,7 +3771,7 @@
     break;
 
   case 159:
-#line 1544 "asn1p_y.y"
+#line 1555 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -3735,7 +3780,7 @@
     break;
 
   case 160:
-#line 1549 "asn1p_y.y"
+#line 1560 "asn1p_y.y"
     {
 		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'B');
 		checkmem((yyval.a_value));
@@ -3744,7 +3789,7 @@
     break;
 
   case 161:
-#line 1554 "asn1p_y.y"
+#line 1565 "asn1p_y.y"
     {
 		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'H');
 		checkmem((yyval.a_value));
@@ -3753,21 +3798,21 @@
     break;
 
   case 162:
-#line 1559 "asn1p_y.y"
+#line 1570 "asn1p_y.y"
     {
 		(yyval.a_value) = (yyval.a_value);
 	}
     break;
 
   case 163:
-#line 1562 "asn1p_y.y"
+#line 1573 "asn1p_y.y"
     {
 		(yyval.a_value) = (yyvsp[(1) - (1)].a_value);
 	}
     break;
 
   case 164:
-#line 1568 "asn1p_y.y"
+#line 1579 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3782,7 +3827,7 @@
     break;
 
   case 165:
-#line 1579 "asn1p_y.y"
+#line 1590 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3800,7 +3845,7 @@
     break;
 
   case 166:
-#line 1597 "asn1p_y.y"
+#line 1608 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_frombuf((yyvsp[(1) - (1)].tv_opaque).buf, (yyvsp[(1) - (1)].tv_opaque).len, 0);
 		checkmem((yyval.a_value));
@@ -3808,7 +3853,7 @@
     break;
 
   case 167:
-#line 1601 "asn1p_y.y"
+#line 1612 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
@@ -3817,7 +3862,7 @@
     break;
 
   case 168:
-#line 1606 "asn1p_y.y"
+#line 1617 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
@@ -3826,7 +3871,7 @@
     break;
 
   case 169:
-#line 1614 "asn1p_y.y"
+#line 1625 "asn1p_y.y"
     {
 		(yyval.tv_opaque).len = (yyvsp[(1) - (1)].tv_opaque).len + 1;
 		(yyval.tv_opaque).buf = malloc((yyval.tv_opaque).len + 1);
@@ -3839,7 +3884,7 @@
     break;
 
   case 170:
-#line 1623 "asn1p_y.y"
+#line 1634 "asn1p_y.y"
     {
 		int newsize = (yyvsp[(1) - (2)].tv_opaque).len + (yyvsp[(2) - (2)].tv_opaque).len;
 		char *p = malloc(newsize + 1);
@@ -3855,87 +3900,77 @@
     break;
 
   case 171:
-#line 1638 "asn1p_y.y"
+#line 1649 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_BOOLEAN; }
     break;
 
   case 172:
-#line 1639 "asn1p_y.y"
+#line 1650 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_NULL; }
     break;
 
   case 173:
-#line 1640 "asn1p_y.y"
+#line 1651 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_REAL; }
     break;
 
   case 174:
-#line 1641 "asn1p_y.y"
-    { (yyval.a_type) = (yyvsp[(1) - (1)].a_type); }
-    break;
-
-  case 175:
-#line 1642 "asn1p_y.y"
+#line 1652 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_OCTET_STRING; }
     break;
 
-  case 176:
-#line 1643 "asn1p_y.y"
+  case 175:
+#line 1653 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_OBJECT_IDENTIFIER; }
     break;
 
-  case 177:
-#line 1644 "asn1p_y.y"
+  case 176:
+#line 1654 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_RELATIVE_OID; }
     break;
 
-  case 178:
-#line 1645 "asn1p_y.y"
+  case 177:
+#line 1655 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_EXTERNAL; }
     break;
 
-  case 179:
-#line 1646 "asn1p_y.y"
+  case 178:
+#line 1656 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_EMBEDDED_PDV; }
     break;
 
-  case 180:
-#line 1647 "asn1p_y.y"
+  case 179:
+#line 1657 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_CHARACTER_STRING; }
     break;
 
-  case 181:
-#line 1648 "asn1p_y.y"
+  case 180:
+#line 1658 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_UTCTime; }
     break;
 
-  case 182:
-#line 1649 "asn1p_y.y"
+  case 181:
+#line 1659 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_GeneralizedTime; }
     break;
 
-  case 183:
-#line 1650 "asn1p_y.y"
-    { (yyval.a_type) = (yyvsp[(1) - (1)].a_type); }
-    break;
-
   case 184:
-#line 1657 "asn1p_y.y"
+#line 1668 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_INTEGER; }
     break;
 
   case 185:
-#line 1658 "asn1p_y.y"
-    { (yyval.a_type) = ASN_BASIC_ENUMERATED; }
+#line 1669 "asn1p_y.y"
+    { (yyval.a_type) = ASN_BASIC_INTEGER; }
     break;
 
   case 186:
-#line 1659 "asn1p_y.y"
+#line 1670 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_BIT_STRING; }
     break;
 
   case 187:
-#line 1663 "asn1p_y.y"
+#line 1674 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3945,149 +3980,181 @@
     break;
 
   case 188:
-#line 1669 "asn1p_y.y"
+#line 1680 "asn1p_y.y"
     {
-		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)->expr_type = (yyvsp[(1) - (2)].a_type);
-		(yyval.a_expr)->meta_type = AMT_TYPE;
-	}
+        (yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
+        (yyval.a_expr)->expr_type = ASN_BASIC_INTEGER;
+        (yyval.a_expr)->meta_type = AMT_TYPE;
+    }
     break;
 
   case 189:
-#line 1682 "asn1p_y.y"
-    { (yyval.a_type) = ASN_STRING_BMPString; }
+#line 1685 "asn1p_y.y"
+    {
+        (yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
+        (yyval.a_expr)->expr_type = ASN_BASIC_ENUMERATED;
+        (yyval.a_expr)->meta_type = AMT_TYPE;
+    }
     break;
 
   case 190:
-#line 1683 "asn1p_y.y"
+#line 1690 "asn1p_y.y"
+    {
+        (yyval.a_expr) = (yyvsp[(4) - (5)].a_expr);
+        (yyval.a_expr)->expr_type = ASN_BASIC_BIT_STRING;
+        (yyval.a_expr)->meta_type = AMT_TYPE;
+    }
+    break;
+
+  case 191:
+#line 1695 "asn1p_y.y"
+    {
+        (yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
+        (yyval.a_expr)->expr_type = ASN_BASIC_BIT_STRING;
+        (yyval.a_expr)->meta_type = AMT_TYPE;
+    }
+    break;
+
+  case 192:
+#line 1700 "asn1p_y.y"
+    {
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+        (yyval.a_expr)->expr_type = ASN_BASIC_BIT_STRING;
+        (yyval.a_expr)->meta_type = AMT_TYPE;
+    }
+    break;
+
+  case 193:
+#line 1709 "asn1p_y.y"
+    { (yyval.a_type) = ASN_STRING_BMPString; }
+    break;
+
+  case 194:
+#line 1710 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	}
     break;
 
-  case 191:
-#line 1687 "asn1p_y.y"
+  case 195:
+#line 1714 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	}
     break;
 
-  case 192:
-#line 1691 "asn1p_y.y"
+  case 196:
+#line 1718 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_IA5String; }
     break;
 
-  case 193:
-#line 1692 "asn1p_y.y"
+  case 197:
+#line 1719 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_ISO646String; }
     break;
 
-  case 194:
-#line 1693 "asn1p_y.y"
+  case 198:
+#line 1720 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_NumericString; }
     break;
 
-  case 195:
-#line 1694 "asn1p_y.y"
+  case 199:
+#line 1721 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_PrintableString; }
     break;
 
-  case 196:
-#line 1695 "asn1p_y.y"
+  case 200:
+#line 1722 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	}
     break;
 
-  case 197:
-#line 1699 "asn1p_y.y"
+  case 201:
+#line 1726 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_TeletexString; }
     break;
 
-  case 198:
-#line 1700 "asn1p_y.y"
+  case 202:
+#line 1727 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_UniversalString; }
     break;
 
-  case 199:
-#line 1701 "asn1p_y.y"
+  case 203:
+#line 1728 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_UTF8String; }
     break;
 
-  case 200:
-#line 1702 "asn1p_y.y"
+  case 204:
+#line 1729 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	}
     break;
 
-  case 201:
-#line 1706 "asn1p_y.y"
+  case 205:
+#line 1733 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_VisibleString; }
     break;
 
-  case 202:
-#line 1707 "asn1p_y.y"
+  case 206:
+#line 1734 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_ObjectDescriptor; }
     break;
 
-  case 207:
-#line 1719 "asn1p_y.y"
-    { (yyval.a_constr) = 0; }
-    break;
-
-  case 209:
-#line 1724 "asn1p_y.y"
-    { (yyval.a_constr) = 0; }
-    break;
-
   case 211:
-#line 1726 "asn1p_y.y"
+#line 1746 "asn1p_y.y"
+    { (yyval.a_constr) = 0; }
+    break;
+
+  case 213:
+#line 1751 "asn1p_y.y"
+    { (yyval.a_constr) = 0; }
+    break;
+
+  case 215:
+#line 1753 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_SIZE, (yyvsp[(3) - (4)].a_constr), 0);
 	}
     break;
 
-  case 212:
-#line 1732 "asn1p_y.y"
+  case 216:
+#line 1759 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_SET, (yyvsp[(1) - (1)].a_constr), 0);
     }
     break;
 
-  case 213:
-#line 1738 "asn1p_y.y"
+  case 217:
+#line 1765 "asn1p_y.y"
     {
 		(yyval.a_constr) = (yyvsp[(2) - (3)].a_constr);
 	}
     break;
 
-  case 214:
-#line 1741 "asn1p_y.y"
+  case 218:
+#line 1768 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_SET, (yyvsp[(1) - (4)].a_constr), (yyvsp[(3) - (4)].a_constr));
 	}
     break;
 
-  case 218:
-#line 1751 "asn1p_y.y"
+  case 222:
+#line 1778 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		(yyval.a_constr)->type = ACT_EL_EXT;
 	}
     break;
 
-  case 220:
-#line 1756 "asn1p_y.y"
+  case 224:
+#line 1783 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno, currentModule);
@@ -4096,8 +4163,8 @@
 	}
     break;
 
-  case 221:
-#line 1762 "asn1p_y.y"
+  case 225:
+#line 1789 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno, currentModule);
@@ -4108,36 +4175,36 @@
 	}
     break;
 
-  case 223:
-#line 1774 "asn1p_y.y"
+  case 227:
+#line 1801 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_AEX, (yyvsp[(3) - (3)].a_constr), 0);
 	}
     break;
 
-  case 225:
-#line 1781 "asn1p_y.y"
+  case 229:
+#line 1808 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_UNI, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
-  case 227:
-#line 1788 "asn1p_y.y"
+  case 231:
+#line 1815 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_INT, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
-  case 229:
-#line 1796 "asn1p_y.y"
+  case 233:
+#line 1823 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_EXC, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
-  case 230:
-#line 1802 "asn1p_y.y"
+  case 234:
+#line 1829 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4148,8 +4215,8 @@
 	}
     break;
 
-  case 231:
-#line 1810 "asn1p_y.y"
+  case 235:
+#line 1837 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4160,8 +4227,8 @@
 	}
     break;
 
-  case 232:
-#line 1818 "asn1p_y.y"
+  case 236:
+#line 1845 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4170,8 +4237,8 @@
 	}
     break;
 
-  case 233:
-#line 1824 "asn1p_y.y"
+  case 237:
+#line 1851 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4180,8 +4247,8 @@
 	}
     break;
 
-  case 234:
-#line 1830 "asn1p_y.y"
+  case 238:
+#line 1857 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4191,8 +4258,8 @@
 	}
     break;
 
-  case 235:
-#line 1837 "asn1p_y.y"
+  case 239:
+#line 1864 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4203,38 +4270,38 @@
 	}
     break;
 
-  case 236:
-#line 1845 "asn1p_y.y"
-    {
-		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
-		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 237:
-#line 1853 "asn1p_y.y"
-    {
-		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
-		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 240:
-#line 1864 "asn1p_y.y"
-    { asn1p_lexer_hack_push_opaque_state(); }
+#line 1872 "asn1p_y.y"
+    {
+		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
+		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 241:
-#line 1864 "asn1p_y.y"
+#line 1880 "asn1p_y.y"
+    {
+		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
+		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 244:
+#line 1891 "asn1p_y.y"
+    { asn1p_lexer_hack_push_opaque_state(); }
+    break;
+
+  case 245:
+#line 1891 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4244,8 +4311,8 @@
 	}
     break;
 
-  case 242:
-#line 1874 "asn1p_y.y"
+  case 246:
+#line 1901 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		(yyval.a_constr)->type = ACT_CT_PATTERN;
@@ -4253,8 +4320,8 @@
 	}
     break;
 
-  case 243:
-#line 1879 "asn1p_y.y"
+  case 247:
+#line 1906 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4266,22 +4333,22 @@
 	}
     break;
 
-  case 244:
-#line 1891 "asn1p_y.y"
+  case 248:
+#line 1918 "asn1p_y.y"
     {
 		(yyval.a_ctype) = ACT_CT_SIZE;
 	}
     break;
 
-  case 245:
-#line 1894 "asn1p_y.y"
+  case 249:
+#line 1921 "asn1p_y.y"
     {
 		(yyval.a_ctype) = ACT_CT_FROM;
 	}
     break;
 
-  case 246:
-#line 1900 "asn1p_y.y"
+  case 250:
+#line 1927 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -4289,8 +4356,8 @@
 	}
     break;
 
-  case 247:
-#line 1905 "asn1p_y.y"
+  case 251:
+#line 1932 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(1);
 		checkmem((yyval.a_value));
@@ -4298,8 +4365,8 @@
 	}
     break;
 
-  case 251:
-#line 1913 "asn1p_y.y"
+  case 255:
+#line 1940 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -4313,8 +4380,8 @@
 	}
     break;
 
-  case 252:
-#line 1927 "asn1p_y.y"
+  case 256:
+#line 1954 "asn1p_y.y"
     {
 		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'B');
 		checkmem((yyval.a_value));
@@ -4322,8 +4389,8 @@
 	}
     break;
 
-  case 253:
-#line 1932 "asn1p_y.y"
+  case 257:
+#line 1959 "asn1p_y.y"
     {
 		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'H');
 		checkmem((yyval.a_value));
@@ -4331,23 +4398,23 @@
 	}
     break;
 
-  case 254:
-#line 1940 "asn1p_y.y"
+  case 258:
+#line 1967 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromtype((yyvsp[(1) - (1)].a_expr));
 		checkmem((yyval.a_value));
     }
     break;
 
-  case 255:
-#line 1951 "asn1p_y.y"
+  case 259:
+#line 1978 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_WCOMP, (yyvsp[(3) - (3)].a_constr), 0);
 	}
     break;
 
-  case 256:
-#line 1954 "asn1p_y.y"
+  case 260:
+#line 1981 "asn1p_y.y"
     {
         assert((yyvsp[(3) - (3)].a_constr)->type == ACT_CA_CSV);
         (yyvsp[(3) - (3)].a_constr)->type = ACT_CT_WCOMPS;
@@ -4355,13 +4422,13 @@
 	}
     break;
 
-  case 260:
-#line 1962 "asn1p_y.y"
+  case 264:
+#line 1989 "asn1p_y.y"
     { (yyval.a_constr) = (yyvsp[(2) - (3)].a_constr); }
     break;
 
-  case 261:
-#line 1964 "asn1p_y.y"
+  case 265:
+#line 1991 "asn1p_y.y"
     {
         assert((yyvsp[(4) - (5)].a_constr)->type == ACT_CA_CSV);
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4376,8 +4443,8 @@
     }
     break;
 
-  case 262:
-#line 1977 "asn1p_y.y"
+  case 266:
+#line 2004 "asn1p_y.y"
     {
         (yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
         (yyval.a_constr)->type = ACT_CA_CSV;
@@ -4385,16 +4452,16 @@
     }
     break;
 
-  case 263:
-#line 1982 "asn1p_y.y"
+  case 267:
+#line 2009 "asn1p_y.y"
     {
         (yyval.a_constr) = (yyvsp[(1) - (3)].a_constr);
         asn1p_constraint_insert((yyval.a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
-  case 264:
-#line 1988 "asn1p_y.y"
+  case 268:
+#line 2015 "asn1p_y.y"
     {
         (yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
         checkmem((yyval.a_constr));
@@ -4405,44 +4472,44 @@
     }
     break;
 
-  case 265:
-#line 2002 "asn1p_y.y"
+  case 269:
+#line 2029 "asn1p_y.y"
     { (yyval.a_pres) = ACPRES_DEFAULT; }
     break;
 
-  case 266:
-#line 2003 "asn1p_y.y"
+  case 270:
+#line 2030 "asn1p_y.y"
     { (yyval.a_pres) = (yyvsp[(1) - (1)].a_pres); }
     break;
 
-  case 267:
-#line 2007 "asn1p_y.y"
+  case 271:
+#line 2034 "asn1p_y.y"
     {
 		(yyval.a_pres) = ACPRES_PRESENT;
 	}
     break;
 
-  case 268:
-#line 2010 "asn1p_y.y"
+  case 272:
+#line 2037 "asn1p_y.y"
     {
 		(yyval.a_pres) = ACPRES_ABSENT;
 	}
     break;
 
-  case 269:
-#line 2013 "asn1p_y.y"
+  case 273:
+#line 2040 "asn1p_y.y"
     {
 		(yyval.a_pres) = ACPRES_OPTIONAL;
 	}
     break;
 
-  case 273:
-#line 2028 "asn1p_y.y"
+  case 277:
+#line 2055 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
-  case 274:
-#line 2028 "asn1p_y.y"
+  case 278:
+#line 2055 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4453,8 +4520,8 @@
 	}
     break;
 
-  case 275:
-#line 2039 "asn1p_y.y"
+  case 279:
+#line 2066 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		(yyval.a_constr)->type = ACT_CT_CTNG;
@@ -4463,42 +4530,42 @@
 	}
     break;
 
-  case 276:
-#line 2048 "asn1p_y.y"
+  case 280:
+#line 2075 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_RANGE; }
     break;
 
-  case 277:
-#line 2049 "asn1p_y.y"
+  case 281:
+#line 2076 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_RLRANGE; }
     break;
 
-  case 278:
-#line 2050 "asn1p_y.y"
+  case 282:
+#line 2077 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_LLRANGE; }
     break;
 
-  case 279:
-#line 2051 "asn1p_y.y"
+  case 283:
+#line 2078 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_ULRANGE; }
     break;
 
-  case 280:
-#line 2054 "asn1p_y.y"
+  case 284:
+#line 2081 "asn1p_y.y"
     {
 		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
-  case 281:
-#line 2057 "asn1p_y.y"
+  case 285:
+#line 2084 "asn1p_y.y"
     {
 		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
-  case 282:
-#line 2066 "asn1p_y.y"
+  case 286:
+#line 2093 "asn1p_y.y"
     {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno, currentModule);
 		asn1p_constraint_t *ct;
@@ -4514,15 +4581,15 @@
 	}
     break;
 
-  case 283:
-#line 2082 "asn1p_y.y"
+  case 287:
+#line 2109 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CRC, (yyvsp[(1) - (4)].a_constr), (yyvsp[(3) - (4)].a_constr));
 	}
     break;
 
-  case 284:
-#line 2088 "asn1p_y.y"
+  case 288:
+#line 2115 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4531,8 +4598,8 @@
 	}
     break;
 
-  case 285:
-#line 2094 "asn1p_y.y"
+  case 289:
+#line 2121 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno, currentModule);
@@ -4543,8 +4610,8 @@
 	}
     break;
 
-  case 286:
-#line 2108 "asn1p_y.y"
+  case 290:
+#line 2135 "asn1p_y.y"
     {
 		char *p = malloc(strlen((yyvsp[(2) - (2)].tv_str)) + 2);
 		int ret;
@@ -4558,8 +4625,8 @@
 	}
     break;
 
-  case 287:
-#line 2119 "asn1p_y.y"
+  case 291:
+#line 2146 "asn1p_y.y"
     {
 		char *p = malloc(strlen((yyvsp[(3) - (3)].tv_str)) + 3);
 		int ret;
@@ -4574,15 +4641,15 @@
 	}
     break;
 
-  case 288:
-#line 2135 "asn1p_y.y"
+  case 292:
+#line 2162 "asn1p_y.y"
     {
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 289:
-#line 2138 "asn1p_y.y"
+  case 293:
+#line 2165 "asn1p_y.y"
     {
 		int l1 = strlen((yyvsp[(1) - (3)].tv_str));
 		int l3 = strlen((yyvsp[(3) - (3)].tv_str));
@@ -4596,52 +4663,65 @@
 	}
     break;
 
-  case 290:
-#line 2158 "asn1p_y.y"
+  case 294:
+#line 2185 "asn1p_y.y"
     {
 		(yyval.a_marker).flags = EM_NOMARK;
 		(yyval.a_marker).default_value = 0;
 	}
     break;
 
-  case 291:
-#line 2162 "asn1p_y.y"
+  case 295:
+#line 2189 "asn1p_y.y"
     { (yyval.a_marker) = (yyvsp[(1) - (1)].a_marker); }
     break;
 
-  case 292:
-#line 2166 "asn1p_y.y"
+  case 296:
+#line 2193 "asn1p_y.y"
     {
 		(yyval.a_marker).flags = EM_OPTIONAL | EM_INDIRECT;
 		(yyval.a_marker).default_value = 0;
 	}
     break;
 
-  case 293:
-#line 2170 "asn1p_y.y"
+  case 297:
+#line 2197 "asn1p_y.y"
     {
 		(yyval.a_marker).flags = EM_DEFAULT;
 		(yyval.a_marker).default_value = (yyvsp[(2) - (2)].a_value);
 	}
     break;
 
-  case 294:
-#line 2193 "asn1p_y.y"
+  case 298:
+#line 2204 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
-	}
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
+    }
     break;
 
-  case 295:
-#line 2197 "asn1p_y.y"
+  case 299:
+#line 2209 "asn1p_y.y"
     {
-		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
-	}
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
+    }
     break;
 
-  case 296:
-#line 2203 "asn1p_y.y"
+  case 300:
+#line 2215 "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[(1) - (1)].tv_str);
+    }
+    break;
+
+  case 301:
+#line 2224 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4649,16 +4729,115 @@
 	}
     break;
 
-  case 297:
-#line 2208 "asn1p_y.y"
+  case 302:
+#line 2229 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
 	}
     break;
 
-  case 298:
-#line 2215 "asn1p_y.y"
+  case 303:
+#line 2236 "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[(1) - (4)].tv_str);
+		(yyval.a_expr)->value = (yyvsp[(3) - (4)].a_value);
+	}
+    break;
+
+  case 304:
+#line 2244 "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[(1) - (4)].tv_str);
+		(yyval.a_expr)->value = (yyvsp[(3) - (4)].a_value);
+	}
+    break;
+
+  case 305:
+#line 2254 "asn1p_y.y"
+    {
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
+	}
+    break;
+
+  case 306:
+#line 2259 "asn1p_y.y"
+    {
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
+	}
+    break;
+
+  case 307:
+#line 2266 "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[(1) - (4)].tv_str);
+		(yyval.a_expr)->value = asn1p_value_fromint((yyvsp[(3) - (4)].a_int));
+	}
+    break;
+
+  case 308:
+#line 2274 "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[(1) - (4)].tv_str);
+		(yyval.a_expr)->value = (yyvsp[(3) - (4)].a_value);
+	}
+    break;
+
+  case 309:
+#line 2284 "asn1p_y.y"
+    {
+		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
+        asn1p_expr_t *first_memb = TQ_FIRST(&((yyval.a_expr)->members));
+        if(first_memb) {
+            if(first_memb->expr_type == A1TC_EXTENSIBLE) {
+                return yyerror(
+                    "The ENUMERATION cannot start with extension (...).");
+            }
+        } else {
+            return yyerror(
+                "The ENUMERATION list cannot be empty.");
+        }
+    }
+    break;
+
+  case 310:
+#line 2299 "asn1p_y.y"
+    {
+		(yyval.a_expr) = NEW_EXPR();
+		checkmem((yyval.a_expr));
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(1) - (1)].a_expr));
+	}
+    break;
+
+  case 311:
+#line 2304 "asn1p_y.y"
+    {
+		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
+		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
+	}
+    break;
+
+  case 312:
+#line 2311 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4668,8 +4847,8 @@
 	}
     break;
 
-  case 299:
-#line 2222 "asn1p_y.y"
+  case 313:
+#line 2318 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4680,8 +4859,8 @@
 	}
     break;
 
-  case 300:
-#line 2230 "asn1p_y.y"
+  case 314:
+#line 2326 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4692,8 +4871,8 @@
 	}
     break;
 
-  case 301:
-#line 2238 "asn1p_y.y"
+  case 315:
+#line 2334 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4703,8 +4882,8 @@
 	}
     break;
 
-  case 302:
-#line 2245 "asn1p_y.y"
+  case 316:
+#line 2341 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4715,145 +4894,145 @@
 	}
     break;
 
-  case 303:
-#line 2256 "asn1p_y.y"
+  case 317:
+#line 2352 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
 	}
     break;
 
-  case 304:
-#line 2260 "asn1p_y.y"
+  case 318:
+#line 2356 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
 	}
     break;
 
-  case 306:
-#line 2268 "asn1p_y.y"
+  case 320:
+#line 2364 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromdouble((yyvsp[(1) - (1)].a_dbl));
 		checkmem((yyval.a_value));
 	}
     break;
 
-  case 307:
-#line 2299 "asn1p_y.y"
+  case 321:
+#line 2395 "asn1p_y.y"
     { memset(&(yyval.a_tag), 0, sizeof((yyval.a_tag))); }
     break;
 
-  case 308:
-#line 2300 "asn1p_y.y"
+  case 322:
+#line 2396 "asn1p_y.y"
     { (yyval.a_tag) = (yyvsp[(1) - (1)].a_tag); }
     break;
 
-  case 309:
-#line 2304 "asn1p_y.y"
+  case 323:
+#line 2400 "asn1p_y.y"
     {
 		(yyval.a_tag) = (yyvsp[(1) - (2)].a_tag);
 		(yyval.a_tag).tag_mode = (yyvsp[(2) - (2)].a_tag).tag_mode;
 	}
     break;
 
-  case 310:
-#line 2311 "asn1p_y.y"
+  case 324:
+#line 2407 "asn1p_y.y"
     {
 		(yyval.a_tag) = (yyvsp[(2) - (4)].a_tag);
 		(yyval.a_tag).tag_value = (yyvsp[(3) - (4)].a_int);
 	}
     break;
 
-  case 311:
-#line 2317 "asn1p_y.y"
+  case 325:
+#line 2413 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_CONTEXT_SPECIFIC; }
     break;
 
-  case 312:
-#line 2318 "asn1p_y.y"
+  case 326:
+#line 2414 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_UNIVERSAL; }
     break;
 
-  case 313:
-#line 2319 "asn1p_y.y"
+  case 327:
+#line 2415 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_APPLICATION; }
     break;
 
-  case 314:
-#line 2320 "asn1p_y.y"
+  case 328:
+#line 2416 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_PRIVATE; }
     break;
 
-  case 315:
-#line 2324 "asn1p_y.y"
+  case 329:
+#line 2420 "asn1p_y.y"
     { (yyval.a_tag).tag_mode = TM_DEFAULT; }
     break;
 
-  case 316:
-#line 2325 "asn1p_y.y"
+  case 330:
+#line 2421 "asn1p_y.y"
     { (yyval.a_tag).tag_mode = TM_IMPLICIT; }
     break;
 
-  case 317:
-#line 2326 "asn1p_y.y"
+  case 331:
+#line 2422 "asn1p_y.y"
     { (yyval.a_tag).tag_mode = TM_EXPLICIT; }
     break;
 
-  case 318:
-#line 2330 "asn1p_y.y"
+  case 332:
+#line 2426 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 319:
-#line 2334 "asn1p_y.y"
+  case 333:
+#line 2430 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 320:
-#line 2342 "asn1p_y.y"
+  case 334:
+#line 2438 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 321:
-#line 2349 "asn1p_y.y"
+  case 335:
+#line 2445 "asn1p_y.y"
     { (yyval.tv_str) = 0; }
     break;
 
-  case 322:
-#line 2350 "asn1p_y.y"
+  case 336:
+#line 2446 "asn1p_y.y"
     {
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 323:
-#line 2356 "asn1p_y.y"
+  case 337:
+#line 2452 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
-  case 324:
-#line 2363 "asn1p_y.y"
+  case 338:
+#line 2459 "asn1p_y.y"
     {
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_lowercase);
     }
     break;
 
-  case 325:
-#line 2369 "asn1p_y.y"
+  case 339:
+#line 2465 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromref((yyvsp[(1) - (1)].a_ref), 0);
     }
@@ -4861,7 +5040,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4865 "asn1p_y.c"
+#line 5044 "asn1p_y.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5075,7 +5254,7 @@
 }
 
 
-#line 2373 "asn1p_y.y"
+#line 2469 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index 65b7d6b..4c53acb 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -58,93 +58,94 @@
      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,
-     UTF8_BOM = 358,
-     TOK_EXCEPT = 359,
-     TOK_INTERSECTION = 360,
-     TOK_UNION = 361,
-     TOK_TwoDots = 362,
-     TOK_ThreeDots = 363
+     TOK_ExtValue_BIT_STRING = 277,
+     TOK_ABSENT = 278,
+     TOK_ABSTRACT_SYNTAX = 279,
+     TOK_ALL = 280,
+     TOK_ANY = 281,
+     TOK_APPLICATION = 282,
+     TOK_AUTOMATIC = 283,
+     TOK_BEGIN = 284,
+     TOK_BIT = 285,
+     TOK_BMPString = 286,
+     TOK_BOOLEAN = 287,
+     TOK_BY = 288,
+     TOK_CHARACTER = 289,
+     TOK_CHOICE = 290,
+     TOK_CLASS = 291,
+     TOK_COMPONENT = 292,
+     TOK_COMPONENTS = 293,
+     TOK_CONSTRAINED = 294,
+     TOK_CONTAINING = 295,
+     TOK_DEFAULT = 296,
+     TOK_DEFINITIONS = 297,
+     TOK_DEFINED = 298,
+     TOK_EMBEDDED = 299,
+     TOK_ENCODED = 300,
+     TOK_ENCODING_CONTROL = 301,
+     TOK_END = 302,
+     TOK_ENUMERATED = 303,
+     TOK_EXPLICIT = 304,
+     TOK_EXPORTS = 305,
+     TOK_EXTENSIBILITY = 306,
+     TOK_EXTERNAL = 307,
+     TOK_FALSE = 308,
+     TOK_FROM = 309,
+     TOK_GeneralizedTime = 310,
+     TOK_GeneralString = 311,
+     TOK_GraphicString = 312,
+     TOK_IA5String = 313,
+     TOK_IDENTIFIER = 314,
+     TOK_IMPLICIT = 315,
+     TOK_IMPLIED = 316,
+     TOK_IMPORTS = 317,
+     TOK_INCLUDES = 318,
+     TOK_INSTANCE = 319,
+     TOK_INSTRUCTIONS = 320,
+     TOK_INTEGER = 321,
+     TOK_ISO646String = 322,
+     TOK_MAX = 323,
+     TOK_MIN = 324,
+     TOK_MINUS_INFINITY = 325,
+     TOK_NULL = 326,
+     TOK_NumericString = 327,
+     TOK_OBJECT = 328,
+     TOK_ObjectDescriptor = 329,
+     TOK_OCTET = 330,
+     TOK_OF = 331,
+     TOK_OPTIONAL = 332,
+     TOK_PATTERN = 333,
+     TOK_PDV = 334,
+     TOK_PLUS_INFINITY = 335,
+     TOK_PRESENT = 336,
+     TOK_PrintableString = 337,
+     TOK_PRIVATE = 338,
+     TOK_REAL = 339,
+     TOK_RELATIVE_OID = 340,
+     TOK_SEQUENCE = 341,
+     TOK_SET = 342,
+     TOK_SIZE = 343,
+     TOK_STRING = 344,
+     TOK_SYNTAX = 345,
+     TOK_T61String = 346,
+     TOK_TAGS = 347,
+     TOK_TeletexString = 348,
+     TOK_TRUE = 349,
+     TOK_TYPE_IDENTIFIER = 350,
+     TOK_UNIQUE = 351,
+     TOK_UNIVERSAL = 352,
+     TOK_UniversalString = 353,
+     TOK_UTCTime = 354,
+     TOK_UTF8String = 355,
+     TOK_VideotexString = 356,
+     TOK_VisibleString = 357,
+     TOK_WITH = 358,
+     UTF8_BOM = 359,
+     TOK_EXCEPT = 360,
+     TOK_INTERSECTION = 361,
+     TOK_UNION = 362,
+     TOK_TwoDots = 363,
+     TOK_ThreeDots = 364
    };
 #endif
 /* Tokens.  */
@@ -167,93 +168,94 @@
 #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 UTF8_BOM 358
-#define TOK_EXCEPT 359
-#define TOK_INTERSECTION 360
-#define TOK_UNION 361
-#define TOK_TwoDots 362
-#define TOK_ThreeDots 363
+#define TOK_ExtValue_BIT_STRING 277
+#define TOK_ABSENT 278
+#define TOK_ABSTRACT_SYNTAX 279
+#define TOK_ALL 280
+#define TOK_ANY 281
+#define TOK_APPLICATION 282
+#define TOK_AUTOMATIC 283
+#define TOK_BEGIN 284
+#define TOK_BIT 285
+#define TOK_BMPString 286
+#define TOK_BOOLEAN 287
+#define TOK_BY 288
+#define TOK_CHARACTER 289
+#define TOK_CHOICE 290
+#define TOK_CLASS 291
+#define TOK_COMPONENT 292
+#define TOK_COMPONENTS 293
+#define TOK_CONSTRAINED 294
+#define TOK_CONTAINING 295
+#define TOK_DEFAULT 296
+#define TOK_DEFINITIONS 297
+#define TOK_DEFINED 298
+#define TOK_EMBEDDED 299
+#define TOK_ENCODED 300
+#define TOK_ENCODING_CONTROL 301
+#define TOK_END 302
+#define TOK_ENUMERATED 303
+#define TOK_EXPLICIT 304
+#define TOK_EXPORTS 305
+#define TOK_EXTENSIBILITY 306
+#define TOK_EXTERNAL 307
+#define TOK_FALSE 308
+#define TOK_FROM 309
+#define TOK_GeneralizedTime 310
+#define TOK_GeneralString 311
+#define TOK_GraphicString 312
+#define TOK_IA5String 313
+#define TOK_IDENTIFIER 314
+#define TOK_IMPLICIT 315
+#define TOK_IMPLIED 316
+#define TOK_IMPORTS 317
+#define TOK_INCLUDES 318
+#define TOK_INSTANCE 319
+#define TOK_INSTRUCTIONS 320
+#define TOK_INTEGER 321
+#define TOK_ISO646String 322
+#define TOK_MAX 323
+#define TOK_MIN 324
+#define TOK_MINUS_INFINITY 325
+#define TOK_NULL 326
+#define TOK_NumericString 327
+#define TOK_OBJECT 328
+#define TOK_ObjectDescriptor 329
+#define TOK_OCTET 330
+#define TOK_OF 331
+#define TOK_OPTIONAL 332
+#define TOK_PATTERN 333
+#define TOK_PDV 334
+#define TOK_PLUS_INFINITY 335
+#define TOK_PRESENT 336
+#define TOK_PrintableString 337
+#define TOK_PRIVATE 338
+#define TOK_REAL 339
+#define TOK_RELATIVE_OID 340
+#define TOK_SEQUENCE 341
+#define TOK_SET 342
+#define TOK_SIZE 343
+#define TOK_STRING 344
+#define TOK_SYNTAX 345
+#define TOK_T61String 346
+#define TOK_TAGS 347
+#define TOK_TeletexString 348
+#define TOK_TRUE 349
+#define TOK_TYPE_IDENTIFIER 350
+#define TOK_UNIQUE 351
+#define TOK_UNIVERSAL 352
+#define TOK_UniversalString 353
+#define TOK_UTCTime 354
+#define TOK_UTF8String 355
+#define TOK_VideotexString 356
+#define TOK_VisibleString 357
+#define TOK_WITH 358
+#define UTF8_BOM 359
+#define TOK_EXCEPT 360
+#define TOK_INTERSECTION 361
+#define TOK_UNION 362
+#define TOK_TwoDots 363
+#define TOK_ThreeDots 364
 
 
 
@@ -296,7 +298,7 @@
 	} tv_nametag;
 }
 /* Line 1529 of yacc.c.  */
-#line 300 "asn1p_y.h"
+#line 302 "asn1p_y.h"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 4cd3879..dbad995 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -132,9 +132,9 @@
 %token	<tv_str>	TOK_bstring
 %token	<tv_opaque>	TOK_cstring
 %token	<tv_str>	TOK_hstring
-%token	<tv_str>	TOK_identifier
-%token	<a_int>		TOK_number
-%token	<a_int>		TOK_number_negative
+%token	<tv_str>	TOK_identifier "identifier"
+%token	<a_int>		TOK_number "number"
+%token	<a_int>		TOK_number_negative "negative number"
 %token	<a_dbl>		TOK_realnumber
 %token	<a_int>		TOK_tuple
 %token	<a_int>		TOK_quadruple
@@ -145,6 +145,11 @@
 %token	<tv_str>	TOK_Literal			/* "BY" */
 
 /*
+ * Tokens available with asn1p_lexer_hack_push_extended_values().
+ */
+%token              TOK_ExtValue_BIT_STRING
+
+/*
  * Token types representing ASN.1 standard keywords.
  */
 %token			TOK_ABSENT
@@ -235,8 +240,8 @@
 %left			'|' TOK_UNION
 
 /* Misc tags */
-%token			TOK_TwoDots		/* .. */
-%token			TOK_ThreeDots		/* ... */
+%token			TOK_TwoDots		".."
+%token			TOK_ThreeDots	"..."
 
 
 /*
@@ -291,8 +296,14 @@
 %type	<a_expr>		ComponentType
 %type	<a_expr>		AlternativeTypeLists
 %type	<a_expr>		AlternativeType
-%type	<a_expr>		UniverationDefinition
 %type	<a_expr>		UniverationList
+%type	<a_expr>		Enumerations
+%type	<a_expr>		NamedBitList
+%type	<a_expr>		NamedBit
+%type	<a_expr>		NamedNumberList
+%type	<a_expr>		NamedNumber
+%type	<a_expr>		IdentifierList
+%type	<a_expr>		IdentifierElement
 %type	<a_expr>		UniverationElement
 %type	<tv_str>		TypeRefName
 %type	<tv_str>		ObjectClassReference
@@ -1638,7 +1649,6 @@
 	TOK_BOOLEAN { $$ = ASN_BASIC_BOOLEAN; }
 	| TOK_NULL { $$ = ASN_BASIC_NULL; }
 	| TOK_REAL { $$ = ASN_BASIC_REAL; }
-	| BasicTypeId_UniverationCompatible { $$ = $1; }
 	| TOK_OCTET TOK_STRING { $$ = ASN_BASIC_OCTET_STRING; }
 	| TOK_OBJECT TOK_IDENTIFIER { $$ = ASN_BASIC_OBJECT_IDENTIFIER; }
 	| TOK_RELATIVE_OID { $$ = ASN_BASIC_RELATIVE_OID; }
@@ -1647,7 +1657,8 @@
 	| TOK_CHARACTER TOK_STRING { $$ = ASN_BASIC_CHARACTER_STRING; }
 	| TOK_UTCTime { $$ = ASN_BASIC_UTCTime; }
 	| TOK_GeneralizedTime { $$ = ASN_BASIC_GeneralizedTime; }
-	| BasicString { $$ = $1; }
+	| BasicString
+	| BasicTypeId_UniverationCompatible
 	;
 
 /*
@@ -1655,7 +1666,7 @@
  */
 BasicTypeId_UniverationCompatible:
 	TOK_INTEGER { $$ = ASN_BASIC_INTEGER; }
-	| TOK_ENUMERATED { $$ = ASN_BASIC_ENUMERATED; }
+	| TOK_ENUMERATED { $$ = ASN_BASIC_INTEGER; }
 	| TOK_BIT TOK_STRING { $$ = ASN_BASIC_BIT_STRING; }
 	;
 
@@ -1666,16 +1677,32 @@
 		$$->expr_type = $1;
 		$$->meta_type = AMT_TYPE;
 	}
-	| BasicTypeId_UniverationCompatible UniverationDefinition {
-		if($2) {
-			$$ = $2;
-		} else {
-			$$ = NEW_EXPR();
-			checkmem($$);
-		}
-		$$->expr_type = $1;
-		$$->meta_type = AMT_TYPE;
-	}
+    | TOK_INTEGER '{' NamedNumberList '}' {
+        $$ = $3;
+        $$->expr_type = ASN_BASIC_INTEGER;
+        $$->meta_type = AMT_TYPE;
+    }
+    | TOK_ENUMERATED '{' Enumerations '}' {
+        $$ = $3;
+        $$->expr_type = ASN_BASIC_ENUMERATED;
+        $$->meta_type = AMT_TYPE;
+    }
+    | TOK_BIT TOK_STRING '{' NamedBitList '}' {
+        $$ = $4;
+        $$->expr_type = ASN_BASIC_BIT_STRING;
+        $$->meta_type = AMT_TYPE;
+    }
+    | TOK_ExtValue_BIT_STRING '{' IdentifierList '}' {
+        $$ = $3;
+        $$->expr_type = ASN_BASIC_BIT_STRING;
+        $$->meta_type = AMT_TYPE;
+    }
+    | TOK_ExtValue_BIT_STRING '{' '}' {
+		$$ = NEW_EXPR();
+		checkmem($$);
+        $$->expr_type = ASN_BASIC_BIT_STRING;
+        $$->meta_type = AMT_TYPE;
+    }
 	;
 
 BasicString:
@@ -2173,32 +2200,101 @@
 	}
 	;
 
-/*
- * Universal enumeration definition to use in INTEGER and ENUMERATED.
- * === EXAMPLE ===
- * Gender ::= ENUMERATED { unknown(0), male(1), female(2) }
- * Temperature ::= INTEGER { absolute-zero(-273), freezing(0), boiling(100) }
- * === EOF ===
- */
-/*
-optUniverationDefinition:
-	{ $$ = 0; }
-	| UniverationDefinition {
-		$$ = $1;
-	}
-	;
-*/
-
-UniverationDefinition:
-	'{' '}' {
+IdentifierList:
+    IdentifierElement {
 		$$ = NEW_EXPR();
 		checkmem($$);
+		asn1p_expr_add($$, $1);
+    }
+    | IdentifierList ',' IdentifierElement {
+		$$ = $1;
+		asn1p_expr_add($$, $3);
+    };
+
+IdentifierElement:
+    Identifier {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		$$->expr_type = A1TC_UNIVERVAL;
+		$$->meta_type = AMT_VALUE;
+		$$->Identifier = $1;
+    }
+
+NamedNumberList:
+	NamedNumber {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		asn1p_expr_add($$, $1);
 	}
-	| '{' UniverationList '}' {
-		$$ = $2;
+	| NamedNumberList ',' NamedNumber {
+		$$ = $1;
+		asn1p_expr_add($$, $3);
 	}
 	;
 
+NamedNumber:
+	Identifier '(' SignedNumber ')' {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		$$->expr_type = A1TC_UNIVERVAL;
+		$$->meta_type = AMT_VALUE;
+		$$->Identifier = $1;
+		$$->value = $3;
+	}
+	| Identifier '(' DefinedValue ')' {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		$$->expr_type = A1TC_UNIVERVAL;
+		$$->meta_type = AMT_VALUE;
+		$$->Identifier = $1;
+		$$->value = $3;
+	};
+
+NamedBitList:
+	NamedBit {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		asn1p_expr_add($$, $1);
+	}
+	| NamedBitList ',' NamedBit {
+		$$ = $1;
+		asn1p_expr_add($$, $3);
+	}
+	;
+
+NamedBit:
+	Identifier '(' TOK_number ')' {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		$$->expr_type = A1TC_UNIVERVAL;
+		$$->meta_type = AMT_VALUE;
+		$$->Identifier = $1;
+		$$->value = asn1p_value_fromint($3);
+	}
+	| Identifier '(' DefinedValue ')' {
+		$$ = NEW_EXPR();
+		checkmem($$);
+		$$->expr_type = A1TC_UNIVERVAL;
+		$$->meta_type = AMT_VALUE;
+		$$->Identifier = $1;
+		$$->value = $3;
+	};
+
+Enumerations:
+    UniverationList {
+		$$ = $1;
+        asn1p_expr_t *first_memb = TQ_FIRST(&($$->members));
+        if(first_memb) {
+            if(first_memb->expr_type == A1TC_EXTENSIBLE) {
+                return yyerror(
+                    "The ENUMERATION cannot start with extension (...).");
+            }
+        } else {
+            return yyerror(
+                "The ENUMERATION list cannot be empty.");
+        }
+    }
+
 UniverationList:
 	UniverationElement {
 		$$ = NEW_EXPR();
diff --git a/libasn1parser/asn1parser.c b/libasn1parser/asn1parser.c
index 374f68e..32b6734 100644
--- a/libasn1parser/asn1parser.c
+++ b/libasn1parser/asn1parser.c
@@ -24,7 +24,7 @@
  * Parse the given buffer.
  */
 asn1p_t *
-asn1p_parse_buffer(const char *buffer, int size /* = -1 */, enum asn1p_flags flags) {
+asn1p_parse_buffer(const char *buffer, int size /* = -1 */, const char *debug_filename, int initial_lineno, enum asn1p_flags flags) {
 	asn1p_t *a = 0;
 	void *ap;
 	void *ybuf;
@@ -38,18 +38,18 @@
 	if(size < 0)
 		size = (int)strlen(buffer);
 
-	asn1p_parse_debug_filename = "<stdin>";
 	ybuf = asn1p__scan_bytes(buffer, size);
-	asn1p_parse_debug_filename = NULL;
 	if(!ybuf) {
 		assert(ybuf);
 		return 0;
 	}
 
-	asn1p_lineno = 1;
+	asn1p_lineno = initial_lineno;
 
 	ap = (void *)&a;
+	asn1p_parse_debug_filename = debug_filename;
 	ret = asn1p_parse(ap);
+	asn1p_parse_debug_filename = NULL;
 
 	asn1p__delete_buffer(ybuf);
 
@@ -130,6 +130,7 @@
 
 extern int asn1p_lexer_types_year;
 extern int asn1p_lexer_constructs_year;
+extern int asn1p_lexer_extended_values;
 extern int asn1p__flex_debug;
 
 static int
@@ -145,9 +146,16 @@
 	if(flags & A1P_LEXER_DEBUG) {
 		flags &= ~A1P_LEXER_DEBUG;
 		asn1p__flex_debug = 1;
-	}
+    }
 
-	/*
+    if(flags & A1P_EXTENDED_VALUES) {
+        flags &= ~A1P_EXTENDED_VALUES;
+        asn1p_lexer_extended_values = 1;
+    } else {
+        asn1p_lexer_extended_values = 0;
+    }
+
+    /*
 	 * Check that we haven't missed an unknown flag.
 	 */
 	if(flags) {
diff --git a/libasn1parser/asn1parser.h b/libasn1parser/asn1parser.h
index 584a3dc..ed0a9f8 100644
--- a/libasn1parser/asn1parser.h
+++ b/libasn1parser/asn1parser.h
@@ -27,11 +27,15 @@
  * Parser flags.
  */
 enum asn1p_flags {
-	A1P_NOFLAGS,
-	/*
-	 * Enable verbose debugging output from lexer.
-	 */
-	A1P_LEXER_DEBUG			= 0x0001
+    A1P_NOFLAGS,
+    /*
+     * Enable verbose debugging output from lexer.
+     */
+    A1P_LEXER_DEBUG = 0x01,
+    /*
+     * Unlock internal helper value types.
+     */
+    A1P_EXTENDED_VALUES = 0x02
 };
 
 /*
@@ -41,6 +45,7 @@
 asn1p_t	*asn1p_parse_file(const char *filename,
 	enum asn1p_flags);
 asn1p_t	*asn1p_parse_buffer(const char *buffer, int size /* = -1 */,
+	const char *debug_filename, int initial_lineno,
 	enum asn1p_flags);
 
 extern const char *asn1p_parse_debug_filename;
diff --git a/tests/tests-asn1c-compiler/109-bit-string-SE.asn1 b/tests/tests-asn1c-compiler/109-bit-string-NP.asn1
similarity index 93%
rename from tests/tests-asn1c-compiler/109-bit-string-SE.asn1
rename to tests/tests-asn1c-compiler/109-bit-string-NP.asn1
index a07f7a1..f6cef8e 100644
--- a/tests/tests-asn1c-compiler/109-bit-string-SE.asn1
+++ b/tests/tests-asn1c-compiler/109-bit-string-NP.asn1
@@ -1,5 +1,5 @@
 
--- SE: Semantic error
+-- NP: Non-parseable
 
 -- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
 -- .spelio.software.asn1c.test (9363.1.5.1)
diff --git a/tests/tests-asn1c-compiler/114-bit-string-SE.asn1 b/tests/tests-asn1c-compiler/114-bit-string-NP.asn1
similarity index 93%
rename from tests/tests-asn1c-compiler/114-bit-string-SE.asn1
rename to tests/tests-asn1c-compiler/114-bit-string-NP.asn1
index 5006b06..b07abec 100644
--- a/tests/tests-asn1c-compiler/114-bit-string-SE.asn1
+++ b/tests/tests-asn1c-compiler/114-bit-string-NP.asn1
@@ -1,5 +1,5 @@
 
--- SE: Semantic error
+-- NP: Non-parseable
 
 -- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
 -- .spelio.software.asn1c.test (9363.1.5.1)
diff --git a/tests/tests-asn1c-compiler/23-bits-OK.asn1 b/tests/tests-asn1c-compiler/23-bits-OK.asn1
index f41b923..a4c1a65 100644
--- a/tests/tests-asn1c-compiler/23-bits-OK.asn1
+++ b/tests/tests-asn1c-compiler/23-bits-OK.asn1
@@ -19,4 +19,6 @@
 
 	one0one BS1 ::= '1010000'B		-- Equivalent to '101'B
 
+	empty BS1 ::= { }	-- Equivalent to ''B
+
 END
diff --git a/tests/tests-asn1c-compiler/23-bits-OK.asn1.-EF b/tests/tests-asn1c-compiler/23-bits-OK.asn1.-EF
index 8064815..d02605b 100644
--- a/tests/tests-asn1c-compiler/23-bits-OK.asn1.-EF
+++ b/tests/tests-asn1c-compiler/23-bits-OK.asn1.-EF
@@ -15,4 +15,6 @@
 
 one0one BS1 ::= '101'B
 
+empty BS1 ::= ''H
+
 END