support parsing realnumber tokens in constraints

diff --git a/libasn1fix/asn1fix_constraint_compat.c b/libasn1fix/asn1fix_constraint_compat.c
index 844045f..96bd042 100644
--- a/libasn1fix/asn1fix_constraint_compat.c
+++ b/libasn1fix/asn1fix_constraint_compat.c
@@ -9,6 +9,9 @@
 asn1constraint_compatible(asn1p_expr_type_e expr_type,
 	enum asn1p_constraint_type_e constr_type, int fbless_SIZE) {
 
+	if(expr_type == ASN_BASIC_REAL)
+		return -1;	/* Not yet supported */
+
 	/*
 	 * X.680-0207, Table 9.
 	 */
diff --git a/libasn1parser/asn1p_l.c b/libasn1parser/asn1p_l.c
index d4f152f..b57fd7e 100644
--- a/libasn1parser/asn1p_l.c
+++ b/libasn1parser/asn1p_l.c
@@ -21,8 +21,15 @@
 
 /* Scanner skeleton version:
  * $Header$
+ * $FreeBSD: src/usr.bin/lex/flex.skl,v 1.8 2004/01/06 19:03:44 nectar Exp $
  */
 
+#if defined(__FreeBSD__)
+#include <sys/cdefs.h>
+#else
+#define __unused
+#endif
+
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
@@ -259,7 +266,7 @@
 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 
 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
+static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )) __unused;
 static void yy_flex_free YY_PROTO(( void * ));
 
 #define yy_new_buffer yy_create_buffer
@@ -312,233 +319,235 @@
 	*yy_cp = '\0'; \
 	yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 137
-#define YY_END_OF_BUFFER 138
-static yyconst short int yy_acclist[1258] =
+#define YY_NUM_RULES 138
+#define YY_END_OF_BUFFER 139
+static yyconst short int yy_acclist[1264] =
     {   0,
-      138,  136,  137,  131,  136,  137,  131,  137,  134,  136,
-      137,   19,  136,  137,  134,  136,  137,  136,  137,  134,
-      136,  137,  136,  137,  134,  136,  137,  136,  137,   33,
-      136,  137,   32,  136,  137,  134,  136,  137,  136,  137,
-      119,  120,  136,  137,  119,  120,  136,  137,  119,  120,
-      136,  137,  119,  120,  136,  137,  119,  120,  136,  137,
-      119,  120,  136,  137,  119,  120,  136,  137,  119,  120,
-      136,  137,  119,  120,  136,  137,  119,  120,  136,  137,
-      119,  120,  136,  137,  119,  120,  136,  137,  119,  120,
-      136,  137,  119,  120,  136,  137,  119,  120,  136,  137,
+      139,  137,  138,  132,  137,  138,  132,  138,  135,  137,
+      138,   19,  137,  138,  135,  137,  138,  137,  138,  135,
+      137,  138,  137,  138,  137,  138,  135,  137,  138,  137,
+      138,   33,  137,  138,   32,  137,  138,  135,  137,  138,
+      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
+      120,  121,  137,  138,  120,  121,  137,  138,  120,  121,
+      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
+      120,  121,  137,  138,  120,  121,  137,  138,  120,  121,
+      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
+      120,  121,  137,  138,  120,  121,  137,  138,  120,  121,
 
-      119,  120,  136,  137,  119,  120,  136,  137,  119,  120,
-      136,  137,  119,  120,  136,  137,  118,  136,  137,  134,
-      136,  137,    9,  136,  137,    6,  137,    6,  136,  137,
-        8,  136,  137,    8,  136,  137,   11,   13,  136,  137,
-       11,  137,   13,  136,  137,   13,  136,  137,   13,  136,
-      137,   21,  136,  137,   21,  137,   22,  136,  137,   16,
-      136,  137,   16,  137,   18,  136,  137,   18,  136,  137,
-       14,  136,  137,   15,  136,  137,   25,   27,  136,  137,
-       27,  136,  137,   28,  137,   25,   26,   27,  136,  137,
-       25,   26,   27,  136,  137,  129,  136,  137,  129,  137,
+      137,  138,  120,  121,  137,  138,  120,  121,  137,  138,
+      120,  121,  137,  138,  120,  121,  137,  138,  119,  137,
+      138,  135,  137,  138,    9,  137,  138,    6,  138,    6,
+      137,  138,    8,  137,  138,    8,  137,  138,   11,   13,
+      137,  138,   11,  138,   13,  137,  138,   13,  137,  138,
+       13,  137,  138,   21,  137,  138,   21,  138,   22,  137,
+      138,   16,  137,  138,   16,  138,   18,  137,  138,   18,
+      137,  138,   14,  137,  138,   15,  137,  138,   25,   27,
+      137,  138,   27,  137,  138,   28,  138,   25,   26,   27,
+      137,  138,   25,   26,   27,  137,  138,  130,  137,  138,
 
-      136,  137,  125,  136,  137,  136,  137,  136,  137,  124,
-      136,  137,  127,  136,  137,  128,  136,  137,  126,  136,
-      137,  130,  136,  137,  131,   19,   19,  116,  117,    5,
-       31,  123,   10,   32,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   43,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  120,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  120,  119,  120,  119,  120,   88,
+      130,  138,  137,  138,  126,  137,  138,  137,  138,  137,
+      138,  125,  137,  138,  128,  137,  138,  129,  137,  138,
+      127,  137,  138,  131,  137,  138,  132,   19,   19,  117,
+      118,    5,   31,  124,   10,   34,   32,   34,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,   44,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  121,  120,
 
-      119,  120,  119,  120,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      120,  119,  120,  119,  120,  120,  120,  119,  120,  118,
-        9,    7,    7,   12,   21,   20,   16,   25,   25,   26,
-       25,   26,  129,    5,  124,  135,  116,  117,   31,  122,
-      121,  119,  120,  120,  119,  120,   35,  119,  120,   36,
-      119,  120,  119,  120,  119,  120,  119,  120,   40,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
+      121,  120,  121,   89,  120,  121,  120,  121,  121,  120,
+      121,  120,  121,  120,  121,  120,  121,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  121,  120,  121,  120,  121,  121,
+      121,  120,  121,  119,    9,    7,    7,   12,   21,   20,
+       16,   25,   25,   26,   25,   26,  130,    5,  125,  136,
+      117,  118,   31,   34,  123,   34,  122,  120,  121,  121,
+      120,  121,   36,  120,  121,   37,  120,  121,  120,  121,
+      120,  121,  120,  121,   41,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
 
-      120,   57,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  120,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,   80,  119,  120,   81,  119,  120,  119,  120,
-      120,  119,  120,  119,  120,  119,  120,  120,  119,  120,
-       91,  119,  120,  119,  120,  119,  120,  119,  120,  120,
-      119,  120,  119,  120,  119,  120,   99,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  120,  119,  120,  119,  120,  119,  120,  120,  120,
-      120,  119,  120,  118,    3,   17,   25,   26,   24,   25,
+      121,  120,  121,  120,  121,  120,  121,   58,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  121,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,   81,  120,
+      121,   82,  120,  121,  120,  121,  121,  120,  121,  120,
+      121,  120,  121,  121,  120,  121,   92,  120,  121,  120,
+      121,  120,  121,  120,  121,  121,  120,  121,  120,  121,
+      120,  121,  100,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  120,  121,  121,  120,  121,
+      120,  121,  120,  121,  121,  121,  121,  120,  121,  119,
 
-       26,  124,  116,  117,   30,   29,    2,    1,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,   65,  119,  120,  120,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   83,  119,  120,  120,  119,
-      120,  119,  120,  119,  120,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  120,   96,  119,  120,  119,  120,
+        3,   17,   25,   26,   24,   25,   26,  125,  117,  118,
+       30,   29,    2,    1,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,   66,  120,
+      121,  121,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,   84,  120,  121,  121,  120,  121,  120,  121,  120,
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
 
-      119,  120,  100,  119,  120,  119,  120,  119,  120,  119,
-      120,  104,  119,  120,  106,  119,  120,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  120,  120,
-      120,  115,  119,  120,    3,   25,   26,  119,  120,  119,
-      120,  119,  120,   39,  119,  120,  120,  119,  120,  119,
-      120,  119,  120,   46,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,   64,  119,  120,  120,  120,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  119,  120,  119,  120,
+      121,   97,  120,  121,  120,  121,  120,  121,  101,  120,
+      121,  120,  121,  120,  121,  120,  121,  105,  120,  121,
+      107,  120,  121,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  121,  121,  121,  116,  120,  121,
+        3,   25,   26,  120,  121,  120,  121,  120,  121,   40,
+      120,  121,  121,  120,  121,  120,  121,  120,  121,   47,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,   65,  120,
+      121,  121,  121,  121,  120,  121,  120,  121,  120,  121,
 
-      119,  120,  119,  120,  119,  120,  119,  120,  120,  119,
-      120,   87,  119,  120,  119,  120,  120,  119,  120,  119,
-      120,  119,  120,  120,  119,  120,  119,  120,  119,  120,
-      119,  120,  120,  120,  107,  119,  120,  119,  120,  119,
-      120,  120,  119,  120,  120,  120,  120,  132,   25,   26,
-       34,  119,  120,  119,  120,  119,  120,  120,  119,  120,
-      119,  120,   45,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   59,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,  120,  120,  120,  119,
+      120,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,  120,  121,  121,  120,  121,   88,  120,  121,
+      120,  121,  121,  120,  121,  120,  121,  120,  121,  121,
+      120,  121,  120,  121,  120,  121,  120,  121,  121,  121,
+      108,  120,  121,  120,  121,  120,  121,  121,  120,  121,
+      121,  121,  121,  133,   25,   26,   35,  120,  121,  120,
+      121,  120,  121,  121,  120,  121,  120,  121,   46,  120,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,   60,  120,  121,  120,  121,  120,  121,  120,  121,
 
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  120,
-       85,  119,  120,  119,  120,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  120,  119,  120,  119,  120,  101,
-      119,  120,  102,  119,  120,  120,  120,  108,  119,  120,
-      119,  120,  120,  120,  120,  120,  120,   25,   26,  119,
-      120,  119,  120,  120,   42,  119,  120,  119,  120,  119,
-      120,  119,  120,  119,  120,   51,  119,  120,   52,  119,
-      120,  119,  120,  119,  120,   55,  119,  120,  119,  120,
-      119,  120,  119,  120,   61,  119,  120,  119,  120,  119,
+      120,  121,  121,  121,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  121,   86,  120,  121,  120,
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      121,  120,  121,  120,  121,  102,  120,  121,  103,  120,
+      121,  121,  121,  109,  120,  121,  120,  121,  121,  121,
+      121,  121,  121,   25,   26,  120,  121,  120,  121,  121,
+       43,  120,  121,  120,  121,  120,  121,  120,  121,  120,
+      121,   52,  120,  121,   53,  120,  121,  120,  121,  120,
+      121,   56,  120,  121,  120,  121,  120,  121,  120,  121,
 
-      120,  120,  120,  120,  119,  120,  119,  120,   72,  119,
-      120,   73,  119,  120,  119,  120,  119,  120,  119,  120,
-       77,  119,  120,  119,  120,  119,  120,  119,  120,  120,
-      119,  120,  120,   90,  119,  120,  119,  120,   93,  119,
-      120,   95,  119,  120,  120,  119,  120,  119,  120,  120,
-      120,  119,  120,  111,  120,  120,  120,  120,  120,   25,
-       26,  119,  120,  119,  120,  120,  119,  120,  119,  120,
-      119,  120,  119,  120,  119,  120,   54,  119,  120,  119,
-      120,  119,  120,   60,  119,  120,  119,  120,   63,  119,
-      120,  120,  120,  120,  120,  119,  120,   71,  119,  120,
+       62,  120,  121,  120,  121,  120,  121,  121,  121,  121,
+      120,  121,  120,  121,   73,  120,  121,   74,  120,  121,
+      120,  121,  120,  121,  120,  121,   78,  120,  121,  120,
+      121,  120,  121,  120,  121,  121,  120,  121,  121,   91,
+      120,  121,  120,  121,   94,  120,  121,   96,  120,  121,
+      121,  120,  121,  120,  121,  121,  121,  120,  121,  112,
+      121,  121,  121,  121,  121,   25,   26,  120,  121,  120,
+      121,  121,  120,  121,  120,  121,  120,  121,  120,  121,
+      120,  121,   55,  120,  121,  120,  121,  120,  121,   61,
+      120,  121,  120,  121,   64,  120,  121,  121,  121,  121,
 
-       74,  119,  120,   75,  119,  120,  119,  120,  119,  120,
-      120,  119,  120,  120,   89,  119,  120,  120,  119,  120,
-      120,  119,  120,   98,  119,  120,  120,  120,  119,  120,
-      120,  120,  120,  120,   25,   26,  119,  120,   38,  119,
-      120,   41,  120,   44,  119,  120,   47,  119,  120,  119,
-      120,  119,  120,  119,  120,  119,  120,  119,  120,  120,
-      120,  120,   69,  120,  119,  120,  119,  120,  119,  120,
-      120,  119,  120,  120,  120,  119,  120,  120,  103,  120,
-      120,  109,  119,  120,  120,  120,  120,  120,  133,   25,
-      119,  120,   48,  119,  120,  119,  120,   50,  119,  120,
+      121,  120,  121,   72,  120,  121,   75,  120,  121,   76,
+      120,  121,  120,  121,  120,  121,  121,  120,  121,  121,
+       90,  120,  121,  121,  120,  121,  121,  120,  121,   99,
+      120,  121,  121,  121,  120,  121,  121,  121,  121,  121,
+       25,   26,  120,  121,   39,  120,  121,   42,  121,   45,
+      120,  121,   48,  120,  121,  120,  121,  120,  121,  120,
+      121,  120,  121,  120,  121,  121,  121,  121,   70,  121,
+      120,  121,  120,  121,  120,  121,  121,  120,  121,  121,
+      121,  120,  121,  121,  104,  121,  121,  110,  120,  121,
+      121,  121,  121,  121,  134,   25,  120,  121,   49,  120,
 
-      119,  120,  119,  120,   58,  119,  120,  119,  120,  120,
-      120,  120,   70,  119,  120,  119,  120,  119,  120,  120,
-      119,  120,  120,  120,  119,  120,  120,  119,  120,  120,
-      112,  120,  120,  120,  120,   25,   37,  119,  120,   49,
-      119,  120,   53,  119,  120,  119,  120,  119,  120,  120,
-      120,  120,  119,  120,  119,  120,  120,  119,  120,  120,
-      120,  119,  120,  120,  119,  120,  120,  120,  120,  120,
-       25,  119,  120,  119,  120,  120,  120,  120,   76,  119,
-      120,   78,  119,  120,   79,  120,  119,  120,  120,  120,
-      119,  120,  120,   97,  119,  120,  120,  120,  120,  120,
+      121,  120,  121,   51,  120,  121,  120,  121,  120,  121,
+       59,  120,  121,  120,  121,  121,  121,  121,   71,  120,
+      121,  120,  121,  120,  121,  121,  120,  121,  121,  121,
+      120,  121,  121,  120,  121,  121,  113,  121,  121,  121,
+      121,   25,   38,  120,  121,   50,  120,  121,   54,  120,
+      121,  120,  121,  120,  121,  121,  121,  121,  120,  121,
+      120,  121,  121,  120,  121,  121,  121,  120,  121,  121,
+      120,  121,  121,  121,  121,  121,   25,  120,  121,  120,
+      121,  121,  121,  121,   77,  120,  121,   79,  120,  121,
+       80,  121,  120,  121,  121,  121,  120,  121,  121,   98,
 
-       25,  119,  120,   62,  119,  120,   67,  120,  120,   68,
-      120,  119,  120,   84,  120,  120,   92,  119,  120,  120,
-      105,  120,  120,  120,  114,  120,   25,  119,  120,  120,
-       82,  119,  120,  120,  120,  120,  113,  120,   25,  119,
-      120,   66,  120,  120,   94,  120,  110,  120,   25,   56,
-      119,  120,   86,  120,   23,   25,    4
+      120,  121,  121,  121,  121,  121,   25,  120,  121,   63,
+      120,  121,   68,  121,  121,   69,  121,  120,  121,   85,
+      121,  121,   93,  120,  121,  121,  106,  121,  121,  121,
+      115,  121,   25,  120,  121,  121,   83,  120,  121,  121,
+      121,  121,  114,  121,   25,  120,  121,   67,  121,  121,
+       95,  121,  111,  121,   25,   57,  120,  121,   87,  121,
+       23,   25,    4
     } ;
 
-static yyconst short int yy_accept[736] =
+static yyconst short int yy_accept[743] =
     {   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,   28,   30,   33,
-       36,   39,   41,   45,   49,   53,   57,   61,   65,   69,
-       73,   77,   81,   85,   89,   93,   97,  101,  105,  109,
-      113,  117,  120,  123,  126,  128,  131,  134,  137,  141,
-      143,  146,  149,  152,  155,  157,  160,  163,  165,  168,
-      171,  174,  177,  181,  184,  186,  191,  196,  199,  201,
-      203,  206,  208,  210,  213,  216,  219,  222,  225,  225,
-      226,  227,  228,  228,  229,  229,  230,  230,  230,  231,
+        9,   12,   15,   18,   20,   23,   25,   27,   30,   32,
+       35,   38,   41,   43,   47,   51,   55,   59,   63,   67,
+       71,   75,   79,   83,   87,   91,   95,   99,  103,  107,
+      111,  115,  119,  122,  125,  128,  130,  133,  136,  139,
+      143,  145,  148,  151,  154,  157,  159,  162,  165,  167,
+      170,  173,  176,  179,  183,  186,  188,  193,  198,  201,
+      203,  205,  208,  210,  212,  215,  218,  221,  224,  227,
+      227,  228,  229,  230,  230,  231,  231,  232,  232,  232,
 
-      232,  233,  234,  235,  235,  235,  237,  239,  241,  243,
-      245,  247,  248,  250,  252,  254,  256,  259,  261,  263,
-      265,  267,  269,  271,  273,  275,  277,  278,  279,  281,
-      283,  285,  287,  289,  291,  293,  295,  296,  298,  300,
-      303,  305,  306,  308,  310,  312,  314,  315,  317,  319,
-      321,  323,  325,  327,  329,  331,  332,  334,  336,  337,
-      338,  340,  340,  341,  341,  341,  341,  342,  343,  344,
-      345,  346,  347,  348,  348,  349,  351,  353,  354,  355,
-      355,  356,  357,  357,  357,  358,  358,  359,  359,  359,
-      359,  359,  360,  361,  362,  364,  365,  367,  370,  373,
+      232,  233,  234,  235,  236,  236,  237,  237,  239,  239,
+      239,  241,  243,  245,  247,  249,  251,  252,  254,  256,
+      258,  260,  263,  265,  267,  269,  271,  273,  275,  277,
+      279,  281,  282,  283,  285,  287,  289,  291,  293,  295,
+      297,  299,  300,  302,  304,  307,  309,  310,  312,  314,
+      316,  318,  319,  321,  323,  325,  327,  329,  331,  333,
+      335,  336,  338,  340,  341,  342,  344,  344,  345,  345,
+      345,  345,  346,  347,  348,  349,  350,  351,  352,  352,
+      353,  355,  357,  358,  359,  359,  360,  361,  361,  361,
+      362,  362,  363,  363,  363,  363,  363,  365,  366,  367,
 
-      375,  377,  377,  379,  382,  384,  386,  388,  390,  392,
-      394,  396,  398,  400,  402,  405,  407,  409,  411,  413,
-      415,  417,  418,  419,  421,  423,  425,  427,  429,  431,
-      433,  436,  439,  441,  442,  444,  446,  448,  449,  451,
-      454,  456,  458,  460,  461,  463,  465,  467,  470,  472,
-      474,  476,  478,  480,  482,  483,  485,  487,  489,  490,
-      491,  492,  494,  495,  495,  495,  496,  497,  499,  502,
-      503,  503,  504,  505,  506,  507,  508,  509,  509,  509,
-      509,  511,  513,  515,  517,  519,  521,  523,  525,  527,
-      529,  531,  533,  535,  537,  539,  541,  543,  545,  547,
+      367,  368,  370,  371,  373,  376,  379,  381,  383,  383,
+      385,  388,  390,  392,  394,  396,  398,  400,  402,  404,
+      406,  408,  411,  413,  415,  417,  419,  421,  423,  424,
+      425,  427,  429,  431,  433,  435,  437,  439,  442,  445,
+      447,  448,  450,  452,  454,  455,  457,  460,  462,  464,
+      466,  467,  469,  471,  473,  476,  478,  480,  482,  484,
+      486,  488,  489,  491,  493,  495,  496,  497,  498,  500,
+      501,  501,  501,  502,  503,  505,  508,  509,  509,  510,
+      511,  512,  513,  514,  515,  515,  515,  515,  517,  519,
+      521,  523,  525,  527,  529,  531,  533,  535,  537,  539,
 
-      549,  551,  553,  556,  557,  558,  560,  562,  564,  566,
-      568,  570,  572,  574,  576,  579,  580,  582,  584,  586,
-      587,  589,  591,  593,  595,  596,  599,  601,  603,  606,
-      608,  610,  612,  615,  618,  619,  621,  623,  625,  627,
-      629,  630,  631,  632,  635,  635,  635,  635,  635,  636,
-      638,  638,  640,  642,  644,  647,  648,  650,  652,  654,
-      657,  659,  661,  663,  665,  667,  669,  671,  673,  675,
-      677,  679,  681,  683,  686,  687,  688,  689,  691,  693,
-      695,  697,  699,  701,  703,  705,  707,  709,  710,  712,
-      715,  717,  718,  720,  720,  722,  724,  725,  727,  729,
+      541,  543,  545,  547,  549,  551,  553,  555,  557,  559,
+      562,  563,  564,  566,  568,  570,  572,  574,  576,  578,
+      580,  582,  585,  586,  588,  590,  592,  593,  595,  597,
+      599,  601,  602,  605,  607,  609,  612,  614,  616,  618,
+      621,  624,  625,  627,  629,  631,  633,  635,  636,  637,
+      638,  641,  641,  641,  641,  641,  642,  644,  644,  646,
+      648,  650,  653,  654,  656,  658,  660,  663,  665,  667,
+      669,  671,  673,  675,  677,  679,  681,  683,  685,  687,
+      689,  692,  693,  694,  695,  697,  699,  701,  703,  705,
+      707,  709,  711,  713,  715,  716,  718,  721,  723,  724,
 
-      731,  733,  734,  735,  738,  740,  742,  743,  745,  746,
-      747,  748,  748,  748,  749,  751,  751,  754,  756,  758,
-      759,  761,  763,  766,  768,  770,  772,  774,  776,  778,
-      780,  782,  784,  786,  789,  791,  793,  795,  797,  798,
-      799,  800,  802,  804,  806,  808,  810,  812,  814,  816,
-      818,  820,  820,  821,  824,  826,  827,  829,  831,  833,
-      835,  836,  838,  840,  843,  846,  847,  848,  851,  853,
-      854,  855,  856,  857,  858,  858,  858,  860,  860,  862,
-      864,  865,  868,  870,  872,  874,  876,  879,  882,  884,
-      886,  889,  891,  893,  895,  898,  900,  902,  903,  904,
+      726,  726,  728,  730,  731,  733,  735,  737,  739,  740,
+      741,  744,  746,  748,  749,  751,  752,  753,  754,  754,
+      754,  755,  757,  757,  760,  762,  764,  765,  767,  769,
+      772,  774,  776,  778,  780,  782,  784,  786,  788,  790,
+      792,  795,  797,  799,  801,  803,  804,  805,  806,  808,
+      810,  812,  814,  816,  818,  820,  822,  824,  826,  826,
+      827,  830,  832,  833,  835,  837,  839,  841,  842,  844,
+      846,  849,  852,  853,  854,  857,  859,  860,  861,  862,
+      863,  864,  864,  864,  866,  866,  868,  870,  871,  874,
+      876,  878,  880,  882,  885,  888,  890,  892,  895,  897,
 
-      905,  907,  909,  912,  915,  917,  919,  921,  924,  926,
-      928,  930,  931,  933,  934,  937,  939,  942,  945,  946,
-      948,  950,  951,  952,  954,  956,  957,  958,  959,  960,
-      960,  962,  962,  964,  966,  967,  969,  971,  973,  975,
-      977,  980,  982,  984,  987,  989,  992,  993,  994,  995,
-      996,  998, 1001, 1004, 1007, 1009, 1011, 1012, 1014, 1015,
-     1018, 1019, 1021, 1022, 1024, 1027, 1028, 1029, 1031, 1032,
-     1033, 1034, 1035, 1035, 1035, 1037, 1037, 1039, 1042, 1044,
-     1047, 1050, 1052, 1054, 1056, 1056, 1058, 1060, 1061, 1062,
-     1063, 1065, 1067, 1069, 1071, 1072, 1074, 1075, 1076, 1078,
+      899,  901,  904,  906,  908,  909,  910,  911,  913,  915,
+      918,  921,  923,  925,  927,  930,  932,  934,  936,  937,
+      939,  940,  943,  945,  948,  951,  952,  954,  956,  957,
+      958,  960,  962,  963,  964,  965,  966,  966,  968,  968,
+      970,  972,  973,  975,  977,  979,  981,  983,  986,  988,
+      990,  993,  995,  998,  999, 1000, 1001, 1002, 1004, 1007,
+     1010, 1013, 1015, 1017, 1018, 1020, 1021, 1024, 1025, 1027,
+     1028, 1030, 1033, 1034, 1035, 1037, 1038, 1039, 1040, 1041,
+     1041, 1041, 1043, 1043, 1045, 1048, 1050, 1053, 1056, 1058,
+     1060, 1062, 1062, 1064, 1066, 1067, 1068, 1069, 1071, 1073,
 
-     1079, 1079, 1081, 1082, 1085, 1086, 1087, 1088, 1089, 1089,
-     1090, 1091, 1091, 1093, 1096, 1098, 1101, 1103, 1105, 1108,
-     1110, 1111, 1112, 1113, 1116, 1118, 1120, 1121, 1123, 1124,
-     1125, 1127, 1128, 1130, 1131, 1133, 1134, 1135, 1136, 1137,
-     1137, 1140, 1143, 1146, 1148, 1150, 1151, 1152, 1153, 1155,
-     1157, 1158, 1160, 1161, 1162, 1164, 1165, 1167, 1168, 1169,
-     1170, 1171, 1172, 1172, 1174, 1176, 1177, 1178, 1179, 1182,
-     1185, 1187, 1189, 1190, 1191, 1193, 1194, 1197, 1198, 1199,
-     1200, 1201, 1202, 1202, 1204, 1207, 1209, 1210, 1212, 1214,
-     1216, 1217, 1220, 1221, 1223, 1224, 1225, 1227, 1228, 1228,
+     1075, 1077, 1078, 1080, 1081, 1082, 1084, 1085, 1085, 1087,
+     1088, 1091, 1092, 1093, 1094, 1095, 1095, 1096, 1097, 1097,
+     1099, 1102, 1104, 1107, 1109, 1111, 1114, 1116, 1117, 1118,
+     1119, 1122, 1124, 1126, 1127, 1129, 1130, 1131, 1133, 1134,
+     1136, 1137, 1139, 1140, 1141, 1142, 1143, 1143, 1146, 1149,
+     1152, 1154, 1156, 1157, 1158, 1159, 1161, 1163, 1164, 1166,
+     1167, 1168, 1170, 1171, 1173, 1174, 1175, 1176, 1177, 1178,
+     1178, 1180, 1182, 1183, 1184, 1185, 1188, 1191, 1193, 1195,
+     1196, 1197, 1199, 1200, 1203, 1204, 1205, 1206, 1207, 1208,
+     1208, 1210, 1213, 1215, 1216, 1218, 1220, 1222, 1223, 1226,
 
-     1230, 1231, 1234, 1235, 1236, 1237, 1239, 1240, 1240, 1242,
-     1244, 1245, 1247, 1249, 1250, 1250, 1253, 1255, 1257, 1257,
-     1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257, 1257,
-     1257, 1257, 1257, 1258, 1258
+     1227, 1229, 1230, 1231, 1233, 1234, 1234, 1236, 1237, 1240,
+     1241, 1242, 1243, 1245, 1246, 1246, 1248, 1250, 1251, 1253,
+     1255, 1256, 1256, 1259, 1261, 1263, 1263, 1263, 1263, 1263,
+     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
+     1264, 1264
     } ;
 
 static yyconst int yy_ec[256] =
@@ -547,16 +556,16 @@
         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,    1,   12,   13,   14,   15,   16,   17,   18,
-       18,   19,   20,   21,   18,   22,   23,   24,   25,   26,
-       27,   28,    1,   10,   29,   30,   31,   32,   33,   34,
-       35,   36,   37,   38,   39,   40,   41,   42,   43,   44,
-       45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
-       55,    1,   56,   57,    1,    1,   58,   59,   60,   61,
+       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,
 
-       62,   63,   64,   65,   66,   67,   63,   68,   69,   70,
-       71,   72,   63,   73,   74,   75,   76,   77,   63,   78,
-       63,   79,   80,   81,   82,    1,    1,    1,    1,    1,
+       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,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -573,693 +582,704 @@
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[83] =
+static yyconst int yy_meta[84] =
     {   0,
         1,    2,    3,    4,    4,    1,    5,    1,    6,    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,
+        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,    1,    1,    1,   11,   11,   11,
+       11,   11,   11,   11,   11,    1,    1,    1,   11,   11,
        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
-       11,   11,   11,   11,   11,   11,   11,   11,   11,   12,
-        1,   13
+       11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
+       12,    1,   13
     } ;
 
-static yyconst short int yy_base[761] =
+static yyconst short int yy_base[768] =
     {   0,
-        0,    0,   80,   83,   86,   97,   92,   94,   91,  101,
-       89,  103,  185,  267,  349,    0, 1572, 1561,  119,  129,
-     1557, 1555,  423,  137, 4413,  138, 1548,  103, 4413,  156,
-     1537, 4413,  490,  184,  208,  190,  257,  285,  540,  205,
-      546,  567,  561,  277,  585,  600,  606,  631,  634,  623,
-      654, 1547,  697,    0, 4413, 4413, 1546, 1540, 4413, 4413,
-     1536, 1538, 4413,    0,    0, 1541,    0,    0, 1522, 4413,
-     4413, 4413,    0, 4413, 4413,  720,  801,  160,  199,  110,
-     4413, 1529, 1529, 1526, 4413, 4413, 4413, 4413, 1531,  203,
-        0, 1530, 1525, 1514,   86, 1510,  433, 1512,  123,  321,
+        0,    0,   81,   84,   87,   99,   94,   96,   93,  108,
+       91,  103,  186,  269,  352,    0, 1657, 1646,  130,  138,
+     1645, 1643,  427,  146, 4507,  158,  207, 1633,  109,  230,
+      493, 1621, 4507,  543,  268,  115,  274,  289,  488,  593,
+      191,  599,  509,  215,  491,  621,  406,  638,  655,  658,
+      678,  689, 1631,  733,    0, 4507, 4507, 1630, 1629, 4507,
+     4507, 1621, 1622, 4507,    0,    0, 1622,    0,    0, 1602,
+     4507, 4507, 4507,    0, 4507, 4507,  757,  839,  122,  166,
+      127, 4507, 1612, 1609, 1604, 4507, 4507, 4507, 4507, 1605,
+      201,    0, 1603, 1603, 1589,   96, 1585,  656, 1588,  772,
 
-     1506, 4413,  689, 1487,  825,  709,  710,  725,  738,  741,
-      756, 1499,  800,  806,  821,  829,  875,  878,  896,  893,
-      909,  917,  932,  938,  935,  953,  112,  157,  968,  971,
-      979,  994, 1005, 1016, 1022, 1033,  153, 1046, 1049, 1062,
-     1070,  113, 1073, 1086, 1097, 1110,  102, 1126, 1132, 1143,
-     1149, 1160, 1171, 1177, 1188,  116, 1194, 1210,  218,  242,
-     1209,    0, 1493, 1258, 1270, 1282,    0, 4413, 1491, 4413,
-        0, 4413,    0, 1476,    0, 1455,  254,  256, 4413,    0,
-     1480, 4413, 1478,    0, 1477,    0, 1476,  114, 1451,  299,
-      214,  801, 4413, 4413, 1293, 1471, 1277, 1278, 1293, 1294,
+      103,  807, 1580, 4507,  839,  857,  886,  907, 1565,  912,
+      681,  757,  892,  903,  909,  962, 1578,  963,  978,  979,
+      994, 1000, 1016, 1022, 1033, 1046, 1049, 1069, 1066, 1077,
+     1090,   95,   79, 1105, 1108, 1116, 1131, 1142, 1153, 1159,
+     1170,  147, 1183, 1186, 1199, 1207,   94, 1210, 1223, 1234,
+     1247,  143, 1263, 1269, 1280, 1286, 1297, 1308, 1314, 1325,
+      169, 1331, 1347,  194,  225, 1346,    0, 1572,  757,  943,
+     1381,    0, 4507, 1570, 4507,    0, 4507,    0, 1554,    0,
+     1536,  258,  333, 4507,    0, 1561, 4507, 1554,    0, 1552,
+        0, 1550,  226, 1526,  204,  143, 1391, 4507,  866,  894,
 
-     1343, 1470, 1351, 1354, 1367, 1375, 1383, 1391, 1404, 1412,
-     1415, 1436, 1437, 1452, 1458, 1469, 1475, 1486, 1492, 1503,
-     1514,  243,  216, 1527, 1535, 1538, 1553, 1556, 1559, 1585,
-     1577, 1588, 1601,  251, 1609, 1622, 1630,  270, 1633, 1646,
-     1654, 1662, 1670,  240, 1683, 1686, 1694, 1707, 1715, 1723,
-     1731, 1744, 1752, 1765,  532, 1773, 1789, 1790,  104,  558,
-      223, 1805, 1462, 1848, 1856, 1461, 4413,  220, 1430, 1458,
-     1413, 1455, 1447, 4413, 4413, 4413, 4413,  315,  217, 1411,
-     1850, 1851, 1866, 1872, 1883, 1889, 1905, 1906, 1921, 1929,
-     1937, 1953, 1950, 1961, 1974, 1977, 1992, 1998, 2009, 2015,
+     4507, 1441, 1548, 1385, 1386, 1401, 1402, 1417, 1547, 1425,
+     1428, 1441, 1449, 1491, 1492, 1508, 1509, 1524, 1540, 1546,
+     1557, 1563, 1574, 1580, 1591, 1597, 1608, 1619,  223,  241,
+     1632, 1640, 1643, 1658, 1661, 1664, 1690, 1682, 1693, 1706,
+      226, 1714, 1727, 1735,  495, 1738, 1751, 1759, 1767, 1775,
+      245, 1788, 1791, 1799, 1812, 1820, 1828, 1836, 1849, 1857,
+     1870,  506, 1878, 1894, 1895,  470,  507,  221, 1910, 1546,
+     1954, 1962, 1543, 4507,  285, 1505, 1533, 1489, 1531, 1530,
+     4507, 4507, 4507, 4507,  436,  319, 1495, 1956, 1957, 1972,
+     1978, 1989, 1995, 2011, 2012, 2027, 2035, 2043, 2059, 2056,
 
-     2026, 2041, 2047,  431,  533, 2058, 2064, 2079, 2080, 2095,
-     2101, 2116, 2119, 2127, 2140,  432, 2148, 2151, 2164,  559,
-     2172, 2185, 2193, 2201,  502, 2209, 2217, 2230, 2238, 2241,
-     2259, 2256, 2262, 2277,  504, 2280, 2283, 2300, 2306, 2317,
-      560,  503,  420, 2333, 2376, 2398, 2420, 2432, 1437,  303,
-     1407, 2416, 2432, 2448, 2417,  568, 2454, 2469, 2472, 2480,
-     2493, 2501, 2509, 2522, 2530, 2543, 2551, 2559, 2567, 2582,
-     2588, 2599, 2605, 2620,  534,  572,  593, 2621, 2641, 2638,
-     2659, 2658, 2674, 2680, 2691, 2704, 2715,  613, 2712, 2728,
-     2736,  570, 2744,  586, 2752, 2765,  599, 2778, 2781, 2789,
+     2067, 2080, 2083, 2098, 2104, 2115, 2121, 2132, 2147, 2153,
+      469,  535, 2164, 2170, 2185, 2186, 2201, 2207, 2222, 2225,
+     2233, 2246,  554, 2254, 2257, 2270,  205, 2278, 2291, 2299,
+     2307,  523, 2315, 2323, 2336, 2344, 2347, 2365, 2362, 2368,
+     2383,  557, 2386, 2389, 2406, 2412, 2423,  612,  528,  631,
+     2439, 2473, 2496, 2519, 2531, 1517,  190, 1486, 2515, 2530,
+     2546, 2543,  623, 2564, 2567, 2570, 2585, 2588, 2596, 2609,
+     2617, 2630, 2641, 2647, 2658, 2669, 2684, 2690, 2701, 2707,
+     2722,  248,  558,  632, 2723, 2743, 2740, 2761, 2760, 2776,
+     2782, 2793, 2806, 2817,  613, 2814, 2830, 2838,  617, 2846,
 
-     2802,  595,  608, 2813, 2819, 2830,  277, 2841,  615,  587,
-      619,  759, 2884, 4413,  397, 1430, 2868, 2884, 2881,  656,
-     2892, 2905, 2908, 2925, 2931, 2942, 2948, 2963, 2969, 2986,
-     2992, 3003, 3009, 3020, 3026, 3037, 3043, 3059,  622,  682,
-      672, 3060, 3075, 3081, 3092, 3098, 3113, 3119, 3130, 3145,
-     3151,  723,  710, 3162, 3178,  711, 3175, 1401, 3186, 3199,
-      638, 3207, 3222, 3225, 3228,  728,  753, 3243, 3246,  771,
-      724,  760,  775,  776, 3294, 3306, 1399, 1408, 3290, 3303,
-      611, 3306, 3321, 3327, 3338, 3344, 3355, 3361, 3372, 3383,
-     3389, 3400, 3406, 3417, 3428, 3434, 3445,  862,  759,  782,
+      309, 2854, 2867,  625, 2880, 2883, 2891, 2904,  636,  641,
+     2915, 2921, 2932,  643, 2943,  668,  639,  621,  441, 2987,
+     4507,  302, 1508, 2971, 2987, 2984,  649, 2995, 3008, 3011,
+     3028, 3034, 3045, 3051, 3066, 3072, 3089, 3095, 3106, 3112,
+     3123, 3129, 3140, 3146, 3162,  656,  680,  730, 3163, 3178,
+     3184, 3195, 3201, 3216, 3222, 3233, 3248, 3254,  785,  878,
+     3265, 3281,  511, 3278, 1482, 3289, 3302,  885, 3310, 3325,
+     3328, 3331,  734,  664, 3346, 3349,  806,  735,  733,  830,
+      880, 3398, 3410, 1481, 1461, 3364, 3404,  732, 3405, 3422,
+     3421, 3437, 3438, 3453, 3454, 3469, 3475, 3486, 3492, 3503,
 
-     3451, 3462, 3473, 3479, 3490, 3496, 3511, 3512, 3527, 3533,
-     1396,  819, 3544,  849, 3550, 1403, 3561, 3567,  779, 3582,
-     3588,  790,  832, 3604, 1423,  840,  634,  786,  863, 3638,
-      110,    0, 3632, 3633,  867, 3648, 3656, 3659, 3672, 3680,
-     3688, 3696, 3709, 3717, 3725, 3733,  854,  928,  855,  868,
-     3746, 3754, 3757, 3770, 3778, 3781,  766, 1396,  931, 3794,
-      899, 1389,  937, 3815, 3802,  903,  939, 3818,  900,  935,
-      942,  941, 3866, 1027,  943, 1376, 3850, 3861, 1407, 3867,
-     3878, 3884, 3899, 3900,  987, 3915, 3916,  977,  978, 1014,
-     1405, 3931, 3939, 3954, 1042, 1375, 1026, 1009, 1368,  947,
+     3514, 3525, 3531, 3542,  982,  790,  887, 3548, 3559, 3570,
+     3576, 3587, 3593, 3608, 3609, 3624, 3630, 1445,  823, 3641,
+      905, 3647, 1448, 3658, 3664,  933, 3679, 3685,  924,  984,
+     3701, 1467,  987,  941,  918, 1000, 3735,  101,    0, 3729,
+     3730, 1003, 3745, 3753, 3756, 3769, 3777, 3785, 3793, 3806,
+     3814, 3822, 3830, 1012,  634, 1019, 1004, 3843, 3851, 3854,
+     3867, 3875, 3878, 1056, 1444, 1028, 3891, 1042, 1427, 1022,
+     3912, 3899, 1041, 1037, 3915, 1002, 1068, 1057, 1048, 3964,
+     1381,  290, 1410, 3930, 3948, 1436, 3959, 3965, 3980, 3981,
+     3996,  514, 4002, 4013, 1070, 1065, 1115, 1435, 4019, 4030,
 
-      643, 1395, 1059, 3955, 1061,  958, 1048, 1065, 1243, 4413,
-     1375, 1342, 3970, 3971, 3986, 3987, 4002, 1359, 4003, 4018,
-     1054, 1020, 1067, 4024, 4035, 4046, 1013, 1357, 1083, 1072,
-     1352, 1088, 1343, 1092, 1366, 1094, 1111, 1116, 1335, 1305,
-     4052, 4063, 4069, 1334, 4080, 1024,  430, 1129, 4091, 4097,
-     1144, 1338, 1135, 1140, 1326, 1121, 1315, 1152, 1154, 1148,
-     1165, 1304, 1272, 1296, 4112, 1203, 1190, 1220, 4113, 4128,
-     1328, 1292, 1251,  979, 1261, 1229,    0, 1252, 1283, 1242,
-     1284, 1265, 1249, 1263, 4129, 1260, 1197, 1256, 1215, 1212,
-     1210,    0, 1258, 1183, 1259, 1318, 1151, 1105, 1070, 1088,
+     4041, 1026, 1403, 1131, 1109, 1397, 1127,  798, 1425, 1138,
+     4047, 1089, 1129, 1142, 1151, 1493, 4507, 1392, 1358, 4058,
+     4064, 4079, 4080, 4095, 1374, 4096, 4111, 1111, 1146, 1124,
+     4117, 4128, 4139, 1150, 1322, 1179, 1193, 1299, 1185, 1296,
+     1196, 1318, 1220, 1202, 1205, 1254, 1218, 4145, 4156, 4162,
+     1227, 4173, 1168, 1118, 1174, 4184, 4190, 1218, 1224, 1209,
+     1255, 1148, 1229, 1138, 1272, 1233, 1257, 1273, 1126, 1012,
+     1009, 4205, 1244, 1281, 1287, 4206, 4221, 1020,  966, 1302,
+     1268,  915, 1306,    0, 1357, 1340, 1275, 1409,  902,  886,
+      889, 4222,  822, 1291,  820,  779,  818, 1223,    0, 1349,
 
-     1270,    0, 1158, 1326, 1337, 1046, 1014,  991,  906,  901,
-     1257,  864,  861,  753,  686,    0,  712,    0,  543,  489,
-      440,  407,  376,  380,  371,  365,  271,  257, 1042, 1158,
-      135,  124, 4413, 4413, 4178, 4191, 4204, 4217, 4230, 4243,
-     4255, 4259, 4270, 4283, 4296, 4307, 4318, 4323, 4328, 4333,
-     4337, 4342, 4346, 4350, 4354, 4358, 4369, 4376, 4387, 4399
+      807, 1366, 1420,  805,  771,  742,  767, 1424,    0, 1288,
+     1462, 1463,  796,  696,  670,  676,  697, 1379,  541,  539,
+      504,  459,    0,  441,    0,  378,  422,  373,  397,  366,
+      281,  275,  268,  280,  267,  814, 1166,  115,  100, 4507,
+     4507, 4272, 4285, 4298, 4311, 4324, 4337, 4349, 4353, 4364,
+     4377, 4390, 4401, 4412, 4417, 4422, 4427, 4431, 4436, 4440,
+     4444, 4448, 4452, 4463, 4470, 4481, 4493
     } ;
 
-static yyconst short int yy_def[761] =
+static yyconst short int yy_def[768] =
     {   0,
-      734,    1,  735,  735,  735,  735,  736,  736,  737,  737,
-      738,  738,  739,  739,  734,   15,  734,  734,  734,  734,
-      734,  740,  734,  741,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,  742,  734,  743,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  744,  744,  734,  745,  745,  734,  734,
-      734,  734,  746,  734,  734,  747,  747,  734,  734,   23,
-      734,  734,  734,  748,  734,  734,  734,  734,  734,  734,
-      740,  740,  734,  749,  734,  750,  741,  741,  734,  734,
+      741,    1,  742,  742,  742,  742,  743,  743,  744,  744,
+      745,  745,  746,  746,  741,   15,  741,  741,  741,  741,
+      741,  747,  741,  748,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,  749,  741,  750,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  751,  751,  741,  752,  752,  741,
+      741,  741,  741,  753,  741,  741,  754,  754,  741,  741,
+       23,  741,  741,  741,  755,  741,  741,  741,  741,  741,
+      741,  747,  747,  741,  756,  741,  757,  748,  748,  741,
 
-      734,  734,  734,  734,  751,   33,   33,   33,   33,   33,
-       33,  752,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,  752,  752,   33,   33,
-       33,   33,   33,   33,   33,   33,  752,   33,   33,   33,
-       33,  752,   33,   33,   33,   33,  752,   33,   33,   33,
-       33,   33,   33,   33,   33,  752,   33,   33,  752,  752,
-       33,  753,  742,  734,  734,  734,  743,  734,  734,  734,
-      744,  734,  745,  734,  746,   77,   77,  734,  734,  754,
-      748,  734,  734,  755,  749,  756,  750,  734,  734,  757,
-      734,  734,  734,  734,  751,  758,   33,   33,   33,   33,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  758,
+       34,   34,   34,   34,   34,   34,  759,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,  759,  759,   34,   34,   34,   34,   34,   34,   34,
+       34,  759,   34,   34,   34,   34,  759,   34,   34,   34,
+       34,  759,   34,   34,   34,   34,   34,   34,   34,   34,
+      759,   34,   34,  759,  759,   34,  760,  749,  741,  741,
+      741,  750,  741,  741,  741,  751,  741,  752,  741,  753,
+       78,   78,  741,  741,  761,  755,  741,  741,  762,  756,
+      763,  757,  741,  741,  764,  741,  741,  741,  741,  741,
 
-       33,  758,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,  752,  752,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,  752,   33,   33,   33,  752,   33,   33,
-       33,   33,   33,  752,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,  752,   33,   33,   33,  752,  752,
-      752,   33,  753,  734,  734,  734,  734,   77,   77,  754,
-      734,  755,  756,  734,  734,  734,  734,  757,  734,  734,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+      741,  758,  765,   34,   34,   34,   34,   34,  765,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,  759,  759,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+      759,   34,   34,   34,  759,   34,   34,   34,   34,   34,
+      759,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,  759,   34,   34,   34,  759,  759,  759,   34,  760,
+      741,  741,  741,  741,   78,   78,  761,  741,  762,  763,
+      741,  741,  741,  741,  764,  741,  741,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
 
-       33,   33,   33,  752,  752,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,  752,   33,   33,   33,  752,
-       33,   33,   33,   33,  752,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,  752,   33,   33,   33,   33,   33,
-      752,  752,  752,   33,  734,  734,  734,  734,  734,   77,
-      734,   33,   33,   33,   33,  752,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,  752,  752,  752,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,  752,   33,   33,
-       33,  752,   33,  195,   33,   33,  752,   33,   33,   33,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+      759,  759,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,  759,   34,   34,   34,  759,   34,   34,   34,
+       34,  759,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,  759,   34,   34,   34,   34,   34,  759,  759,  759,
+       34,  741,  741,  741,  741,  741,   78,  741,   34,   34,
+       34,   34,  759,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,  759,  759,  759,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,  759,   34,   34,   34,  759,   34,
 
-       33,  752,  752,   33,   33,   33,  752,   33,  752,  752,
-      752,  734,  734,  734,   77,  734,   33,   33,   33,  752,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,  752,  752,
-      752,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,  195,  752,   33,   33,  752,   33,  195,   33,   33,
-      752,   33,   33,   33,   33,  752,  752,   33,   33,  752,
-      752,  752,  752,  752,  734,  734,   77,  734,   33,   33,
-      752,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,  752,  752,  752,
+      202,   34,   34,  759,   34,   34,   34,   34,  759,  759,
+       34,   34,   34,  759,   34,  759,  759,  759,  741,  741,
+      741,   78,  741,   34,   34,   34,  759,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,  759,  759,  759,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,  202,  759,
+       34,   34,  759,   34,  202,   34,   34,  759,   34,   34,
+       34,   34,  759,  759,   34,   34,  759,  759,  759,  759,
+      759,  741,  741,   78,  741,   34,   34,  759,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
 
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-      195,  752,   33,  752,   33,  195,   33,   33,  752,   33,
-       33,  752,  752,   33,  752,  752,  752,  752,  752,  734,
-       77,  759,   33,   33,  752,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,  752,  752,  752,  752,
-       33,   33,   33,   33,   33,   33,  752,  195,  752,   33,
-      752,  195,  752,   33,   33,  752,  752,   33,  752,  752,
-      752,  752,  734,  760,   77,  734,   33,   33,  752,   33,
-       33,   33,   33,   33,  195,   33,   33,  752,  752,  752,
-      752,   33,   33,   33,  752,  195,  752,  752,  195,  752,
+       34,   34,   34,   34,  759,  759,  759,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,  202,  759,   34,
+      759,   34,  202,   34,   34,  759,   34,   34,  759,  759,
+       34,  759,  759,  759,  759,  759,  741,   78,  766,   34,
+       34,  759,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,  759,  759,  759,  759,   34,   34,   34,
+       34,   34,   34,  759,  202,  759,   34,  759,  202,  759,
+       34,   34,  759,  759,   34,  759,  759,  759,  759,  741,
+      767,   78,  741,   34,   34,  759,   34,   34,   34,   34,
+       34,  202,   34,   34,  759,  759,  759,  759,   34,   34,
 
-      195,  752,  752,   33,  752,  752,  752,  752,  734,  734,
-      746,  734,   33,   33,   33,   33,   33,  195,   33,   33,
-      752,  752,  752,   33,   33,   33,  752,  195,  752,  752,
-      195,  752,  195,  752,  752,  752,  752,  752,  746,  734,
-       33,   33,   33,  195,   33,  752,  752,  752,   33,   33,
-      752,  195,  752,  752,  195,  752,  195,  752,  752,  752,
-      752,  746,  734,  195,   33,  752,  752,  752,   33,   33,
-      752,  195,  752,  752,  195,  752,  195,  752,  752,  752,
-      752,  746,  734,  195,   33,  752,  752,  752,  195,  752,
-      752,  195,  752,  752,  752,  752,  752,  746,  734,  195,
+       34,  759,  202,  759,  759,  202,  759,  202,  759,  759,
+       34,  759,  759,  759,  759,  741,  741,  753,  741,   34,
+       34,   34,   34,   34,  202,   34,   34,  759,  759,  759,
+       34,   34,   34,  759,  202,  759,  759,  202,  759,  202,
+      759,  759,  759,  759,  759,  753,  741,   34,   34,   34,
+      202,   34,  759,  759,  759,   34,   34,  759,  202,  759,
+      759,  202,  759,  202,  759,  759,  759,  759,  753,  741,
+      202,   34,  759,  759,  759,   34,   34,  759,  202,  759,
+      759,  202,  759,  202,  759,  759,  759,  759,  753,  741,
+      202,   34,  759,  759,  759,  202,  759,  759,  202,  759,
 
-      752,  195,  752,  752,  752,  752,  746,  734,  195,  752,
-      752,  752,  752,  746,  734,  195,  752,  746,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,    0,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734
+      759,  759,  759,  759,  753,  741,  202,  759,  202,  759,
+      759,  759,  759,  753,  741,  202,  759,  759,  759,  759,
+      753,  741,  202,  759,  753,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+        0,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741
     } ;
 
-static yyconst short int yy_nxt[4496] =
+static yyconst short int yy_nxt[4591] =
     {   0,
        18,   19,   20,   19,   19,   21,   22,   23,   24,   25,
-       18,   25,   26,   27,   28,   29,   30,   30,   30,   30,
-       30,   30,   30,   31,   21,   32,   32,   18,   33,   34,
-       35,   36,   37,   38,   39,   40,   41,   40,   40,   40,
-       42,   43,   44,   45,   40,   46,   47,   48,   49,   50,
-       51,   40,   40,   40,   25,   21,   21,   52,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,   52,   52,   52,   52,   53,
-       21,   25,   55,   56,   56,   55,   56,   56,   55,   56,
-       56,   68,   57,   65,   60,   57,   60,   66,   58,   55,
+       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,   25,   21,   21,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       53,   53,   53,   53,   53,   53,   53,   53,   53,   53,
+       54,   21,   25,   56,   57,   57,   56,   57,   57,   56,
+       57,   57,  209,   69,   58,   66,   61,   58,   61,   67,
 
-       56,   56,   61,   65,   61,   68,   62,   66,   62,   58,
-       93,   89,   69,  102,  202,   70,  202,   63,  734,   63,
-       90,   90,   90,   90,  202,  202,   69,   89,  202,   70,
-       90,   90,   90,   90,  734,  190,  733,   89,   97,   97,
-       97,   97,   95,  274,  575,   89,   89,  732,  191,  275,
-       99,  176,   97,   97,  100,  100,  100,  100,  100,  100,
-      100,  178,  178,  178,  178,  202,  734,  244,   71,  202,
-       72,  103,  103,  103,  103,  103,  103,  103,  103,  238,
-      341,  222,   71,  255,   72,   73,   74,   75,   74,   74,
-       73,   73,   73,   73,   73,   73,   73,   73,   73,   73,
+       59,   56,   57,   57,   62,   69,   62,  209,  209,   63,
+       66,   63,   59,  740,   67,   70,  195,   90,   71,  104,
+       64,   94,   64,  183,  183,  183,  183,   70,  739,  196,
+       71,   91,   91,   91,   91,  741,  582,  230,   90,   91,
+       91,   91,   91,  181,  286,  111,   90,   98,   98,   98,
+       98,  123,  741,   96,   90,  124,  209,  111,  125,  111,
+      209,  245,   98,   98,  111,  229,   90,  183,  183,  183,
+      183,   72,  287,   73,  100,  100,  100,  100,  100,  100,
+      100,  100,  209,   72,  741,   73,   74,   75,   76,   75,
+       75,   74,   74,   74,   74,   74,   74,   74,   74,   74,
 
-      178,  178,  178,  178,   90,   90,   90,   90,   73,   73,
-       73,   73,   73,  106,  223,  279,  113,   77,  279,  106,
-      114,  234,  121,  106,  115,  106,  116,  106,  202,  106,
-      202,  106,  106,  106,  106,  202,  117,  106,  106,   73,
-       73,   73,  280,  118,  106,  280,  106,  119,  106,  106,
-      120,  106,  202,  106,  202,  202,  106,  178,  178,  178,
-      178,  176,  350,  202,   74,   73,   74,   73,   74,   75,
-       74,   74,   73,   73,   73,   73,   73,   73,   73,   73,
-       73,   73,  202,  259,  268,  269,  106,  305,  343,  202,
-       73,   73,   73,   73,   73,  176,  106,  122,  123,   77,
+       74,   74,   91,   91,   91,   91,  284,  209,  284,  251,
+       74,   74,   74,   74,   74,   90,  241,  285,  209,   78,
+      101,  111,  422,  100,  102,  102,  102,  102,  102,  102,
+      102,  111,  181,  111,  209,  111,  209,  262,  209,  209,
+      111,   74,   74,   74,  105,  111,  106,  106,  106,  106,
+      106,  106,  106,  106,  209,  111,  281,  111,  209,  111,
+      266,  209,  282,  107,  141,  399,   75,   74,   75,   74,
+       75,   76,   75,   75,   74,   74,   74,   74,   74,   74,
+       74,   74,   74,   74,   74,  311,  267,  350,  323,  275,
+      276,  142,  107,   74,   74,   74,   74,   74,  111,  268,
 
-      106,  277,  260,  277,  304,  106,  138,  139,  124,  325,
-      140,  278,  316,  125,  106,  261,  106,  277,  106,  277,
-      141,   73,   73,   73,  106,  106,  106,  278,  106,  729,
-      126,  320,  728,  106,  415,  142,  192,  192,  192,  192,
-      192,  192,  192,  192,  176,  470,   74,   73,   74,   32,
-       78,   79,   78,   78,   32,   32,   80,   32,   32,   32,
-       81,   82,   32,   83,   32,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,   84,   84,   84,
-       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
-       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
+      181,  118,   78,  618,  111,  119,  446,  126,  111,  120,
+      111,  121,  111,  312,  111,  332,  111,  111,  111,  111,
+      286,  122,  741,  111,   74,   74,   74,  181,  357,  111,
+      127,  128,  181,  111,  183,  183,  183,  183,  111,  484,
+      736,  129,  735,  734,  181,  733,  465,  732,  287,   75,
+       74,   75,   33,   79,   80,   79,   79,   33,   33,   81,
+       33,   33,   33,   33,   82,   83,   33,   84,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   85,   85,   85,   85,   85,   85,   85,   85,   85,
+       85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
 
-       84,   84,   84,   85,   86,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,   32,   32,
-       32,   32,   32,   32,   32,   32,   32,   32,   87,   32,
-       88,   89,  202,  477,   97,   97,   97,   97,  176,  727,
-      726,  188,  202,  202,  202,  725,  724,   93,   97,   97,
-      723,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   94,   94,   94,   94,   94,  667,  411,   95,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
+       85,   85,   85,   85,   85,   85,   85,   86,   87,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
+       33,   33,   88,   33,   89,   90,  111,  731,  284,  153,
+      284,  730,  419,  419,  419,  419,  111,  729,  111,  285,
+      111,  728,   94,  727,  209,  111,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,  209,  209,   96,   97,   97,   97,   97,   97,
+       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
 
-       96,   96,  105,  375,  388,  106,  106,  106,  106,  106,
-      106,  106,  106,  722,  202,  202,  202,  721,  106,  107,
-      106,  106,  106,  106,  106,  106,  106,  106,  106,  108,
-      106,  109,  106,  110,  106,  106,  106,  106,  111,  106,
-      106,  106,  106,  106,  202,  202,  202,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
-      112,  112,  112,  112,  112,  112,  112,  112,  112,  106,
-      202,  202,  202,  410,  129,  106,  397,  130,  403,  106,
-      202,  106,  202,  106,  202,  106,  131,  132,  106,  106,
-      106,  439,  133,  335,  106,  134,  106,  376,  734,  202,
+       97,   97,   97,   97,   97,   97,   97,  105,  209,  108,
+      108,  108,  108,  108,  108,  108,  108,  130,  111,  209,
+      209,  143,  144,  421,  209,  145,  107,  741,  111,  726,
+      111,  111,  111,  111,  131,  146,  209,  111,  139,  111,
+      111,  209,  382,  521,  725,  625,  140,  348,  209,  111,
+      147,  111,  209,  111,  209,  107,  110,  327,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  209,  342,  349,
+      209,  209,  111,  112,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  113,  111,  114,  111,  115,  111,  111,
+      111,  111,  116,  111,  111,  111,  111,  111,  404,  417,
 
-      106,  127,  106,  135,  106,  202,  106,  202,  106,  136,
-      106,  202,  128,  143,  106,  106,  144,  720,  392,  342,
-      202,  409,  458,  202,  145,  202,  106,  202,  106,  106,
-      146,  202,  148,  106,  202,  106,  137,  440,  149,  106,
-      420,  106,  150,  106,  456,  106,  202,  106,  106,  106,
-      202,  153,  106,  151,  106,  734,  461,  147,  152,  154,
-      106,  473,  106,  106,  106,  441,  106,  466,  202,  467,
-      106,  106,  106,  106,  106,  157,  155,  106,  453,  106,
-      535,  158,  106,  106,  202,  633,  474,  472,  160,  498,
-      161,  570,  156,  106,  202,  106,  519,  106,  164,  164,
+      383,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
+      117,  117,  117,  111,  447,  209,  209,  395,  134,  111,
+      209,  135,  410,  111,  209,  111,  209,  111,  209,  111,
+      136,  137,  111,  111,  209,  209,  138,  209,  111,  209,
+      148,  111,  209,  149,  209,  132,  209,   98,   98,   98,
+       98,  150,  209,  111,  193,  111,  133,  151,  111,  209,
+      111,  154,   98,   98,  416,  155,  158,  209,  111,  460,
+      111,  209,  111,  468,  159,  111,  156,  111,  111,  481,
+      418,  157,  463,  209,  152,  111,  427,  111,  111,  111,
 
-      164,  164,  106,  159,  103,  103,  103,  103,  103,  103,
-      103,  103,  165,  165,  165,  165,  165,  165,  166,  166,
-      175,  481,  202,  202,  202,  175,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  734,  202,  500,  106,  106,
-      202,  499,  514,  175,  175,  175,  175,  175,  106,  106,
-      106,  106,  106,  106,  106,  719,  197,  106,  106,  511,
-      412,  412,  412,  412,  198,  202,  106,  106,  106,  512,
-      106,  202,  202,  106,  175,  175,  175,  106,  202,  106,
-      106,  106,  106,  202,  200,  106,  106,  202,  202,  106,
-      199,  202,  718,  522,  202,  106,  526,  106,  202,  106,
+      162,  160,  111,  474,  111,  448,  163,  111,  111,  473,
+      209,  111,  477,  596,  480,  488,  723,  161,  111,  111,
+      111,  111,  111,  111,  505,  111,  166,  111,  164,  111,
+      111,  111,  722,  111,  169,  169,  169,  169,  111,  721,
+      506,  479,  530,  209,  165,  209,  209,  209,  209,  170,
+      170,  170,  170,  170,  170,  171,  171,  180,  169,  169,
+      169,  169,  180,  180,  180,  180,  180,  180,  180,  180,
+      180,  180,  180,  170,  170,  170,  170,  170,  170,  171,
+      171,  180,  180,  180,  180,  180,  105,  111,  106,  106,
+      106,  106,  106,  106,  106,  106,  507,  111,  741,  111,
 
-      175,  175,  202,  201,  106,  549,  175,  175,  175,  175,
-      175,  175,  175,  175,  175,  175,  192,  192,  192,  192,
-      192,  192,  192,  192,  175,  175,  175,  175,  175,  106,
-      523,  202,  525,  527,  203,  106,  528,  529,  595,  106,
-      414,  106,  177,  106,  202,  106,  563,  106,  106,  106,
-      106,  550,  202,  204,  106,  175,  175,  175,  106,  566,
-      106,  202,  106,  571,  205,  559,  202,  202,  106,  106,
-      106,  206,  106,  202,  202,  202,  202,  106,  567,  202,
-      202,  175,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
+      529,  111,  542,  209,  204,  107,  111,  534,  533,  209,
+      716,  741,  180,  180,  180,  737,  715,  714,  209,  209,
+      209,  105,  518,  197,  197,  197,  197,  197,  197,  197,
+      197,  209,  709,  209,  107,  209,  209,  556,  180,  180,
+      107,  640,  738,  209,  180,  180,  180,  180,  180,  180,
+      180,  180,  180,  180,  180,  199,  199,  199,  199,  199,
+      199,  199,  199,  180,  180,  180,  180,  180,  532,  107,
+      566,  105,  107,  106,  106,  106,  106,  106,  106,  106,
+      106,  182,  199,  199,  199,  199,  199,  199,  199,  199,
+      107,  209,  535,  209,  180,  180,  180,  200,  209,  200,
 
-      196,  196,  196,  196,  106,  569,  207,  106,  547,  572,
-      561,  202,  202,  202,  106,  202,  106,  106,  106,  106,
-      208,  106,  106,  106,  209,  106,  106,  548,  588,  590,
-      579,  591,  106,  210,  211,  106,  106,  106,  106,  106,
-      202,  106,  212,  202,  106,  716,  213,  202,  106,  202,
-      106,  202,  106,  202,  202,  611,  106,  106,  106,  202,
-      106,  106,  214,  215,  106,  106,  602,  106,  217,  605,
-      202,  106,  598,  106,  220,  106,  106,  106,  106,  106,
-      216,  218,  106,  106,  176,  219,  106,  224,  607,  202,
-      202,  202,  106,  632,  106,  221,  106,  106,  600,  734,
+      209,  107,  199,  199,  199,  199,  199,  199,  199,  199,
+      199,  199,  199,  199,  199,  199,  199,  199,  209,  107,
+      180,  105,  111,  108,  108,  108,  108,  108,  108,  108,
+      108,  209,  205,  111,  111,  707,  111,  209,  519,  111,
+      107,  111,  536,  111,  526,  111,  209,  111,  706,  111,
+      705,  111,  111,  207,  209,  271,  206,  557,  111,  171,
+      171,  171,  171,  171,  171,  171,  171,  568,  699,  107,
+      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
+      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
+      203,  203,  111,  111,  573,  209,  578,  209,  210,  577,
 
-      106,  106,  606,  225,  636,  597,  589,  106,  106,  106,
-      106,  106,  106,  603,  106,  608,  106,  618,  106,  106,
-      106,  202,  226,  106,  227,  202,  202,  106,  609,  609,
-      609,  609,  202,  106,  106,  106,  202,  106,  202,  622,
-      228,  229,  106,  730,  106,  106,  106,  230,  106,  621,
-      691,  106,  715,  106,  202,  106,  714,  106,  202,  106,
-      202,  106,  106,  232,  106,  106,  202,  231,  630,  731,
-      106,  202,  233,  202,  106,  106,  106,  202,  106,  202,
-      647,  106,  651,  235,  202,  106,  623,  106,  106,  106,
-      106,  106,  106,  666,  106,  202,  236,  106,  629,  106,
+      209,  570,  111,  111,  111,  111,  111,  111,  111,  111,
+      208,  111,  111,  209,  696,  209,  209,  209,  111,  111,
+      111,  111,  111,  212,  111,  209,  211,  111,  111,  554,
+      111,  574,  209,  209,  111,  209,  111,  213,  111,  209,
+      111,  209,  111,  111,  111,  214,  111,  579,  555,  111,
+      209,  216,  111,  576,  209,  209,  111,  691,  111,  215,
+      111,  209,  111,  111,  111,  111,  111,  586,  598,  209,
+      209,  111,  612,  111,  217,  218,  111,  111,  209,  220,
+      219,  209,  111,  209,  607,  690,  111,  595,  111,  111,
+      111,  111,  634,  111,  597,  111,  111,  224,  111,  111,
 
-      202,  106,  106,  106,  202,  106,  202,  627,  610,  106,
-      106,  106,  106,  106,  106,  106,  106,  237,  106,  646,
-      239,  106,  637,  202,  635,  106,  106,  106,  202,  106,
-      709,  634,  648,  202,  106,  240,  106,  638,  106,  106,
-      106,  202,  242,  708,  654,  241,  243,  202,  653,  106,
-      707,  106,  202,  106,  245,  106,  202,  658,  106,  730,
-      202,  106,  656,  202,  202,  246,  202,  106,  659,  106,
-      202,  106,  106,  106,  106,  106,  247,  202,  106,  248,
-      106,  661,  106,  660,  106,  731,  106,  252,  106,  106,
-      106,  106,  106,  676,  250,  202,  249,  106,  668,  106,
+      221,  222,  209,  604,  614,  609,  111,  111,  111,  111,
+      225,  111,  610,  111,  226,  111,  605,  227,  223,  111,
+      111,  111,  209,  615,  209,  231,  111,  629,  209,  602,
+      111,  209,  111,  228,  111,  111,  613,  209,  111,  111,
+      209,  232,  209,  628,  209,  111,  111,  111,  111,  111,
+      111,  209,  111,  642,  111,  209,  111,  111,  111,  209,
+      233,  111,  234,  209,  209,  111,  674,  737,  689,  637,
+      684,  111,  111,  111,  639,  111,  643,  653,  235,  236,
+      111,  209,  111,  111,  111,  237,  111,  209,  630,  111,
+      655,  111,  209,  111,  738,  111,  682,  111,  209,  111,
 
-      106,  251,  202,  106,  673,  674,  106,  671,  106,  202,
-      106,  253,  106,  680,  106,  202,  106,  106,  106,  106,
-      106,  678,  202,  106,  202,  106,  679,  106,  711,  106,
-      256,  106,  202,  106,  681,  106,  254,  106,  106,  106,
-      257,  202,  106,  258,  609,  609,  609,  609,  106,  106,
-      106,  106,  106,  106,  202,  687,  262,  106,  106,  164,
-      164,  164,  164,  202,  202,  701,  686,  702,  202,  202,
-      202,  202,  202,  165,  165,  165,  165,  165,  165,  166,
-      166,  264,  202,  688,  703,  166,  166,  166,  166,  166,
-      166,  166,  166,  265,  693,  202,  202,  166,  166,  166,
+      111,  239,  111,  111,  636,  238,  209,  654,  111,  209,
+      240,  641,  111,  111,  111,  209,  111,  644,  209,  111,
+      658,  242,  209,  111,  645,  111,  111,  111,  111,  111,
+      111,  209,  111,  209,  243,  111,  209,  111,  673,  111,
+      111,  111,  209,  111,  675,  660,  209,  111,  111,  111,
+      111,  111,  111,  111,  111,  244,  111,  209,  246,  111,
+      663,  679,  665,  111,  111,  111,  661,  111,  209,  671,
+      209,  668,  111,  247,  111,  667,  111,  111,  111,  680,
+      249,  209,  678,  248,  250,  209,  209,  111,  209,  111,
+      670,  111,  252,  111,  209,  666,  111,  669,  710,  111,
 
-      166,  166,  166,  166,  166,  105,  106,  106,  700,  281,
-      699,  696,  698,  692,  690,  694,  106,  106,  106,  106,
-      106,  106,  106,  106,  610,  106,  106,  704,  705,  717,
-      202,  710,  106,  282,  106,  106,  106,  106,  202,  689,
-      202,  106,  106,  684,  683,  682,  677,  697,  695,  202,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  196,  196,  196,  196,  196,  196,  196,  196,
-      196,  196,  106,  675,  672,  664,  663,  662,  202,  657,
-      106,  706,  106,  106,  106,  283,  106,  284,  655,  712,
-      106,  106,  106,  106,  106,  106,  106,  106,  652,  106,
+      209,  209,  683,  253,  209,  111,  686,  111,  693,  111,
+      111,  111,  111,  111,  254,  209,  111,  255,  111,  209,
+      111,  681,  111,  687,  111,  259,  111,  111,  111,  111,
+      111,  209,  257,  664,  256,  111,  662,  111,  111,  258,
+      698,  111,  685,  688,  111,  703,  111,  694,  111,  260,
+      111,  695,  111,  209,  111,  111,  111,  111,  111,  718,
+      708,  111,  209,  111,  659,  111,  697,  111,  263,  111,
+      209,  111,  700,  111,  261,  111,  111,  111,  264,  209,
+      111,  265,  616,  616,  616,  616,  111,  111,  111,  111,
+      111,  111,  209,  272,  269,  111,  111,  171,  171,  171,
 
-      713,  644,  106,  640,  106,  639,  106,  202,  106,  631,
-      106,  628,  106,  285,  286,  106,  106,  202,  106,  202,
-      106,  612,  106,  106,  106,  599,  106,  288,  287,  596,
-      106,  106,  106,  106,  106,  202,  562,  558,  532,  106,
-      531,  106,  516,  106,  106,  106,  478,  106,  416,  349,
-      289,  106,  106,  106,  106,  290,  106,  351,  106,  186,
-      106,  291,  292,  106,  293,  106,  106,  184,  182,  295,
-      180,  176,  294,  349,  162,  106,  106,  106,  106,  106,
-      106,  106,  734,  202,  106,  106,  275,  106,  186,  184,
-      271,  106,  180,  106,  296,  106,  176,  106,  106,  106,
+      171,  171,  171,  171,  171,  105,  702,  197,  197,  197,
+      197,  197,  197,  197,  197,  111,  111,  651,  288,  711,
+      647,  701,  209,  646,  107,  111,  111,  111,  111,  111,
+      111,  111,  111,  209,  111,  111,  712,  209,  209,  638,
+      635,  111,  289,  111,  111,  111,  111,  111,  209,  209,
+      111,  111,  724,  107,  110,  111,  619,  111,  111,  111,
+      290,  111,  291,  617,  606,  111,  111,  111,  111,  111,
+      111,  111,  111,  704,  111,  209,  209,  111,  603,  111,
+      209,  111,  569,  111,  713,  111,  717,  565,  292,  293,
+      111,  111,  539,  111,  616,  616,  616,  616,  111,  203,
 
-      106,  106,  267,  266,  106,  162,  106,  298,  106,  297,
-      106,  202,  106,  194,  106,  106,  106,  106,  106,  193,
-      189,  106,  186,  106,  301,  299,  184,  106,  300,  106,
-      183,  106,  106,  106,  106,  106,  182,  182,  180,  102,
-      106,  179,  106,  106,  106,  174,  106,  172,  102,  302,
-      170,  106,  169,  106,  303,  106,  106,  106,  168,  162,
-      104,  101,  106,   92,  106,   89,  106,  106,  106,   89,
-      106,  734,  734,  306,  106,  106,  307,  308,  106,  106,
-      309,  106,  106,  106,  734,  106,  106,  734,  106,  734,
-      734,  312,  310,  734,  106,  106,  106,  106,  106,  106,
+      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
+      203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
+      203,  111,  111,  538,  523,  485,  719,  720,  423,  295,
+      356,  111,  111,  111,  111,  111,  111,  294,  111,  111,
+      111,  111,  358,  191,  189,  187,  185,  181,  111,  111,
+      111,  111,  111,  297,  111,  296,  356,  111,  111,  167,
+      741,  209,  282,  191,  111,  189,  111,  278,  111,  300,
+      111,  298,  299,  111,  185,  617,  111,  301,  181,  302,
+      111,  274,  111,  273,  111,  167,  111,  111,  111,  111,
+      111,  209,  201,  111,  198,  111,  194,  111,  191,  111,
 
-      106,  106,  106,  311,  106,  313,  106,  106,  734,  734,
-      734,  734,  734,  734,  106,  734,  106,  106,  106,  734,
-      106,  734,  734,  734,  106,  106,  106,  106,  106,  106,
-      106,  106,  734,  106,  734,  734,  314,  734,  106,  734,
-      315,  317,  106,  734,  106,  734,  734,  734,  106,  106,
-      106,  106,  106,  734,  318,  734,  734,  106,  734,  106,
-      734,  106,  106,  106,  734,  106,  319,  734,  734,  106,
-      106,  106,  106,  106,  106,  106,  106,  734,  106,  734,
-      321,  106,  734,  106,  734,  106,  734,  106,  734,  106,
-      734,  106,  734,  106,  106,  106,  734,  106,  734,  106,
+      303,  111,  189,  111,  111,  111,  111,  111,  188,  187,
+      111,  187,  111,  305,  111,  304,  111,  185,  111,  104,
+      111,  111,  111,  111,  111,  184,  179,  111,  177,  111,
+      308,  306,  104,  111,  307,  111,  175,  111,  111,  111,
+      111,  111,  174,  173,  167,  109,  111,  103,  111,  111,
+      111,   93,  111,   90,   90,  309,  741,  111,  741,  111,
+      310,  111,  111,  111,  741,  741,  741,  741,  111,  741,
+      111,  741,  111,  111,  111,  741,  111,  741,  741,  313,
+      111,  111,  314,  315,  111,  111,  316,  111,  111,  111,
+      741,  111,  111,  741,  111,  741,  741,  319,  317,  741,
 
-      322,  106,  106,  106,  734,  106,  734,  734,  323,  106,
-      106,  106,  106,  106,  327,  106,  734,  734,  106,  324,
-      734,  734,  326,  106,  106,  106,  106,  106,  734,  106,
-      734,  106,  734,  106,  106,  106,  106,  106,  734,  734,
-      734,  734,  328,  734,  106,  734,  106,  329,  106,  734,
-      106,  734,  106,  734,  106,  106,  106,  734,  106,  330,
-      106,  734,  106,  106,  106,  734,  106,  734,  734,  734,
-      106,  106,  106,  106,  106,  734,  734,  734,  331,  106,
-      734,  106,  734,  106,  734,  106,  734,  106,  734,  734,
-      332,  106,  106,  106,  106,  106,  734,  334,  333,  734,
+      111,  111,  111,  111,  111,  111,  111,  111,  111,  318,
+      111,  320,  111,  111,  741,  741,  741,  741,  741,  741,
+      111,  741,  111,  111,  111,  741,  111,  741,  741,  741,
+      111,  111,  111,  111,  111,  111,  111,  111,  741,  111,
+      741,  741,  321,  741,  111,  741,  322,  324,  111,  741,
+      111,  741,  741,  741,  111,  111,  111,  111,  111,  741,
+      325,  741,  741,  111,  741,  111,  741,  111,  111,  111,
+      741,  111,  326,  741,  741,  111,  111,  111,  111,  111,
+      111,  111,  111,  741,  111,  741,  328,  111,  741,  111,
+      741,  111,  741,  111,  741,  111,  741,  111,  741,  111,
 
-      106,  734,  106,  734,  106,  734,  106,  734,  106,  734,
-      734,  340,  106,  106,  106,  336,  106,  337,  106,  106,
-      734,  106,  338,  734,  734,  734,  734,  734,  106,  106,
-      106,  106,  106,  106,  106,  734,  339,  106,  106,  734,
-      344,  734,  734,  734,  106,  734,  106,  734,  106,  345,
-      345,  345,  345,  106,  734,  734,  734,  347,  347,  347,
-      347,  734,  734,  346,  346,  346,  346,  346,  346,  346,
-      346,  348,  348,  348,  348,  348,  348,  348,  348,  106,
-      106,  734,  734,  734,  734,  734,  734,  353,  734,  106,
-      106,  352,  106,  106,  106,  106,  734,  734,  106,  106,
+      111,  111,  741,  111,  741,  111,  329,  111,  111,  111,
+      741,  111,  741,  741,  330,  111,  111,  111,  111,  111,
+      334,  111,  741,  741,  111,  331,  741,  741,  333,  111,
+      111,  111,  111,  111,  741,  111,  741,  111,  741,  111,
+      111,  111,  111,  111,  741,  741,  741,  741,  335,  741,
+      111,  741,  111,  336,  111,  741,  111,  741,  111,  741,
+      111,  111,  111,  741,  111,  337,  111,  741,  111,  111,
+      111,  741,  111,  741,  741,  741,  111,  111,  111,  111,
+      111,  741,  741,  741,  338,  111,  741,  111,  741,  111,
+      741,  111,  741,  111,  741,  741,  339,  111,  111,  111,
 
-      734,  106,  734,  734,  734,  106,  354,  106,  734,  106,
-      734,  106,  106,  355,  106,  106,  734,  734,  106,  734,
-      106,  357,  106,  734,  106,  734,  106,  734,  106,  734,
-      106,  106,  106,  358,  106,  106,  359,  106,  734,  734,
-      734,  734,  734,  734,  106,  106,  106,  106,  106,  106,
-      106,  734,  734,  106,  106,  734,  734,  356,  106,  734,
-      106,  734,  106,  734,  106,  734,  106,  360,  106,  106,
-      106,  361,  106,  734,  734,  734,  106,  106,  106,  106,
-      106,  363,  106,  734,  362,  106,  734,  734,  734,  106,
-      106,  106,  106,  106,  106,  734,  106,  734,  364,  734,
+      111,  111,  741,  341,  340,  741,  111,  741,  111,  741,
+      111,  741,  111,  741,  111,  741,  741,  347,  111,  111,
+      111,  343,  111,  344,  111,  111,  741,  111,  345,  741,
+      741,  741,  741,  741,  111,  111,  111,  111,  111,  111,
+      111,  741,  346,  111,  111,  741,  351,  741,  741,  741,
+      111,  741,  111,  741,  111,  352,  352,  352,  352,  111,
+      741,  741,  741,  354,  354,  354,  354,  741,  741,  741,
+      353,  353,  353,  353,  353,  353,  353,  353,  355,  355,
+      355,  355,  355,  355,  355,  355,  111,  111,  741,  741,
+      741,  741,  741,  741,  360,  741,  111,  111,  359,  111,
 
-      106,  106,  365,  106,  106,  366,  106,  734,  367,  106,
-      734,  734,  734,  106,  734,  106,  106,  106,  106,  734,
-      106,  106,  106,  734,  368,  106,  734,  106,  734,  734,
-      734,  106,  734,  106,  734,  106,  734,  106,  106,  106,
-      106,  369,  734,  734,  106,  370,  106,  734,  106,  734,
-      106,  734,  106,  734,  106,  106,  106,  106,  106,  734,
-      371,  734,  734,  106,  734,  106,  734,  372,  734,  106,
-      106,  373,  734,  374,  106,  734,  106,  734,  734,  734,
-      106,  734,  106,  734,  106,  734,  106,  106,  106,  106,
-      106,  734,  734,  106,  734,  106,  734,  106,  734,  106,
+      111,  111,  111,  741,  741,  111,  111,  741,  111,  741,
+      741,  741,  111,  361,  111,  741,  111,  741,  111,  111,
+      362,  111,  111,  741,  741,  111,  741,  111,  364,  111,
+      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
+      365,  111,  111,  366,  111,  741,  741,  741,  741,  741,
+      741,  111,  111,  111,  111,  111,  111,  111,  741,  741,
+      111,  111,  741,  741,  363,  111,  741,  111,  741,  111,
+      741,  111,  741,  111,  367,  111,  111,  111,  368,  111,
+      741,  741,  741,  111,  111,  111,  111,  111,  370,  111,
+      741,  369,  111,  741,  741,  741,  111,  111,  111,  111,
 
-      734,  106,  734,  106,  734,  106,  106,  106,  106,  106,
-      734,  378,  106,  734,  734,  379,  734,  734,  106,  106,
-      106,  106,  106,  106,  106,  380,  734,  106,  106,  382,
-      106,  734,  377,  734,  106,  734,  106,  386,  106,  734,
-      106,  734,  106,  381,  106,  106,  383,  734,  106,  106,
-      384,  734,  734,  734,  734,  106,  106,  106,  106,  106,
-      106,  385,  106,  734,  106,  734,  106,  106,  106,  106,
-      106,  734,  734,  387,  734,  106,  734,  106,  389,  106,
-      106,  106,  734,  106,  734,  734,  734,  106,  106,  106,
-      106,  106,  106,  106,  106,  734,  106,  394,  390,  106,
+      111,  111,  741,  111,  741,  371,  741,  111,  111,  372,
+      111,  111,  373,  111,  741,  374,  111,  741,  741,  741,
+      111,  741,  111,  111,  111,  111,  741,  111,  111,  111,
+      741,  375,  111,  741,  111,  741,  741,  741,  111,  741,
+      111,  741,  111,  741,  111,  111,  111,  111,  376,  741,
+      741,  111,  377,  111,  741,  111,  741,  111,  741,  111,
+      741,  111,  111,  111,  111,  111,  741,  378,  741,  741,
+      111,  741,  111,  741,  379,  741,  111,  111,  380,  741,
+      381,  111,  741,  111,  741,  741,  741,  111,  741,  111,
+      741,  111,  741,  111,  111,  111,  111,  111,  741,  741,
 
-      734,  106,  734,  106,  393,  106,  391,  106,  734,  734,
-      734,  106,  106,  106,  106,  106,  734,  734,  734,  734,
-      106,  734,  106,  734,  106,  395,  106,  734,  106,  396,
-      106,  734,  106,  106,  106,  734,  106,  734,  106,  734,
-      106,  106,  106,  734,  106,  734,  106,  734,  106,  106,
-      106,  734,  106,  734,  734,  734,  106,  106,  106,  106,
-      106,  734,  399,  734,  398,  106,  734,  106,  734,  106,
-      106,  106,  734,  106,  734,  734,  734,  106,  106,  106,
-      106,  106,  400,  734,  106,  106,  106,  401,  106,  106,
-      734,  106,  734,  734,  734,  106,  734,  106,  106,  106,
+      111,  741,  111,  741,  111,  741,  111,  741,  111,  741,
+      111,  741,  111,  111,  111,  111,  111,  741,  385,  111,
+      741,  741,  386,  741,  741,  111,  111,  111,  111,  111,
+      111,  111,  387,  741,  111,  111,  389,  111,  741,  384,
+      741,  111,  741,  111,  393,  111,  741,  111,  741,  111,
+      388,  111,  111,  390,  741,  111,  111,  391,  741,  741,
+      741,  741,  111,  111,  111,  111,  111,  111,  392,  111,
+      741,  111,  741,  111,  111,  111,  111,  111,  741,  741,
+      394,  741,  111,  741,  111,  396,  111,  111,  111,  741,
+      111,  741,  741,  741,  111,  111,  111,  111,  111,  111,
 
-      106,  106,  106,  106,  106,  106,  106,  106,  734,  106,
-      106,  734,  106,  734,  734,  734,  106,  734,  106,  106,
-      106,  404,  106,  106,  106,  106,  106,  734,  106,  106,
-      402,  405,  406,  734,  734,  106,  734,  734,  734,  106,
-      734,  106,  734,  106,  734,  106,  106,  106,  106,  106,
-      734,  734,  734,  734,  106,  734,  106,  734,  106,  734,
-      106,  734,  106,  408,  734,  106,  734,  734,  734,  734,
-      734,  407,  106,  734,  106,  734,  106,  345,  345,  345,
-      345,  106,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  346,  346,  346,  346,  346,  346,  346,  346,  412,
+      111,  111,  741,  111,  401,  397,  111,  741,  111,  741,
+      111,  400,  111,  398,  111,  741,  741,  741,  111,  111,
+      111,  111,  111,  741,  741,  741,  741,  111,  741,  111,
+      741,  111,  402,  111,  741,  111,  403,  111,  741,  111,
+      111,  111,  741,  111,  741,  111,  741,  111,  111,  111,
+      741,  111,  741,  111,  741,  111,  111,  111,  741,  111,
+      741,  741,  741,  111,  111,  111,  111,  111,  741,  406,
+      741,  405,  111,  741,  111,  741,  111,  111,  111,  741,
+      111,  741,  741,  741,  111,  111,  111,  111,  111,  407,
+      741,  111,  111,  111,  408,  111,  111,  741,  111,  741,
 
-      412,  412,  412,  734,  734,  734,  734,  734,  734,  413,
-      734,  734,  734,  346,  346,  346,  346,  346,  346,  346,
-      346,  347,  347,  347,  347,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  348,  348,  348,  348,  348,
-      348,  348,  348,  413,  734,  106,  106,  348,  348,  348,
-      348,  348,  348,  348,  348,  106,  106,  106,  106,  106,
-      106,  106,  418,  417,  106,  106,  734,  734,  734,  734,
-      734,  106,  734,  106,  734,  106,  419,  106,  734,  414,
-      106,  734,  421,  106,  734,  734,  734,  106,  734,  106,
-      734,  106,  734,  106,  734,  106,  106,  106,  106,  422,
+      741,  741,  111,  741,  111,  111,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  741,  111,  111,  741,  111,
+      741,  741,  741,  111,  741,  111,  111,  111,  411,  111,
+      111,  111,  111,  111,  741,  111,  111,  409,  412,  413,
+      741,  741,  111,  741,  741,  741,  111,  741,  111,  741,
+      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
+      741,  111,  741,  111,  741,  111,  741,  111,  741,  111,
+      415,  741,  111,  741,  352,  352,  352,  352,  414,  111,
+      741,  111,  741,  111,  741,  741,  741,  741,  111,  353,
+      353,  353,  353,  353,  353,  353,  353,  419,  419,  419,
 
-      734,  106,  106,  734,  423,  734,  734,  734,  106,  106,
-      106,  106,  106,  106,  734,  106,  734,  106,  734,  106,
-      106,  106,  106,  106,  734,  734,  734,  734,  106,  734,
-      106,  734,  106,  734,  424,  734,  106,  734,  106,  734,
-      106,  106,  106,  734,  106,  426,  425,  734,  106,  106,
-      106,  106,  106,  734,  734,  734,  734,  106,  734,  106,
-      734,  427,  428,  106,  734,  106,  429,  734,  734,  106,
-      106,  106,  106,  106,  430,  734,  734,  734,  106,  734,
-      106,  734,  106,  431,  106,  734,  106,  432,  106,  734,
-      106,  106,  106,  734,  106,  734,  106,  734,  106,  106,
+      419,  741,  741,  741,  741,  741,  741,  741,  420,  741,
+      741,  741,  353,  353,  353,  353,  353,  353,  353,  353,
+      354,  354,  354,  354,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  355,  355,  355,  355,  355,
+      355,  355,  355,  420,  741,  111,  741,  355,  355,  355,
+      355,  355,  355,  355,  355,  111,  741,  111,  741,  111,
+      111,  425,  741,  424,  111,  741,  741,  741,  741,  741,
+      111,  741,  111,  111,  111,  426,  111,  741,  421,  111,
+      741,  741,  741,  111,  741,  111,  111,  111,  111,  741,
+      111,  741,  111,  428,  111,  111,  741,  111,  429,  741,
 
-      106,  734,  106,  734,  433,  734,  106,  106,  106,  734,
-      106,  106,  435,  734,  434,  106,  734,  106,  734,  734,
-      734,  106,  734,  106,  734,  106,  734,  106,  106,  106,
-      106,  106,  734,  734,  106,  436,  106,  734,  106,  734,
-      106,  734,  106,  734,  106,  437,  438,  106,  106,  106,
-      106,  734,  734,  106,  734,  734,  734,  442,  734,  106,
-      106,  106,  106,  106,  106,  734,  734,  106,  106,  106,
-      106,  443,  734,  444,  734,  734,  734,  106,  734,  106,
-      106,  106,  106,  734,  106,  445,  106,  106,  106,  106,
-      446,  734,  734,  734,  734,  734,  734,  106,  106,  447,
+      111,  741,  741,  430,  111,  741,  111,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  741,  111,  111,
+      741,  741,  741,  741,  741,  111,  111,  111,  111,  111,
+      431,  741,  111,  741,  111,  741,  111,  111,  111,  111,
+      111,  741,  432,  741,  741,  111,  433,  111,  741,  111,
+      741,  111,  741,  111,  741,  741,  741,  434,  111,  111,
+      111,  111,  741,  435,  741,  741,  111,  436,  741,  741,
+      111,  111,  111,  437,  111,  741,  741,  111,  741,  111,
+      438,  111,  741,  111,  439,  111,  741,  111,  111,  111,
+      111,  111,  741,  741,  741,  741,  111,  741,  111,  111,
 
-      106,  106,  106,  106,  734,  734,  106,  106,  734,  106,
-      734,  734,  449,  106,  734,  106,  734,  106,  734,  106,
-      106,  106,  448,  106,  451,  734,  734,  452,  106,  734,
-      106,  734,  106,  106,  106,  734,  734,  450,  734,  106,
-      734,  106,  734,  106,  106,  106,  734,  106,  734,  734,
-      734,  106,  106,  106,  106,  106,  106,  106,  106,  454,
-      106,  734,  734,  106,  734,  106,  734,  106,  734,  106,
-      734,  106,  734,  106,  734,  106,  106,  455,  734,  106,
-      734,  106,  734,  106,  106,  106,  734,  106,  734,  457,
-      734,  106,  106,  459,  106,  106,  734,  734,  734,  734,
+      111,  741,  111,  741,  440,  741,  741,  111,  741,  111,
+      741,  111,  741,  111,  111,  442,  741,  441,  111,  741,
+      111,  741,  741,  741,  111,  741,  111,  741,  111,  741,
+      111,  111,  111,  111,  111,  741,  741,  111,  443,  111,
+      741,  111,  741,  111,  741,  111,  741,  111,  444,  445,
+      111,  111,  111,  111,  741,  741,  111,  741,  741,  741,
+      449,  741,  111,  111,  111,  111,  111,  111,  741,  741,
+      111,  111,  111,  111,  450,  741,  451,  741,  741,  741,
+      111,  741,  111,  111,  111,  111,  741,  111,  452,  111,
+      111,  111,  111,  453,  741,  741,  741,  741,  741,  741,
 
-      106,  734,  734,  734,  106,  734,  106,  106,  106,  734,
-      106,  734,  460,  106,  462,  734,  734,  106,  106,  106,
-      106,  106,  463,  464,  106,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  734,  734,  734,  106,  734,  734,
-      734,  106,  106,  106,  734,  106,  734,  734,  106,  734,
-      106,  468,  106,  465,  106,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  734,  734,  734,  106,  734,  106,
-      106,  106,  734,  106,  734,  469,  734,  734,  106,  734,
-      106,  734,  106,  734,  106,  475,  475,  475,  475,  106,
-      734,  734,  734,  734,  734,  734,  734,  106,  734,  476,
+      111,  111,  454,  111,  111,  111,  111,  741,  741,  111,
+      111,  741,  111,  741,  741,  456,  111,  741,  111,  741,
+      111,  741,  111,  111,  111,  455,  111,  458,  741,  741,
+      459,  111,  741,  111,  741,  111,  111,  111,  741,  741,
+      457,  741,  111,  741,  111,  741,  111,  111,  111,  741,
+      111,  741,  741,  741,  111,  111,  111,  111,  111,  111,
+      111,  111,  461,  111,  741,  741,  111,  741,  111,  741,
+      111,  741,  111,  741,  111,  741,  111,  741,  111,  111,
+      462,  741,  111,  741,  111,  741,  111,  111,  111,  741,
+      111,  741,  464,  741,  111,  111,  466,  111,  111,  741,
 
-      476,  476,  476,  476,  476,  476,  476,  106,  734,  106,
-      106,  106,  479,  106,  734,  471,  106,  734,  734,  734,
-      106,  106,  106,  106,  106,  106,  734,  106,  480,  106,
-      734,  106,  106,  482,  106,  106,  734,  106,  734,  734,
-      106,  734,  734,  734,  106,  734,  106,  106,  106,  106,
-      734,  106,  483,  106,  106,  734,  106,  484,  734,  485,
-      106,  734,  734,  734,  106,  734,  106,  734,  106,  734,
-      106,  106,  106,  106,  106,  734,  734,  106,  734,  106,
-      734,  106,  734,  486,  734,  106,  734,  106,  734,  106,
-      106,  106,  106,  734,  488,  487,  106,  734,  106,  734,
+      741,  741,  741,  111,  741,  741,  741,  111,  741,  111,
+      111,  111,  741,  111,  741,  467,  111,  469,  741,  741,
+      111,  111,  111,  111,  111,  470,  471,  111,  741,  111,
+      741,  111,  111,  111,  111,  111,  741,  741,  741,  741,
+      111,  741,  741,  741,  111,  111,  111,  741,  111,  741,
+      741,  111,  741,  111,  475,  111,  472,  111,  741,  111,
+      741,  111,  111,  111,  111,  111,  741,  741,  741,  741,
+      111,  741,  111,  111,  111,  741,  111,  741,  476,  741,
+      741,  111,  741,  111,  741,  111,  741,  111,  482,  482,
+      482,  482,  111,  741,  741,  741,  741,  741,  741,  741,
 
-      734,  734,  106,  734,  106,  734,  106,  734,  106,  734,
-      106,  106,  106,  734,  734,  106,  489,  106,  490,  734,
-      734,  106,  734,  491,  734,  106,  734,  106,  734,  106,
-      734,  106,  106,  106,  106,  106,  734,  493,  106,  734,
-      106,  734,  106,  734,  492,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  734,  106,  734,  106,  734,  106,
-      734,  106,  494,  106,  734,  106,  106,  106,  106,  106,
-      734,  734,  106,  734,  106,  734,  106,  734,  106,  496,
-      106,  734,  106,  495,  106,  106,  106,  497,  106,  106,
-      734,  106,  734,  501,  734,  734,  734,  734,  106,  106,
+      741,  111,  741,  483,  483,  483,  483,  483,  483,  483,
+      483,  111,  741,  111,  111,  111,  486,  111,  478,  741,
+      111,  741,  741,  741,  111,  111,  111,  111,  111,  111,
+      741,  111,  487,  111,  741,  111,  111,  489,  111,  111,
+      741,  111,  741,  741,  111,  741,  741,  741,  111,  741,
+      111,  111,  111,  111,  741,  111,  490,  111,  111,  741,
+      111,  491,  741,  492,  111,  741,  741,  741,  111,  741,
+      111,  741,  111,  741,  111,  111,  111,  111,  111,  741,
+      741,  111,  741,  111,  741,  111,  741,  493,  741,  111,
+      741,  111,  741,  111,  111,  111,  111,  741,  495,  494,
 
-      106,  106,  106,  106,  106,  734,  734,  106,  106,  734,
-      106,  502,  503,  734,  106,  734,  106,  734,  106,  734,
-      106,  106,  106,  106,  106,  734,  734,  106,  734,  106,
-      505,  106,  734,  106,  734,  106,  734,  106,  504,  106,
-      106,  106,  106,  506,  734,  734,  106,  734,  106,  507,
-      734,  734,  106,  734,  106,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  734,  734,  734,  106,  734,  106,
-      734,  106,  734,  106,  106,  508,  734,  509,  106,  734,
-      106,  734,  734,  734,  106,  734,  106,  734,  106,  734,
-      106,  106,  106,  106,  106,  734,  734,  510,  734,  106,
+      111,  741,  111,  741,  741,  741,  111,  741,  111,  741,
+      111,  741,  111,  741,  111,  111,  111,  741,  741,  111,
+      496,  111,  497,  741,  741,  111,  741,  498,  741,  111,
+      741,  111,  741,  111,  741,  111,  111,  111,  111,  111,
+      741,  500,  111,  741,  111,  741,  111,  741,  499,  741,
+      111,  741,  111,  111,  111,  111,  111,  741,  741,  111,
+      741,  111,  741,  111,  741,  111,  501,  111,  741,  111,
+      111,  111,  111,  111,  741,  741,  111,  741,  111,  741,
+      111,  741,  111,  503,  111,  741,  111,  502,  111,  111,
+      111,  504,  111,  111,  741,  111,  741,  508,  741,  741,
 
-      734,  106,  734,  106,  106,  106,  513,  106,  734,  734,
-      106,  734,  734,  734,  106,  106,  515,  106,  106,  106,
-      734,  106,  734,  106,  734,  106,  106,  106,  106,  106,
-      734,  518,  734,  517,  106,  734,  106,  734,  106,  734,
-      106,  734,  106,  734,  734,  734,  106,  106,  106,  734,
-      106,  106,  521,  734,  106,  106,  520,  106,  734,  734,
-      734,  106,  734,  106,  106,  106,  106,  106,  106,  106,
-      106,  106,  106,  106,  734,  106,  106,  734,  734,  734,
-      734,  734,  106,  734,  106,  106,  106,  106,  734,  106,
-      734,  106,  524,  734,  106,  475,  475,  475,  475,  734,
+      741,  741,  111,  111,  111,  111,  111,  111,  111,  741,
+      741,  111,  111,  741,  111,  509,  510,  741,  111,  741,
+      111,  741,  111,  741,  111,  111,  111,  111,  111,  741,
+      741,  111,  741,  111,  512,  111,  741,  111,  741,  111,
+      741,  111,  511,  111,  111,  111,  111,  513,  741,  741,
+      111,  741,  111,  514,  741,  741,  111,  741,  111,  741,
+      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
+      741,  111,  741,  111,  741,  111,  741,  111,  111,  515,
+      741,  516,  111,  741,  111,  741,  741,  741,  111,  741,
+      111,  741,  111,  741,  111,  111,  111,  111,  111,  741,
 
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  476,
-      476,  476,  476,  476,  476,  476,  476,  530,  734,  106,
-      734,  476,  476,  476,  476,  476,  476,  476,  476,  106,
-      734,  106,  106,  106,  734,  106,  734,  533,  106,  534,
-      734,  734,  106,  734,  106,  106,  106,  106,  734,  106,
-      106,  106,  734,  536,  106,  734,  106,  734,  734,  734,
-      106,  734,  106,  734,  106,  734,  106,  106,  537,  106,
-      106,  734,  734,  106,  538,  106,  734,  106,  734,  106,
-      539,  106,  734,  106,  106,  106,  106,  106,  734,  734,
-      106,  734,  106,  734,  106,  734,  106,  734,  106,  734,
+      741,  517,  741,  111,  741,  111,  741,  111,  111,  111,
+      520,  111,  741,  741,  111,  741,  741,  741,  111,  111,
+      522,  111,  111,  111,  741,  111,  741,  111,  741,  111,
+      111,  111,  111,  111,  741,  525,  741,  524,  111,  741,
+      111,  741,  111,  741,  111,  741,  111,  741,  741,  741,
+      111,  111,  111,  741,  111,  111,  528,  741,  111,  111,
+      527,  111,  741,  741,  741,  111,  741,  111,  111,  111,
+      111,  111,  111,  111,  111,  111,  111,  111,  741,  111,
+      111,  741,  741,  741,  741,  741,  111,  741,  111,  111,
+      111,  111,  741,  111,  111,  111,  531,  741,  111,  482,
 
-      106,  106,  106,  106,  106,  734,  734,  734,  540,  106,
-      734,  106,  106,  106,  541,  106,  734,  734,  106,  734,
-      106,  734,  106,  734,  106,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  542,  106,  734,  106,  734,  106,
-      734,  106,  734,  106,  734,  106,  106,  106,  106,  106,
-      734,  734,  734,  543,  106,  734,  106,  106,  106,  734,
-      106,  734,  734,  545,  544,  106,  734,  106,  734,  106,
-      734,  106,  734,  106,  106,  106,  106,  106,  734,  734,
-      106,  734,  106,  734,  546,  734,  106,  551,  106,  734,
-      106,  106,  106,  106,  106,  734,  734,  734,  734,  106,
+      482,  482,  482,  741,  111,  741,  111,  741,  111,  741,
+      741,  741,  540,  111,  483,  483,  483,  483,  483,  483,
+      483,  483,  537,  741,  741,  741,  483,  483,  483,  483,
+      483,  483,  483,  483,  111,  111,  741,  741,  741,  741,
+      741,  541,  741,  741,  111,  111,  111,  111,  111,  111,
+      741,  111,  111,  111,  111,  543,  741,  741,  741,  741,
+      741,  111,  111,  544,  111,  111,  111,  111,  111,  741,
+      111,  111,  741,  741,  545,  546,  741,  111,  111,  111,
+      111,  111,  111,  111,  111,  741,  111,  111,  741,  741,
+      741,  741,  741,  111,  111,  111,  111,  111,  111,  111,
 
-      734,  106,  106,  106,  734,  106,  734,  734,  106,  552,
-      106,  734,  106,  734,  106,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  734,  106,  734,  106,  554,  106,
-      734,  106,  734,  106,  734,  106,  553,  106,  106,  106,
-      106,  106,  734,  734,  106,  734,  734,  734,  734,  734,
-      106,  106,  106,  106,  106,  106,  106,  556,  555,  106,
-      106,  734,  106,  734,  734,  734,  106,  734,  106,  734,
-      106,  734,  106,  106,  106,  106,  106,  734,  734,  106,
-      734,  106,  734,  560,  734,  106,  734,  106,  734,  106,
-      106,  106,  106,  106,  734,  734,  106,  734,  106,  734,
+      741,  741,  111,  111,  741,  111,  547,  548,  741,  111,
+      741,  111,  741,  111,  741,  111,  111,  111,  111,  111,
+      741,  741,  111,  741,  111,  741,  111,  549,  111,  741,
+      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
+      741,  111,  741,  111,  111,  111,  741,  111,  741,  741,
+      741,  550,  111,  741,  111,  111,  111,  741,  111,  741,
+      741,  552,  551,  111,  741,  111,  741,  111,  741,  111,
+      741,  111,  111,  111,  111,  111,  741,  741,  111,  741,
+      111,  741,  553,  741,  111,  558,  111,  741,  111,  111,
+      111,  111,  111,  741,  741,  741,  741,  111,  741,  111,
 
-      106,  734,  106,  734,  106,  734,  106,  557,  106,  106,
-      106,  106,  734,  734,  564,  106,  734,  106,  734,  734,
-      565,  106,  734,  106,  734,  106,  734,  106,  734,  106,
-      106,  106,  568,  106,  734,  734,  106,  734,  734,  573,
-      573,  573,  573,  106,  734,  106,  734,  106,  734,  734,
-      734,  734,  106,  574,  574,  574,  574,  574,  574,  574,
-      574,  106,  106,  578,  734,  734,  734,  734,  577,  734,
-      734,  106,  106,  106,  106,  106,  106,  106,  734,  734,
-      106,  106,  734,  734,  734,  106,  734,  106,  106,  106,
-      734,  106,  734,  580,  734,  106,  106,  106,  106,  106,
+      111,  111,  741,  111,  741,  741,  111,  559,  111,  741,
+      111,  741,  111,  741,  111,  741,  111,  111,  111,  111,
+      111,  741,  741,  111,  741,  111,  561,  111,  741,  111,
+      741,  111,  741,  111,  560,  111,  111,  111,  111,  111,
+      741,  741,  111,  741,  741,  741,  741,  741,  111,  111,
+      111,  111,  111,  111,  111,  563,  562,  111,  111,  741,
+      111,  741,  741,  741,  111,  741,  111,  741,  111,  741,
+      111,  111,  111,  111,  111,  741,  741,  111,  741,  111,
+      741,  567,  741,  111,  741,  111,  741,  111,  111,  111,
+      111,  111,  741,  741,  111,  741,  111,  741,  111,  741,
 
-      582,  106,  106,  581,  106,  734,  734,  106,  585,  106,
-      734,  106,  734,  583,  734,  106,  734,  106,  734,  106,
-      106,  106,  584,  106,  734,  106,  734,  106,  106,  106,
-      734,  106,  734,  734,  734,  106,  106,  106,  106,  106,
-      734,  586,  734,  734,  106,  734,  106,  734,  106,  734,
-      106,  734,  106,  734,  106,  734,  106,  106,  106,  734,
-      106,  587,  106,  734,  106,  106,  106,  734,  106,  734,
-      734,  734,  106,  106,  106,  106,  106,  734,  592,  734,
-      734,  106,  734,  106,  734,  106,  106,  106,  734,  106,
-      734,  734,  734,  106,  106,  106,  106,  106,  106,  106,
+      111,  741,  111,  741,  111,  564,  111,  111,  111,  111,
+      741,  741,  571,  111,  741,  111,  741,  741,  572,  111,
+      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
+      575,  111,  741,  741,  111,  741,  580,  580,  580,  580,
+      741,  111,  741,  111,  741,  111,  741,  741,  741,  741,
+      111,  581,  581,  581,  581,  581,  581,  581,  581,  111,
+      111,  585,  741,  741,  741,  741,  584,  741,  741,  111,
+      111,  111,  111,  111,  111,  111,  741,  741,  111,  111,
+      741,  741,  741,  111,  741,  111,  111,  111,  741,  111,
+      741,  587,  741,  111,  111,  111,  111,  111,  589,  111,
 
-      106,  734,  106,  734,  734,  106,  734,  106,  734,  106,
-      106,  106,  734,  106,  593,  734,  734,  106,  106,  106,
-      106,  106,  106,  106,  106,  734,  106,  601,  594,  106,
-      734,  106,  734,  106,  734,  106,  734,  106,  734,  734,
-      734,  106,  106,  106,  106,  106,  734,  106,  734,  734,
-      106,  734,  734,  734,  106,  734,  106,  604,  106,  106,
-      734,  106,  734,  106,  734,  734,  106,  573,  573,  573,
-      573,  734,  734,  734,  734,  734,  734,  734,  734,  106,
-      734,  574,  574,  574,  574,  574,  574,  574,  574,  106,
-      106,  106,  613,  106,  734,  734,  106,  734,  106,  734,
+      111,  588,  111,  741,  741,  111,  592,  111,  741,  111,
+      741,  590,  741,  111,  741,  111,  741,  111,  111,  111,
+      591,  111,  741,  111,  741,  111,  111,  111,  741,  111,
+      741,  741,  741,  111,  111,  111,  111,  111,  741,  593,
+      741,  741,  111,  741,  111,  741,  111,  741,  111,  741,
+      111,  741,  111,  741,  111,  111,  111,  741,  111,  594,
+      111,  741,  111,  111,  111,  741,  111,  741,  741,  741,
+      111,  111,  111,  111,  111,  741,  599,  741,  741,  111,
+      741,  111,  741,  111,  111,  111,  741,  111,  741,  741,
+      741,  111,  111,  111,  111,  111,  111,  111,  111,  741,
 
-      106,  734,  106,  734,  106,  734,  106,  106,  106,  106,
-      106,  734,  734,  106,  734,  106,  615,  106,  734,  106,
-      734,  106,  734,  106,  614,  106,  106,  106,  106,  106,
-      734,  734,  106,  616,  734,  734,  734,  734,  106,  106,
-      106,  617,  106,  106,  106,  106,  619,  106,  106,  734,
-      734,  734,  734,  734,  106,  620,  106,  106,  106,  106,
-      106,  734,  734,  106,  106,  734,  734,  734,  106,  734,
-      106,  734,  106,  734,  106,  734,  624,  734,  106,  106,
-      106,  625,  106,  106,  106,  734,  734,  106,  734,  734,
-      626,  734,  734,  106,  106,  106,  106,  106,  106,  106,
+      111,  741,  741,  111,  741,  111,  741,  111,  111,  111,
+      741,  111,  600,  741,  741,  111,  111,  111,  111,  111,
+      111,  111,  111,  741,  111,  608,  601,  111,  741,  111,
+      741,  111,  741,  111,  741,  111,  741,  741,  741,  111,
+      111,  111,  111,  111,  741,  111,  741,  741,  111,  741,
+      741,  741,  111,  741,  111,  611,  111,  111,  741,  111,
+      111,  111,  741,  741,  111,  580,  580,  580,  580,  741,
+      111,  741,  111,  620,  111,  741,  741,  741,  111,  111,
+      581,  581,  581,  581,  581,  581,  581,  581,  111,  111,
+      111,  741,  111,  741,  741,  111,  741,  111,  741,  111,
 
-      106,  734,  106,  106,  734,  734,  734,  734,  734,  106,
-      106,  641,  106,  106,  106,  106,  106,  642,  106,  106,
-      734,  734,  734,  734,  734,  106,  106,  106,  106,  106,
-      106,  106,  106,  734,  106,  106,  734,  734,  734,  734,
-      734,  106,  106,  106,  106,  106,  106,  106,  643,  734,
-      106,  106,  734,  106,  645,  734,  734,  106,  734,  106,
-      734,  106,  734,  106,  106,  106,  106,  106,  734,  734,
-      734,  734,  106,  734,  106,  106,  649,  734,  106,  734,
-      734,  106,  734,  106,  734,  106,  734,  106,  650,  106,
-      734,  106,  106,  106,  106,  106,  734,  734,  106,  734,
+      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
+      111,  111,  621,  622,  111,  741,  623,  741,  741,  741,
+      111,  111,  111,  111,  111,  111,  111,  741,  741,  111,
+      111,  741,  111,  741,  626,  741,  111,  741,  624,  741,
+      111,  741,  111,  111,  111,  111,  111,  741,  741,  111,
+      741,  111,  741,  627,  741,  111,  741,  111,  741,  111,
+      111,  111,  111,  111,  741,  631,  741,  741,  111,  741,
+      111,  111,  111,  632,  111,  741,  741,  111,  633,  111,
+      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
+      111,  111,  741,  741,  111,  741,  111,  741,  111,  741,
 
-      106,  734,  106,  734,  106,  734,  106,  734,  106,  106,
-      106,  106,  106,  734,  734,  734,  734,  106,  734,  106,
-      106,  106,  734,  106,  734,  734,  106,  665,  106,  734,
-      106,  734,  106,  734,  106,  734,  106,  669,  670,  106,
-      106,  106,  106,  734,  734,  106,  734,  734,  734,  734,
-      734,  106,  106,  106,  106,  106,  106,  106,  106,  734,
-      106,  106,  734,  734,  685,  734,  734,  106,  106,  106,
-      106,  106,  106,  734,  734,  734,  106,  106,   54,   54,
-       54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
-       54,   59,   59,   59,   59,   59,   59,   59,   59,   59,
+      648,  741,  111,  741,  111,  741,  111,  111,  111,  111,
+      111,  649,  741,  111,  741,  741,  741,  741,  741,  111,
+      111,  111,  111,  111,  111,  111,  111,  741,  111,  111,
+      741,  741,  741,  741,  741,  111,  111,  111,  111,  111,
+      111,  111,  650,  741,  111,  111,  741,  111,  652,  741,
+      741,  111,  741,  111,  741,  111,  741,  111,  111,  111,
+      111,  111,  741,  741,  741,  741,  111,  741,  111,  111,
+      656,  741,  111,  741,  741,  111,  741,  111,  741,  111,
+      741,  111,  657,  111,  741,  111,  111,  111,  111,  111,
+      741,  741,  111,  741,  111,  741,  111,  741,  111,  741,
 
-       59,   59,   59,   59,   64,   64,   64,   64,   64,   64,
-       64,   64,   64,   64,   64,   64,   64,   67,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
-       76,   76,   76,   76,   76,   76,   76,   76,   76,   76,
-       76,   76,   76,   91,   91,   91,   91,  734,   91,   91,
-       91,   91,   91,   91,   91,   91,   98,   98,   98,  734,
-       98,  734,   98,  734,   98,  163,  163,  734,  163,  163,
-      167,  167,  734,  734,  167,  167,  734,  167,  167,  167,
-      167,  167,  167,  171,  171,  171,  171,  734,  171,  171,
-      171,  171,  171,  171,  171,  171,  173,  173,  173,  173,
+      111,  741,  111,  111,  111,  111,  111,  741,  741,  741,
+      741,  111,  741,  111,  111,  111,  741,  111,  741,  741,
+      111,  672,  111,  741,  111,  741,  111,  741,  111,  741,
+      111,  676,  677,  111,  111,  111,  111,  741,  741,  111,
+      741,  741,  741,  741,  741,  111,  111,  111,  111,  111,
+      111,  111,  111,  741,  111,  111,  741,  741,  692,  741,
+      741,  111,  111,  111,  111,  111,  111,  741,  741,  741,
+      111,  111,   55,   55,   55,   55,   55,   55,   55,   55,
+       55,   55,   55,   55,   55,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   65,   65,
 
-      173,  173,  173,  173,  734,  173,  173,  175,  734,  734,
-      734,  175,  175,  175,  175,  175,  175,  175,  176,  734,
-      734,  734,  176,  176,  176,  176,  176,  176,  176,  181,
-      181,  734,  181,  181,  185,  185,  734,  185,  185,  187,
-      187,  734,  187,  187,  195,  734,  195,  195,  112,  112,
-      734,  112,  112,  263,  734,  263,  263,  270,  734,  270,
-      270,  272,  734,  272,  272,  273,  734,  273,  273,  276,
-      276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
-      276,  276,  196,  196,  734,  196,  196,  576,  576,  734,
-      576,  576,  576,  576,  576,  576,  576,  576,  576,  576,
+       65,   65,   65,   65,   65,   65,   65,   65,   65,   65,
+       65,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   92,   92,   92,
+       92,  741,   92,   92,   92,   92,   92,   92,   92,   92,
+       99,   99,   99,  741,   99,  741,   99,  741,   99,  168,
+      168,  741,  168,  168,  172,  172,  741,  741,  172,  172,
+      741,  172,  172,  172,  172,  172,  172,  176,  176,  176,
+      176,  741,  176,  176,  176,  176,  176,  176,  176,  176,
+      178,  178,  178,  178,  178,  178,  178,  178,  741,  178,
 
-      574,  574,  574,  734,  734,  734,  574,  734,  734,  734,
-      734,  574,   17,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734
+      178,  180,  741,  741,  741,  180,  180,  180,  180,  180,
+      180,  180,  181,  741,  741,  741,  181,  181,  181,  181,
+      181,  181,  181,  186,  186,  741,  186,  186,  190,  190,
+      741,  190,  190,  192,  192,  741,  192,  192,  202,  741,
+      202,  202,  117,  117,  741,  117,  117,  270,  741,  270,
+      270,  277,  741,  277,  277,  279,  741,  279,  279,  280,
+      741,  280,  280,  283,  283,  283,  283,  283,  283,  283,
+      283,  283,  283,  283,  283,  283,  203,  203,  741,  203,
+      203,  583,  583,  741,  583,  583,  583,  583,  583,  583,
+      583,  583,  583,  583,  581,  581,  581,  741,  741,  741,
 
+      581,  741,  741,  741,  741,  581,   17,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741
     } ;
 
-static yyconst short int yy_chk[4496] =
+static yyconst short int yy_chk[4591] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1269,37 +1289,37 @@
         1,    1,    1,    1,    1,    1,    1,    1,    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,   11,    3,    9,    7,    4,    8,    9,    5,    6,
+        1,    1,    1,    3,    3,    3,    4,    4,    4,    5,
+        5,    5,  133,   11,    3,    9,    7,    4,    8,    9,
 
-        6,    6,    7,   10,    8,   12,    7,   10,    8,    6,
-       95,   28,   11,   28,  147,   11,  259,    7,   80,    8,
-       19,   19,   19,   19,  127,  142,   12,   19,  156,   12,
-       20,   20,   20,   20,   80,   99,  732,   20,   24,   24,
-       24,   24,   95,  188,  531,   24,   26,  731,   99,  188,
-       26,  531,   24,   24,   26,   26,   26,   26,   26,   26,
-       26,   78,   78,   78,   78,  137,   80,  147,   11,  128,
-       11,   30,   30,   30,   30,   30,   30,   30,   30,  142,
-      259,  127,   12,  156,   12,   13,   13,   13,   13,   13,
+        5,    6,    6,    6,    7,   12,    8,  147,  132,    7,
+       10,    8,    6,  739,   10,   11,  101,   29,   11,   29,
+        7,   96,    8,   79,   79,   79,   79,   12,  738,  101,
+       12,   19,   19,   19,   19,   81,  538,  133,   19,   20,
+       20,   20,   20,  538,  196,   36,   20,   24,   24,   24,
+       24,   36,   81,   96,   24,   36,  152,   36,   36,   36,
+      142,  147,   24,   24,   36,  132,   26,   80,   80,   80,
+       80,   11,  196,   11,   26,   26,   26,   26,   26,   26,
+       26,   26,  161,   12,   81,   12,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
 
-       79,   79,   79,   79,   90,   90,   90,   90,   13,   13,
-       13,   13,   13,   34,  128,  191,   34,   13,  279,   36,
-       34,  137,   36,   34,   34,   34,   34,   34,  223,   36,
-      159,   36,   34,   36,   40,  261,   34,   35,   36,   13,
-       13,   13,  191,   35,   40,  279,   40,   35,   40,   35,
-       35,   35,  244,   40,  160,  222,   35,  178,  178,  178,
-      178,  268,  268,  234,   13,   13,   13,   14,   14,   14,
+       13,   13,   91,   91,   91,   91,  195,  164,  195,  152,
+       13,   13,   13,   13,   13,   27,  142,  195,  327,   13,
+       27,   41,  357,   27,   27,   27,   27,   27,   27,   27,
+       27,   41,  357,   41,  268,   41,  229,  161,  165,  241,
+       41,   13,   13,   13,   30,   44,   30,   30,   30,   30,
+       30,   30,   30,   30,  230,   44,  193,   44,  251,   44,
+      164,  382,  193,   30,   44,  327,   13,   13,   13,   14,
        14,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,  238,  159,  177,  177,   37,  223,  261,  407,
-       14,   14,   14,   14,   14,  177,   37,   37,   37,   14,
+       14,   14,   14,   14,   14,  229,  165,  268,  241,  182,
+      182,   44,   30,   14,   14,   14,   14,   14,   35,  165,
 
-       37,  190,  160,  190,  222,   37,   44,   44,   37,  244,
-       44,  190,  234,   38,   38,  160,   44,  278,   44,  278,
-       44,   14,   14,   14,   38,   44,   38,  278,   38,  728,
-       38,  238,  727,   38,  350,   44,  100,  100,  100,  100,
-      100,  100,  100,  100,  350,  407,   14,   14,   14,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
+      182,   35,   14,  582,   37,   35,  382,   37,   35,   35,
+       35,   35,   35,  230,   37,  251,   37,   35,   37,   38,
+      286,   35,  401,   37,   14,   14,   14,  275,  275,   38,
+       38,   38,  582,   38,  183,  183,  183,  183,   38,  422,
+      735,   38,  734,  733,  422,  732,  401,  731,  286,   14,
+       14,   14,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1308,476 +1328,485 @@
        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,  343,  415,   97,   97,   97,   97,  415,  726,
-      725,   97,  647,  304,  316,  724,  723,   23,   97,   97,
-      722,   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,  647,  343,   23,
+       15,   15,   15,   15,   15,   23,   47,  730,  285,   47,
+      285,  729,  419,  419,  419,  419,   47,  728,   47,  285,
+       47,  727,   23,  726,  724,   47,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
+       23,   23,  311,  266,   23,   23,   23,   23,   23,   23,
+       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
 
-       23,   23,   33,  304,  316,   33,   33,   33,   33,   33,
-       33,   33,   33,  721,  325,  342,  335,  720,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,  255,  305,  375,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   33,
-       33,   33,   33,   33,   33,   33,   33,   33,   33,   39,
-      260,  320,  341,  342,   41,   41,  325,   41,  335,   39,
-      356,   39,  392,   39,  376,   41,   41,   41,   39,   41,
-       43,  375,   41,  255,   41,   42,   42,  305,  394,  410,
+       23,   23,   23,   23,   23,   23,   23,   31,  245,   31,
+       31,   31,   31,   31,   31,   31,   31,   39,   39,  262,
+      267,   45,   45,  419,  463,   45,   31,  592,   39,  722,
+       39,   45,   39,   45,   39,   45,  332,   39,   43,   43,
+       45,  349,  311,  463,  721,  592,   43,  266,  312,   43,
+       45,   43,  720,   43,  719,   31,   34,  245,   43,   34,
+       34,   34,   34,   34,   34,   34,   34,  323,  262,  267,
+      342,  383,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,  332,  349,
 
-       43,   39,   43,   42,   43,  377,   42,  402,   42,   43,
-       42,  397,   39,   45,   45,   42,   45,  719,  320,  260,
-      403,  341,  394,  481,   45,  388,   45,  409,   45,   46,
-       45,  411,   46,   45,  439,   47,   43,  376,   47,   46,
-      356,   46,   47,   46,  392,   47,  527,   47,   46,   47,
-      461,   48,   50,   47,   47,  601,  397,   45,   47,   48,
-       48,  410,   50,   49,   50,  377,   50,  402,  420,  403,
-       48,   50,   48,   49,   48,   49,   48,   49,  388,   48,
-      481,   49,   49,   51,  441,  601,  411,  409,   50,  439,
-       51,  527,   48,   51,  440,   51,  461,   51,   53,   53,
+      312,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   40,  383,  348,  395,  323,   42,   42,
+      399,   42,  342,   40,  418,   40,  363,   40,  404,   42,
+       42,   42,   40,   42,  350,  384,   42,  555,   42,  409,
+       46,   46,  417,   46,  410,   40,  414,   98,   98,   98,
+       98,   46,  427,   46,   98,   46,   40,   46,   48,  446,
+       46,   48,   98,   98,  348,   48,   49,  474,   48,  395,
+       48,  416,   48,  404,   49,   49,   48,   48,   50,  418,
+      350,   48,  399,  447,   46,   49,  363,   49,   50,   49,
 
-       53,   53,   51,   49,  103,  103,  103,  103,  103,  103,
-      103,  103,   53,   53,   53,   53,   53,   53,   53,   53,
-       76,  420,  453,  456,  717,   76,   76,   76,   76,   76,
-       76,   76,   76,   76,   76,  452,  471,  441,  106,  107,
-      466,  440,  456,   76,   76,   76,   76,   76,  106,  107,
-      106,  107,  106,  107,  108,  715,  107,  106,  107,  452,
-      412,  412,  412,  412,  108,  467,  108,  109,  108,  453,
-      110,  499,  472,  108,   76,   76,   76,  109,  557,  109,
-      110,  109,  110,  470,  110,  111,  109,  473,  474,  110,
-      109,  519,  714,  466,  500,  111,  471,  111,  528,  111,
+       50,   49,   50,  410,   49,  384,   50,   50,   51,  409,
+      717,  111,  414,  555,  417,  427,  716,   49,   51,   52,
+       51,  111,   51,  111,  446,  111,   52,   51,   50,   52,
+      111,   52,  715,   52,   54,   54,   54,   54,   52,  714,
+      447,  416,  474,  448,   51,  488,  479,  473,  478,   54,
+       54,   54,   54,   54,   54,   54,   54,   77,  169,  169,
+      169,  169,   77,   77,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,  169,  169,  169,  169,  169,  169,  169,
+      169,   77,   77,   77,   77,   77,  100,  112,  100,  100,
+      100,  100,  100,  100,  100,  100,  448,  112,  459,  112,
 
-       76,   77,  522,  111,  111,  499,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   77,  192,  192,  192,  192,
-      192,  192,  192,  192,   77,   77,   77,   77,   77,  113,
-      467,  512,  470,  472,  113,  114,  473,  474,  557,  113,
-      412,  113,   77,  113,  523,  114,  519,  114,  113,  114,
-      115,  500,  526,  114,  114,   77,   77,   77,  116,  522,
-      115,  514,  115,  528,  115,  512,  547,  549,  116,  115,
-      116,  116,  116,  713,  498,  529,  712,  116,  523,  535,
-      550,   77,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
+      473,  112,  488,  506,  112,  100,  112,  479,  478,  713,
+      707,  608,   77,   77,   77,  736,  706,  705,  704,  477,
+      701,  102,  459,  102,  102,  102,  102,  102,  102,  102,
+      102,  697,  696,  695,  100,  693,  519,  506,   77,   78,
+      102,  608,  736,  480,   78,   78,   78,   78,   78,   78,
+       78,   78,   78,   78,   78,  105,  105,  105,  105,  105,
+      105,  105,  105,   78,   78,   78,   78,   78,  477,  102,
+      519,  106,  105,  106,  106,  106,  106,  106,  106,  106,
+      106,   78,  199,  199,  199,  199,  199,  199,  199,  199,
+      106,  460,  480,  481,   78,   78,   78,  107,  468,  107,
 
-      105,  105,  105,  105,  117,  526,  118,  118,  498,  529,
-      514,  561,  569,  710,  117,  566,  117,  118,  117,  118,
-      118,  118,  120,  117,  119,  119,  118,  498,  547,  549,
-      535,  550,  120,  120,  120,  119,  120,  119,  121,  119,
-      548,  120,  121,  559,  119,  709,  122,  570,  121,  563,
-      121,  567,  121,  572,  571,  575,  122,  121,  122,  600,
-      122,  123,  123,  123,  125,  122,  566,  124,  124,  569,
-      606,  123,  561,  123,  125,  123,  125,  124,  125,  124,
-      123,  124,  126,  125,  575,  124,  124,  129,  571,  588,
-      589,  674,  126,  600,  126,  126,  126,  129,  563,  585,
+      507,  105,  107,  107,  107,  107,  107,  107,  107,  107,
+      200,  200,  200,  200,  200,  200,  200,  200,  521,  106,
+       78,  108,  113,  108,  108,  108,  108,  108,  108,  108,
+      108,  535,  113,  114,  113,  691,  113,  529,  460,  115,
+      108,  113,  481,  114,  468,  114,  526,  114,  690,  115,
+      689,  115,  114,  115,  534,  170,  114,  507,  115,  170,
+      170,  170,  170,  170,  170,  170,  170,  521,  682,  108,
+      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
+      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
+      110,  110,  116,  118,  529,  505,  535,  530,  118,  534,
 
-      130,  126,  570,  130,  606,  559,  548,  129,  131,  129,
-      130,  129,  130,  567,  130,  572,  129,  585,  131,  130,
-      131,  598,  131,  132,  132,  627,  590,  131,  574,  574,
-      574,  574,  622,  132,  133,  132,  646,  132,  597,  589,
-      132,  132,  132,  729,  133,  134,  133,  133,  133,  588,
-      674,  135,  708,  133,  595,  134,  707,  134,  706,  134,
-      607,  135,  136,  135,  134,  135,  621,  134,  598,  729,
-      135,  603,  136,  605,  136,  138,  136,  608,  139,  623,
-      622,  136,  627,  138,  630,  138,  590,  138,  139,  138,
-      139,  140,  139,  646,  138,  629,  139,  139,  597,  141,
+      533,  526,  116,  118,  116,  118,  116,  118,  119,  120,
+      116,  116,  118,  536,  679,  576,  542,  557,  119,  120,
+      119,  120,  119,  120,  121,  554,  119,  119,  120,  505,
+      122,  530,  556,  678,  121,  570,  121,  121,  121,  602,
+      122,  566,  122,  121,  122,  123,  123,  536,  505,  122,
+      574,  124,  124,  533,  573,  568,  123,  671,  123,  123,
+      123,  579,  124,  125,  124,  123,  124,  542,  557,  564,
+      578,  124,  576,  125,  125,  125,  126,  125,  596,  127,
+      126,  577,  125,  595,  570,  670,  126,  554,  126,  127,
+      126,  127,  602,  127,  556,  126,  129,  129,  127,  128,
 
-      632,  140,  143,  140,  634,  140,  636,  595,  574,  141,
-      140,  141,  143,  141,  143,  144,  143,  141,  141,  621,
-      143,  143,  607,  637,  605,  144,  145,  144,  638,  144,
-      700,  603,  623,  656,  144,  144,  145,  608,  145,  146,
-      145,  648,  146,  699,  630,  145,  146,  653,  629,  146,
-      698,  146,  654,  146,  148,  148,  651,  634,  146,  730,
-      660,  149,  632,  697,  658,  148,  659,  148,  636,  148,
-      703,  149,  150,  149,  148,  149,  149,  661,  151,  149,
-      149,  638,  150,  637,  150,  730,  150,  153,  151,  152,
-      151,  150,  151,  656,  151,  694,  150,  151,  648,  152,
+      128,  128,  612,  566,  578,  573,  129,  130,  129,  128,
+      129,  128,  574,  128,  129,  129,  568,  130,  128,  130,
+      131,  130,  605,  579,  628,  134,  130,  596,  597,  564,
+      131,  654,  131,  131,  131,  134,  577,  630,  135,  131,
+      607,  135,  613,  595,  604,  134,  136,  134,  135,  134,
+      135,  610,  135,  612,  134,  614,  136,  135,  136,  629,
+      136,  137,  137,  634,  615,  136,  654,  737,  669,  605,
+      664,  137,  138,  137,  607,  137,  613,  628,  137,  137,
+      137,  653,  138,  139,  138,  138,  138,  655,  597,  140,
+      630,  138,  636,  139,  737,  139,  662,  139,  639,  140,
 
-      153,  152,  667,  152,  653,  654,  154,  651,  152,  687,
-      153,  154,  153,  660,  153,  666,  154,  155,  154,  153,
-      154,  658,  691,  157,  690,  154,  659,  155,  703,  155,
-      157,  155,  668,  157,  661,  157,  155,  157,  161,  158,
-      158,  676,  157,  158,  609,  609,  609,  609,  161,  158,
-      161,  158,  161,  158,  680,  667,  161,  161,  158,  164,
-      164,  164,  164,  673,  678,  687,  666,  689,  688,  711,
-      693,  695,  686,  164,  164,  164,  164,  164,  164,  164,
-      164,  165,  701,  668,  691,  165,  165,  165,  165,  165,
-      165,  165,  165,  166,  676,  679,  681,  166,  166,  166,
+      141,  140,  139,  140,  604,  139,  637,  629,  140,  641,
+      141,  610,  141,  143,  141,  644,  144,  614,  645,  141,
+      634,  143,  660,  143,  615,  143,  144,  143,  144,  145,
+      144,  658,  143,  643,  144,  144,  698,  146,  653,  145,
+      148,  145,  663,  145,  655,  636,  666,  146,  145,  146,
+      148,  146,  148,  149,  148,  146,  146,  673,  148,  148,
+      639,  659,  641,  149,  150,  149,  637,  149,  661,  651,
+      667,  645,  149,  149,  150,  644,  150,  151,  150,  660,
+      151,  681,  658,  150,  151,  665,  668,  151,  687,  151,
+      647,  151,  153,  153,  674,  643,  151,  646,  698,  154,
 
-      166,  166,  166,  166,  166,  195,  197,  198,  684,  197,
-      683,  680,  682,  675,  673,  678,  197,  198,  197,  198,
-      197,  198,  199,  200,  609,  197,  198,  693,  695,  711,
-      696,  701,  199,  200,  199,  200,  199,  200,  704,  672,
-      671,  199,  200,  664,  663,  662,  657,  681,  679,  705,
-      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
-      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
-      195,  195,  201,  655,  652,  644,  640,  639,  635,  633,
-      203,  696,  201,  204,  201,  201,  201,  203,  631,  704,
-      203,  201,  203,  204,  203,  204,  205,  204,  628,  203,
+      675,  710,  663,  153,  694,  153,  666,  153,  673,  154,
+      155,  154,  153,  154,  154,  680,  156,  154,  154,  683,
+      155,  661,  155,  667,  155,  158,  156,  157,  156,  155,
+      156,  642,  156,  640,  155,  156,  638,  157,  158,  157,
+      681,  157,  665,  668,  159,  687,  157,  674,  158,  159,
+      158,  675,  158,  686,  159,  160,  159,  158,  159,  710,
+      694,  162,  700,  159,  635,  160,  680,  160,  162,  160,
+      685,  162,  683,  162,  160,  162,  166,  163,  163,  702,
+      162,  163,  581,  581,  581,  581,  166,  163,  166,  163,
+      166,  163,  718,  171,  166,  166,  163,  171,  171,  171,
 
-      705,  618,  204,  612,  206,  611,  205,  602,  205,  599,
-      205,  596,  207,  205,  206,  205,  206,  591,  206,  579,
-      208,  576,  207,  206,  207,  562,  207,  208,  207,  558,
-      208,  207,  208,  209,  208,  525,  516,  511,  478,  208,
-      477,  210,  458,  209,  211,  209,  416,  209,  351,  349,
-      209,  210,  209,  210,  211,  210,  211,  280,  211,  273,
-      210,  211,  211,  211,  212,  212,  213,  272,  271,  213,
-      270,  269,  212,  266,  263,  212,  213,  212,  213,  212,
-      213,  214,  202,  196,  212,  213,  189,  215,  187,  185,
-      183,  214,  181,  214,  214,  214,  176,  215,  216,  215,
+      171,  171,  171,  171,  171,  197,  686,  197,  197,  197,
+      197,  197,  197,  197,  197,  204,  205,  625,  204,  700,
+      619,  685,  688,  618,  197,  204,  205,  204,  205,  204,
+      205,  206,  207,  703,  204,  205,  702,  708,  609,  606,
+      603,  206,  207,  206,  207,  206,  207,  208,  598,  586,
+      206,  207,  718,  197,  202,  210,  583,  208,  211,  208,
+      208,  208,  210,  581,  569,  210,  208,  210,  211,  210,
+      211,  212,  211,  688,  210,  711,  712,  211,  565,  213,
+      532,  212,  523,  212,  703,  212,  708,  518,  212,  213,
+      212,  213,  485,  213,  616,  616,  616,  616,  213,  202,
 
-      214,  215,  174,  169,  217,  163,  215,  217,  216,  216,
-      216,  112,  216,  104,  217,  218,  217,  216,  217,  101,
-       98,  219,   96,  217,  219,  218,   94,  218,  218,  218,
-       93,  219,  220,  219,  218,  219,   92,   89,   84,   83,
-      219,   82,  220,  221,  220,   69,  220,   66,   62,  220,
-       61,  220,   58,  221,  221,  221,  224,  221,   57,   52,
-       31,   27,  221,   22,  225,   21,  224,  226,  224,   18,
-      224,   17,    0,  224,  225,  224,  225,  226,  225,  226,
-      226,  226,  227,  225,    0,  228,  226,    0,  229,    0,
-        0,  229,  227,    0,  227,  228,  227,  228,  229,  228,
+      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
+      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
+      202,  214,  215,  484,  465,  423,  711,  712,  358,  215,
+      356,  214,  215,  214,  215,  214,  215,  214,  216,  217,
+      214,  215,  287,  280,  279,  278,  277,  276,  216,  217,
+      216,  217,  216,  217,  218,  216,  273,  216,  217,  270,
+      209,  203,  194,  192,  218,  190,  218,  188,  218,  219,
+      219,  218,  218,  218,  186,  616,  220,  219,  181,  220,
+      219,  179,  219,  174,  219,  168,  220,  221,  220,  219,
+      220,  117,  109,  222,  103,  220,   99,  221,   97,  221,
 
-      229,  227,  229,  228,  228,  230,  231,  229,    0,    0,
-        0,    0,    0,    0,  230,    0,  231,  232,  231,    0,
-      231,    0,    0,    0,  230,  231,  230,  232,  230,  232,
-      233,  232,    0,  230,    0,    0,  232,    0,  235,    0,
-      233,  235,  233,    0,  233,    0,    0,    0,  235,  233,
-      235,  236,  235,    0,  236,    0,    0,  235,    0,  237,
-        0,  236,  239,  236,    0,  236,  237,    0,    0,  237,
-      236,  237,  239,  237,  239,  240,  239,    0,  237,    0,
-      239,  239,    0,  241,    0,  240,    0,  240,    0,  240,
-        0,  242,    0,  241,  240,  241,    0,  241,    0,  243,
+      221,  221,   95,  222,  223,  222,  221,  222,   94,   93,
+      224,   90,  222,  224,  223,  223,  223,   85,  223,   84,
+      224,  225,  224,  223,  224,   83,   70,  226,   67,  224,
+      226,  225,   63,  225,  225,  225,   62,  226,  227,  226,
+      225,  226,   59,   58,   53,   32,  226,   28,  227,  228,
+      227,   22,  227,   21,   18,  227,   17,  227,    0,  228,
+      228,  228,  231,  228,    0,    0,    0,    0,  228,    0,
+      232,    0,  231,  233,  231,    0,  231,    0,    0,  231,
+      232,  231,  232,  233,  232,  233,  233,  233,  234,  232,
+        0,  235,  233,    0,  236,    0,    0,  236,  234,    0,
 
-      241,  242,  241,  242,    0,  242,    0,    0,  242,  243,
-      242,  243,  245,  243,  246,  246,    0,    0,  243,  243,
-        0,    0,  245,  247,  245,  246,  245,  246,    0,  246,
-        0,  245,    0,  247,  246,  247,  248,  247,    0,    0,
-        0,    0,  247,    0,  249,    0,  248,  249,  248,    0,
-      248,    0,  250,    0,  249,  248,  249,    0,  249,  250,
-      251,    0,  250,  249,  250,    0,  250,    0,    0,    0,
-      251,  250,  251,  252,  251,    0,    0,    0,  251,  251,
-        0,  253,    0,  252,    0,  252,    0,  252,    0,    0,
-      252,  253,  252,  253,  254,  253,    0,  254,  253,    0,
+      234,  235,  234,  235,  236,  235,  236,  234,  236,  235,
+      235,  237,  238,  236,    0,    0,    0,    0,    0,    0,
+      237,    0,  238,  239,  238,    0,  238,    0,    0,    0,
+      237,  238,  237,  239,  237,  239,  240,  239,    0,  237,
+        0,    0,  239,    0,  242,    0,  240,  242,  240,    0,
+      240,    0,    0,    0,  242,  240,  242,  243,  242,    0,
+      243,    0,    0,  242,    0,  244,    0,  243,  246,  243,
+        0,  243,  244,    0,    0,  244,  243,  244,  246,  244,
+      246,  247,  246,    0,  244,    0,  246,  246,    0,  248,
+        0,  247,    0,  247,    0,  247,    0,  249,    0,  248,
 
-      253,    0,  256,    0,  254,    0,  254,    0,  254,    0,
-        0,  258,  256,  254,  256,  256,  256,  256,  257,  258,
-        0,  256,  256,    0,    0,    0,    0,    0,  257,  258,
-      257,  258,  257,  258,  262,    0,  257,  257,  258,    0,
-      262,    0,    0,    0,  262,    0,  262,    0,  262,  264,
-      264,  264,  264,  262,    0,    0,    0,  265,  265,  265,
-      265,    0,    0,  264,  264,  264,  264,  264,  264,  264,
-      264,  265,  265,  265,  265,  265,  265,  265,  265,  281,
-      282,    0,    0,    0,    0,    0,    0,  282,    0,  281,
-      282,  281,  282,  281,  282,  283,    0,    0,  281,  282,
+      247,  248,    0,  248,    0,  250,  248,  249,  248,  249,
+        0,  249,    0,    0,  249,  250,  249,  250,  252,  250,
+      253,  253,    0,    0,  250,  250,    0,    0,  252,  254,
+      252,  253,  252,  253,    0,  253,    0,  252,    0,  254,
+      253,  254,  255,  254,    0,    0,    0,    0,  254,    0,
+      256,    0,  255,  256,  255,    0,  255,    0,  257,    0,
+      256,  255,  256,    0,  256,  257,  258,    0,  257,  256,
+      257,    0,  257,    0,    0,    0,  258,  257,  258,  259,
+      258,    0,    0,    0,  258,  258,    0,  260,    0,  259,
+        0,  259,    0,  259,    0,    0,  259,  260,  259,  260,
 
-        0,  284,    0,    0,    0,  283,  283,  283,    0,  283,
-        0,  284,  285,  284,  283,  284,    0,    0,  286,    0,
-      284,  286,  285,    0,  285,    0,  285,    0,  286,    0,
-      286,  285,  286,  287,  287,  288,  288,  286,    0,    0,
-        0,    0,    0,    0,  287,  288,  287,  288,  287,  288,
-      289,    0,    0,  287,  288,    0,    0,  285,  290,    0,
-      289,    0,  289,    0,  289,    0,  291,  289,  290,  289,
-      290,  290,  290,    0,    0,    0,  291,  290,  291,  293,
-      291,  292,  292,    0,  291,  291,    0,    0,    0,  293,
-      294,  293,  292,  293,  292,    0,  292,    0,  293,    0,
+      261,  260,    0,  261,  260,    0,  260,    0,  263,    0,
+      261,    0,  261,    0,  261,    0,    0,  265,  263,  261,
+      263,  263,  263,  263,  264,  265,    0,  263,  263,    0,
+        0,    0,    0,    0,  264,  265,  264,  265,  264,  265,
+      269,    0,  264,  264,  265,    0,  269,    0,    0,    0,
+      269,    0,  269,    0,  269,  271,  271,  271,  271,  269,
+        0,    0,    0,  272,  272,  272,  272,    0,    0,    0,
+      271,  271,  271,  271,  271,  271,  271,  271,  272,  272,
+      272,  272,  272,  272,  272,  272,  288,  289,    0,    0,
+        0,    0,    0,    0,  289,    0,  288,  289,  288,  289,
 
-      294,  292,  294,  295,  294,  295,  296,    0,  296,  294,
-        0,    0,    0,  295,    0,  295,  296,  295,  296,    0,
-      296,  297,  295,    0,  297,  296,    0,  298,    0,    0,
-        0,  297,    0,  297,    0,  297,    0,  298,  299,  298,
-      297,  298,    0,    0,  300,  299,  298,    0,  299,    0,
-      299,    0,  299,    0,  300,  301,  300,  299,  300,    0,
-      300,    0,    0,  300,    0,  301,    0,  301,    0,  301,
-      302,  301,    0,  302,  301,    0,  303,    0,    0,    0,
-      302,    0,  302,    0,  302,    0,  303,  306,  303,  302,
-      303,    0,    0,  307,    0,  303,    0,  306,    0,  306,
+      288,  289,  290,    0,    0,  288,  289,    0,  291,    0,
+        0,    0,  290,  290,  290,    0,  290,    0,  291,  292,
+      291,  290,  291,    0,    0,  293,    0,  291,  293,  292,
+        0,  292,    0,  292,    0,  293,    0,  293,  292,  293,
+      294,  294,  295,  295,  293,    0,    0,    0,    0,    0,
+        0,  294,  295,  294,  295,  294,  295,  296,    0,    0,
+      294,  295,    0,    0,  292,  297,    0,  296,    0,  296,
+        0,  296,    0,  298,  296,  297,  296,  297,  297,  297,
+        0,    0,    0,  298,  297,  298,  300,  298,  299,  299,
+        0,  298,  298,    0,    0,    0,  300,  301,  300,  299,
 
-        0,  306,    0,  307,    0,  307,  306,  307,  308,  309,
-        0,  307,  307,    0,    0,  308,    0,    0,  308,  309,
-      308,  309,  308,  309,  310,  309,    0,  308,  309,  311,
-      311,    0,  306,    0,  310,    0,  310,  313,  310,    0,
-      311,    0,  311,  310,  311,  312,  311,    0,  313,  311,
-      312,    0,    0,    0,    0,  312,  314,  312,  313,  312,
-      313,  312,  313,    0,  312,    0,  314,  313,  314,  315,
-      314,    0,    0,  314,    0,  314,    0,  317,  317,  315,
-      318,  315,    0,  315,    0,    0,    0,  317,  315,  317,
-      318,  317,  318,  319,  318,    0,  317,  322,  318,  318,
+      300,  299,    0,  299,    0,  300,    0,  301,  299,  301,
+      302,  301,  302,  303,    0,  303,  301,    0,    0,    0,
+      302,    0,  302,  303,  302,  303,    0,  303,  304,  302,
+        0,  304,  303,    0,  305,    0,    0,    0,  304,    0,
+      304,    0,  304,    0,  305,  306,  305,  304,  305,    0,
+        0,  307,  306,  305,    0,  306,    0,  306,    0,  306,
+        0,  307,  308,  307,  306,  307,    0,  307,    0,    0,
+      307,    0,  308,    0,  308,    0,  308,  309,  308,    0,
+      309,  308,    0,  310,    0,    0,    0,  309,    0,  309,
+        0,  309,    0,  310,  313,  310,  309,  310,    0,    0,
 
-        0,  321,    0,  319,  321,  319,  319,  319,    0,    0,
-        0,  321,  319,  321,  322,  321,    0,    0,    0,    0,
-      321,    0,  323,    0,  322,  323,  322,    0,  322,  324,
-      324,    0,  323,  322,  323,    0,  323,    0,  326,    0,
-      324,  323,  324,    0,  324,    0,  327,    0,  326,  324,
-      326,    0,  326,    0,    0,    0,  327,  326,  327,  328,
-      327,    0,  328,    0,  327,  327,    0,  329,    0,  328,
-      330,  328,    0,  328,    0,    0,    0,  329,  328,  329,
-      330,  329,  330,    0,  330,  332,  329,  331,  331,  330,
-        0,  333,    0,    0,    0,  332,    0,  332,  331,  332,
+      314,    0,  310,    0,  313,    0,  313,    0,  313,    0,
+      314,    0,  314,  313,  314,  315,  316,    0,  314,  314,
+        0,    0,  315,    0,    0,  315,  316,  315,  316,  315,
+      316,  317,  316,    0,  315,  316,  318,  318,    0,  313,
+        0,  317,    0,  317,  320,  317,    0,  318,    0,  318,
+      317,  318,  319,  318,    0,  320,  318,  319,    0,    0,
+        0,    0,  319,  321,  319,  320,  319,  320,  319,  320,
+        0,  319,    0,  321,  320,  321,  322,  321,    0,    0,
+      321,    0,  321,    0,  324,  324,  322,  325,  322,    0,
+      322,    0,    0,    0,  324,  322,  324,  325,  324,  325,
 
-      331,  333,  331,  333,  332,  333,  334,  331,    0,  336,
-      333,    0,  337,    0,    0,    0,  334,    0,  334,  336,
-      334,  336,  337,  336,  337,  334,  337,    0,  336,  338,
-      332,  337,  338,    0,    0,  339,    0,    0,    0,  338,
-        0,  338,    0,  338,    0,  339,  340,  339,  338,  339,
-        0,    0,    0,    0,  339,    0,  340,    0,  340,    0,
-      340,    0,  344,  340,    0,  340,    0,    0,    0,    0,
-        0,  339,  344,    0,  344,    0,  344,  345,  345,  345,
-      345,  344,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  345,  345,  345,  345,  345,  345,  345,  345,  346,
+      326,  325,    0,  324,  329,  325,  325,    0,  328,    0,
+      326,  328,  326,  326,  326,    0,    0,    0,  328,  326,
+      328,  329,  328,    0,    0,    0,    0,  328,    0,  330,
+        0,  329,  330,  329,    0,  329,  331,  331,    0,  330,
+      329,  330,    0,  330,    0,  333,    0,  331,  330,  331,
+        0,  331,    0,  334,    0,  333,  331,  333,    0,  333,
+        0,    0,    0,  334,  333,  334,  335,  334,    0,  335,
+        0,  334,  334,    0,  336,    0,  335,  337,  335,    0,
+      335,    0,    0,    0,  336,  335,  336,  337,  336,  337,
+        0,  337,  339,  336,  338,  338,  337,    0,  340,    0,
 
-      346,  346,  346,    0,    0,    0,    0,    0,    0,  346,
-        0,    0,    0,  346,  346,  346,  346,  346,  346,  346,
-      346,  347,  347,  347,  347,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  347,  347,  347,  347,  347,
-      347,  347,  347,  348,    0,  352,  355,  348,  348,  348,
-      348,  348,  348,  348,  348,  352,  355,  352,  355,  352,
-      355,  353,  353,  352,  352,  355,    0,    0,    0,    0,
-        0,  353,    0,  353,    0,  353,  354,  354,    0,  346,
-      353,    0,  357,  357,    0,    0,    0,  354,    0,  354,
-        0,  354,    0,  357,    0,  357,  354,  357,  358,  358,
+        0,    0,  339,    0,  339,  338,  339,  338,  340,  338,
+      340,  339,  340,  341,  338,    0,  343,  340,    0,  344,
+        0,    0,    0,  341,    0,  341,  343,  341,  343,  344,
+      343,  344,  341,  344,    0,  343,  345,  339,  344,  345,
+        0,    0,  346,    0,    0,    0,  345,    0,  345,    0,
+      345,    0,  346,  347,  346,  345,  346,    0,    0,    0,
+        0,  346,    0,  347,    0,  347,    0,  347,    0,  351,
+      347,    0,  347,    0,  352,  352,  352,  352,  346,  351,
+        0,  351,    0,  351,    0,    0,    0,    0,  351,  352,
+      352,  352,  352,  352,  352,  352,  352,  353,  353,  353,
 
-        0,  359,  357,    0,  359,    0,    0,    0,  358,  360,
-      358,  359,  358,  359,    0,  359,    0,  358,    0,  360,
-      359,  360,  361,  360,    0,    0,    0,    0,  360,    0,
-      362,    0,  361,    0,  361,    0,  361,    0,  363,    0,
-      362,  361,  362,    0,  362,  363,  362,    0,  363,  362,
-      363,  364,  363,    0,    0,    0,    0,  363,    0,  365,
-        0,  364,  365,  364,    0,  364,  365,    0,    0,  365,
-      364,  365,  366,  365,  366,    0,    0,    0,  365,    0,
-      367,    0,  366,  367,  366,    0,  366,  367,  368,    0,
-      367,  366,  367,    0,  367,    0,  369,    0,  368,  367,
+      353,    0,    0,    0,    0,    0,    0,    0,  353,    0,
+        0,    0,  353,  353,  353,  353,  353,  353,  353,  353,
+      354,  354,  354,  354,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  354,  354,  354,  354,  354,
+      354,  354,  354,  355,    0,  359,    0,  355,  355,  355,
+      355,  355,  355,  355,  355,  359,    0,  359,    0,  359,
+      360,  360,    0,  359,  359,    0,    0,    0,    0,    0,
+      360,    0,  360,  362,  360,  361,  361,    0,  353,  360,
+        0,    0,    0,  362,    0,  362,  361,  362,  361,    0,
+      361,    0,  362,  364,  364,  361,    0,  365,  365,    0,
 
-      368,    0,  368,    0,  368,    0,  369,  368,  369,    0,
-      369,  370,  370,    0,  369,  369,    0,  371,    0,    0,
-        0,  370,    0,  370,    0,  370,    0,  371,  372,  371,
-      370,  371,    0,    0,  373,  371,  371,    0,  372,    0,
-      372,    0,  372,    0,  373,  372,  373,  372,  373,  374,
-      378,    0,    0,  373,    0,    0,    0,  378,    0,  374,
-      378,  374,  378,  374,  378,    0,    0,  380,  374,  378,
-      379,  379,    0,  379,    0,    0,    0,  380,    0,  380,
-      379,  380,  379,    0,  379,  380,  380,  382,  381,  379,
-      381,    0,    0,    0,    0,    0,    0,  382,  381,  382,
+      366,    0,    0,  366,  364,    0,  364,  365,  364,  365,
+      366,  365,  366,  364,  366,  367,  365,    0,  368,  366,
+        0,    0,    0,    0,    0,  367,  369,  367,  368,  367,
+      368,    0,  368,    0,  367,    0,  369,  368,  369,  370,
+      369,    0,  369,    0,    0,  369,  370,  371,    0,  370,
+        0,  370,    0,  370,    0,    0,    0,  371,  370,  371,
+      372,  371,    0,  372,    0,    0,  371,  372,    0,    0,
+      372,  373,  372,  373,  372,    0,    0,  374,    0,  372,
+      374,  373,    0,  373,  374,  373,    0,  374,  375,  374,
+      373,  374,    0,    0,    0,    0,  374,    0,  375,  376,
 
-      381,  382,  381,  383,    0,    0,  382,  381,    0,  384,
-        0,    0,  384,  383,    0,  383,    0,  383,    0,  384,
-      385,  384,  383,  384,  386,    0,    0,  387,  384,    0,
-      385,    0,  385,  386,  385,    0,    0,  385,    0,  385,
-        0,  389,    0,  386,  387,  386,    0,  386,    0,    0,
-        0,  389,  386,  389,  387,  389,  387,  390,  387,  389,
-      389,    0,    0,  387,    0,  391,    0,  390,    0,  390,
-        0,  390,    0,  393,    0,  391,  390,  391,    0,  391,
-        0,  395,    0,  393,  391,  393,    0,  393,    0,  393,
-        0,  395,  393,  395,  396,  395,    0,    0,    0,    0,
+      375,    0,  375,    0,  375,    0,    0,  375,    0,  376,
+        0,  376,    0,  376,  377,  377,    0,  376,  376,    0,
+      378,    0,    0,    0,  377,    0,  377,    0,  377,    0,
+      378,  379,  378,  377,  378,    0,    0,  380,  378,  378,
+        0,  379,    0,  379,    0,  379,    0,  380,  379,  380,
+      379,  380,  381,  385,    0,    0,  380,    0,    0,    0,
+      385,    0,  381,  385,  381,  385,  381,  385,    0,    0,
+      387,  381,  385,  386,  386,    0,  386,    0,    0,    0,
+      387,    0,  387,  386,  387,  386,    0,  386,  387,  387,
+      389,  388,  386,  388,    0,    0,    0,    0,    0,    0,
 
-      395,    0,    0,    0,  396,    0,  396,  398,  396,    0,
-      399,    0,  396,  396,  398,    0,    0,  398,  400,  398,
-      399,  398,  399,  400,  399,    0,  398,    0,  400,  399,
-      400,  401,  400,    0,    0,    0,    0,  400,    0,    0,
-        0,  401,  404,  401,    0,  401,    0,    0,  405,    0,
-      401,  405,  404,  401,  404,    0,  404,    0,  405,  406,
-      405,  404,  405,    0,    0,    0,    0,  405,    0,  406,
-      408,  406,    0,  406,    0,  406,    0,    0,  406,    0,
-      408,    0,  408,    0,  408,  413,  413,  413,  413,  408,
-        0,    0,    0,    0,    0,    0,    0,  417,    0,  413,
+      389,  388,  389,  388,  389,  388,  390,    0,    0,  389,
+      388,    0,  391,    0,    0,  391,  390,    0,  390,    0,
+      390,    0,  391,  392,  391,  390,  391,  393,    0,    0,
+      394,  391,    0,  392,    0,  392,  393,  392,    0,    0,
+      392,    0,  392,    0,  396,    0,  393,  394,  393,    0,
+      393,    0,    0,    0,  396,  393,  396,  394,  396,  394,
+      397,  394,  396,  396,    0,    0,  394,    0,  398,    0,
+      397,    0,  397,    0,  397,    0,  400,    0,  398,  397,
+      398,    0,  398,    0,  402,    0,  400,  398,  400,    0,
+      400,    0,  400,    0,  402,  400,  402,  403,  402,    0,
 
-      413,  413,  413,  413,  413,  413,  413,  417,    0,  417,
-      419,  417,  418,  418,    0,  408,  417,    0,    0,    0,
-      419,  421,  419,  418,  419,  418,    0,  418,  419,  419,
-        0,  421,  418,  421,  422,  421,    0,  423,    0,    0,
-      421,    0,    0,    0,  422,    0,  422,  423,  422,  423,
-        0,  423,  422,  422,  424,    0,  423,  424,    0,  425,
-      425,    0,    0,    0,  424,    0,  424,    0,  424,    0,
-      425,  426,  425,  424,  425,    0,    0,  427,    0,  425,
-        0,  426,    0,  426,    0,  426,    0,  427,    0,  427,
-      426,  427,  428,    0,  428,  427,  427,    0,  429,    0,
+        0,    0,    0,  402,    0,    0,    0,  403,    0,  403,
+      405,  403,    0,  406,    0,  403,  403,  405,    0,    0,
+      405,  407,  405,  406,  405,  406,  407,  406,    0,  405,
+        0,  407,  406,  407,  408,  407,    0,    0,    0,    0,
+      407,    0,    0,    0,  408,  411,  408,    0,  408,    0,
+        0,  412,    0,  408,  412,  411,  408,  411,    0,  411,
+        0,  412,  413,  412,  411,  412,    0,    0,    0,    0,
+      412,    0,  413,  415,  413,    0,  413,    0,  413,    0,
+        0,  413,    0,  415,    0,  415,    0,  415,  420,  420,
+      420,  420,  415,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  428,    0,  428,    0,  428,    0,  429,    0,
-      429,  428,  429,    0,    0,  430,  429,  429,  430,    0,
-        0,  431,    0,  431,    0,  430,    0,  430,    0,  430,
-        0,  431,  432,  431,  430,  431,    0,  433,  433,    0,
-      431,    0,  432,    0,  432,    0,  432,    0,  433,  434,
-      433,  432,  433,    0,    0,  435,    0,  433,    0,  434,
-        0,  434,  435,  434,    0,  435,  436,  435,  434,  435,
-        0,    0,  437,    0,  435,    0,  436,    0,  436,  437,
-      436,    0,  437,  436,  437,  436,  437,  438,  438,  442,
-        0,  437,    0,  442,    0,    0,    0,    0,  438,  442,
+        0,  424,    0,  420,  420,  420,  420,  420,  420,  420,
+      420,  424,    0,  424,  426,  424,  425,  425,  415,    0,
+      424,    0,    0,    0,  426,  428,  426,  425,  426,  425,
+        0,  425,  426,  426,    0,  428,  425,  428,  429,  428,
+        0,  430,    0,    0,  428,    0,    0,    0,  429,    0,
+      429,  430,  429,  430,    0,  430,  429,  429,  431,    0,
+      430,  431,    0,  432,  432,    0,    0,    0,  431,    0,
+      431,    0,  431,    0,  432,  433,  432,  431,  432,    0,
+        0,  434,    0,  432,    0,  433,    0,  433,    0,  433,
+        0,  434,    0,  434,  433,  434,  435,    0,  435,  434,
 
-      438,  442,  438,  442,  443,    0,    0,  438,  442,    0,
-      444,  443,  444,    0,  443,    0,  443,    0,  443,    0,
-      444,  445,  444,  443,  444,    0,    0,  446,    0,  444,
-      446,  445,    0,  445,    0,  445,    0,  446,  445,  446,
-      445,  446,  447,  447,    0,    0,  446,    0,  448,  448,
-        0,    0,  447,    0,  447,    0,  447,    0,  448,  449,
-      448,  447,  448,    0,    0,    0,    0,  448,    0,  449,
-        0,  449,    0,  449,  450,  449,    0,  450,  449,    0,
-      451,    0,    0,    0,  450,    0,  450,    0,  450,    0,
-      451,  454,  451,  450,  451,    0,    0,  451,    0,  451,
+      434,    0,  436,    0,    0,    0,  435,    0,  435,    0,
+      435,    0,  436,    0,  436,  435,  436,    0,    0,  437,
+      436,  436,  437,    0,    0,  438,    0,  438,    0,  437,
+        0,  437,    0,  437,    0,  438,  439,  438,  437,  438,
+        0,  440,  440,    0,  438,    0,  439,    0,  439,    0,
+      439,    0,  440,  441,  440,  439,  440,    0,    0,  442,
+        0,  440,    0,  441,    0,  441,  442,  441,    0,  442,
+      443,  442,  441,  442,    0,    0,  444,    0,  442,    0,
+      443,    0,  443,  444,  443,    0,  444,  443,  444,  443,
+      444,  445,  445,  449,    0,  444,    0,  449,    0,    0,
 
-        0,  454,    0,  454,  457,  454,  455,  455,    0,    0,
-      454,    0,    0,    0,  457,  459,  457,  455,  457,  455,
-        0,  455,    0,  457,    0,  459,  455,  459,  460,  459,
-        0,  460,    0,  459,  459,    0,  462,    0,  460,    0,
-      460,    0,  460,    0,    0,    0,  462,  460,  462,    0,
-      462,  463,  463,    0,  464,  462,  462,  465,    0,    0,
-        0,  463,    0,  463,  464,  463,  464,  465,  464,  465,
-      463,  465,  468,  464,    0,  469,  465,    0,    0,    0,
-        0,    0,  468,    0,  468,  469,  468,  469,    0,  469,
-        0,  468,  469,    0,  469,  475,  475,  475,  475,    0,
+        0,    0,  445,  449,  445,  449,  445,  449,  450,    0,
+        0,  445,  449,    0,  451,  450,  451,    0,  450,    0,
+      450,    0,  450,    0,  451,  452,  451,  450,  451,    0,
+        0,  453,    0,  451,  453,  452,    0,  452,    0,  452,
+        0,  453,  452,  453,  452,  453,  454,  454,    0,    0,
+      453,    0,  455,  455,    0,    0,  454,    0,  454,    0,
+      454,    0,  455,  456,  455,  454,  455,    0,    0,    0,
+        0,  455,    0,  456,    0,  456,    0,  456,  457,  456,
+        0,  457,  456,    0,  458,    0,    0,    0,  457,    0,
+      457,    0,  457,    0,  458,  461,  458,  457,  458,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  475,
-      475,  475,  475,  475,  475,  475,  475,  476,    0,  479,
-        0,  476,  476,  476,  476,  476,  476,  476,  476,  479,
-        0,  479,  480,  479,    0,  482,    0,  479,  479,  480,
-        0,    0,  480,    0,  480,  482,  480,  482,    0,  482,
-      483,  480,    0,  483,  482,    0,  484,    0,    0,    0,
-      483,    0,  483,    0,  483,    0,  484,  485,  484,  483,
-      484,    0,    0,  486,  485,  484,    0,  485,    0,  485,
-      486,  485,    0,  486,  487,  486,  485,  486,    0,    0,
-      488,    0,  486,    0,  487,    0,  487,    0,  487,    0,
+        0,  458,    0,  458,    0,  461,    0,  461,  464,  461,
+      462,  462,    0,    0,  461,    0,    0,    0,  464,  466,
+      464,  462,  464,  462,    0,  462,    0,  464,    0,  466,
+      462,  466,  467,  466,    0,  467,    0,  466,  466,    0,
+      469,    0,  467,    0,  467,    0,  467,    0,    0,    0,
+      469,  467,  469,    0,  469,  470,  470,    0,  471,  469,
+      469,  472,    0,    0,    0,  470,    0,  470,  471,  470,
+      471,  472,  471,  472,  470,  472,  475,  471,    0,  476,
+      472,    0,    0,    0,    0,    0,  475,    0,  475,  476,
+      475,  476,    0,  476,  486,  475,  476,    0,  476,  482,
 
-      488,  489,  488,  487,  488,    0,    0,    0,  489,  488,
-        0,  489,  490,  489,  490,  489,    0,    0,  491,    0,
-      489,    0,  490,    0,  490,    0,  490,    0,  491,  492,
-      491,  490,  491,    0,  492,  493,    0,  491,    0,  492,
-        0,  492,    0,  492,    0,  493,  494,  493,  492,  493,
-        0,    0,    0,  493,  493,    0,  494,  495,  494,    0,
-      494,    0,    0,  496,  494,  494,    0,  495,    0,  495,
-        0,  495,    0,  496,  497,  496,  495,  496,    0,    0,
-      501,    0,  496,    0,  497,    0,  497,  501,  497,    0,
-      501,  502,  501,  497,  501,    0,    0,    0,    0,  501,
+      482,  482,  482,    0,  486,    0,  486,    0,  486,    0,
+        0,    0,  486,  486,  482,  482,  482,  482,  482,  482,
+      482,  482,  483,    0,    0,    0,  483,  483,  483,  483,
+      483,  483,  483,  483,  487,  489,    0,    0,    0,    0,
+        0,  487,    0,    0,  487,  489,  487,  489,  487,  489,
+        0,  491,  490,  487,  489,  490,    0,    0,    0,    0,
+        0,  491,  490,  491,  490,  491,  490,  492,  493,    0,
+      491,  490,    0,    0,  492,  493,    0,  492,  493,  492,
+      493,  492,  493,  494,  495,    0,  492,  493,    0,    0,
+        0,    0,    0,  494,  495,  494,  495,  494,  495,  496,
 
-        0,  502,  503,  502,    0,  502,    0,    0,  504,  502,
-      502,    0,  503,    0,  503,    0,  503,    0,  504,  505,
-      504,  503,  504,    0,    0,  506,    0,  504,  506,  505,
-        0,  505,    0,  505,    0,  506,  505,  506,  505,  506,
-      507,  508,    0,    0,  506,    0,    0,    0,    0,    0,
-      507,  508,  507,  508,  507,  508,  509,  509,  507,  507,
-      508,    0,  510,    0,    0,    0,  509,    0,  509,    0,
-      509,    0,  510,  513,  510,  509,  510,    0,    0,  515,
-        0,  510,    0,  513,    0,  513,    0,  513,    0,  515,
-      517,  515,  513,  515,    0,    0,  518,    0,  515,    0,
+        0,    0,  494,  495,    0,  497,  496,  497,    0,  496,
+        0,  496,    0,  496,    0,  497,  498,  497,  496,  497,
+        0,    0,  499,    0,  497,    0,  498,  499,  498,    0,
+      498,    0,  499,  500,  499,  498,  499,    0,    0,    0,
+        0,  499,    0,  500,  501,  500,    0,  500,    0,    0,
+        0,  500,  500,    0,  501,  502,  501,    0,  501,    0,
+        0,  503,  501,  501,    0,  502,    0,  502,    0,  502,
+        0,  503,  504,  503,  502,  503,    0,    0,  508,    0,
+      503,    0,  504,    0,  504,  508,  504,    0,  508,  509,
+      508,  504,  508,    0,    0,    0,    0,  508,    0,  509,
 
-      517,    0,  517,    0,  517,    0,  518,  510,  518,  517,
-      518,  520,    0,    0,  520,  518,    0,  521,    0,    0,
-      521,  520,    0,  520,    0,  520,    0,  521,    0,  521,
-      520,  521,  524,  524,    0,    0,  521,    0,    0,  530,
-      530,  530,  530,  524,    0,  524,    0,  524,    0,    0,
-        0,    0,  524,  530,  530,  530,  530,  530,  530,  530,
-      530,  533,  534,  534,    0,    0,    0,    0,  533,    0,
-        0,  533,  534,  533,  534,  533,  534,  536,    0,    0,
-      533,  534,    0,    0,    0,  537,    0,  536,  538,  536,
-        0,  536,    0,  536,    0,  537,  536,  537,  538,  537,
+      510,  509,    0,  509,    0,    0,  511,  509,  509,    0,
+      510,    0,  510,    0,  510,    0,  511,  512,  511,  510,
+      511,    0,    0,  513,    0,  511,  513,  512,    0,  512,
+        0,  512,    0,  513,  512,  513,  512,  513,  514,  515,
+        0,    0,  513,    0,    0,    0,    0,    0,  514,  515,
+      514,  515,  514,  515,  516,  516,  514,  514,  515,    0,
+      517,    0,    0,    0,  516,    0,  516,    0,  516,    0,
+      517,  520,  517,  516,  517,    0,    0,  522,    0,  517,
+        0,  520,    0,  520,    0,  520,    0,  522,  524,  522,
+      520,  522,    0,    0,  525,    0,  522,    0,  524,    0,
 
-      538,  539,  538,  537,  537,    0,    0,  538,  542,  540,
-        0,  539,    0,  539,    0,  539,    0,  541,    0,  540,
-      539,  540,  540,  540,    0,  542,    0,  541,  540,  541,
-        0,  541,    0,    0,    0,  542,  541,  542,  543,  542,
-        0,  543,    0,    0,  542,    0,  544,    0,  543,    0,
-      543,    0,  543,    0,  545,    0,  544,  543,  544,    0,
-      544,  545,  546,    0,  545,  544,  545,    0,  545,    0,
-        0,    0,  546,  545,  546,  551,  546,    0,  551,    0,
-        0,  546,    0,  552,    0,  551,  553,  551,    0,  551,
-        0,    0,    0,  552,  551,  552,  553,  552,  553,  554,
+      524,    0,  524,    0,  525,  517,  525,  524,  525,  527,
+        0,    0,  527,  525,    0,  528,    0,    0,  528,  527,
+        0,  527,    0,  527,    0,  528,    0,  528,  527,  528,
+      531,  531,    0,    0,  528,    0,  537,  537,  537,  537,
+        0,  531,    0,  531,    0,  531,    0,    0,    0,    0,
+      531,  537,  537,  537,  537,  537,  537,  537,  537,  540,
+      541,  541,    0,    0,    0,    0,  540,    0,    0,  540,
+      541,  540,  541,  540,  541,  543,    0,    0,  540,  541,
+        0,    0,    0,  544,    0,  543,  545,  543,    0,  543,
+        0,  543,    0,  544,  543,  544,  545,  544,  545,  546,
 
-      553,    0,  552,    0,    0,  553,    0,  555,    0,  554,
-      556,  554,    0,  554,  555,    0,    0,  555,  554,  555,
-      556,  555,  556,  560,  556,    0,  555,  564,  556,  556,
-        0,  565,    0,  560,    0,  560,    0,  560,    0,    0,
-        0,  565,  560,  565,  564,  565,    0,  568,    0,    0,
-      565,    0,    0,    0,  564,    0,  564,  568,  564,  568,
-        0,  568,    0,  564,    0,    0,  568,  573,  573,  573,
-      573,    0,    0,    0,    0,    0,    0,    0,    0,  577,
-        0,  573,  573,  573,  573,  573,  573,  573,  573,  577,
-      578,  577,  577,  577,    0,    0,  580,    0,  577,    0,
+      545,  544,  544,    0,    0,  545,  549,  547,    0,  546,
+        0,  546,    0,  546,    0,  548,    0,  547,  546,  547,
+      547,  547,    0,  549,    0,  548,  547,  548,    0,  548,
+        0,    0,    0,  549,  548,  549,  550,  549,    0,  550,
+        0,    0,  549,    0,  551,    0,  550,    0,  550,    0,
+      550,    0,  552,    0,  551,  550,  551,    0,  551,  552,
+      553,    0,  552,  551,  552,    0,  552,    0,    0,    0,
+      553,  552,  553,  558,  553,    0,  558,    0,    0,  553,
+        0,  559,    0,  558,  560,  558,    0,  558,    0,    0,
+        0,  559,  558,  559,  560,  559,  560,  561,  560,    0,
 
-      578,    0,  578,    0,  578,    0,  580,  581,  580,  578,
-      580,    0,    0,  582,    0,  580,  582,  581,    0,  581,
-        0,  581,    0,  582,  581,  582,  581,  582,  583,  584,
-        0,    0,  582,  583,    0,    0,    0,    0,  583,  584,
-      583,  584,  583,  584,  586,  587,  586,  583,  584,    0,
-        0,    0,    0,    0,  586,  587,  586,  587,  586,  587,
-      592,    0,    0,  586,  587,    0,    0,    0,  593,    0,
-      592,    0,  592,    0,  592,    0,  592,    0,  593,  592,
-      593,  593,  593,  594,  604,    0,    0,  593,    0,    0,
-      594,    0,    0,  594,  604,  594,  604,  594,  604,  613,
+      559,    0,    0,  560,    0,  562,    0,  561,  563,  561,
+        0,  561,  562,    0,    0,  562,  561,  562,  563,  562,
+      563,  567,  563,    0,  562,  571,  563,  563,    0,  572,
+        0,  567,    0,  567,    0,  567,    0,    0,    0,  572,
+      567,  572,  571,  572,    0,  575,    0,    0,  572,    0,
+        0,    0,  571,    0,  571,  575,  571,  575,    0,  575,
+      584,  571,    0,    0,  575,  580,  580,  580,  580,    0,
+      584,    0,  584,  584,  584,    0,    0,    0,  585,  584,
+      580,  580,  580,  580,  580,  580,  580,  580,  585,  587,
+      585,    0,  585,    0,    0,  588,    0,  585,    0,  587,
 
-      614,    0,  594,  604,    0,    0,    0,    0,    0,  613,
-      614,  613,  614,  613,  614,  615,  616,  615,  613,  614,
-        0,    0,    0,    0,    0,  615,  616,  615,  616,  615,
-      616,  617,  619,    0,  615,  616,    0,    0,    0,    0,
-        0,  617,  619,  617,  619,  617,  619,  620,  617,    0,
-      617,  619,    0,  624,  620,    0,    0,  620,    0,  620,
-        0,  620,    0,  624,  625,  624,  620,  624,    0,    0,
-        0,    0,  624,    0,  625,  626,  625,    0,  625,    0,
-        0,  641,    0,  625,    0,  626,    0,  626,  626,  626,
-        0,  641,  642,  641,  626,  641,    0,    0,  643,    0,
+        0,  587,    0,  587,    0,  588,    0,  588,  587,  588,
+      589,  590,  588,  589,  588,    0,  590,    0,    0,    0,
+      589,  590,  589,  590,  589,  590,  591,    0,    0,  589,
+      590,    0,  593,    0,  593,    0,  591,    0,  591,    0,
+      591,    0,  593,  594,  593,  591,  593,    0,    0,  599,
+        0,  593,    0,  594,    0,  594,    0,  594,    0,  599,
+      600,  599,  594,  599,    0,  599,    0,    0,  599,    0,
+      600,  601,  600,  600,  600,    0,    0,  611,  601,  600,
+        0,  601,    0,  601,    0,  601,    0,  611,  620,  611,
+      601,  611,    0,    0,  621,    0,  611,    0,  620,    0,
 
-      641,    0,  642,    0,  642,    0,  642,    0,  643,  645,
-      643,  642,  643,    0,    0,    0,    0,  643,    0,  645,
-      649,  645,    0,  645,    0,    0,  650,  645,  645,    0,
-      649,    0,  649,    0,  649,    0,  650,  649,  650,  649,
-      650,  665,  669,    0,    0,  650,    0,    0,    0,    0,
-        0,  665,  669,  665,  669,  665,  669,  670,  685,    0,
-      665,  669,    0,    0,  665,    0,    0,  670,  685,  670,
-      685,  670,  685,    0,    0,    0,  670,  685,  735,  735,
-      735,  735,  735,  735,  735,  735,  735,  735,  735,  735,
-      735,  736,  736,  736,  736,  736,  736,  736,  736,  736,
+      620,    0,  620,    0,  621,    0,  621,  620,  621,  622,
+      623,  622,    0,  621,    0,    0,    0,    0,    0,  622,
+      623,  622,  623,  622,  623,  624,  626,    0,  622,  623,
+        0,    0,    0,    0,    0,  624,  626,  624,  626,  624,
+      626,  627,  624,    0,  624,  626,    0,  631,  627,    0,
+        0,  627,    0,  627,    0,  627,    0,  631,  632,  631,
+      627,  631,    0,    0,    0,    0,  631,    0,  632,  633,
+      632,    0,  632,    0,    0,  648,    0,  632,    0,  633,
+        0,  633,  633,  633,    0,  648,  649,  648,  633,  648,
+        0,    0,  650,    0,  648,    0,  649,    0,  649,    0,
 
-      736,  736,  736,  736,  737,  737,  737,  737,  737,  737,
-      737,  737,  737,  737,  737,  737,  737,  738,  738,  738,
-      738,  738,  738,  738,  738,  738,  738,  738,  738,  738,
-      739,  739,  739,  739,  739,  739,  739,  739,  739,  739,
-      739,  739,  739,  740,  740,  740,  740,    0,  740,  740,
-      740,  740,  740,  740,  740,  740,  741,  741,  741,    0,
-      741,    0,  741,    0,  741,  742,  742,    0,  742,  742,
-      743,  743,    0,    0,  743,  743,    0,  743,  743,  743,
-      743,  743,  743,  744,  744,  744,  744,    0,  744,  744,
-      744,  744,  744,  744,  744,  744,  745,  745,  745,  745,
+      649,    0,  650,  652,  650,  649,  650,    0,    0,    0,
+        0,  650,    0,  652,  656,  652,    0,  652,    0,    0,
+      657,  652,  652,    0,  656,    0,  656,    0,  656,    0,
+      657,  656,  657,  656,  657,  672,  676,    0,    0,  657,
+        0,    0,    0,    0,    0,  672,  676,  672,  676,  672,
+      676,  677,  692,    0,  672,  676,    0,    0,  672,    0,
+        0,  677,  692,  677,  692,  677,  692,    0,    0,    0,
+      677,  692,  742,  742,  742,  742,  742,  742,  742,  742,
+      742,  742,  742,  742,  742,  743,  743,  743,  743,  743,
+      743,  743,  743,  743,  743,  743,  743,  743,  744,  744,
 
-      745,  745,  745,  745,    0,  745,  745,  746,    0,    0,
-        0,  746,  746,  746,  746,  746,  746,  746,  747,    0,
-        0,    0,  747,  747,  747,  747,  747,  747,  747,  748,
-      748,    0,  748,  748,  749,  749,    0,  749,  749,  750,
-      750,    0,  750,  750,  751,    0,  751,  751,  752,  752,
-        0,  752,  752,  753,    0,  753,  753,  754,    0,  754,
-      754,  755,    0,  755,  755,  756,    0,  756,  756,  757,
-      757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
-      757,  757,  758,  758,    0,  758,  758,  759,  759,    0,
-      759,  759,  759,  759,  759,  759,  759,  759,  759,  759,
+      744,  744,  744,  744,  744,  744,  744,  744,  744,  744,
+      744,  745,  745,  745,  745,  745,  745,  745,  745,  745,
+      745,  745,  745,  745,  746,  746,  746,  746,  746,  746,
+      746,  746,  746,  746,  746,  746,  746,  747,  747,  747,
+      747,    0,  747,  747,  747,  747,  747,  747,  747,  747,
+      748,  748,  748,    0,  748,    0,  748,    0,  748,  749,
+      749,    0,  749,  749,  750,  750,    0,    0,  750,  750,
+        0,  750,  750,  750,  750,  750,  750,  751,  751,  751,
+      751,    0,  751,  751,  751,  751,  751,  751,  751,  751,
+      752,  752,  752,  752,  752,  752,  752,  752,    0,  752,
 
-      760,  760,  760,    0,    0,    0,  760,    0,    0,    0,
-        0,  760,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734,  734,  734,  734,  734,  734,
-      734,  734,  734,  734,  734
+      752,  753,    0,    0,    0,  753,  753,  753,  753,  753,
+      753,  753,  754,    0,    0,    0,  754,  754,  754,  754,
+      754,  754,  754,  755,  755,    0,  755,  755,  756,  756,
+        0,  756,  756,  757,  757,    0,  757,  757,  758,    0,
+      758,  758,  759,  759,    0,  759,  759,  760,    0,  760,
+      760,  761,    0,  761,  761,  762,    0,  762,  762,  763,
+        0,  763,  763,  764,  764,  764,  764,  764,  764,  764,
+      764,  764,  764,  764,  764,  764,  765,  765,    0,  765,
+      765,  766,  766,    0,  766,  766,  766,  766,  766,  766,
+      766,  766,  766,  766,  767,  767,  767,    0,    0,    0,
 
+      767,    0,    0,    0,    0,  767,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741,
+      741,  741,  741,  741,  741,  741,  741,  741,  741,  741
     } ;
 
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static yyconst short int yy_rule_linenum[137] =
+static yyconst short int yy_rule_linenum[138] =
     {   0,
-       95,   96,   98,  101,  103,  106,  108,  109,  110,  113,
-      115,  116,  117,  129,  136,  143,  149,  158,  166,  174,
-      175,  177,  196,  202,  203,  204,  205,  206,  209,  215,
-      222,  229,  236,  243,  244,  245,  253,  254,  255,  256,
-      257,  262,  263,  264,  265,  266,  267,  268,  269,  270,
-      271,  272,  281,  282,  283,  284,  285,  286,  287,  288,
-      289,  290,  291,  292,  293,  294,  295,  296,  297,  298,
-      299,  300,  301,  302,  303,  304,  305,  306,  307,  308,
-      309,  310,  311,  312,  313,  314,  315,  316,  317,  318,
-      319,  320,  321,  322,  323,  324,  325,  326,  327,  328,
+       96,   97,   99,  102,  104,  107,  109,  110,  111,  114,
+      116,  117,  118,  130,  137,  144,  150,  159,  167,  175,
+      176,  178,  197,  203,  204,  205,  206,  207,  210,  216,
+      223,  230,  237,  244,  251,  252,  253,  261,  262,  263,
+      264,  265,  270,  271,  272,  273,  274,  275,  276,  277,
+      278,  279,  280,  289,  290,  291,  292,  293,  294,  295,
+      296,  297,  298,  299,  300,  301,  302,  303,  304,  305,
+      306,  307,  308,  309,  310,  311,  312,  313,  314,  315,
+      316,  317,  318,  319,  320,  321,  322,  323,  324,  325,
+      326,  327,  328,  329,  330,  331,  332,  333,  334,  335,
 
-      329,  330,  331,  332,  333,  334,  335,  336,  337,  338,
-      343,  344,  349,  350,  351,  354,  359,  365,  373,  383,
-      388,  390,  391,  395,  400,  405,  411,  412,  414,  420,
-      433,  436,  461,  505,  507,  518
+      336,  337,  338,  339,  340,  341,  342,  343,  344,  345,
+      346,  351,  352,  357,  358,  359,  362,  367,  373,  381,
+      391,  396,  398,  399,  403,  408,  413,  419,  420,  422,
+      428,  441,  444,  469,  513,  515,  526
     } ;
 
 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
@@ -1825,6 +1854,7 @@
 int asn1p_as_pointer;
 
 static asn1c_integer_t _lex_atoi(const char *ptr);
+static double          _lex_atod(const char *ptr);
 
 /*
  * Check that the type is defined in the year of the standard choosen.
@@ -1884,7 +1914,7 @@
 
 /* Newline */
 /* White-space */
-#line 1888 "asn1p_l.c"
+#line 1918 "asn1p_l.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -2035,10 +2065,10 @@
 	register char *yy_cp, *yy_bp;
 	register int yy_act;
 
-#line 93 "asn1p_l.l"
+#line 94 "asn1p_l.l"
 
 
-#line 2042 "asn1p_l.c"
+#line 2072 "asn1p_l.c"
 
 	if ( yy_init )
 		{
@@ -2086,18 +2116,19 @@
 			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 >= 735 )
+				if ( yy_current_state >= 742 )
 					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_base[yy_current_state] != 4413 );
+		while ( yy_base[yy_current_state] != 4507 );
 
 yy_find_action:
 		yy_current_state = *--yy_state_ptr;
 		yy_lp = yy_accept[yy_current_state];
+goto find_rule; /* avoid `defined but not used' warning */
 find_rule: /* we branch to this label when backing up */
 		for ( ; ; ) /* until we find what rule we matched */
 			{
@@ -2130,13 +2161,13 @@
 			{
 			if ( yy_act == 0 )
 				fprintf( stderr, "--scanner backing up\n" );
-			else if ( yy_act < 137 )
+			else if ( yy_act < 138 )
 				fprintf( stderr, "--accepting rule at line %d (\"%s\")\n",
 				         yy_rule_linenum[yy_act], yytext );
-			else if ( yy_act == 137 )
+			else if ( yy_act == 138 )
 				fprintf( stderr, "--accepting default rule (\"%s\")\n",
 				         yytext );
-			else if ( yy_act == 138 )
+			else if ( yy_act == 139 )
 				fprintf( stderr, "--(end of buffer or a NUL)\n" );
 			else
 				fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2149,7 +2180,7 @@
 yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 95 "asn1p_l.l"
+#line 96 "asn1p_l.l"
 /* Immediately terminated long comment */
 	YY_BREAK
 case 2:
@@ -2157,67 +2188,67 @@
 yy_c_buf_p = yy_cp -= 1;
 YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 96 "asn1p_l.l"
+#line 97 "asn1p_l.l"
 yy_push_state(idash_comment);	/* Incorrect, but acceptable */
 	YY_BREAK
 
 case 3:
 YY_RULE_SETUP
-#line 98 "asn1p_l.l"
+#line 99 "asn1p_l.l"
 yy_pop_state(); /* Acceptable end of comment */
 	YY_BREAK
 
 case 4:
 YY_RULE_SETUP
-#line 101 "asn1p_l.l"
+#line 102 "asn1p_l.l"
 asn1p_as_pointer = 1;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 103 "asn1p_l.l"
+#line 104 "asn1p_l.l"
 yy_push_state(dash_comment);
 	YY_BREAK
 
 case 6:
 YY_RULE_SETUP
-#line 106 "asn1p_l.l"
+#line 107 "asn1p_l.l"
 yy_pop_state();
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 108 "asn1p_l.l"
+#line 109 "asn1p_l.l"
 yy_pop_state();	/* End of comment */
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 109 "asn1p_l.l"
+#line 110 "asn1p_l.l"
 /* Eat single dash */
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 110 "asn1p_l.l"
+#line 111 "asn1p_l.l"
 /* Eat */
 	YY_BREAK
 
 case 10:
 YY_RULE_SETUP
-#line 113 "asn1p_l.l"
+#line 114 "asn1p_l.l"
 yy_push_state(cpp_comment);
 	YY_BREAK
 
 case 11:
 YY_RULE_SETUP
-#line 115 "asn1p_l.l"
+#line 116 "asn1p_l.l"
 /* Eat */
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 116 "asn1p_l.l"
+#line 117 "asn1p_l.l"
 yy_pop_state();
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 117 "asn1p_l.l"
+#line 118 "asn1p_l.l"
 /* Eat */
 	YY_BREAK
 
@@ -2230,7 +2261,7 @@
 
 case 14:
 YY_RULE_SETUP
-#line 129 "asn1p_l.l"
+#line 130 "asn1p_l.l"
 {
 			yy_push_state(opaque);
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
@@ -2240,7 +2271,7 @@
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 136 "asn1p_l.l"
+#line 137 "asn1p_l.l"
 {
 			yy_pop_state();
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
@@ -2250,7 +2281,7 @@
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 143 "asn1p_l.l"
+#line 144 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
@@ -2259,7 +2290,7 @@
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 149 "asn1p_l.l"
+#line 150 "asn1p_l.l"
 {
 			fprintf(stderr,
 				"ASN.1 Parser syncronization failure: "
@@ -2271,7 +2302,7 @@
 	YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 158 "asn1p_l.l"
+#line 159 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
@@ -2281,7 +2312,7 @@
 
 case 19:
 YY_RULE_SETUP
-#line 166 "asn1p_l.l"
+#line 167 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = 0;
 			asn1p_lval.tv_opaque.len = 0;
@@ -2292,17 +2323,17 @@
 
 case 20:
 YY_RULE_SETUP
-#line 174 "asn1p_l.l"
+#line 175 "asn1p_l.l"
 { QAPPEND(yytext, yyleng-1); }	/* Add a single quote */
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 175 "asn1p_l.l"
+#line 176 "asn1p_l.l"
 { QAPPEND(yytext, yyleng); }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 177 "asn1p_l.l"
+#line 178 "asn1p_l.l"
 {
 			yy_pop_state();
 			/* Do not append last quote:
@@ -2323,7 +2354,7 @@
 
 case 23:
 YY_RULE_SETUP
-#line 196 "asn1p_l.l"
+#line 197 "asn1p_l.l"
 {
 			const char *s = "ENCODING-CONTROL";
 			const char *p = s + sizeof("ENCODING-CONTROL") - 2;
@@ -2333,33 +2364,33 @@
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 202 "asn1p_l.l"
+#line 203 "asn1p_l.l"
 unput('D'); unput('N'); unput('E'); yy_pop_state();
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 203 "asn1p_l.l"
+#line 204 "asn1p_l.l"
 
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 204 "asn1p_l.l"
+#line 205 "asn1p_l.l"
 
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 205 "asn1p_l.l"
+#line 206 "asn1p_l.l"
 /* Eat everything else */
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 206 "asn1p_l.l"
+#line 207 "asn1p_l.l"
 
 	YY_BREAK
 
 case 29:
 YY_RULE_SETUP
-#line 209 "asn1p_l.l"
+#line 210 "asn1p_l.l"
 {
 		/* " \t\r\n" weren't allowed in ASN.1:1990. */
 		asn1p_lval.tv_str = yytext;
@@ -2368,7 +2399,7 @@
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 215 "asn1p_l.l"
+#line 216 "asn1p_l.l"
 {
 		/* " \t\r\n" weren't allowed in ASN.1:1990. */
 		asn1p_lval.tv_str = strdup(yytext);
@@ -2377,7 +2408,7 @@
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 222 "asn1p_l.l"
+#line 223 "asn1p_l.l"
 {
 		asn1p_lval.a_int = _lex_atoi(yytext);
 		if(errno == ERANGE)
@@ -2387,7 +2418,7 @@
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 229 "asn1p_l.l"
+#line 230 "asn1p_l.l"
 {
 		asn1p_lval.a_int = _lex_atoi(yytext);
 		if(errno == ERANGE)
@@ -2397,7 +2428,7 @@
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 236 "asn1p_l.l"
+#line 237 "asn1p_l.l"
 {
 		asn1p_lval.a_int = _lex_atoi(yytext);
 		if(errno == ERANGE)
@@ -2407,17 +2438,27 @@
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 243 "asn1p_l.l"
-return TOK_ABSENT;
+#line 244 "asn1p_l.l"
+{
+		asn1p_lval.a_dbl = _lex_atod(yytext);
+		if(errno == ERANGE)
+			return -1;
+		return TOK_realnumber;
+	}
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 244 "asn1p_l.l"
-return TOK_ALL;
+#line 251 "asn1p_l.l"
+return TOK_ABSENT;
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 245 "asn1p_l.l"
+#line 252 "asn1p_l.l"
+return TOK_ALL;
+	YY_BREAK
+case 37:
+YY_RULE_SETUP
+#line 253 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2427,88 +2468,88 @@
 				REJECT;
 			}
 	YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 253 "asn1p_l.l"
-return TOK_APPLICATION;
-	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 254 "asn1p_l.l"
-return TOK_AUTOMATIC;
+#line 261 "asn1p_l.l"
+return TOK_APPLICATION;
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 255 "asn1p_l.l"
-return TOK_BEGIN;
+#line 262 "asn1p_l.l"
+return TOK_AUTOMATIC;
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 256 "asn1p_l.l"
-return TOK_BIT;
+#line 263 "asn1p_l.l"
+return TOK_BEGIN;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 257 "asn1p_l.l"
+#line 264 "asn1p_l.l"
+return TOK_BIT;
+	YY_BREAK
+case 42:
+YY_RULE_SETUP
+#line 265 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_BMPString;
 				REJECT;
 			}
 	YY_BREAK
-case 42:
-YY_RULE_SETUP
-#line 262 "asn1p_l.l"
-return TOK_BOOLEAN;
-	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 263 "asn1p_l.l"
-return TOK_BY;
+#line 270 "asn1p_l.l"
+return TOK_BOOLEAN;
 	YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 264 "asn1p_l.l"
-return TOK_CHARACTER;
+#line 271 "asn1p_l.l"
+return TOK_BY;
 	YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 265 "asn1p_l.l"
-return TOK_CHOICE;
+#line 272 "asn1p_l.l"
+return TOK_CHARACTER;
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 266 "asn1p_l.l"
-return TOK_CLASS;
+#line 273 "asn1p_l.l"
+return TOK_CHOICE;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 267 "asn1p_l.l"
-return TOK_COMPONENT;
+#line 274 "asn1p_l.l"
+return TOK_CLASS;
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 268 "asn1p_l.l"
-return TOK_COMPONENTS;
+#line 275 "asn1p_l.l"
+return TOK_COMPONENT;
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 269 "asn1p_l.l"
-return TOK_CONSTRAINED;
+#line 276 "asn1p_l.l"
+return TOK_COMPONENTS;
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 270 "asn1p_l.l"
-return TOK_CONTAINING;
+#line 277 "asn1p_l.l"
+return TOK_CONSTRAINED;
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 271 "asn1p_l.l"
-return TOK_DEFAULT;
+#line 278 "asn1p_l.l"
+return TOK_CONTAINING;
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 272 "asn1p_l.l"
+#line 279 "asn1p_l.l"
+return TOK_DEFAULT;
+	YY_BREAK
+case 53:
+YY_RULE_SETUP
+#line 280 "asn1p_l.l"
 {
 				/* Appeared in 1990, removed in 1997 */
 				if(TYPE_LIFETIME(1990, 1997))
@@ -2519,348 +2560,348 @@
 				REJECT;
 			}
 	YY_BREAK
-case 53:
-YY_RULE_SETUP
-#line 281 "asn1p_l.l"
-return TOK_DEFINITIONS;
-	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 282 "asn1p_l.l"
-return TOK_EMBEDDED;
+#line 289 "asn1p_l.l"
+return TOK_DEFINITIONS;
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 283 "asn1p_l.l"
-return TOK_ENCODED;
+#line 290 "asn1p_l.l"
+return TOK_EMBEDDED;
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 284 "asn1p_l.l"
-return TOK_ENCODING_CONTROL;
+#line 291 "asn1p_l.l"
+return TOK_ENCODED;
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 285 "asn1p_l.l"
-return TOK_END;
+#line 292 "asn1p_l.l"
+return TOK_ENCODING_CONTROL;
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 286 "asn1p_l.l"
-return TOK_ENUMERATED;
+#line 293 "asn1p_l.l"
+return TOK_END;
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 287 "asn1p_l.l"
-return TOK_EXCEPT;
+#line 294 "asn1p_l.l"
+return TOK_ENUMERATED;
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 288 "asn1p_l.l"
-return TOK_EXPLICIT;
+#line 295 "asn1p_l.l"
+return TOK_EXCEPT;
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 289 "asn1p_l.l"
-return TOK_EXPORTS;
+#line 296 "asn1p_l.l"
+return TOK_EXPLICIT;
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 290 "asn1p_l.l"
-return TOK_EXTENSIBILITY;
+#line 297 "asn1p_l.l"
+return TOK_EXPORTS;
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 291 "asn1p_l.l"
-return TOK_EXTERNAL;
+#line 298 "asn1p_l.l"
+return TOK_EXTENSIBILITY;
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 292 "asn1p_l.l"
-return TOK_FALSE;
+#line 299 "asn1p_l.l"
+return TOK_EXTERNAL;
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 293 "asn1p_l.l"
-return TOK_FROM;
+#line 300 "asn1p_l.l"
+return TOK_FALSE;
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 294 "asn1p_l.l"
-return TOK_GeneralizedTime;
+#line 301 "asn1p_l.l"
+return TOK_FROM;
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 295 "asn1p_l.l"
-return TOK_GeneralString;
+#line 302 "asn1p_l.l"
+return TOK_GeneralizedTime;
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 296 "asn1p_l.l"
-return TOK_GraphicString;
+#line 303 "asn1p_l.l"
+return TOK_GeneralString;
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 297 "asn1p_l.l"
-return TOK_IA5String;
+#line 304 "asn1p_l.l"
+return TOK_GraphicString;
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 298 "asn1p_l.l"
-return TOK_IDENTIFIER;
+#line 305 "asn1p_l.l"
+return TOK_IA5String;
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 299 "asn1p_l.l"
-return TOK_IMPLICIT;
+#line 306 "asn1p_l.l"
+return TOK_IDENTIFIER;
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 300 "asn1p_l.l"
-return TOK_IMPLIED;
+#line 307 "asn1p_l.l"
+return TOK_IMPLICIT;
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 301 "asn1p_l.l"
-return TOK_IMPORTS;
+#line 308 "asn1p_l.l"
+return TOK_IMPLIED;
 	YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 302 "asn1p_l.l"
-return TOK_INCLUDES;
+#line 309 "asn1p_l.l"
+return TOK_IMPORTS;
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 303 "asn1p_l.l"
-return TOK_INSTANCE;
+#line 310 "asn1p_l.l"
+return TOK_INCLUDES;
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 304 "asn1p_l.l"
-return TOK_INSTRUCTIONS;
+#line 311 "asn1p_l.l"
+return TOK_INSTANCE;
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 305 "asn1p_l.l"
-return TOK_INTEGER;
+#line 312 "asn1p_l.l"
+return TOK_INSTRUCTIONS;
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 306 "asn1p_l.l"
-return TOK_INTERSECTION;
+#line 313 "asn1p_l.l"
+return TOK_INTEGER;
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 307 "asn1p_l.l"
-return TOK_ISO646String;
+#line 314 "asn1p_l.l"
+return TOK_INTERSECTION;
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 308 "asn1p_l.l"
-return TOK_MAX;
+#line 315 "asn1p_l.l"
+return TOK_ISO646String;
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 309 "asn1p_l.l"
-return TOK_MIN;
+#line 316 "asn1p_l.l"
+return TOK_MAX;
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 310 "asn1p_l.l"
-return TOK_MINUS_INFINITY;
+#line 317 "asn1p_l.l"
+return TOK_MIN;
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 311 "asn1p_l.l"
-return TOK_NULL;
+#line 318 "asn1p_l.l"
+return TOK_MINUS_INFINITY;
 	YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 312 "asn1p_l.l"
-return TOK_NumericString;
+#line 319 "asn1p_l.l"
+return TOK_NULL;
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 313 "asn1p_l.l"
-return TOK_OBJECT;
+#line 320 "asn1p_l.l"
+return TOK_NumericString;
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 314 "asn1p_l.l"
-return TOK_ObjectDescriptor;
+#line 321 "asn1p_l.l"
+return TOK_OBJECT;
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 315 "asn1p_l.l"
-return TOK_OCTET;
+#line 322 "asn1p_l.l"
+return TOK_ObjectDescriptor;
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 316 "asn1p_l.l"
-return TOK_OF;
+#line 323 "asn1p_l.l"
+return TOK_OCTET;
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 317 "asn1p_l.l"
-return TOK_OPTIONAL;
+#line 324 "asn1p_l.l"
+return TOK_OF;
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 318 "asn1p_l.l"
-return TOK_PATTERN;
+#line 325 "asn1p_l.l"
+return TOK_OPTIONAL;
 	YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 319 "asn1p_l.l"
-return TOK_PDV;
+#line 326 "asn1p_l.l"
+return TOK_PATTERN;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 320 "asn1p_l.l"
-return TOK_PLUS_INFINITY;
+#line 327 "asn1p_l.l"
+return TOK_PDV;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 321 "asn1p_l.l"
-return TOK_PRESENT;
+#line 328 "asn1p_l.l"
+return TOK_PLUS_INFINITY;
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 322 "asn1p_l.l"
-return TOK_PrintableString;
+#line 329 "asn1p_l.l"
+return TOK_PRESENT;
 	YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 323 "asn1p_l.l"
-return TOK_PRIVATE;
+#line 330 "asn1p_l.l"
+return TOK_PrintableString;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 324 "asn1p_l.l"
-return TOK_REAL;
+#line 331 "asn1p_l.l"
+return TOK_PRIVATE;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 325 "asn1p_l.l"
-return TOK_RELATIVE_OID;
+#line 332 "asn1p_l.l"
+return TOK_REAL;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 326 "asn1p_l.l"
-return TOK_SEQUENCE;
+#line 333 "asn1p_l.l"
+return TOK_RELATIVE_OID;
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 327 "asn1p_l.l"
-return TOK_SET;
+#line 334 "asn1p_l.l"
+return TOK_SEQUENCE;
 	YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 328 "asn1p_l.l"
-return TOK_SIZE;
+#line 335 "asn1p_l.l"
+return TOK_SET;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 329 "asn1p_l.l"
-return TOK_STRING;
+#line 336 "asn1p_l.l"
+return TOK_SIZE;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 330 "asn1p_l.l"
-return TOK_SYNTAX;
+#line 337 "asn1p_l.l"
+return TOK_STRING;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 331 "asn1p_l.l"
-return TOK_T61String;
+#line 338 "asn1p_l.l"
+return TOK_SYNTAX;
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 332 "asn1p_l.l"
-return TOK_TAGS;
+#line 339 "asn1p_l.l"
+return TOK_T61String;
 	YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 333 "asn1p_l.l"
-return TOK_TeletexString;
+#line 340 "asn1p_l.l"
+return TOK_TAGS;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 334 "asn1p_l.l"
-return TOK_TRUE;
+#line 341 "asn1p_l.l"
+return TOK_TeletexString;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 335 "asn1p_l.l"
-return TOK_UNION;
+#line 342 "asn1p_l.l"
+return TOK_TRUE;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 336 "asn1p_l.l"
-return TOK_UNIQUE;
+#line 343 "asn1p_l.l"
+return TOK_UNION;
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 337 "asn1p_l.l"
-return TOK_UNIVERSAL;
+#line 344 "asn1p_l.l"
+return TOK_UNIQUE;
 	YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 338 "asn1p_l.l"
+#line 345 "asn1p_l.l"
+return TOK_UNIVERSAL;
+	YY_BREAK
+case 111:
+YY_RULE_SETUP
+#line 346 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UniversalString;
 				REJECT;
 			}
 	YY_BREAK
-case 111:
-YY_RULE_SETUP
-#line 343 "asn1p_l.l"
-return TOK_UTCTime;
-	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 344 "asn1p_l.l"
+#line 351 "asn1p_l.l"
+return TOK_UTCTime;
+	YY_BREAK
+case 113:
+YY_RULE_SETUP
+#line 352 "asn1p_l.l"
 {
 				if(TYPE_LIFETIME(1994, 0))
 					return TOK_UTF8String;
 				REJECT;
 			}
 	YY_BREAK
-case 113:
-YY_RULE_SETUP
-#line 349 "asn1p_l.l"
-return TOK_VideotexString;
-	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 350 "asn1p_l.l"
-return TOK_VisibleString;
+#line 357 "asn1p_l.l"
+return TOK_VideotexString;
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 351 "asn1p_l.l"
-return TOK_WITH;
+#line 358 "asn1p_l.l"
+return TOK_VisibleString;
 	YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 354 "asn1p_l.l"
+#line 359 "asn1p_l.l"
+return TOK_WITH;
+	YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 362 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typefieldreference;
 	}
 	YY_BREAK
-case 117:
+case 118:
 YY_RULE_SETUP
-#line 359 "asn1p_l.l"
+#line 367 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_valuefieldreference;
 	}
 	YY_BREAK
-case 118:
+case 119:
 YY_RULE_SETUP
-#line 365 "asn1p_l.l"
+#line 373 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_identifier;
@@ -2869,9 +2910,9 @@
 /*
 	 * objectclassreference
 	 */
-case 119:
+case 120:
 YY_RULE_SETUP
-#line 373 "asn1p_l.l"
+#line 381 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_capitalreference;
@@ -2882,41 +2923,33 @@
 	 * NOTE: TOK_objectclassreference must be combined
 	 * with this token to produce true typereference.
 	 */
-case 120:
+case 121:
 YY_RULE_SETUP
-#line 383 "asn1p_l.l"
+#line 391 "asn1p_l.l"
 {
 		asn1p_lval.tv_str = strdup(yytext);
 		return TOK_typereference;
 	}
 	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 388 "asn1p_l.l"
-return TOK_PPEQ;
-	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 390 "asn1p_l.l"
-return TOK_ThreeDots;
+#line 396 "asn1p_l.l"
+return TOK_PPEQ;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 391 "asn1p_l.l"
+#line 398 "asn1p_l.l"
+return TOK_ThreeDots;
+	YY_BREAK
+case 124:
+YY_RULE_SETUP
+#line 399 "asn1p_l.l"
 return TOK_TwoDots;
 	YY_BREAK
 
-case 124:
-YY_RULE_SETUP
-#line 395 "asn1p_l.l"
-{
-				asn1p_lval.tv_str = strdup(yytext);
-				return TOK_Literal;
-			}
-	YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 400 "asn1p_l.l"
+#line 403 "asn1p_l.l"
 {
 				asn1p_lval.tv_str = strdup(yytext);
 				return TOK_Literal;
@@ -2924,35 +2957,43 @@
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 405 "asn1p_l.l"
+#line 408 "asn1p_l.l"
 {
-				yy_push_state(with_syntax);
 				asn1p_lval.tv_str = strdup(yytext);
 				return TOK_Literal;
 			}
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 411 "asn1p_l.l"
-return '[';
+#line 413 "asn1p_l.l"
+{
+				yy_push_state(with_syntax);
+				asn1p_lval.tv_str = strdup(yytext);
+				return TOK_Literal;
+			}
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 412 "asn1p_l.l"
-return ']';
+#line 419 "asn1p_l.l"
+return '[';
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 414 "asn1p_l.l"
+#line 420 "asn1p_l.l"
+return ']';
+	YY_BREAK
+case 130:
+YY_RULE_SETUP
+#line 422 "asn1p_l.l"
 {
 			asn1p_lval.tv_opaque.buf = strdup(yytext);
 			asn1p_lval.tv_opaque.len = yyleng;
 			return TOK_whitespace;
 			}
 	YY_BREAK
-case 130:
+case 131:
 YY_RULE_SETUP
-#line 420 "asn1p_l.l"
+#line 428 "asn1p_l.l"
 {
 				yy_pop_state();
 				if(YYSTATE == with_syntax) {
@@ -2964,14 +3005,14 @@
 			}
 	YY_BREAK
 
-case 131:
-YY_RULE_SETUP
-#line 433 "asn1p_l.l"
-/* Ignore whitespace */
-	YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 436 "asn1p_l.l"
+#line 441 "asn1p_l.l"
+/* Ignore whitespace */
+	YY_BREAK
+case 133:
+YY_RULE_SETUP
+#line 444 "asn1p_l.l"
 {
 		asn1c_integer_t v1 = -1, v2 = -1;
 		char *p;
@@ -2997,9 +3038,9 @@
 		return TOK_tuple;
 	}
 	YY_BREAK
-case 133:
+case 134:
 YY_RULE_SETUP
-#line 461 "asn1p_l.l"
+#line 469 "asn1p_l.l"
 {
 		asn1c_integer_t v1 = -1, v2 = -1, v3 = -1, v4 = -1;
 		char *p;
@@ -3043,14 +3084,14 @@
 		return TOK_quadruple;
 	}
 	YY_BREAK
-case 134:
-YY_RULE_SETUP
-#line 505 "asn1p_l.l"
-return yytext[0];
-	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 507 "asn1p_l.l"
+#line 513 "asn1p_l.l"
+return yytext[0];
+	YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 515 "asn1p_l.l"
 {
 		if(TYPE_LIFETIME(1994, 0))
 			fprintf(stderr, "ERROR: ");
@@ -3062,9 +3103,9 @@
 			return -1;
 	}
 	YY_BREAK
-case 136:
+case 137:
 YY_RULE_SETUP
-#line 518 "asn1p_l.l"
+#line 526 "asn1p_l.l"
 {
 		fprintf(stderr,
 			"Unexpected token at line %d: \"%s\"\n",
@@ -3086,19 +3127,19 @@
 case YY_STATE_EOF(opaque):
 case YY_STATE_EOF(encoding_control):
 case YY_STATE_EOF(with_syntax):
-#line 531 "asn1p_l.l"
+#line 539 "asn1p_l.l"
 {
 		while(YYSTATE != INITIAL)
 			yy_pop_state();
 		yyterminate();
 	}
 	YY_BREAK
-case 137:
+case 138:
 YY_RULE_SETUP
-#line 538 "asn1p_l.l"
+#line 546 "asn1p_l.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 3102 "asn1p_l.c"
+#line 3143 "asn1p_l.c"
 
 	case YY_END_OF_BUFFER:
 		{
@@ -3385,7 +3426,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 >= 735 )
+			if ( yy_current_state >= 742 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3415,11 +3456,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 >= 735 )
+		if ( yy_current_state >= 742 )
 			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 == 734);
+	yy_is_jam = (yy_current_state == 741);
 	if ( ! yy_is_jam )
 		*yy_state_ptr++ = yy_current_state;
 
@@ -3980,7 +4021,7 @@
 	return 0;
 	}
 #endif
-#line 538 "asn1p_l.l"
+#line 546 "asn1p_l.l"
 
 
 /*
@@ -4010,3 +4051,19 @@
 	}
 	return value;
 }
+
+static double
+_lex_atod(const char *ptr) {
+	double value;
+	errno = 0;
+	value = strtod(ptr, 0);
+	if(errno) {
+		fprintf(stderr,
+			"Value \"%s\" at line %d is outside of `double` range "
+			"in this compiler! Please contact the asn1c author.\n",
+			ptr, yylineno);
+		errno = ERANGE;
+	}
+	return value;
+}
+
diff --git a/libasn1parser/asn1p_l.l b/libasn1parser/asn1p_l.l
index 2594b55..33d2a14 100644
--- a/libasn1parser/asn1p_l.l
+++ b/libasn1parser/asn1p_l.l
@@ -27,6 +27,7 @@
 int asn1p_as_pointer;
 
 static asn1c_integer_t _lex_atoi(const char *ptr);
+static double          _lex_atod(const char *ptr);
 
 /*
  * Check that the type is defined in the year of the standard choosen.
@@ -240,6 +241,13 @@
 		return TOK_number;
 	}
 
+[-+]?[0-9]+[.]?([eE][-+]?)?[0-9]+ {
+		asn1p_lval.a_dbl = _lex_atod(yytext);
+		if(errno == ERANGE)
+			return -1;
+		return TOK_realnumber;
+	}
+
 ABSENT			return TOK_ABSENT;
 ALL			return TOK_ALL;
 ANY			{
@@ -564,3 +572,19 @@
 	}
 	return value;
 }
+
+static double
+_lex_atod(const char *ptr) {
+	double value;
+	errno = 0;
+	value = strtod(ptr, 0);
+	if(errno) {
+		fprintf(stderr,
+			"Value \"%s\" at line %d is outside of `double` range "
+			"in this compiler! Please contact the asn1c author.\n",
+			ptr, yylineno);
+		errno = ERANGE;
+	}
+	return value;
+}
+
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index f99d215..ba23ed2 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -67,100 +67,101 @@
      TOK_hstring = 263,
      TOK_identifier = 264,
      TOK_number = 265,
-     TOK_tuple = 266,
-     TOK_quadruple = 267,
-     TOK_number_negative = 268,
-     TOK_typereference = 269,
-     TOK_capitalreference = 270,
-     TOK_typefieldreference = 271,
-     TOK_valuefieldreference = 272,
-     TOK_Literal = 273,
-     TOK_ABSENT = 274,
-     TOK_ABSTRACT_SYNTAX = 275,
-     TOK_ALL = 276,
-     TOK_ANY = 277,
-     TOK_APPLICATION = 278,
-     TOK_AUTOMATIC = 279,
-     TOK_BEGIN = 280,
-     TOK_BIT = 281,
-     TOK_BMPString = 282,
-     TOK_BOOLEAN = 283,
-     TOK_BY = 284,
-     TOK_CHARACTER = 285,
-     TOK_CHOICE = 286,
-     TOK_CLASS = 287,
-     TOK_COMPONENT = 288,
-     TOK_COMPONENTS = 289,
-     TOK_CONSTRAINED = 290,
-     TOK_CONTAINING = 291,
-     TOK_DEFAULT = 292,
-     TOK_DEFINITIONS = 293,
-     TOK_DEFINED = 294,
-     TOK_EMBEDDED = 295,
-     TOK_ENCODED = 296,
-     TOK_ENCODING_CONTROL = 297,
-     TOK_END = 298,
-     TOK_ENUMERATED = 299,
-     TOK_EXPLICIT = 300,
-     TOK_EXPORTS = 301,
-     TOK_EXTENSIBILITY = 302,
-     TOK_EXTERNAL = 303,
-     TOK_FALSE = 304,
-     TOK_FROM = 305,
-     TOK_GeneralizedTime = 306,
-     TOK_GeneralString = 307,
-     TOK_GraphicString = 308,
-     TOK_IA5String = 309,
-     TOK_IDENTIFIER = 310,
-     TOK_IMPLICIT = 311,
-     TOK_IMPLIED = 312,
-     TOK_IMPORTS = 313,
-     TOK_INCLUDES = 314,
-     TOK_INSTANCE = 315,
-     TOK_INSTRUCTIONS = 316,
-     TOK_INTEGER = 317,
-     TOK_ISO646String = 318,
-     TOK_MAX = 319,
-     TOK_MIN = 320,
-     TOK_MINUS_INFINITY = 321,
-     TOK_NULL = 322,
-     TOK_NumericString = 323,
-     TOK_OBJECT = 324,
-     TOK_ObjectDescriptor = 325,
-     TOK_OCTET = 326,
-     TOK_OF = 327,
-     TOK_OPTIONAL = 328,
-     TOK_PATTERN = 329,
-     TOK_PDV = 330,
-     TOK_PLUS_INFINITY = 331,
-     TOK_PRESENT = 332,
-     TOK_PrintableString = 333,
-     TOK_PRIVATE = 334,
-     TOK_REAL = 335,
-     TOK_RELATIVE_OID = 336,
-     TOK_SEQUENCE = 337,
-     TOK_SET = 338,
-     TOK_SIZE = 339,
-     TOK_STRING = 340,
-     TOK_SYNTAX = 341,
-     TOK_T61String = 342,
-     TOK_TAGS = 343,
-     TOK_TeletexString = 344,
-     TOK_TRUE = 345,
-     TOK_TYPE_IDENTIFIER = 346,
-     TOK_UNIQUE = 347,
-     TOK_UNIVERSAL = 348,
-     TOK_UniversalString = 349,
-     TOK_UTCTime = 350,
-     TOK_UTF8String = 351,
-     TOK_VideotexString = 352,
-     TOK_VisibleString = 353,
-     TOK_WITH = 354,
-     TOK_EXCEPT = 355,
-     TOK_INTERSECTION = 356,
-     TOK_UNION = 357,
-     TOK_TwoDots = 358,
-     TOK_ThreeDots = 359
+     TOK_number_negative = 266,
+     TOK_realnumber = 267,
+     TOK_tuple = 268,
+     TOK_quadruple = 269,
+     TOK_typereference = 270,
+     TOK_capitalreference = 271,
+     TOK_typefieldreference = 272,
+     TOK_valuefieldreference = 273,
+     TOK_Literal = 274,
+     TOK_ABSENT = 275,
+     TOK_ABSTRACT_SYNTAX = 276,
+     TOK_ALL = 277,
+     TOK_ANY = 278,
+     TOK_APPLICATION = 279,
+     TOK_AUTOMATIC = 280,
+     TOK_BEGIN = 281,
+     TOK_BIT = 282,
+     TOK_BMPString = 283,
+     TOK_BOOLEAN = 284,
+     TOK_BY = 285,
+     TOK_CHARACTER = 286,
+     TOK_CHOICE = 287,
+     TOK_CLASS = 288,
+     TOK_COMPONENT = 289,
+     TOK_COMPONENTS = 290,
+     TOK_CONSTRAINED = 291,
+     TOK_CONTAINING = 292,
+     TOK_DEFAULT = 293,
+     TOK_DEFINITIONS = 294,
+     TOK_DEFINED = 295,
+     TOK_EMBEDDED = 296,
+     TOK_ENCODED = 297,
+     TOK_ENCODING_CONTROL = 298,
+     TOK_END = 299,
+     TOK_ENUMERATED = 300,
+     TOK_EXPLICIT = 301,
+     TOK_EXPORTS = 302,
+     TOK_EXTENSIBILITY = 303,
+     TOK_EXTERNAL = 304,
+     TOK_FALSE = 305,
+     TOK_FROM = 306,
+     TOK_GeneralizedTime = 307,
+     TOK_GeneralString = 308,
+     TOK_GraphicString = 309,
+     TOK_IA5String = 310,
+     TOK_IDENTIFIER = 311,
+     TOK_IMPLICIT = 312,
+     TOK_IMPLIED = 313,
+     TOK_IMPORTS = 314,
+     TOK_INCLUDES = 315,
+     TOK_INSTANCE = 316,
+     TOK_INSTRUCTIONS = 317,
+     TOK_INTEGER = 318,
+     TOK_ISO646String = 319,
+     TOK_MAX = 320,
+     TOK_MIN = 321,
+     TOK_MINUS_INFINITY = 322,
+     TOK_NULL = 323,
+     TOK_NumericString = 324,
+     TOK_OBJECT = 325,
+     TOK_ObjectDescriptor = 326,
+     TOK_OCTET = 327,
+     TOK_OF = 328,
+     TOK_OPTIONAL = 329,
+     TOK_PATTERN = 330,
+     TOK_PDV = 331,
+     TOK_PLUS_INFINITY = 332,
+     TOK_PRESENT = 333,
+     TOK_PrintableString = 334,
+     TOK_PRIVATE = 335,
+     TOK_REAL = 336,
+     TOK_RELATIVE_OID = 337,
+     TOK_SEQUENCE = 338,
+     TOK_SET = 339,
+     TOK_SIZE = 340,
+     TOK_STRING = 341,
+     TOK_SYNTAX = 342,
+     TOK_T61String = 343,
+     TOK_TAGS = 344,
+     TOK_TeletexString = 345,
+     TOK_TRUE = 346,
+     TOK_TYPE_IDENTIFIER = 347,
+     TOK_UNIQUE = 348,
+     TOK_UNIVERSAL = 349,
+     TOK_UniversalString = 350,
+     TOK_UTCTime = 351,
+     TOK_UTF8String = 352,
+     TOK_VideotexString = 353,
+     TOK_VisibleString = 354,
+     TOK_WITH = 355,
+     TOK_EXCEPT = 356,
+     TOK_INTERSECTION = 357,
+     TOK_UNION = 358,
+     TOK_TwoDots = 359,
+     TOK_ThreeDots = 360
    };
 #endif
 #define TOK_PPEQ 258
@@ -171,100 +172,101 @@
 #define TOK_hstring 263
 #define TOK_identifier 264
 #define TOK_number 265
-#define TOK_tuple 266
-#define TOK_quadruple 267
-#define TOK_number_negative 268
-#define TOK_typereference 269
-#define TOK_capitalreference 270
-#define TOK_typefieldreference 271
-#define TOK_valuefieldreference 272
-#define TOK_Literal 273
-#define TOK_ABSENT 274
-#define TOK_ABSTRACT_SYNTAX 275
-#define TOK_ALL 276
-#define TOK_ANY 277
-#define TOK_APPLICATION 278
-#define TOK_AUTOMATIC 279
-#define TOK_BEGIN 280
-#define TOK_BIT 281
-#define TOK_BMPString 282
-#define TOK_BOOLEAN 283
-#define TOK_BY 284
-#define TOK_CHARACTER 285
-#define TOK_CHOICE 286
-#define TOK_CLASS 287
-#define TOK_COMPONENT 288
-#define TOK_COMPONENTS 289
-#define TOK_CONSTRAINED 290
-#define TOK_CONTAINING 291
-#define TOK_DEFAULT 292
-#define TOK_DEFINITIONS 293
-#define TOK_DEFINED 294
-#define TOK_EMBEDDED 295
-#define TOK_ENCODED 296
-#define TOK_ENCODING_CONTROL 297
-#define TOK_END 298
-#define TOK_ENUMERATED 299
-#define TOK_EXPLICIT 300
-#define TOK_EXPORTS 301
-#define TOK_EXTENSIBILITY 302
-#define TOK_EXTERNAL 303
-#define TOK_FALSE 304
-#define TOK_FROM 305
-#define TOK_GeneralizedTime 306
-#define TOK_GeneralString 307
-#define TOK_GraphicString 308
-#define TOK_IA5String 309
-#define TOK_IDENTIFIER 310
-#define TOK_IMPLICIT 311
-#define TOK_IMPLIED 312
-#define TOK_IMPORTS 313
-#define TOK_INCLUDES 314
-#define TOK_INSTANCE 315
-#define TOK_INSTRUCTIONS 316
-#define TOK_INTEGER 317
-#define TOK_ISO646String 318
-#define TOK_MAX 319
-#define TOK_MIN 320
-#define TOK_MINUS_INFINITY 321
-#define TOK_NULL 322
-#define TOK_NumericString 323
-#define TOK_OBJECT 324
-#define TOK_ObjectDescriptor 325
-#define TOK_OCTET 326
-#define TOK_OF 327
-#define TOK_OPTIONAL 328
-#define TOK_PATTERN 329
-#define TOK_PDV 330
-#define TOK_PLUS_INFINITY 331
-#define TOK_PRESENT 332
-#define TOK_PrintableString 333
-#define TOK_PRIVATE 334
-#define TOK_REAL 335
-#define TOK_RELATIVE_OID 336
-#define TOK_SEQUENCE 337
-#define TOK_SET 338
-#define TOK_SIZE 339
-#define TOK_STRING 340
-#define TOK_SYNTAX 341
-#define TOK_T61String 342
-#define TOK_TAGS 343
-#define TOK_TeletexString 344
-#define TOK_TRUE 345
-#define TOK_TYPE_IDENTIFIER 346
-#define TOK_UNIQUE 347
-#define TOK_UNIVERSAL 348
-#define TOK_UniversalString 349
-#define TOK_UTCTime 350
-#define TOK_UTF8String 351
-#define TOK_VideotexString 352
-#define TOK_VisibleString 353
-#define TOK_WITH 354
-#define TOK_EXCEPT 355
-#define TOK_INTERSECTION 356
-#define TOK_UNION 357
-#define TOK_TwoDots 358
-#define TOK_ThreeDots 359
+#define TOK_number_negative 266
+#define TOK_realnumber 267
+#define TOK_tuple 268
+#define TOK_quadruple 269
+#define TOK_typereference 270
+#define TOK_capitalreference 271
+#define TOK_typefieldreference 272
+#define TOK_valuefieldreference 273
+#define TOK_Literal 274
+#define TOK_ABSENT 275
+#define TOK_ABSTRACT_SYNTAX 276
+#define TOK_ALL 277
+#define TOK_ANY 278
+#define TOK_APPLICATION 279
+#define TOK_AUTOMATIC 280
+#define TOK_BEGIN 281
+#define TOK_BIT 282
+#define TOK_BMPString 283
+#define TOK_BOOLEAN 284
+#define TOK_BY 285
+#define TOK_CHARACTER 286
+#define TOK_CHOICE 287
+#define TOK_CLASS 288
+#define TOK_COMPONENT 289
+#define TOK_COMPONENTS 290
+#define TOK_CONSTRAINED 291
+#define TOK_CONTAINING 292
+#define TOK_DEFAULT 293
+#define TOK_DEFINITIONS 294
+#define TOK_DEFINED 295
+#define TOK_EMBEDDED 296
+#define TOK_ENCODED 297
+#define TOK_ENCODING_CONTROL 298
+#define TOK_END 299
+#define TOK_ENUMERATED 300
+#define TOK_EXPLICIT 301
+#define TOK_EXPORTS 302
+#define TOK_EXTENSIBILITY 303
+#define TOK_EXTERNAL 304
+#define TOK_FALSE 305
+#define TOK_FROM 306
+#define TOK_GeneralizedTime 307
+#define TOK_GeneralString 308
+#define TOK_GraphicString 309
+#define TOK_IA5String 310
+#define TOK_IDENTIFIER 311
+#define TOK_IMPLICIT 312
+#define TOK_IMPLIED 313
+#define TOK_IMPORTS 314
+#define TOK_INCLUDES 315
+#define TOK_INSTANCE 316
+#define TOK_INSTRUCTIONS 317
+#define TOK_INTEGER 318
+#define TOK_ISO646String 319
+#define TOK_MAX 320
+#define TOK_MIN 321
+#define TOK_MINUS_INFINITY 322
+#define TOK_NULL 323
+#define TOK_NumericString 324
+#define TOK_OBJECT 325
+#define TOK_ObjectDescriptor 326
+#define TOK_OCTET 327
+#define TOK_OF 328
+#define TOK_OPTIONAL 329
+#define TOK_PATTERN 330
+#define TOK_PDV 331
+#define TOK_PLUS_INFINITY 332
+#define TOK_PRESENT 333
+#define TOK_PrintableString 334
+#define TOK_PRIVATE 335
+#define TOK_REAL 336
+#define TOK_RELATIVE_OID 337
+#define TOK_SEQUENCE 338
+#define TOK_SET 339
+#define TOK_SIZE 340
+#define TOK_STRING 341
+#define TOK_SYNTAX 342
+#define TOK_T61String 343
+#define TOK_TAGS 344
+#define TOK_TeletexString 345
+#define TOK_TRUE 346
+#define TOK_TYPE_IDENTIFIER 347
+#define TOK_UNIQUE 348
+#define TOK_UNIVERSAL 349
+#define TOK_UniversalString 350
+#define TOK_UTCTime 351
+#define TOK_UTF8String 352
+#define TOK_VideotexString 353
+#define TOK_VisibleString 354
+#define TOK_WITH 355
+#define TOK_EXCEPT 356
+#define TOK_INTERSECTION 357
+#define TOK_UNION 358
+#define TOK_TwoDots 359
+#define TOK_ThreeDots 360
 
 
 
@@ -374,6 +376,7 @@
 	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1c_integer_t		 a_int;
+	double			 a_dbl;
 	char	*tv_str;
 	struct {
 		char *buf;
@@ -385,7 +388,7 @@
 	} tv_nametag;
 } yystype;
 /* Line 193 of /usr/local/share/bison/yacc.c.  */
-#line 389 "asn1p_y.c"
+#line 392 "asn1p_y.c"
 # define YYSTYPE yystype
 # define YYSTYPE_IS_TRIVIAL 1
 #endif
@@ -406,7 +409,7 @@
 
 
 /* Line 213 of /usr/local/share/bison/yacc.c.  */
-#line 410 "asn1p_y.c"
+#line 413 "asn1p_y.c"
 
 #if ! defined (yyoverflow) || YYERROR_VERBOSE
 
@@ -504,20 +507,20 @@
 
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  7
-#define YYLAST   838
+#define YYLAST   803
 
 /* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS  120
+#define YYNTOKENS  121
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  108
+#define YYNNTS  109
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  291
+#define YYNRULES  293
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  448
+#define YYNSTATES  450
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   359
+#define YYMAXUTOK   360
 
 #define YYTRANSLATE(X) \
   ((unsigned)(X) <= YYMAXUTOK ? yytranslate[X] : YYUNDEFTOK)
@@ -528,16 +531,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,   116,     2,     2,     2,     2,     2,     2,
-     109,   110,     2,     2,   112,     2,   117,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,   113,   111,
-     118,     2,     2,     2,   119,     2,     2,     2,     2,     2,
+       2,     2,     2,   117,     2,     2,     2,     2,     2,     2,
+     110,   111,     2,     2,   113,     2,   118,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   114,   112,
+     119,     2,     2,     2,   120,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,   114,     2,   115,   101,     2,     2,     2,     2,     2,
+       2,   115,     2,   116,   102,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   107,   103,   108,     2,     2,     2,     2,
+       2,     2,     2,   108,   104,   109,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -560,7 +563,8 @@
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100,   102,   104,   105,   106
+      95,    96,    97,    98,    99,   100,   101,   103,   105,   106,
+     107
 };
 
 #if YYDEBUG
@@ -595,132 +599,132 @@
      688,   694,   696,   700,   702,   706,   707,   709,   711,   713,
      715,   717,   719,   723,   728,   730,   734,   737,   741,   743,
      747,   748,   750,   752,   755,   758,   762,   764,   768,   770,
-     775,   780,   782,   784,   786,   788,   789,   791,   794,   799,
-     800,   802,   804,   806,   807,   809,   811,   813,   815,   817,
-     818,   820
+     775,   780,   782,   784,   786,   788,   790,   792,   793,   795,
+     798,   803,   804,   806,   808,   810,   811,   813,   815,   817,
+     819,   821,   822,   824
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
-     121,     0,    -1,   122,    -1,   123,    -1,   122,   123,    -1,
-     224,   124,    38,   128,     3,    25,   131,    43,    -1,    -1,
-     125,    -1,   107,   126,   108,    -1,   107,   108,    -1,   127,
-      -1,   126,   127,    -1,   227,    -1,   227,   109,    10,   110,
-      -1,    10,    -1,    -1,   129,    -1,   130,    -1,   129,   130,
-      -1,    45,    88,    -1,    56,    88,    -1,    24,    88,    -1,
-      47,    57,    -1,    15,    61,    -1,    -1,   132,    -1,   133,
-      -1,   132,   133,    -1,   135,    -1,   141,    -1,   147,    -1,
-     177,    -1,   145,    -1,    -1,    42,    15,   134,    -1,   187,
-      -1,    58,   136,   111,    -1,    58,    50,    -1,   138,    -1,
-     136,   138,    -1,    -1,   125,    -1,   139,    50,   224,   137,
-      -1,   140,    -1,   139,   112,   140,    -1,   224,    -1,   224,
-     107,   108,    -1,   227,    -1,    46,   142,   111,    -1,    46,
-      21,   111,    -1,    46,   111,    -1,   143,    -1,   142,   112,
-     143,    -1,   224,    -1,   224,   107,   108,    -1,   227,    -1,
-     107,   194,   108,    -1,   224,   146,     3,   144,    -1,   186,
-      -1,   171,    -1,   171,   107,   150,   108,    -1,   224,     3,
-     167,    -1,   224,     3,   157,    -1,   224,   107,   148,   108,
-       3,   167,    -1,   224,   107,   148,   108,     3,   157,    -1,
-     149,    -1,   148,   112,   149,    -1,   224,    -1,   224,   113,
-     227,    -1,   224,   113,   224,    -1,   184,   113,   227,    -1,
-     184,   113,   224,    -1,   151,    -1,   150,   112,   151,    -1,
-     167,    -1,   180,    -1,   227,    -1,   144,    -1,    -1,   153,
-      -1,   154,    -1,   153,   112,   154,    -1,   227,   167,   213,
-      -1,   167,   213,    -1,    34,    72,   167,    -1,   166,    -1,
-     156,    -1,   155,   112,   156,    -1,   227,   167,    -1,   166,
-      -1,   167,    -1,    32,   107,   159,   108,   161,    -1,    -1,
-      92,    -1,   160,    -1,   159,   112,   160,    -1,    16,   213,
-      -1,    17,   167,   158,   213,    -1,    17,   175,   213,    -1,
-      17,   176,   213,    -1,    16,   175,   213,    -1,    16,   167,
-     213,    -1,    16,   176,   213,    -1,    -1,   162,    -1,    -1,
-      99,    86,   107,   163,   164,   108,    -1,   165,    -1,   164,
-     165,    -1,     4,    -1,    18,    -1,   174,    -1,   114,   164,
-     115,    -1,   106,    -1,   106,   116,   181,    -1,   106,   116,
-     218,    -1,   219,   169,   191,    -1,    -1,   168,   170,    -1,
-     146,    -1,    31,   107,   155,   108,    -1,    82,   107,   152,
-     108,    -1,    83,   107,   152,   108,    -1,    82,   191,    72,
-     226,   219,   169,    -1,    83,   191,    72,   226,   219,   169,
-      -1,    22,    -1,    22,    39,    29,   227,    -1,    60,    72,
-     171,    -1,    14,    -1,    14,   117,   224,    -1,   225,   117,
-     224,    -1,    14,   117,   227,    -1,   225,    -1,   225,   117,
-     172,    -1,   173,    -1,   172,   117,   173,    -1,   174,    -1,
-      16,    -1,    17,    -1,    16,    -1,   175,   117,    16,    -1,
-     175,   117,    17,    -1,    15,    -1,   227,   146,     3,   178,
-      -1,   180,    -1,   181,    -1,   227,   113,   178,    -1,    -1,
-     107,   179,   183,    -1,    67,    -1,    49,    -1,    90,    -1,
-       6,    -1,     8,    -1,   182,    -1,   218,    -1,   227,    -1,
-     224,   117,   227,    -1,     7,    -1,    11,    -1,    12,    -1,
-       5,    -1,   183,     5,    -1,    28,    -1,    67,    -1,    80,
-      -1,   185,    -1,    71,    85,    -1,    69,    55,    -1,    81,
-      -1,    48,    -1,    40,    75,    -1,    30,    85,    -1,    95,
-      -1,    51,    -1,   187,    -1,    62,    -1,    44,    -1,    26,
-      85,    -1,   184,    -1,   185,   215,    -1,    27,    -1,    52,
-      -1,    53,    -1,    54,    -1,    63,    -1,    68,    -1,    78,
-      -1,    87,    -1,    89,    -1,    94,    -1,    96,    -1,    97,
-      -1,    98,    -1,    70,    -1,   103,    -1,   104,    -1,   101,
-      -1,   102,    -1,   100,    -1,    -1,   192,    -1,   193,    -1,
-      84,   109,   194,   110,    -1,   109,   194,   110,    -1,   193,
-     109,   194,   110,    -1,   106,    -1,   195,    -1,   195,   112,
-     106,    -1,   195,   112,   106,   112,   195,    -1,   196,    -1,
-      21,   100,   196,    -1,   195,   188,   196,    -1,   195,   189,
-     196,    -1,   196,   190,   196,    -1,   199,   109,   194,   110,
-      -1,   109,   194,   110,    -1,   200,    -1,   201,    -1,   200,
-     198,   200,    -1,    65,   198,   200,    -1,   200,   198,    64,
-      -1,    65,   198,    64,    -1,   207,    -1,   202,    -1,    -1,
-      35,    29,   107,   197,   183,    -1,   105,    -1,   105,   118,
-      -1,   118,   105,    -1,   118,   105,   118,    -1,    84,    -1,
-      50,    -1,    49,    -1,    90,    -1,   218,    -1,   182,    -1,
-     227,    -1,   224,    -1,    99,    33,   193,    -1,    99,    34,
-     107,   203,   108,    -1,   204,    -1,   203,   112,   204,    -1,
-     106,    -1,   227,   191,   205,    -1,    -1,   206,    -1,    77,
-      -1,    19,    -1,    73,    -1,   208,    -1,   209,    -1,   107,
-     224,   108,    -1,   208,   107,   210,   108,    -1,   211,    -1,
-     210,   112,   211,    -1,   119,   212,    -1,   119,   117,   212,
-      -1,   227,    -1,   212,   117,   227,    -1,    -1,   214,    -1,
-      73,    -1,    37,   178,    -1,   107,   108,    -1,   107,   216,
-     108,    -1,   217,    -1,   216,   112,   217,    -1,   227,    -1,
-     227,   109,   218,   110,    -1,   227,   109,   181,   110,    -1,
-     218,    -1,   106,    -1,    10,    -1,    13,    -1,    -1,   220,
-      -1,   221,   223,    -1,   114,   222,    10,   115,    -1,    -1,
-      93,    -1,    23,    -1,    79,    -1,    -1,    56,    -1,    45,
-      -1,    14,    -1,    15,    -1,    15,    -1,    -1,   227,    -1,
-       9,    -1
+     122,     0,    -1,   123,    -1,   124,    -1,   123,   124,    -1,
+     226,   125,    39,   129,     3,    26,   132,    44,    -1,    -1,
+     126,    -1,   108,   127,   109,    -1,   108,   109,    -1,   128,
+      -1,   127,   128,    -1,   229,    -1,   229,   110,    10,   111,
+      -1,    10,    -1,    -1,   130,    -1,   131,    -1,   130,   131,
+      -1,    46,    89,    -1,    57,    89,    -1,    25,    89,    -1,
+      48,    58,    -1,    16,    62,    -1,    -1,   133,    -1,   134,
+      -1,   133,   134,    -1,   136,    -1,   142,    -1,   148,    -1,
+     178,    -1,   146,    -1,    -1,    43,    16,   135,    -1,   188,
+      -1,    59,   137,   112,    -1,    59,    51,    -1,   139,    -1,
+     137,   139,    -1,    -1,   126,    -1,   140,    51,   226,   138,
+      -1,   141,    -1,   140,   113,   141,    -1,   226,    -1,   226,
+     108,   109,    -1,   229,    -1,    47,   143,   112,    -1,    47,
+      22,   112,    -1,    47,   112,    -1,   144,    -1,   143,   113,
+     144,    -1,   226,    -1,   226,   108,   109,    -1,   229,    -1,
+     108,   195,   109,    -1,   226,   147,     3,   145,    -1,   187,
+      -1,   172,    -1,   172,   108,   151,   109,    -1,   226,     3,
+     168,    -1,   226,     3,   158,    -1,   226,   108,   149,   109,
+       3,   168,    -1,   226,   108,   149,   109,     3,   158,    -1,
+     150,    -1,   149,   113,   150,    -1,   226,    -1,   226,   114,
+     229,    -1,   226,   114,   226,    -1,   185,   114,   229,    -1,
+     185,   114,   226,    -1,   152,    -1,   151,   113,   152,    -1,
+     168,    -1,   181,    -1,   229,    -1,   145,    -1,    -1,   154,
+      -1,   155,    -1,   154,   113,   155,    -1,   229,   168,   214,
+      -1,   168,   214,    -1,    35,    73,   168,    -1,   167,    -1,
+     157,    -1,   156,   113,   157,    -1,   229,   168,    -1,   167,
+      -1,   168,    -1,    33,   108,   160,   109,   162,    -1,    -1,
+      93,    -1,   161,    -1,   160,   113,   161,    -1,    17,   214,
+      -1,    18,   168,   159,   214,    -1,    18,   176,   214,    -1,
+      18,   177,   214,    -1,    17,   176,   214,    -1,    17,   168,
+     214,    -1,    17,   177,   214,    -1,    -1,   163,    -1,    -1,
+     100,    87,   108,   164,   165,   109,    -1,   166,    -1,   165,
+     166,    -1,     4,    -1,    19,    -1,   175,    -1,   115,   165,
+     116,    -1,   107,    -1,   107,   117,   182,    -1,   107,   117,
+     219,    -1,   221,   170,   192,    -1,    -1,   169,   171,    -1,
+     147,    -1,    32,   108,   156,   109,    -1,    83,   108,   153,
+     109,    -1,    84,   108,   153,   109,    -1,    83,   192,    73,
+     228,   221,   170,    -1,    84,   192,    73,   228,   221,   170,
+      -1,    23,    -1,    23,    40,    30,   229,    -1,    61,    73,
+     172,    -1,    15,    -1,    15,   118,   226,    -1,   227,   118,
+     226,    -1,    15,   118,   229,    -1,   227,    -1,   227,   118,
+     173,    -1,   174,    -1,   173,   118,   174,    -1,   175,    -1,
+      17,    -1,    18,    -1,    17,    -1,   176,   118,    17,    -1,
+     176,   118,    18,    -1,    16,    -1,   229,   147,     3,   179,
+      -1,   181,    -1,   182,    -1,   229,   114,   179,    -1,    -1,
+     108,   180,   184,    -1,    68,    -1,    50,    -1,    91,    -1,
+       6,    -1,     8,    -1,   183,    -1,   219,    -1,   229,    -1,
+     226,   118,   229,    -1,     7,    -1,    13,    -1,    14,    -1,
+       5,    -1,   184,     5,    -1,    29,    -1,    68,    -1,    81,
+      -1,   186,    -1,    72,    86,    -1,    70,    56,    -1,    82,
+      -1,    49,    -1,    41,    76,    -1,    31,    86,    -1,    96,
+      -1,    52,    -1,   188,    -1,    63,    -1,    45,    -1,    27,
+      86,    -1,   185,    -1,   186,   216,    -1,    28,    -1,    53,
+      -1,    54,    -1,    55,    -1,    64,    -1,    69,    -1,    79,
+      -1,    88,    -1,    90,    -1,    95,    -1,    97,    -1,    98,
+      -1,    99,    -1,    71,    -1,   104,    -1,   105,    -1,   102,
+      -1,   103,    -1,   101,    -1,    -1,   193,    -1,   194,    -1,
+      85,   110,   195,   111,    -1,   110,   195,   111,    -1,   194,
+     110,   195,   111,    -1,   107,    -1,   196,    -1,   196,   113,
+     107,    -1,   196,   113,   107,   113,   196,    -1,   197,    -1,
+      22,   101,   197,    -1,   196,   189,   197,    -1,   196,   190,
+     197,    -1,   197,   191,   197,    -1,   200,   110,   195,   111,
+      -1,   110,   195,   111,    -1,   201,    -1,   202,    -1,   201,
+     199,   201,    -1,    66,   199,   201,    -1,   201,   199,    65,
+      -1,    66,   199,    65,    -1,   208,    -1,   203,    -1,    -1,
+      36,    30,   108,   198,   184,    -1,   106,    -1,   106,   119,
+      -1,   119,   106,    -1,   119,   106,   119,    -1,    85,    -1,
+      51,    -1,    50,    -1,    91,    -1,   220,    -1,   183,    -1,
+     229,    -1,   226,    -1,   100,    34,   194,    -1,   100,    35,
+     108,   204,   109,    -1,   205,    -1,   204,   113,   205,    -1,
+     107,    -1,   229,   192,   206,    -1,    -1,   207,    -1,    78,
+      -1,    20,    -1,    74,    -1,   209,    -1,   210,    -1,   108,
+     226,   109,    -1,   209,   108,   211,   109,    -1,   212,    -1,
+     211,   113,   212,    -1,   120,   213,    -1,   120,   118,   213,
+      -1,   229,    -1,   213,   118,   229,    -1,    -1,   215,    -1,
+      74,    -1,    38,   179,    -1,   108,   109,    -1,   108,   217,
+     109,    -1,   218,    -1,   217,   113,   218,    -1,   229,    -1,
+     229,   110,   219,   111,    -1,   229,   110,   182,   111,    -1,
+     219,    -1,   107,    -1,    10,    -1,    11,    -1,   219,    -1,
+      12,    -1,    -1,   222,    -1,   223,   225,    -1,   115,   224,
+      10,   116,    -1,    -1,    94,    -1,    24,    -1,    80,    -1,
+      -1,    57,    -1,    46,    -1,    15,    -1,    16,    -1,    16,
+      -1,    -1,   229,    -1,     9,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,   323,   323,   329,   335,   351,   376,   378,   381,   385,
-     390,   397,   405,   410,   414,   423,   425,   433,   437,   445,
-     449,   452,   455,   459,   479,   481,   489,   493,   525,   529,
-     538,   545,   558,   566,   565,   579,   591,   602,   607,   613,
-     619,   621,   624,   635,   641,   647,   654,   660,   668,   672,
-     675,   682,   688,   694,   701,   707,   716,   718,   728,   742,
-     752,   768,   778,   794,   800,   807,   817,   827,   832,   839,
-     846,   854,   864,   870,   876,   880,   888,   899,   921,   923,
-     925,   931,   937,   945,   951,   958,   963,   969,   975,   981,
-     984,   990,  1000,  1002,  1005,  1013,  1020,  1033,  1044,  1054,
-    1065,  1075,  1086,  1097,  1099,  1106,  1104,  1113,  1118,  1124,
-    1129,  1132,  1136,  1141,  1150,  1159,  1170,  1192,  1199,  1218,
-    1222,  1228,  1234,  1240,  1250,  1260,  1266,  1277,  1291,  1300,
-    1310,  1320,  1330,  1338,  1359,  1368,  1377,  1379,  1386,  1393,
-    1399,  1403,  1409,  1429,  1439,  1441,  1442,  1449,  1449,  1454,
-    1461,  1467,  1472,  1476,  1480,  1483,  1488,  1500,  1517,  1522,
-    1527,  1560,  1570,  1584,  1586,  1587,  1588,  1589,  1590,  1591,
-    1592,  1593,  1594,  1595,  1596,  1597,  1603,  1605,  1606,  1609,
-    1616,  1628,  1630,  1634,  1638,  1639,  1640,  1641,  1642,  1646,
-    1647,  1648,  1649,  1653,  1654,  1661,  1661,  1662,  1662,  1663,
-    1665,  1667,  1672,  1676,  1685,  1689,  1694,  1699,  1702,  1708,
-    1718,  1722,  1725,  1728,  1731,  1736,  1745,  1753,  1759,  1765,
-    1772,  1780,  1788,  1797,  1800,  1804,  1803,  1814,  1816,  1817,
-    1818,  1821,  1825,  1830,  1836,  1841,  1844,  1847,  1860,  1874,
-    1878,  1883,  1887,  1892,  1899,  1912,  1914,  1917,  1921,  1924,
-    1929,  1933,  1941,  1956,  1962,  1969,  1982,  1994,  2009,  2013,
-    2030,  2035,  2038,  2043,  2065,  2070,  2075,  2081,  2087,  2095,
-    2103,  2111,  2118,  2128,  2133,  2163,  2165,  2168,  2175,  2181,
-    2183,  2184,  2185,  2188,  2190,  2191,  2194,  2199,  2206,  2213,
-    2215,  2220
+       0,   326,   326,   332,   338,   354,   379,   381,   384,   388,
+     393,   400,   408,   413,   417,   426,   428,   436,   440,   448,
+     452,   455,   458,   462,   482,   484,   492,   496,   528,   532,
+     541,   548,   561,   569,   568,   582,   594,   605,   610,   616,
+     622,   624,   627,   638,   644,   650,   657,   663,   671,   675,
+     678,   685,   691,   697,   704,   710,   719,   721,   731,   745,
+     755,   771,   781,   797,   803,   810,   820,   830,   835,   842,
+     849,   857,   867,   873,   879,   883,   891,   902,   924,   926,
+     928,   934,   940,   948,   954,   961,   966,   972,   978,   984,
+     987,   993,  1003,  1005,  1008,  1016,  1023,  1036,  1047,  1057,
+    1068,  1078,  1089,  1100,  1102,  1109,  1107,  1116,  1121,  1127,
+    1132,  1135,  1139,  1144,  1153,  1162,  1173,  1195,  1202,  1221,
+    1225,  1231,  1237,  1243,  1253,  1263,  1269,  1280,  1294,  1303,
+    1313,  1323,  1333,  1341,  1362,  1371,  1380,  1382,  1389,  1396,
+    1402,  1406,  1412,  1432,  1442,  1444,  1445,  1452,  1452,  1457,
+    1464,  1470,  1475,  1479,  1483,  1486,  1491,  1503,  1520,  1525,
+    1530,  1563,  1573,  1587,  1589,  1590,  1591,  1592,  1593,  1594,
+    1595,  1596,  1597,  1598,  1599,  1600,  1606,  1608,  1609,  1612,
+    1619,  1631,  1633,  1637,  1641,  1642,  1643,  1644,  1645,  1649,
+    1650,  1651,  1652,  1656,  1657,  1664,  1664,  1665,  1665,  1666,
+    1668,  1670,  1675,  1679,  1688,  1692,  1697,  1702,  1705,  1711,
+    1721,  1725,  1728,  1731,  1734,  1739,  1748,  1756,  1762,  1768,
+    1775,  1783,  1791,  1800,  1803,  1807,  1806,  1817,  1819,  1820,
+    1821,  1824,  1828,  1833,  1839,  1844,  1845,  1846,  1859,  1873,
+    1877,  1882,  1886,  1891,  1898,  1911,  1913,  1916,  1920,  1923,
+    1928,  1932,  1940,  1955,  1961,  1968,  1981,  1993,  2008,  2012,
+    2029,  2034,  2037,  2042,  2064,  2069,  2074,  2080,  2086,  2094,
+    2102,  2110,  2117,  2127,  2132,  2138,  2140,  2170,  2172,  2175,
+    2182,  2188,  2190,  2191,  2192,  2195,  2197,  2198,  2201,  2206,
+    2213,  2220,  2222,  2227
 };
 #endif
 
@@ -731,46 +735,47 @@
 {
   "$end", "error", "$undefined", "TOK_PPEQ", "TOK_whitespace", "TOK_opaque", 
   "TOK_bstring", "TOK_cstring", "TOK_hstring", "TOK_identifier", 
-  "TOK_number", "TOK_tuple", "TOK_quadruple", "TOK_number_negative", 
-  "TOK_typereference", "TOK_capitalreference", "TOK_typefieldreference", 
-  "TOK_valuefieldreference", "TOK_Literal", "TOK_ABSENT", 
-  "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY", "TOK_APPLICATION", 
-  "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT", "TOK_BMPString", "TOK_BOOLEAN", 
-  "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE", "TOK_CLASS", "TOK_COMPONENT", 
-  "TOK_COMPONENTS", "TOK_CONSTRAINED", "TOK_CONTAINING", "TOK_DEFAULT", 
-  "TOK_DEFINITIONS", "TOK_DEFINED", "TOK_EMBEDDED", "TOK_ENCODED", 
-  "TOK_ENCODING_CONTROL", "TOK_END", "TOK_ENUMERATED", "TOK_EXPLICIT", 
-  "TOK_EXPORTS", "TOK_EXTENSIBILITY", "TOK_EXTERNAL", "TOK_FALSE", 
-  "TOK_FROM", "TOK_GeneralizedTime", "TOK_GeneralString", 
-  "TOK_GraphicString", "TOK_IA5String", "TOK_IDENTIFIER", "TOK_IMPLICIT", 
-  "TOK_IMPLIED", "TOK_IMPORTS", "TOK_INCLUDES", "TOK_INSTANCE", 
-  "TOK_INSTRUCTIONS", "TOK_INTEGER", "TOK_ISO646String", "TOK_MAX", 
-  "TOK_MIN", "TOK_MINUS_INFINITY", "TOK_NULL", "TOK_NumericString", 
-  "TOK_OBJECT", "TOK_ObjectDescriptor", "TOK_OCTET", "TOK_OF", 
-  "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV", "TOK_PLUS_INFINITY", 
-  "TOK_PRESENT", "TOK_PrintableString", "TOK_PRIVATE", "TOK_REAL", 
-  "TOK_RELATIVE_OID", "TOK_SEQUENCE", "TOK_SET", "TOK_SIZE", "TOK_STRING", 
-  "TOK_SYNTAX", "TOK_T61String", "TOK_TAGS", "TOK_TeletexString", 
-  "TOK_TRUE", "TOK_TYPE_IDENTIFIER", "TOK_UNIQUE", "TOK_UNIVERSAL", 
-  "TOK_UniversalString", "TOK_UTCTime", "TOK_UTF8String", 
-  "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH", "TOK_EXCEPT", 
-  "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION", "TOK_TwoDots", 
-  "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'", "','", "':'", "'['", 
-  "']'", "'!'", "'.'", "'<'", "'@'", "$accept", "ParsedGrammar", 
-  "ModuleList", "ModuleSpecification", "optObjectIdentifier", 
-  "ObjectIdentifier", "ObjectIdentifierBody", "ObjectIdentifierElement", 
-  "optModuleSpecificationFlags", "ModuleSpecificationFlags", 
-  "ModuleSpecificationFlag", "optModuleSpecificationBody", 
-  "ModuleSpecificationBody", "ModuleSpecificationElement", "@1", 
-  "ImportsDefinition", "ImportsBundleSet", "AssignedIdentifier", 
-  "ImportsBundle", "ImportsList", "ImportsElement", "ExportsDefinition", 
-  "ExportsBody", "ExportsElement", "ValueSet", "ValueSetTypeAssignment", 
-  "DefinedType", "DataTypeReference", "ParameterArgumentList", 
-  "ParameterArgumentName", "ActualParameterList", "ActualParameter", 
-  "optComponentTypeLists", "ComponentTypeLists", "ComponentType", 
-  "AlternativeTypeLists", "AlternativeType", "ObjectClass", "optUnique", 
-  "FieldSpec", "ClassField", "optWithSyntax", "WithSyntax", "@2", 
-  "WithSyntaxList", "WithSyntaxToken", "ExtensionAndException", "Type", 
+  "TOK_number", "TOK_number_negative", "TOK_realnumber", "TOK_tuple", 
+  "TOK_quadruple", "TOK_typereference", "TOK_capitalreference", 
+  "TOK_typefieldreference", "TOK_valuefieldreference", "TOK_Literal", 
+  "TOK_ABSENT", "TOK_ABSTRACT_SYNTAX", "TOK_ALL", "TOK_ANY", 
+  "TOK_APPLICATION", "TOK_AUTOMATIC", "TOK_BEGIN", "TOK_BIT", 
+  "TOK_BMPString", "TOK_BOOLEAN", "TOK_BY", "TOK_CHARACTER", "TOK_CHOICE", 
+  "TOK_CLASS", "TOK_COMPONENT", "TOK_COMPONENTS", "TOK_CONSTRAINED", 
+  "TOK_CONTAINING", "TOK_DEFAULT", "TOK_DEFINITIONS", "TOK_DEFINED", 
+  "TOK_EMBEDDED", "TOK_ENCODED", "TOK_ENCODING_CONTROL", "TOK_END", 
+  "TOK_ENUMERATED", "TOK_EXPLICIT", "TOK_EXPORTS", "TOK_EXTENSIBILITY", 
+  "TOK_EXTERNAL", "TOK_FALSE", "TOK_FROM", "TOK_GeneralizedTime", 
+  "TOK_GeneralString", "TOK_GraphicString", "TOK_IA5String", 
+  "TOK_IDENTIFIER", "TOK_IMPLICIT", "TOK_IMPLIED", "TOK_IMPORTS", 
+  "TOK_INCLUDES", "TOK_INSTANCE", "TOK_INSTRUCTIONS", "TOK_INTEGER", 
+  "TOK_ISO646String", "TOK_MAX", "TOK_MIN", "TOK_MINUS_INFINITY", 
+  "TOK_NULL", "TOK_NumericString", "TOK_OBJECT", "TOK_ObjectDescriptor", 
+  "TOK_OCTET", "TOK_OF", "TOK_OPTIONAL", "TOK_PATTERN", "TOK_PDV", 
+  "TOK_PLUS_INFINITY", "TOK_PRESENT", "TOK_PrintableString", 
+  "TOK_PRIVATE", "TOK_REAL", "TOK_RELATIVE_OID", "TOK_SEQUENCE", 
+  "TOK_SET", "TOK_SIZE", "TOK_STRING", "TOK_SYNTAX", "TOK_T61String", 
+  "TOK_TAGS", "TOK_TeletexString", "TOK_TRUE", "TOK_TYPE_IDENTIFIER", 
+  "TOK_UNIQUE", "TOK_UNIVERSAL", "TOK_UniversalString", "TOK_UTCTime", 
+  "TOK_UTF8String", "TOK_VideotexString", "TOK_VisibleString", "TOK_WITH", 
+  "TOK_EXCEPT", "'^'", "TOK_INTERSECTION", "'|'", "TOK_UNION", 
+  "TOK_TwoDots", "TOK_ThreeDots", "'{'", "'}'", "'('", "')'", "';'", 
+  "','", "':'", "'['", "']'", "'!'", "'.'", "'<'", "'@'", "$accept", 
+  "ParsedGrammar", "ModuleList", "ModuleSpecification", 
+  "optObjectIdentifier", "ObjectIdentifier", "ObjectIdentifierBody", 
+  "ObjectIdentifierElement", "optModuleSpecificationFlags", 
+  "ModuleSpecificationFlags", "ModuleSpecificationFlag", 
+  "optModuleSpecificationBody", "ModuleSpecificationBody", 
+  "ModuleSpecificationElement", "@1", "ImportsDefinition", 
+  "ImportsBundleSet", "AssignedIdentifier", "ImportsBundle", 
+  "ImportsList", "ImportsElement", "ExportsDefinition", "ExportsBody", 
+  "ExportsElement", "ValueSet", "ValueSetTypeAssignment", "DefinedType", 
+  "DataTypeReference", "ParameterArgumentList", "ParameterArgumentName", 
+  "ActualParameterList", "ActualParameter", "optComponentTypeLists", 
+  "ComponentTypeLists", "ComponentType", "AlternativeTypeLists", 
+  "AlternativeType", "ObjectClass", "optUnique", "FieldSpec", 
+  "ClassField", "optWithSyntax", "WithSyntax", "@2", "WithSyntaxList", 
+  "WithSyntaxToken", "ExtensionAndException", "Type", 
   "NSTD_IndirectMarker", "TypeDeclaration", "TypeDeclarationSet", 
   "ComplexTypeReference", "ComplexTypeReferenceAmpList", 
   "ComplexTypeReferenceElement", "PrimitiveFieldReference", "FieldName", 
@@ -786,9 +791,9 @@
   "SimpleTableConstraint", "ComponentRelationConstraint", 
   "AtNotationList", "AtNotationElement", "ComponentIdList", "optMarker", 
   "Marker", "UniverationDefinition", "UniverationList", 
-  "UniverationElement", "SignedNumber", "optTag", "Tag", "TagTypeValue", 
-  "TagClass", "TagPlicit", "TypeRefName", "ObjectClassReference", 
-  "optIdentifier", "Identifier", 0
+  "UniverationElement", "SignedNumber", "RealValue", "optTag", "Tag", 
+  "TagTypeValue", "TagClass", "TagPlicit", "TypeRefName", 
+  "ObjectClassReference", "optIdentifier", "Identifier", 0
 };
 #endif
 
@@ -807,44 +812,45 @@
      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,    94,   356,   124,   357,   358,   359,   123,   125,    40,
-      41,    59,    44,    58,    91,    93,    33,    46,    60,    64
+     355,   356,    94,   357,   124,   358,   359,   360,   123,   125,
+      40,    41,    59,    44,    58,    91,    93,    33,    46,    60,
+      64
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const unsigned char yyr1[] =
 {
-       0,   120,   121,   122,   122,   123,   124,   124,   125,   125,
-     126,   126,   127,   127,   127,   128,   128,   129,   129,   130,
-     130,   130,   130,   130,   131,   131,   132,   132,   133,   133,
-     133,   133,   133,   134,   133,   133,   135,   135,   136,   136,
-     137,   137,   138,   139,   139,   140,   140,   140,   141,   141,
-     141,   142,   142,   143,   143,   143,   144,   145,   146,   146,
-     146,   147,   147,   147,   147,   148,   148,   149,   149,   149,
-     149,   149,   150,   150,   151,   151,   151,   151,   152,   152,
-     153,   153,   154,   154,   154,   154,   155,   155,   156,   156,
-     156,   157,   158,   158,   159,   159,   160,   160,   160,   160,
-     160,   160,   160,   161,   161,   163,   162,   164,   164,   165,
-     165,   165,   165,   166,   166,   166,   167,   168,   169,   170,
-     170,   170,   170,   170,   170,   170,   170,   170,   171,   171,
-     171,   171,   171,   171,   172,   172,   173,   174,   174,   175,
-     175,   175,   176,   177,   178,   178,   178,   179,   178,   178,
-     180,   180,   180,   180,   180,   180,   181,   181,   182,   182,
-     182,   183,   183,   184,   184,   184,   184,   184,   184,   184,
-     184,   184,   184,   184,   184,   184,   185,   185,   185,   186,
-     186,   187,   187,   187,   187,   187,   187,   187,   187,   187,
-     187,   187,   187,   187,   187,   188,   188,   189,   189,   190,
-     191,   191,   192,   192,   193,   193,   194,   194,   194,   194,
-     195,   195,   195,   195,   195,   196,   196,   196,   196,   196,
-     196,   196,   196,   196,   196,   197,   196,   198,   198,   198,
-     198,   199,   199,   200,   200,   200,   200,   200,   201,   202,
-     202,   203,   203,   204,   204,   205,   205,   206,   206,   206,
-     207,   207,   208,   209,   210,   210,   211,   211,   212,   212,
-     213,   213,   214,   214,   215,   215,   216,   216,   217,   217,
-     217,   217,   217,   218,   218,   219,   219,   220,   221,   222,
-     222,   222,   222,   223,   223,   223,   224,   224,   225,   226,
-     226,   227
+       0,   121,   122,   123,   123,   124,   125,   125,   126,   126,
+     127,   127,   128,   128,   128,   129,   129,   130,   130,   131,
+     131,   131,   131,   131,   132,   132,   133,   133,   134,   134,
+     134,   134,   134,   135,   134,   134,   136,   136,   137,   137,
+     138,   138,   139,   140,   140,   141,   141,   141,   142,   142,
+     142,   143,   143,   144,   144,   144,   145,   146,   147,   147,
+     147,   148,   148,   148,   148,   149,   149,   150,   150,   150,
+     150,   150,   151,   151,   152,   152,   152,   152,   153,   153,
+     154,   154,   155,   155,   155,   155,   156,   156,   157,   157,
+     157,   158,   159,   159,   160,   160,   161,   161,   161,   161,
+     161,   161,   161,   162,   162,   164,   163,   165,   165,   166,
+     166,   166,   166,   167,   167,   167,   168,   169,   170,   171,
+     171,   171,   171,   171,   171,   171,   171,   171,   172,   172,
+     172,   172,   172,   172,   173,   173,   174,   175,   175,   176,
+     176,   176,   177,   178,   179,   179,   179,   180,   179,   179,
+     181,   181,   181,   181,   181,   181,   182,   182,   183,   183,
+     183,   184,   184,   185,   185,   185,   185,   185,   185,   185,
+     185,   185,   185,   185,   185,   185,   186,   186,   186,   187,
+     187,   188,   188,   188,   188,   188,   188,   188,   188,   188,
+     188,   188,   188,   188,   188,   189,   189,   190,   190,   191,
+     192,   192,   193,   193,   194,   194,   195,   195,   195,   195,
+     196,   196,   196,   196,   196,   197,   197,   197,   197,   197,
+     197,   197,   197,   197,   197,   198,   197,   199,   199,   199,
+     199,   200,   200,   201,   201,   201,   201,   201,   202,   203,
+     203,   204,   204,   205,   205,   206,   206,   207,   207,   207,
+     208,   208,   209,   210,   211,   211,   212,   212,   213,   213,
+     214,   214,   215,   215,   216,   216,   217,   217,   218,   218,
+     218,   218,   218,   219,   219,   220,   220,   221,   221,   222,
+     223,   224,   224,   224,   224,   225,   225,   225,   226,   226,
+     227,   228,   228,   229
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -877,9 +883,9 @@
        5,     1,     3,     1,     3,     0,     1,     1,     1,     1,
        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,     0,     1,     2,     4,     0,
-       1,     1,     1,     0,     1,     1,     1,     1,     1,     0,
-       1,     1
+       4,     1,     1,     1,     1,     1,     1,     0,     1,     2,
+       4,     0,     1,     1,     1,     0,     1,     1,     1,     1,
+       1,     0,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -887,51 +893,51 @@
    means the default is an error.  */
 static const unsigned short yydefact[] =
 {
-       0,   286,   287,     0,     2,     3,     6,     1,     4,     0,
-       0,     7,   291,    14,     9,     0,    10,    12,    15,     8,
+       0,   288,   289,     0,     2,     3,     6,     1,     4,     0,
+       0,     7,   293,    14,     9,     0,    10,    12,    15,     8,
       11,     0,     0,     0,     0,     0,     0,     0,    16,    17,
        0,    23,    21,    19,    22,    20,     0,    18,    13,    24,
      181,     0,     0,   182,   183,   184,     0,   185,   186,   194,
      187,   188,   189,   190,   191,   192,   193,     0,    25,    26,
       28,    29,    32,    30,    31,    35,     0,     0,    33,     0,
       50,     0,    51,    53,    55,    37,     0,    38,     0,    43,
-      45,    47,     5,    27,   275,   128,   288,     0,   163,     0,
+      45,    47,     5,    27,   277,   128,   290,     0,   163,     0,
        0,   177,   170,   174,   176,   164,     0,     0,   165,   169,
      173,     0,     0,    59,   179,   166,    58,   175,   132,     0,
       34,    49,    48,     0,     0,    36,    39,     0,     0,     0,
-       0,   279,    62,    61,   117,   276,   283,     0,   178,   172,
-     171,   168,   167,     0,    65,     0,   166,    67,     0,   275,
+       0,   281,    62,    61,   117,   278,   285,     0,   178,   172,
+     171,   168,   167,     0,    65,     0,   166,    67,     0,   277,
        0,   180,     0,     0,    52,    54,    40,    44,    46,     0,
-     281,   282,   280,     0,     0,   200,   285,   284,   277,   129,
+     283,   284,   282,     0,     0,   200,   287,   286,   279,   129,
      131,     0,     0,     0,     0,     0,    57,   152,   158,   153,
-     273,   159,   160,   274,   150,   151,    77,     0,    72,    74,
+     273,   274,   159,   160,   150,   151,    77,     0,    72,    74,
       75,   154,   155,    76,   272,   264,     0,   266,   271,   268,
      137,   138,   133,   134,   136,   130,   149,   147,   143,   144,
-     145,     0,   156,    41,    42,   275,   275,     0,    94,     0,
+     145,     0,   156,    41,    42,   277,   277,     0,    94,     0,
      125,     0,     0,   200,   200,   119,   118,     0,     0,   116,
-     201,   202,   275,    66,    71,    70,    69,    68,     0,     0,
-     233,   232,     0,   231,   234,     0,   206,     0,     0,   236,
-       0,   207,   210,     0,   217,   218,   224,   223,   250,   251,
-     235,   238,   237,    60,   275,   265,     0,     0,     0,     0,
-       0,     0,   142,   139,     0,   262,   260,   260,   260,    96,
-     261,    92,   260,   260,   103,     0,   278,     0,   275,     0,
-     275,     0,   275,     0,     0,     0,     0,    64,    63,     0,
-       0,   227,     0,     0,     0,     0,     0,     0,    56,   197,
-     198,   195,   196,     0,     0,     0,   199,     0,     0,     0,
-       0,    73,   267,     0,     0,   156,   135,   161,   148,   157,
-     146,   263,   101,     0,   100,   102,    93,   260,    98,    99,
-       0,    91,   104,    95,     0,   113,     0,    86,    89,    90,
-     275,   127,     0,     0,    79,    80,    85,   260,   275,   289,
-       0,   289,     0,   204,     0,   211,   225,   228,   229,   222,
-     220,   239,     0,   252,   216,   208,   212,   213,   214,     0,
-     221,   219,     0,     0,   254,   270,   269,   162,   140,   141,
-      97,     0,   126,     0,   120,   275,    88,   275,   121,   275,
-      83,   260,   275,   290,   122,   275,   203,   205,     0,   230,
-     243,     0,   241,   200,     0,   215,     0,   256,   258,   253,
-       0,   105,   114,   115,    87,    84,    81,    82,   117,   117,
-     226,   240,     0,   245,   209,   257,     0,   255,     0,   123,
-     124,   242,   248,   249,   247,   244,   246,   259,   109,   110,
-       0,     0,   107,   111,     0,   106,   108,   112
+     201,   202,   277,    66,    71,    70,    69,    68,   276,     0,
+       0,   233,   232,     0,   231,   234,     0,   206,     0,     0,
+     236,     0,   207,   210,     0,   217,   218,   224,   223,   250,
+     251,   275,   235,   238,   237,    60,   277,   265,     0,     0,
+       0,     0,     0,     0,   142,   139,     0,   262,   260,   260,
+     260,    96,   261,    92,   260,   260,   103,     0,   280,     0,
+     277,     0,   277,     0,   277,     0,     0,     0,     0,    64,
+      63,     0,     0,   227,     0,     0,     0,     0,     0,     0,
+      56,   197,   198,   195,   196,     0,     0,     0,   199,     0,
+       0,     0,     0,    73,   267,     0,     0,   156,   135,   161,
+     148,   157,   146,   263,   101,     0,   100,   102,    93,   260,
+      98,    99,     0,    91,   104,    95,     0,   113,     0,    86,
+      89,    90,   277,   127,     0,     0,    79,    80,    85,   260,
+     277,   291,     0,   291,     0,   204,     0,   211,   225,   228,
+     229,   222,   220,   239,     0,   252,   216,   208,   212,   213,
+     214,     0,   221,   219,     0,     0,   254,   270,   269,   162,
+     140,   141,    97,     0,   126,     0,   120,   277,    88,   277,
+     121,   277,    83,   260,   277,   292,   122,   277,   203,   205,
+       0,   230,   243,     0,   241,   200,     0,   215,     0,   256,
+     258,   253,     0,   105,   114,   115,    87,    84,    81,    82,
+     117,   117,   226,   240,     0,   245,   209,   257,     0,   255,
+       0,   123,   124,   242,   248,   249,   247,   244,   246,   259,
+     109,   110,     0,     0,   107,   111,     0,   106,   108,   112
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
@@ -940,82 +946,82 @@
       -1,     3,     4,     5,    10,    11,    15,    16,    27,    28,
       29,    57,    58,    59,   110,    60,    76,   204,    77,    78,
       79,    61,    71,    72,   176,    62,   102,    63,   133,   134,
-     177,   178,   343,   344,   345,   336,   337,   122,   327,   207,
-     208,   331,   332,   428,   441,   442,   346,   347,   154,   155,
-     216,   103,   192,   193,   443,   267,   268,    64,   198,   259,
-     199,   200,   239,   318,   104,   105,   106,   107,   304,   305,
-     307,   219,   220,   221,   240,   241,   242,   398,   293,   243,
-     244,   245,   246,   401,   402,   435,   436,   247,   248,   249,
-     373,   374,   407,   269,   270,   141,   186,   187,   250,   124,
-     125,   126,   153,   158,   251,   108,   392,   252
+     177,   178,   345,   346,   347,   338,   339,   122,   329,   207,
+     208,   333,   334,   430,   443,   444,   348,   349,   154,   155,
+     216,   103,   192,   193,   445,   269,   270,    64,   198,   261,
+     199,   200,   240,   320,   104,   105,   106,   107,   306,   307,
+     309,   219,   220,   221,   241,   242,   243,   400,   295,   244,
+     245,   246,   247,   403,   404,   437,   438,   248,   249,   250,
+     375,   376,   409,   271,   272,   141,   186,   187,   251,   252,
+     124,   125,   126,   153,   158,   253,   108,   394,   254
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -403
+#define YYPACT_NINF -291
 static const short yypact[] =
 {
-     133,  -403,  -403,    18,   133,  -403,   -50,  -403,  -403,    50,
-     -14,  -403,  -403,  -403,  -403,    76,  -403,   -45,   165,  -403,
-    -403,    62,    38,    69,    89,    81,    97,   184,   165,  -403,
-     116,  -403,  -403,  -403,  -403,  -403,   172,  -403,  -403,   511,
-    -403,   216,    61,  -403,  -403,  -403,   208,  -403,  -403,  -403,
-    -403,  -403,  -403,  -403,  -403,  -403,  -403,   229,   511,  -403,
-    -403,  -403,  -403,  -403,  -403,  -403,   341,   664,  -403,   132,
-    -403,   173,  -403,   180,  -403,  -403,    32,  -403,   -25,  -403,
-     182,  -403,  -403,  -403,   -11,   174,  -403,   222,  -403,   232,
-     248,  -403,  -403,  -403,  -403,  -403,   271,   252,  -403,  -403,
-    -403,   740,   330,   234,  -403,   236,  -403,  -403,   237,   336,
-    -403,  -403,  -403,   200,   241,  -403,  -403,   133,   200,   249,
-     257,    -1,  -403,  -403,  -403,  -403,    28,   200,  -403,  -403,
-    -403,  -403,  -403,    67,  -403,   253,  -403,   259,   263,   104,
-      70,  -403,   331,   192,  -403,  -403,   -50,  -403,  -403,   289,
-    -403,  -403,  -403,   365,   588,   -58,  -403,  -403,  -403,  -403,
-    -403,   376,   740,   200,   200,   225,  -403,  -403,  -403,  -403,
-    -403,  -403,  -403,  -403,  -403,  -403,  -403,    78,  -403,  -403,
-    -403,  -403,  -403,  -403,  -403,  -403,   108,  -403,  -403,   273,
-    -403,  -403,   266,  -403,  -403,  -403,  -403,  -403,  -403,  -403,
-    -403,   267,   274,  -403,  -403,   154,    74,   141,  -403,   275,
-     347,   281,   324,   135,   179,  -403,  -403,   291,   225,  -403,
-    -403,   292,   -11,  -403,  -403,  -403,  -403,  -403,   298,   377,
-    -403,  -403,   -24,  -403,  -403,   302,  -403,   133,   225,  -403,
-     297,   226,   307,   305,   -24,  -403,  -403,  -403,   308,  -403,
-    -403,  -403,  -403,  -403,   104,  -403,    87,   215,   335,   411,
-     409,   192,  -403,  -403,   192,  -403,    25,    91,    25,  -403,
-    -403,   328,    91,    25,   325,   289,  -403,   394,    60,   345,
-      59,   353,    59,   354,   225,   317,   225,  -403,  -403,   453,
-     322,   313,   327,   301,   332,   326,   334,   333,  -403,  -403,
-    -403,  -403,  -403,   338,   453,   453,  -403,   453,   225,   309,
-     315,  -403,  -403,   346,   348,  -403,  -403,  -403,   435,  -403,
-    -403,  -403,  -403,   361,  -403,  -403,  -403,    25,  -403,  -403,
-     359,  -403,  -403,  -403,   409,   343,   186,  -403,  -403,  -403,
-     355,  -403,   374,   349,   358,  -403,  -403,    25,   355,   409,
-     363,   409,   362,  -403,   364,  -403,  -403,  -403,   360,  -403,
-    -403,   292,    39,  -403,  -403,   367,  -403,  -403,  -403,   366,
-    -403,  -403,    23,   188,  -403,  -403,  -403,  -403,  -403,  -403,
-    -403,   370,  -403,   215,  -403,    60,  -403,   355,  -403,    54,
-    -403,    25,   355,  -403,  -403,   355,  -403,  -403,   411,  -403,
-    -403,   189,  -403,   -58,   440,  -403,   409,   356,  -403,  -403,
-     315,  -403,  -403,  -403,  -403,  -403,  -403,  -403,  -403,  -403,
-     435,  -403,    39,   177,     4,   356,   409,  -403,    11,  -403,
-    -403,  -403,  -403,  -403,  -403,  -403,  -403,  -403,  -403,  -403,
-      11,    36,  -403,  -403,    27,  -403,  -403,  -403
+     159,  -291,  -291,    40,   159,  -291,   -39,  -291,  -291,     5,
+      47,  -291,  -291,  -291,  -291,    17,  -291,   -22,   252,  -291,
+    -291,    85,    84,    51,    59,   109,    87,   190,   252,  -291,
+      94,  -291,  -291,  -291,  -291,  -291,   194,  -291,  -291,   475,
+    -291,   256,    76,  -291,  -291,  -291,   180,  -291,  -291,  -291,
+    -291,  -291,  -291,  -291,  -291,  -291,  -291,   230,   475,  -291,
+    -291,  -291,  -291,  -291,  -291,  -291,   332,   628,  -291,   168,
+    -291,   132,  -291,   174,  -291,  -291,    16,  -291,   -23,  -291,
+     182,  -291,  -291,  -291,     1,   177,  -291,   221,  -291,   225,
+     242,  -291,  -291,  -291,  -291,  -291,   265,   237,  -291,  -291,
+    -291,   704,   340,   248,  -291,   249,  -291,  -291,   240,   359,
+    -291,  -291,  -291,   155,   255,  -291,  -291,   159,   155,   257,
+     259,    26,  -291,  -291,  -291,  -291,     8,   155,  -291,  -291,
+    -291,  -291,  -291,    -6,  -291,   254,  -291,   258,   261,   193,
+      71,  -291,   323,   202,  -291,  -291,   -39,  -291,  -291,   271,
+    -291,  -291,  -291,   360,   552,   -50,  -291,  -291,  -291,  -291,
+    -291,   368,   704,   155,   155,   212,  -291,  -291,  -291,  -291,
+    -291,  -291,  -291,  -291,  -291,  -291,  -291,    78,  -291,  -291,
+    -291,  -291,  -291,  -291,  -291,  -291,   133,  -291,  -291,   264,
+    -291,  -291,   262,  -291,  -291,  -291,  -291,  -291,  -291,  -291,
+    -291,   270,   269,  -291,  -291,    77,    27,   142,  -291,   263,
+     335,   281,   317,   156,   184,  -291,  -291,   282,   212,  -291,
+    -291,   283,     1,  -291,  -291,  -291,  -291,  -291,  -291,   290,
+     364,  -291,  -291,   -49,  -291,  -291,   291,  -291,   159,   212,
+    -291,   288,   211,   297,   296,   -49,  -291,  -291,  -291,   299,
+    -291,  -291,  -291,  -291,  -291,  -291,   193,  -291,    91,   321,
+     311,   403,   400,   202,  -291,  -291,   202,  -291,   -27,    25,
+     -27,  -291,  -291,   319,    25,   -27,   310,   271,  -291,   386,
+      37,   318,    70,   344,    70,   345,   212,   312,   212,  -291,
+    -291,   450,   313,   305,   320,   226,   315,   324,   325,   322,
+    -291,  -291,  -291,  -291,  -291,   329,   450,   450,  -291,   450,
+     212,   460,   330,  -291,  -291,   326,   327,  -291,  -291,  -291,
+     430,  -291,  -291,  -291,  -291,   328,  -291,  -291,  -291,   -27,
+    -291,  -291,   362,  -291,  -291,  -291,   400,   334,   147,  -291,
+    -291,  -291,   337,  -291,   380,   346,   343,  -291,  -291,   -27,
+     337,   400,   349,   400,   365,  -291,   366,  -291,  -291,  -291,
+     356,  -291,  -291,   283,    10,  -291,  -291,   367,  -291,  -291,
+    -291,   370,  -291,  -291,    -5,   152,  -291,  -291,  -291,  -291,
+    -291,  -291,  -291,   371,  -291,   321,  -291,    37,  -291,   337,
+    -291,     4,  -291,   -27,   337,  -291,  -291,   337,  -291,  -291,
+     403,  -291,  -291,   172,  -291,   -50,   432,  -291,   400,   369,
+    -291,  -291,   330,  -291,  -291,  -291,  -291,  -291,  -291,  -291,
+    -291,  -291,   430,  -291,    10,     9,   247,   369,   400,  -291,
+      54,  -291,  -291,  -291,  -291,  -291,  -291,  -291,  -291,  -291,
+    -291,  -291,    54,    57,  -291,  -291,    34,  -291,  -291,  -291
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short yypgoto[] =
 {
-    -403,  -403,  -403,   476,  -403,   337,  -403,   466,  -403,  -403,
-     454,  -403,  -403,   426,  -403,  -403,  -403,  -403,   410,  -403,
-     369,  -403,  -403,   372,   357,  -403,   -53,  -403,  -403,   329,
-    -403,   238,   211,  -403,   105,  -403,   111,   276,  -403,  -403,
-     224,  -403,  -403,  -403,    57,  -402,  -258,   -83,  -403,   -57,
-    -403,   221,  -403,   243,  -137,   300,   303,  -403,     0,  -403,
-    -130,  -250,  -135,   106,   -88,     1,  -403,    -3,  -403,  -403,
-    -403,  -211,  -403,   213,    -5,   107,   -12,  -403,   264,  -403,
-    -243,  -403,  -403,  -403,    88,  -403,  -403,  -403,  -403,  -403,
-    -403,   102,   109,  -256,  -403,  -403,  -403,   258,  -105,  -125,
-    -403,  -403,  -403,  -403,    19,  -403,   162,    -9
+    -291,  -291,  -291,   474,  -291,   339,  -291,   473,  -291,  -291,
+     461,  -291,  -291,   434,  -291,  -291,  -291,  -291,   417,  -291,
+     376,  -291,  -291,   382,   358,  -291,   -46,  -291,  -291,   342,
+    -291,   241,   215,  -291,   111,  -291,   118,   284,  -291,  -291,
+     231,  -291,  -291,  -291,    65,  -290,  -275,   -83,  -291,   -67,
+    -291,   228,  -291,   251,  -133,   306,   307,  -291,    33,  -291,
+    -132,  -249,  -131,   114,   -33,   -17,  -291,    -3,  -291,  -291,
+    -291,  -211,  -291,   219,  -129,   113,   -77,  -291,   275,  -291,
+    -247,  -291,  -291,  -291,    97,  -291,  -291,  -291,  -291,  -291,
+    -291,   112,   119,  -252,  -291,  -291,  -291,   268,   -98,  -291,
+     -92,  -291,  -291,  -291,  -291,    20,  -291,   178,    -9
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -1025,229 +1031,223 @@
 #define YYTABLE_NINF -261
 static const short yytable[] =
 {
-      17,   123,   281,   283,   181,   194,    17,   313,   181,   180,
-     322,   324,   325,   135,   109,   438,   328,   329,     7,     6,
-     338,   120,   150,     6,    18,   117,   217,   190,   191,   439,
-      67,   438,    12,    74,   182,   188,    65,    81,   182,   446,
-     438,    12,   446,   190,   191,   439,     1,     2,    12,    67,
-     360,   218,   190,   191,   439,    65,   179,     9,    66,    12,
-      13,    73,   264,    12,    21,    80,   371,    81,    12,    12,
-      12,   380,    30,   156,   135,     1,     2,    66,   151,    12,
-     170,   291,    69,   173,   157,    12,    13,   118,   342,   262,
-     263,   390,   152,   342,   292,    80,    12,   170,   265,    31,
-     173,   215,   136,   121,    74,   299,   300,   301,   302,    81,
-     167,   168,   169,    12,   170,   171,   172,   173,   160,   181,
-     137,   194,   266,   271,   180,   440,   181,   338,   264,   181,
-     183,   189,    73,   412,   202,   417,   146,    80,    34,   288,
-     406,   440,   447,   115,   445,   400,   159,     1,     2,   182,
-     440,   188,   314,   174,   225,   227,   182,    32,    14,   182,
-     335,   195,   201,   136,   265,   335,   335,   -78,   121,   262,
-     263,   179,    70,   121,   121,   161,   184,    33,   185,   162,
-      22,   137,   224,   226,    19,    35,   253,    36,   121,    23,
-     254,   264,   423,   184,   175,   339,   432,    39,   167,   168,
-     169,    12,   170,   171,   172,   173,     1,     2,   323,    12,
-      24,   165,    25,   285,     1,     2,   255,    12,   121,   217,
-     256,    26,     1,     2,    12,   170,    38,   265,   173,     1,
-       2,    68,   168,   297,    12,   170,   171,   172,   173,     1,
-       2,   174,   280,   111,   218,   183,   228,   189,   315,   274,
-     433,   319,   202,   275,   434,   202,   296,   386,    75,   196,
-     229,   320,  -260,   217,   321,   391,  -260,   418,   121,   340,
-     419,   348,    82,   348,   230,   231,   201,   355,   413,   352,
-     201,   354,   175,   201,   112,   113,   282,   114,   218,   119,
-     232,   127,   366,   367,   384,   368,   409,   421,   385,   197,
-     410,   422,   339,   369,   415,   205,   206,   128,   168,   233,
-      12,   170,   171,   172,   173,   234,   168,   129,    12,   170,
-     171,   172,   173,   130,   235,   382,   131,   299,   300,   301,
-     302,   236,   237,   138,   238,   294,   295,   132,   303,   143,
-     393,   139,   393,   140,    84,     1,     2,   190,   191,   145,
-     230,   190,   191,   403,   142,    85,    86,   148,   230,    85,
-      86,   429,   430,   408,   149,   359,   163,    87,    40,    88,
-     165,    89,   164,   370,   315,   209,   340,   378,   379,   222,
-     348,    90,   257,   258,   260,    91,   277,   261,   278,    92,
-     276,   234,    93,    43,    44,    45,   279,   408,   289,   234,
-     284,   286,   201,    94,    47,   298,   290,   306,    95,    48,
-      96,    49,    97,   403,   308,   310,   317,   437,    12,    50,
-     326,    98,    99,   334,   330,   349,   351,   353,    51,   356,
-      52,   357,   358,   362,   372,    53,   100,    54,    55,    56,
-     377,   218,   363,   364,   365,   381,   387,   168,   101,    12,
-     170,   171,   172,   173,     1,     2,   375,   388,   376,   383,
-     168,   228,    12,   170,   171,   172,   173,     1,     2,   121,
-     389,   394,   396,   426,   397,   229,   405,   411,   399,   404,
-       8,    20,    37,   203,    83,   144,   116,   147,   229,   230,
-     231,   223,   311,   350,   416,   166,   414,   444,   287,   333,
-     341,   316,   230,   231,   420,   232,   272,   361,   309,   273,
-     431,   424,   427,   395,   312,   425,     0,     0,   232,     0,
-      12,     0,     0,     0,   233,     1,     2,     0,     0,     0,
-     234,     0,     0,     0,     0,     0,     0,   233,    40,   235,
-       0,     0,     0,   234,     0,     0,     0,   237,     0,   238,
-       0,     0,   235,    41,     0,     0,     0,    42,     0,     0,
-     237,     0,   238,    43,    44,    45,     0,     0,     0,    46,
-       0,     0,     0,     0,    47,     0,     0,     0,     0,    48,
-       0,    49,     0,     0,     0,     0,     0,     0,     0,    50,
-       0,     0,     0,     0,     0,     0,     0,     0,    51,     0,
-      52,     0,    85,    86,     0,    53,     0,    54,    55,    56,
-     210,     0,     0,     0,    87,    40,    88,     0,    89,   211,
-       0,     0,     0,     0,     0,     0,     0,     0,    90,     0,
-       0,     0,    91,     0,     0,     0,    92,     0,     0,    93,
-      43,    44,    45,     0,     0,     0,     0,     0,   212,     0,
-      94,    47,     0,     0,     0,    95,    48,    96,    49,    97,
-       0,     0,     0,     0,     0,     0,    50,     0,    98,    99,
-     213,   214,     0,     0,     0,    51,     0,    52,    85,    86,
-       0,     0,    53,   100,    54,    55,    56,     0,     0,     0,
-      87,    40,    88,     0,    89,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    90,     0,     0,     0,    91,     0,
-       0,     0,    92,     0,     0,    93,    43,    44,    45,     0,
-       0,     0,     0,     0,     0,     0,    94,    47,     0,     0,
-       0,    95,    48,    96,    49,    97,     0,     0,     0,     0,
-       0,     0,    50,     0,    98,    99,     0,     0,     0,     0,
-       0,    51,     0,    52,     1,     2,     0,     0,    53,   100,
-      54,    55,    56,     0,     0,     0,    87,    40,    88,     0,
-      89,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      90,     0,     0,     0,    91,     0,     0,     0,    92,     0,
-       0,    93,    43,    44,    45,     0,     0,     0,     0,     0,
-       0,     0,    94,    47,     0,     0,     0,    95,    48,    96,
-      49,    97,     0,     0,     0,     0,     0,     0,    50,     0,
-      98,    99,     0,     0,     0,     0,     0,    51,     0,    52,
-       0,     0,     0,     0,    53,   100,    54,    55,    56
+      17,   123,   283,   285,    12,   340,    17,   180,   181,   194,
+     315,   266,   181,    12,    12,    13,   324,   326,   327,    12,
+       6,   109,   330,   331,     6,    12,    12,    13,   117,   434,
+      67,     1,     2,    74,   120,   217,    65,    81,   440,   344,
+       7,   182,   188,   264,   265,   182,    12,   267,   362,    67,
+     150,   190,   191,   441,   156,    65,   179,   293,   440,    66,
+     218,   440,    73,   266,   373,   157,    80,    81,   135,     9,
+     294,   190,   191,   441,   190,   191,   441,   382,    66,    12,
+      12,   170,   171,   435,   136,    12,    18,   436,    21,   287,
+     118,     1,     2,   264,   265,    30,    80,   392,    69,   267,
+      12,   170,   171,   161,    74,   344,   151,   162,   215,    81,
+     299,   337,   340,   408,    14,   266,   121,   402,   160,   121,
+     152,   137,   268,   273,   180,   181,    19,   194,   115,   135,
+     183,   189,   181,    73,   202,   181,   414,   146,    80,   290,
+      32,   419,   121,   325,   337,   136,    31,   159,    33,   442,
+     449,   267,   121,   448,   225,   227,   448,   354,   182,   356,
+     188,   316,   195,   201,    12,   182,   447,    34,   182,   442,
+       1,     2,   442,   179,     1,     2,    35,   337,   184,   -78,
+     185,   371,   137,   224,   226,   121,  -260,   255,    70,    12,
+    -260,   256,   121,    36,   425,     1,     2,   341,   184,   167,
+     168,   169,    12,   170,   171,    38,   172,   173,   167,   168,
+     169,    12,   170,   171,   357,   172,   173,     1,     2,   168,
+      39,    12,   170,   171,   228,   172,   173,     1,     2,   368,
+     369,    75,   370,   168,   229,    12,   170,   171,   228,   172,
+     173,   217,   257,   174,   112,   113,   258,   183,   230,   189,
+     317,   276,   174,   321,   202,   277,   386,   202,   298,   388,
+     387,   411,   231,   232,   282,   412,   218,   393,    22,   217,
+     196,   342,    68,   350,    82,   350,   231,    23,   233,   201,
+     111,   423,   114,   201,   175,   424,   201,   415,   205,   206,
+     119,   361,   284,   175,   218,   127,   322,   234,    24,   323,
+      25,   165,   420,   235,   341,   421,   417,   128,   121,    26,
+     197,   129,   236,   301,   302,   303,   304,   235,   130,   237,
+     238,   131,   239,   132,   305,   296,   297,   384,   190,   191,
+      12,   170,   171,    85,    86,    84,     1,     2,     1,     2,
+     190,   191,   395,   138,   395,   380,   381,    85,    86,   301,
+     302,   303,   304,   431,   432,   405,   139,   140,   142,    87,
+      40,    88,   143,    89,   145,   410,   148,   149,   163,   165,
+     209,   222,   164,    90,   259,   279,   317,    91,   342,   278,
+     260,    92,   350,   263,    93,    43,    44,    45,   262,   280,
+     281,   291,   286,   288,   292,    94,    47,   300,   308,   410,
+      95,    48,    96,    49,    97,   201,   310,   312,   319,    12,
+     332,    50,   328,    98,    99,   405,   336,   351,   353,   439,
+      51,   358,    52,   355,   359,   218,   360,    53,   100,    54,
+      55,    56,   364,   366,   365,   379,   367,   377,   378,   168,
+     101,    12,   170,   171,   228,   172,   173,     1,     2,   383,
+     374,   385,   121,   389,   229,   390,   391,   168,   396,    12,
+     170,   171,   228,   172,   173,     1,     2,   168,   230,    12,
+     170,   171,   228,   172,   173,   401,   398,   399,     8,   413,
+     406,   407,   231,   232,    12,   203,   230,   428,    20,    37,
+       1,     2,    83,   116,   147,   144,   166,   313,   233,   352,
+     231,   232,   418,    40,   223,   416,   289,   446,   335,   343,
+     231,   318,   274,   275,   422,   363,   233,   234,    41,   426,
+     311,   433,    42,   235,   429,   372,   314,   427,    43,    44,
+      45,   397,   236,     0,    46,   234,     0,     0,     0,    47,
+     238,   235,   239,     0,    48,     0,    49,     0,     0,     0,
+     236,   235,     0,     0,    50,     0,     0,     0,   238,     0,
+     239,     0,     0,    51,     0,    52,     0,    85,    86,     0,
+      53,     0,    54,    55,    56,   210,     0,     0,     0,    87,
+      40,    88,     0,    89,   211,     0,     0,     0,     0,     0,
+       0,     0,     0,    90,     0,     0,     0,    91,     0,     0,
+       0,    92,     0,     0,    93,    43,    44,    45,     0,     0,
+       0,     0,     0,   212,     0,    94,    47,     0,     0,     0,
+      95,    48,    96,    49,    97,     0,     0,     0,     0,     0,
+       0,    50,     0,    98,    99,   213,   214,     0,     0,     0,
+      51,     0,    52,    85,    86,     0,     0,    53,   100,    54,
+      55,    56,     0,     0,     0,    87,    40,    88,     0,    89,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    90,
+       0,     0,     0,    91,     0,     0,     0,    92,     0,     0,
+      93,    43,    44,    45,     0,     0,     0,     0,     0,     0,
+       0,    94,    47,     0,     0,     0,    95,    48,    96,    49,
+      97,     0,     0,     0,     0,     0,     0,    50,     0,    98,
+      99,     0,     0,     0,     0,     0,    51,     0,    52,     1,
+       2,     0,     0,    53,   100,    54,    55,    56,     0,     0,
+       0,    87,    40,    88,     0,    89,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    90,     0,     0,     0,    91,
+       0,     0,     0,    92,     0,     0,    93,    43,    44,    45,
+       0,     0,     0,     0,     0,     0,     0,    94,    47,     0,
+       0,     0,    95,    48,    96,    49,    97,     0,     0,     0,
+       0,     0,     0,    50,     0,    98,    99,     0,     0,     0,
+       0,     0,    51,     0,    52,     0,     0,     0,     0,    53,
+     100,    54,    55,    56
 };
 
 static const short yycheck[] =
 {
-       9,    84,   213,   214,   139,   142,    15,   257,   143,   139,
-     266,   267,   268,   101,    67,     4,   272,   273,     0,     0,
-     278,    32,    23,     4,    38,    50,    84,    16,    17,    18,
-      39,     4,     9,    42,   139,   140,    39,    46,   143,   441,
-       4,     9,   444,    16,    17,    18,    14,    15,     9,    58,
-     293,   109,    16,    17,    18,    58,   139,   107,    39,     9,
-      10,    42,    37,     9,   109,    46,   309,    76,     9,     9,
-       9,   327,    10,    45,   162,    14,    15,    58,    79,     9,
-      10,   105,    21,    13,    56,     9,    10,   112,    34,    15,
-      16,   347,    93,    34,   118,    76,     9,    10,    73,    61,
-      13,   154,   101,   114,   113,   101,   102,   103,   104,   118,
-       6,     7,     8,     9,    10,    11,    12,    13,   127,   254,
-     101,   258,   205,   206,   254,   114,   261,   385,    37,   264,
-     139,   140,   113,   383,   143,   391,   117,   118,    57,   222,
-     117,   114,   115,   111,   108,   106,   127,    14,    15,   254,
-     114,   256,   257,    49,   163,   164,   261,    88,   108,   264,
-     106,   142,   143,   162,    73,   106,   106,   108,   114,    15,
-      16,   254,   111,   114,   114,   108,   106,    88,   108,   112,
-      15,   162,   163,   164,   108,    88,   108,     3,   114,    24,
-     112,    37,   403,   106,    90,   278,    19,    25,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,    15,   117,     9,
-      45,   107,    47,   218,    14,    15,   108,     9,   114,    84,
-     112,    56,    14,    15,     9,    10,   110,    73,    13,    14,
-      15,    15,     7,   238,     9,    10,    11,    12,    13,    14,
-      15,    49,   107,   111,   109,   254,    21,   256,   257,   108,
-      73,   260,   261,   112,    77,   264,   237,   340,    50,    67,
-      35,   261,   108,    84,   264,   348,   112,   392,   114,   278,
-     395,   280,    43,   282,    49,    50,   257,   289,   383,   284,
-     261,   286,    90,   264,   111,   112,   107,   107,   109,   107,
-      65,   117,   304,   305,   108,   307,   108,   108,   112,   107,
-     112,   112,   385,   308,   387,    16,    17,    85,     7,    84,
-       9,    10,    11,    12,    13,    90,     7,    85,     9,    10,
-      11,    12,    13,    75,    99,   334,    55,   101,   102,   103,
-     104,   106,   107,     3,   109,    33,    34,    85,   112,     3,
-     349,   107,   351,   107,     3,    14,    15,    16,    17,   108,
-      49,    16,    17,   362,   117,    14,    15,   108,    49,    14,
-      15,   418,   419,   372,   107,    64,   113,    26,    27,    28,
-     107,    30,   113,    64,   383,    10,   385,    16,    17,     3,
-     389,    40,   109,   117,   117,    44,    39,   113,   107,    48,
-     115,    90,    51,    52,    53,    54,    72,   406,   100,    90,
-     109,   109,   383,    62,    63,   108,    29,   100,    67,    68,
-      69,    70,    71,   422,   109,   107,     5,   426,     9,    78,
-      92,    80,    81,    29,    99,    72,    72,   110,    87,   107,
-      89,   118,   105,   107,   119,    94,    95,    96,    97,    98,
-       5,   109,   108,   110,   106,    86,    72,     7,   107,     9,
-      10,    11,    12,    13,    14,    15,   110,   108,   110,   116,
-       7,    21,     9,    10,    11,    12,    13,    14,    15,   114,
-     112,   108,   110,   117,   110,    35,   110,   107,   118,   112,
-       4,    15,    28,   146,    58,   113,    76,   118,    35,    49,
-      50,   162,   254,   282,   389,   138,   385,   440,   222,   275,
-     279,   258,    49,    50,   398,    65,   206,   294,   244,   206,
-     422,   404,   410,   351,   256,   406,    -1,    -1,    65,    -1,
-       9,    -1,    -1,    -1,    84,    14,    15,    -1,    -1,    -1,
-      90,    -1,    -1,    -1,    -1,    -1,    -1,    84,    27,    99,
-      -1,    -1,    -1,    90,    -1,    -1,    -1,   107,    -1,   109,
-      -1,    -1,    99,    42,    -1,    -1,    -1,    46,    -1,    -1,
-     107,    -1,   109,    52,    53,    54,    -1,    -1,    -1,    58,
-      -1,    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    68,
-      -1,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    -1,
-      89,    -1,    14,    15,    -1,    94,    -1,    96,    97,    98,
-      22,    -1,    -1,    -1,    26,    27,    28,    -1,    30,    31,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,
-      -1,    -1,    44,    -1,    -1,    -1,    48,    -1,    -1,    51,
-      52,    53,    54,    -1,    -1,    -1,    -1,    -1,    60,    -1,
-      62,    63,    -1,    -1,    -1,    67,    68,    69,    70,    71,
-      -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,    80,    81,
-      82,    83,    -1,    -1,    -1,    87,    -1,    89,    14,    15,
-      -1,    -1,    94,    95,    96,    97,    98,    -1,    -1,    -1,
-      26,    27,    28,    -1,    30,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,    44,    -1,
-      -1,    -1,    48,    -1,    -1,    51,    52,    53,    54,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    62,    63,    -1,    -1,
-      -1,    67,    68,    69,    70,    71,    -1,    -1,    -1,    -1,
-      -1,    -1,    78,    -1,    80,    81,    -1,    -1,    -1,    -1,
-      -1,    87,    -1,    89,    14,    15,    -1,    -1,    94,    95,
-      96,    97,    98,    -1,    -1,    -1,    26,    27,    28,    -1,
-      30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      40,    -1,    -1,    -1,    44,    -1,    -1,    -1,    48,    -1,
-      -1,    51,    52,    53,    54,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    62,    63,    -1,    -1,    -1,    67,    68,    69,
-      70,    71,    -1,    -1,    -1,    -1,    -1,    -1,    78,    -1,
-      80,    81,    -1,    -1,    -1,    -1,    -1,    87,    -1,    89,
-      -1,    -1,    -1,    -1,    94,    95,    96,    97,    98
+       9,    84,   213,   214,     9,   280,    15,   139,   139,   142,
+     259,    38,   143,     9,     9,    10,   268,   269,   270,     9,
+       0,    67,   274,   275,     4,     9,     9,    10,    51,    20,
+      39,    15,    16,    42,    33,    85,    39,    46,     4,    35,
+       0,   139,   140,    16,    17,   143,     9,    74,   295,    58,
+      24,    17,    18,    19,    46,    58,   139,   106,     4,    39,
+     110,     4,    42,    38,   311,    57,    46,    76,   101,   108,
+     119,    17,    18,    19,    17,    18,    19,   329,    58,     9,
+       9,    10,    11,    74,   101,     9,    39,    78,   110,   218,
+     113,    15,    16,    16,    17,    10,    76,   349,    22,    74,
+       9,    10,    11,   109,   113,    35,    80,   113,   154,   118,
+     239,   107,   387,   118,   109,    38,   115,   107,   127,   115,
+      94,   101,   205,   206,   256,   256,   109,   260,   112,   162,
+     139,   140,   263,   113,   143,   266,   385,   117,   118,   222,
+      89,   393,   115,   118,   107,   162,    62,   127,    89,   115,
+     116,    74,   115,   443,   163,   164,   446,   286,   256,   288,
+     258,   259,   142,   143,     9,   263,   109,    58,   266,   115,
+      15,    16,   115,   256,    15,    16,    89,   107,   107,   109,
+     109,   310,   162,   163,   164,   115,   109,   109,   112,     9,
+     113,   113,   115,     3,   405,    15,    16,   280,   107,     6,
+       7,     8,     9,    10,    11,   111,    13,    14,     6,     7,
+       8,     9,    10,    11,   291,    13,    14,    15,    16,     7,
+      26,     9,    10,    11,    12,    13,    14,    15,    16,   306,
+     307,    51,   309,     7,    22,     9,    10,    11,    12,    13,
+      14,    85,   109,    50,   112,   113,   113,   256,    36,   258,
+     259,   109,    50,   262,   263,   113,   109,   266,   238,   342,
+     113,   109,    50,    51,   108,   113,   110,   350,    16,    85,
+      68,   280,    16,   282,    44,   284,    50,    25,    66,   259,
+     112,   109,   108,   263,    91,   113,   266,   385,    17,    18,
+     108,    65,   108,    91,   110,   118,   263,    85,    46,   266,
+      48,   108,   394,    91,   387,   397,   389,    86,   115,    57,
+     108,    86,   100,   102,   103,   104,   105,    91,    76,   107,
+     108,    56,   110,    86,   113,    34,    35,   336,    17,    18,
+       9,    10,    11,    15,    16,     3,    15,    16,    15,    16,
+      17,    18,   351,     3,   353,    17,    18,    15,    16,   102,
+     103,   104,   105,   420,   421,   364,   108,   108,   118,    27,
+      28,    29,     3,    31,   109,   374,   109,   108,   114,   108,
+      10,     3,   114,    41,   110,    40,   385,    45,   387,   116,
+     118,    49,   391,   114,    52,    53,    54,    55,   118,   108,
+      73,   101,   110,   110,    30,    63,    64,   109,   101,   408,
+      68,    69,    70,    71,    72,   385,   110,   108,     5,     9,
+     100,    79,    93,    81,    82,   424,    30,    73,    73,   428,
+      88,   108,    90,   111,   119,   110,   106,    95,    96,    97,
+      98,    99,   108,   111,   109,     5,   107,   111,   111,     7,
+     108,     9,    10,    11,    12,    13,    14,    15,    16,    87,
+     120,   117,   115,    73,    22,   109,   113,     7,   109,     9,
+      10,    11,    12,    13,    14,    15,    16,     7,    36,     9,
+      10,    11,    12,    13,    14,   119,   111,   111,     4,   108,
+     113,   111,    50,    51,     9,   146,    36,   118,    15,    28,
+      15,    16,    58,    76,   118,   113,   138,   256,    66,   284,
+      50,    51,   391,    28,   162,   387,   222,   442,   277,   281,
+      50,   260,   206,   206,   400,   296,    66,    85,    43,   406,
+     245,   424,    47,    91,   412,    65,   258,   408,    53,    54,
+      55,   353,   100,    -1,    59,    85,    -1,    -1,    -1,    64,
+     108,    91,   110,    -1,    69,    -1,    71,    -1,    -1,    -1,
+     100,    91,    -1,    -1,    79,    -1,    -1,    -1,   108,    -1,
+     110,    -1,    -1,    88,    -1,    90,    -1,    15,    16,    -1,
+      95,    -1,    97,    98,    99,    23,    -1,    -1,    -1,    27,
+      28,    29,    -1,    31,    32,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    41,    -1,    -1,    -1,    45,    -1,    -1,
+      -1,    49,    -1,    -1,    52,    53,    54,    55,    -1,    -1,
+      -1,    -1,    -1,    61,    -1,    63,    64,    -1,    -1,    -1,
+      68,    69,    70,    71,    72,    -1,    -1,    -1,    -1,    -1,
+      -1,    79,    -1,    81,    82,    83,    84,    -1,    -1,    -1,
+      88,    -1,    90,    15,    16,    -1,    -1,    95,    96,    97,
+      98,    99,    -1,    -1,    -1,    27,    28,    29,    -1,    31,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
+      -1,    -1,    -1,    45,    -1,    -1,    -1,    49,    -1,    -1,
+      52,    53,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    63,    64,    -1,    -1,    -1,    68,    69,    70,    71,
+      72,    -1,    -1,    -1,    -1,    -1,    -1,    79,    -1,    81,
+      82,    -1,    -1,    -1,    -1,    -1,    88,    -1,    90,    15,
+      16,    -1,    -1,    95,    96,    97,    98,    99,    -1,    -1,
+      -1,    27,    28,    29,    -1,    31,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    41,    -1,    -1,    -1,    45,
+      -1,    -1,    -1,    49,    -1,    -1,    52,    53,    54,    55,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    -1,
+      -1,    -1,    68,    69,    70,    71,    72,    -1,    -1,    -1,
+      -1,    -1,    -1,    79,    -1,    81,    82,    -1,    -1,    -1,
+      -1,    -1,    88,    -1,    90,    -1,    -1,    -1,    -1,    95,
+      96,    97,    98,    99
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const unsigned char yystos[] =
 {
-       0,    14,    15,   121,   122,   123,   224,     0,   123,   107,
-     124,   125,     9,    10,   108,   126,   127,   227,    38,   108,
-     127,   109,    15,    24,    45,    47,    56,   128,   129,   130,
-      10,    61,    88,    88,    57,    88,     3,   130,   110,    25,
-      27,    42,    46,    52,    53,    54,    58,    63,    68,    70,
-      78,    87,    89,    94,    96,    97,    98,   131,   132,   133,
-     135,   141,   145,   147,   177,   187,   224,   227,    15,    21,
-     111,   142,   143,   224,   227,    50,   136,   138,   139,   140,
-     224,   227,    43,   133,     3,    14,    15,    26,    28,    30,
-      40,    44,    48,    51,    62,    67,    69,    71,    80,    81,
-      95,   107,   146,   171,   184,   185,   186,   187,   225,   146,
-     134,   111,   111,   112,   107,   111,   138,    50,   112,   107,
-      32,   114,   157,   167,   219,   220,   221,   117,    85,    85,
-      75,    55,    85,   148,   149,   184,   185,   224,     3,   107,
-     107,   215,   117,     3,   143,   108,   224,   140,   108,   107,
-      23,    79,    93,   222,   168,   169,    45,    56,   223,   224,
-     227,   108,   112,   113,   113,   107,   144,     6,     7,     8,
-      10,    11,    12,    13,    49,    90,   144,   150,   151,   167,
-     180,   182,   218,   227,   106,   108,   216,   217,   218,   227,
-      16,    17,   172,   173,   174,   224,    67,   107,   178,   180,
-     181,   224,   227,   125,   137,    16,    17,   159,   160,    10,
-      22,    31,    60,    82,    83,   146,   170,    84,   109,   191,
-     192,   193,     3,   149,   224,   227,   224,   227,    21,    35,
-      49,    50,    65,    84,    90,    99,   106,   107,   109,   182,
-     194,   195,   196,   199,   200,   201,   202,   207,   208,   209,
-     218,   224,   227,   108,   112,   108,   112,   109,   117,   179,
-     117,   113,    15,    16,    37,    73,   167,   175,   176,   213,
-     214,   167,   175,   176,   108,   112,   115,    39,   107,    72,
-     107,   191,   107,   191,   109,   194,   109,   157,   167,   100,
-      29,   105,   118,   198,    33,    34,   224,   194,   108,   101,
-     102,   103,   104,   112,   188,   189,   100,   190,   109,   198,
-     107,   151,   217,   181,   218,   227,   173,     5,   183,   227,
-     178,   178,   213,   117,   213,   213,    92,   158,   213,   213,
-      99,   161,   162,   160,    29,   106,   155,   156,   166,   167,
-     227,   171,    34,   152,   153,   154,   166,   167,   227,    72,
-     152,    72,   194,   110,   194,   196,   107,   118,   105,    64,
-     200,   193,   107,   108,   110,   106,   196,   196,   196,   194,
-      64,   200,   119,   210,   211,   110,   110,     5,    16,    17,
-     213,    86,   227,   116,   108,   112,   167,    72,   108,   112,
-     213,   167,   226,   227,   108,   226,   110,   110,   197,   118,
-     106,   203,   204,   227,   112,   110,   117,   212,   227,   108,
-     112,   107,   181,   218,   156,   167,   154,   213,   219,   219,
-     183,   108,   112,   191,   195,   212,   117,   211,   163,   169,
-     169,   204,    19,    73,    77,   205,   206,   227,     4,    18,
-     114,   164,   165,   174,   164,   108,   165,   115
+       0,    15,    16,   122,   123,   124,   226,     0,   124,   108,
+     125,   126,     9,    10,   109,   127,   128,   229,    39,   109,
+     128,   110,    16,    25,    46,    48,    57,   129,   130,   131,
+      10,    62,    89,    89,    58,    89,     3,   131,   111,    26,
+      28,    43,    47,    53,    54,    55,    59,    64,    69,    71,
+      79,    88,    90,    95,    97,    98,    99,   132,   133,   134,
+     136,   142,   146,   148,   178,   188,   226,   229,    16,    22,
+     112,   143,   144,   226,   229,    51,   137,   139,   140,   141,
+     226,   229,    44,   134,     3,    15,    16,    27,    29,    31,
+      41,    45,    49,    52,    63,    68,    70,    72,    81,    82,
+      96,   108,   147,   172,   185,   186,   187,   188,   227,   147,
+     135,   112,   112,   113,   108,   112,   139,    51,   113,   108,
+      33,   115,   158,   168,   221,   222,   223,   118,    86,    86,
+      76,    56,    86,   149,   150,   185,   186,   226,     3,   108,
+     108,   216,   118,     3,   144,   109,   226,   141,   109,   108,
+      24,    80,    94,   224,   169,   170,    46,    57,   225,   226,
+     229,   109,   113,   114,   114,   108,   145,     6,     7,     8,
+      10,    11,    13,    14,    50,    91,   145,   151,   152,   168,
+     181,   183,   219,   229,   107,   109,   217,   218,   219,   229,
+      17,    18,   173,   174,   175,   226,    68,   108,   179,   181,
+     182,   226,   229,   126,   138,    17,    18,   160,   161,    10,
+      23,    32,    61,    83,    84,   147,   171,    85,   110,   192,
+     193,   194,     3,   150,   226,   229,   226,   229,    12,    22,
+      36,    50,    51,    66,    85,    91,   100,   107,   108,   110,
+     183,   195,   196,   197,   200,   201,   202,   203,   208,   209,
+     210,   219,   220,   226,   229,   109,   113,   109,   113,   110,
+     118,   180,   118,   114,    16,    17,    38,    74,   168,   176,
+     177,   214,   215,   168,   176,   177,   109,   113,   116,    40,
+     108,    73,   108,   192,   108,   192,   110,   195,   110,   158,
+     168,   101,    30,   106,   119,   199,    34,    35,   226,   195,
+     109,   102,   103,   104,   105,   113,   189,   190,   101,   191,
+     110,   199,   108,   152,   218,   182,   219,   229,   174,     5,
+     184,   229,   179,   179,   214,   118,   214,   214,    93,   159,
+     214,   214,   100,   162,   163,   161,    30,   107,   156,   157,
+     167,   168,   229,   172,    35,   153,   154,   155,   167,   168,
+     229,    73,   153,    73,   195,   111,   195,   197,   108,   119,
+     106,    65,   201,   194,   108,   109,   111,   107,   197,   197,
+     197,   195,    65,   201,   120,   211,   212,   111,   111,     5,
+      17,    18,   214,    87,   229,   117,   109,   113,   168,    73,
+     109,   113,   214,   168,   228,   229,   109,   228,   111,   111,
+     198,   119,   107,   204,   205,   229,   113,   111,   118,   213,
+     229,   109,   113,   108,   182,   219,   157,   168,   155,   214,
+     221,   221,   184,   109,   113,   192,   196,   213,   118,   212,
+     164,   170,   170,   205,    20,    74,    78,   206,   207,   229,
+       4,    19,   115,   165,   166,   175,   165,   109,   166,   116
 };
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1798,14 +1798,14 @@
   switch (yyn)
     {
         case 2:
-#line 324 "asn1p_y.y"
+#line 327 "asn1p_y.y"
     {
 		*(void **)param = yyvsp[0].a_grammar;
 	}
     break;
 
   case 3:
-#line 330 "asn1p_y.y"
+#line 333 "asn1p_y.y"
     {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1814,7 +1814,7 @@
     break;
 
   case 4:
-#line 335 "asn1p_y.y"
+#line 338 "asn1p_y.y"
     {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
@@ -1822,7 +1822,7 @@
     break;
 
   case 5:
-#line 356 "asn1p_y.y"
+#line 359 "asn1p_y.y"
     {
 
 		if(yyvsp[-1].a_module) {
@@ -1840,31 +1840,31 @@
     break;
 
   case 6:
-#line 377 "asn1p_y.y"
+#line 380 "asn1p_y.y"
     { yyval.a_oid = 0; }
     break;
 
   case 7:
-#line 378 "asn1p_y.y"
+#line 381 "asn1p_y.y"
     { yyval.a_oid = yyvsp[0].a_oid; }
     break;
 
   case 8:
-#line 382 "asn1p_y.y"
+#line 385 "asn1p_y.y"
     {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	}
     break;
 
   case 9:
-#line 385 "asn1p_y.y"
+#line 388 "asn1p_y.y"
     {
 		yyval.a_oid = 0;
 	}
     break;
 
   case 10:
-#line 391 "asn1p_y.y"
+#line 394 "asn1p_y.y"
     {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1874,7 +1874,7 @@
     break;
 
   case 11:
-#line 397 "asn1p_y.y"
+#line 400 "asn1p_y.y"
     {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1884,7 +1884,7 @@
     break;
 
   case 12:
-#line 406 "asn1p_y.y"
+#line 409 "asn1p_y.y"
     {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
@@ -1892,7 +1892,7 @@
     break;
 
   case 13:
-#line 410 "asn1p_y.y"
+#line 413 "asn1p_y.y"
     {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
@@ -1900,7 +1900,7 @@
     break;
 
   case 14:
-#line 414 "asn1p_y.y"
+#line 417 "asn1p_y.y"
     {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
@@ -1908,61 +1908,61 @@
     break;
 
   case 15:
-#line 424 "asn1p_y.y"
+#line 427 "asn1p_y.y"
     { yyval.a_module_flags = MSF_NOFLAGS; }
     break;
 
   case 16:
-#line 425 "asn1p_y.y"
+#line 428 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	}
     break;
 
   case 17:
-#line 434 "asn1p_y.y"
+#line 437 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	}
     break;
 
   case 18:
-#line 437 "asn1p_y.y"
+#line 440 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	}
     break;
 
   case 19:
-#line 446 "asn1p_y.y"
+#line 449 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	}
     break;
 
   case 20:
-#line 449 "asn1p_y.y"
+#line 452 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	}
     break;
 
   case 21:
-#line 452 "asn1p_y.y"
+#line 455 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	}
     break;
 
   case 22:
-#line 455 "asn1p_y.y"
+#line 458 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	}
     break;
 
   case 23:
-#line 459 "asn1p_y.y"
+#line 462 "asn1p_y.y"
     {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1981,26 +1981,26 @@
     break;
 
   case 24:
-#line 480 "asn1p_y.y"
+#line 483 "asn1p_y.y"
     { yyval.a_module = 0; }
     break;
 
   case 25:
-#line 481 "asn1p_y.y"
+#line 484 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 26:
-#line 490 "asn1p_y.y"
+#line 493 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 27:
-#line 493 "asn1p_y.y"
+#line 496 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -2031,14 +2031,14 @@
     break;
 
   case 28:
-#line 526 "asn1p_y.y"
+#line 529 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 29:
-#line 529 "asn1p_y.y"
+#line 532 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2051,7 +2051,7 @@
     break;
 
   case 30:
-#line 538 "asn1p_y.y"
+#line 541 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2062,7 +2062,7 @@
     break;
 
   case 31:
-#line 545 "asn1p_y.y"
+#line 548 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2073,7 +2073,7 @@
     break;
 
   case 32:
-#line 558 "asn1p_y.y"
+#line 561 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2084,12 +2084,12 @@
     break;
 
   case 33:
-#line 566 "asn1p_y.y"
+#line 569 "asn1p_y.y"
     { asn1p_lexer_hack_push_encoding_control(); }
     break;
 
   case 34:
-#line 567 "asn1p_y.y"
+#line 570 "asn1p_y.y"
     {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -2101,7 +2101,7 @@
     break;
 
   case 35:
-#line 579 "asn1p_y.y"
+#line 582 "asn1p_y.y"
     {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -2110,7 +2110,7 @@
     break;
 
   case 36:
-#line 592 "asn1p_y.y"
+#line 595 "asn1p_y.y"
     {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -2121,14 +2121,14 @@
     break;
 
   case 37:
-#line 602 "asn1p_y.y"
+#line 605 "asn1p_y.y"
     {
 		return yyerror("Empty IMPORTS list");
 	}
     break;
 
   case 38:
-#line 608 "asn1p_y.y"
+#line 611 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2137,7 +2137,7 @@
     break;
 
   case 39:
-#line 613 "asn1p_y.y"
+#line 616 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
@@ -2145,17 +2145,17 @@
     break;
 
   case 40:
-#line 620 "asn1p_y.y"
+#line 623 "asn1p_y.y"
     { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
     break;
 
   case 41:
-#line 621 "asn1p_y.y"
+#line 624 "asn1p_y.y"
     { yyval.a_aid.oid = yyvsp[0].a_oid; }
     break;
 
   case 42:
-#line 625 "asn1p_y.y"
+#line 628 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -2167,7 +2167,7 @@
     break;
 
   case 43:
-#line 636 "asn1p_y.y"
+#line 639 "asn1p_y.y"
     {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -2176,7 +2176,7 @@
     break;
 
   case 44:
-#line 641 "asn1p_y.y"
+#line 644 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
@@ -2184,7 +2184,7 @@
     break;
 
   case 45:
-#line 648 "asn1p_y.y"
+#line 651 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2194,7 +2194,7 @@
     break;
 
   case 46:
-#line 654 "asn1p_y.y"
+#line 657 "asn1p_y.y"
     {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2204,7 +2204,7 @@
     break;
 
   case 47:
-#line 660 "asn1p_y.y"
+#line 663 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2214,21 +2214,21 @@
     break;
 
   case 48:
-#line 669 "asn1p_y.y"
+#line 672 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	}
     break;
 
   case 49:
-#line 672 "asn1p_y.y"
+#line 675 "asn1p_y.y"
     {
 		yyval.a_xports = 0;
 	}
     break;
 
   case 50:
-#line 675 "asn1p_y.y"
+#line 678 "asn1p_y.y"
     {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -2237,7 +2237,7 @@
     break;
 
   case 51:
-#line 683 "asn1p_y.y"
+#line 686 "asn1p_y.y"
     {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -2246,7 +2246,7 @@
     break;
 
   case 52:
-#line 688 "asn1p_y.y"
+#line 691 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
@@ -2254,7 +2254,7 @@
     break;
 
   case 53:
-#line 695 "asn1p_y.y"
+#line 698 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2264,7 +2264,7 @@
     break;
 
   case 54:
-#line 701 "asn1p_y.y"
+#line 704 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2274,7 +2274,7 @@
     break;
 
   case 55:
-#line 707 "asn1p_y.y"
+#line 710 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2284,12 +2284,12 @@
     break;
 
   case 56:
-#line 716 "asn1p_y.y"
+#line 719 "asn1p_y.y"
     { yyval.a_constr = yyvsp[-1].a_constr; }
     break;
 
   case 57:
-#line 719 "asn1p_y.y"
+#line 722 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2300,14 +2300,14 @@
     break;
 
   case 58:
-#line 729 "asn1p_y.y"
+#line 732 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 59:
-#line 742 "asn1p_y.y"
+#line 745 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2318,7 +2318,7 @@
     break;
 
   case 60:
-#line 752 "asn1p_y.y"
+#line 755 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2330,7 +2330,7 @@
     break;
 
   case 61:
-#line 772 "asn1p_y.y"
+#line 775 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2340,7 +2340,7 @@
     break;
 
   case 62:
-#line 778 "asn1p_y.y"
+#line 781 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2350,7 +2350,7 @@
     break;
 
   case 63:
-#line 794 "asn1p_y.y"
+#line 797 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
@@ -2359,7 +2359,7 @@
     break;
 
   case 64:
-#line 800 "asn1p_y.y"
+#line 803 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
@@ -2368,7 +2368,7 @@
     break;
 
   case 65:
-#line 808 "asn1p_y.y"
+#line 811 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -2381,7 +2381,7 @@
     break;
 
   case 66:
-#line 817 "asn1p_y.y"
+#line 820 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -2393,7 +2393,7 @@
     break;
 
   case 67:
-#line 828 "asn1p_y.y"
+#line 831 "asn1p_y.y"
     {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
@@ -2401,7 +2401,7 @@
     break;
 
   case 68:
-#line 832 "asn1p_y.y"
+#line 835 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2412,7 +2412,7 @@
     break;
 
   case 69:
-#line 839 "asn1p_y.y"
+#line 842 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2423,7 +2423,7 @@
     break;
 
   case 70:
-#line 846 "asn1p_y.y"
+#line 849 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2435,7 +2435,7 @@
     break;
 
   case 71:
-#line 854 "asn1p_y.y"
+#line 857 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2447,7 +2447,7 @@
     break;
 
   case 72:
-#line 865 "asn1p_y.y"
+#line 868 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2456,7 +2456,7 @@
     break;
 
   case 73:
-#line 870 "asn1p_y.y"
+#line 873 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2464,14 +2464,14 @@
     break;
 
   case 74:
-#line 877 "asn1p_y.y"
+#line 880 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 75:
-#line 880 "asn1p_y.y"
+#line 883 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2483,7 +2483,7 @@
     break;
 
   case 76:
-#line 888 "asn1p_y.y"
+#line 891 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2498,7 +2498,7 @@
     break;
 
   case 77:
-#line 899 "asn1p_y.y"
+#line 902 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->expr_type = A1TC_VALUESET;
@@ -2508,17 +2508,17 @@
     break;
 
   case 78:
-#line 922 "asn1p_y.y"
+#line 925 "asn1p_y.y"
     { yyval.a_expr = asn1p_expr_new(yylineno); }
     break;
 
   case 79:
-#line 923 "asn1p_y.y"
+#line 926 "asn1p_y.y"
     { yyval.a_expr = yyvsp[0].a_expr; }
     break;
 
   case 80:
-#line 926 "asn1p_y.y"
+#line 929 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2527,7 +2527,7 @@
     break;
 
   case 81:
-#line 931 "asn1p_y.y"
+#line 934 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2535,7 +2535,7 @@
     break;
 
   case 82:
-#line 938 "asn1p_y.y"
+#line 941 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2546,7 +2546,7 @@
     break;
 
   case 83:
-#line 945 "asn1p_y.y"
+#line 948 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -2556,7 +2556,7 @@
     break;
 
   case 84:
-#line 951 "asn1p_y.y"
+#line 954 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2567,14 +2567,14 @@
     break;
 
   case 85:
-#line 958 "asn1p_y.y"
+#line 961 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 86:
-#line 964 "asn1p_y.y"
+#line 967 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2583,7 +2583,7 @@
     break;
 
   case 87:
-#line 969 "asn1p_y.y"
+#line 972 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2591,7 +2591,7 @@
     break;
 
   case 88:
-#line 976 "asn1p_y.y"
+#line 979 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2600,14 +2600,14 @@
     break;
 
   case 89:
-#line 981 "asn1p_y.y"
+#line 984 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 90:
-#line 984 "asn1p_y.y"
+#line 987 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
@@ -2615,7 +2615,7 @@
     break;
 
   case 91:
-#line 991 "asn1p_y.y"
+#line 994 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2626,17 +2626,17 @@
     break;
 
   case 92:
-#line 1001 "asn1p_y.y"
+#line 1004 "asn1p_y.y"
     { yyval.a_int = 0; }
     break;
 
   case 93:
-#line 1002 "asn1p_y.y"
+#line 1005 "asn1p_y.y"
     { yyval.a_int = 1; }
     break;
 
   case 94:
-#line 1006 "asn1p_y.y"
+#line 1009 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2647,7 +2647,7 @@
     break;
 
   case 95:
-#line 1013 "asn1p_y.y"
+#line 1016 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2655,7 +2655,7 @@
     break;
 
   case 96:
-#line 1023 "asn1p_y.y"
+#line 1026 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2667,7 +2667,7 @@
     break;
 
   case 97:
-#line 1033 "asn1p_y.y"
+#line 1036 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -2680,7 +2680,7 @@
     break;
 
   case 98:
-#line 1044 "asn1p_y.y"
+#line 1047 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2692,7 +2692,7 @@
     break;
 
   case 99:
-#line 1054 "asn1p_y.y"
+#line 1057 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2705,7 +2705,7 @@
     break;
 
   case 100:
-#line 1065 "asn1p_y.y"
+#line 1068 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2717,7 +2717,7 @@
     break;
 
   case 101:
-#line 1075 "asn1p_y.y"
+#line 1078 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2730,7 +2730,7 @@
     break;
 
   case 102:
-#line 1086 "asn1p_y.y"
+#line 1089 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2743,31 +2743,31 @@
     break;
 
   case 103:
-#line 1098 "asn1p_y.y"
+#line 1101 "asn1p_y.y"
     { yyval.a_wsynt = 0; }
     break;
 
   case 104:
-#line 1099 "asn1p_y.y"
+#line 1102 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	}
     break;
 
   case 105:
-#line 1106 "asn1p_y.y"
+#line 1109 "asn1p_y.y"
     { asn1p_lexer_hack_enable_with_syntax(); }
     break;
 
   case 106:
-#line 1108 "asn1p_y.y"
+#line 1111 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	}
     break;
 
   case 107:
-#line 1114 "asn1p_y.y"
+#line 1117 "asn1p_y.y"
     {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
@@ -2775,7 +2775,7 @@
     break;
 
   case 108:
-#line 1118 "asn1p_y.y"
+#line 1121 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
@@ -2783,7 +2783,7 @@
     break;
 
   case 109:
-#line 1125 "asn1p_y.y"
+#line 1128 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
 		yyval.a_wchunk->type = WC_WHITESPACE;
@@ -2791,14 +2791,14 @@
     break;
 
   case 110:
-#line 1129 "asn1p_y.y"
+#line 1132 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
 	}
     break;
 
   case 111:
-#line 1132 "asn1p_y.y"
+#line 1135 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
 		yyval.a_wchunk->type = WC_FIELD;
@@ -2806,14 +2806,14 @@
     break;
 
   case 112:
-#line 1136 "asn1p_y.y"
+#line 1139 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
 	}
     break;
 
   case 113:
-#line 1142 "asn1p_y.y"
+#line 1145 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2825,7 +2825,7 @@
     break;
 
   case 114:
-#line 1150 "asn1p_y.y"
+#line 1153 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2838,7 +2838,7 @@
     break;
 
   case 115:
-#line 1159 "asn1p_y.y"
+#line 1162 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2851,7 +2851,7 @@
     break;
 
   case 116:
-#line 1171 "asn1p_y.y"
+#line 1174 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2874,7 +2874,7 @@
     break;
 
   case 117:
-#line 1193 "asn1p_y.y"
+#line 1196 "asn1p_y.y"
     {
 		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
@@ -2882,7 +2882,7 @@
     break;
 
   case 118:
-#line 1200 "asn1p_y.y"
+#line 1203 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2902,14 +2902,14 @@
     break;
 
   case 119:
-#line 1219 "asn1p_y.y"
+#line 1222 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 120:
-#line 1222 "asn1p_y.y"
+#line 1225 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2919,7 +2919,7 @@
     break;
 
   case 121:
-#line 1228 "asn1p_y.y"
+#line 1231 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2929,7 +2929,7 @@
     break;
 
   case 122:
-#line 1234 "asn1p_y.y"
+#line 1237 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2939,7 +2939,7 @@
     break;
 
   case 123:
-#line 1240 "asn1p_y.y"
+#line 1243 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2953,7 +2953,7 @@
     break;
 
   case 124:
-#line 1250 "asn1p_y.y"
+#line 1253 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2967,7 +2967,7 @@
     break;
 
   case 125:
-#line 1260 "asn1p_y.y"
+#line 1263 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2977,7 +2977,7 @@
     break;
 
   case 126:
-#line 1266 "asn1p_y.y"
+#line 1269 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2992,7 +2992,7 @@
     break;
 
   case 127:
-#line 1277 "asn1p_y.y"
+#line 1280 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3003,7 +3003,7 @@
     break;
 
   case 128:
-#line 1292 "asn1p_y.y"
+#line 1295 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3015,7 +3015,7 @@
     break;
 
   case 129:
-#line 1300 "asn1p_y.y"
+#line 1303 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3029,7 +3029,7 @@
     break;
 
   case 130:
-#line 1310 "asn1p_y.y"
+#line 1313 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3043,7 +3043,7 @@
     break;
 
   case 131:
-#line 1320 "asn1p_y.y"
+#line 1323 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3057,7 +3057,7 @@
     break;
 
   case 132:
-#line 1330 "asn1p_y.y"
+#line 1333 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3069,7 +3069,7 @@
     break;
 
   case 133:
-#line 1338 "asn1p_y.y"
+#line 1341 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -3092,7 +3092,7 @@
     break;
 
   case 134:
-#line 1360 "asn1p_y.y"
+#line 1363 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3104,7 +3104,7 @@
     break;
 
   case 135:
-#line 1368 "asn1p_y.y"
+#line 1371 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -3115,7 +3115,7 @@
     break;
 
   case 137:
-#line 1381 "asn1p_y.y"
+#line 1384 "asn1p_y.y"
     {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
@@ -3123,7 +3123,7 @@
     break;
 
   case 138:
-#line 1386 "asn1p_y.y"
+#line 1389 "asn1p_y.y"
     {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
@@ -3131,7 +3131,7 @@
     break;
 
   case 139:
-#line 1395 "asn1p_y.y"
+#line 1398 "asn1p_y.y"
     {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
@@ -3139,7 +3139,7 @@
     break;
 
   case 140:
-#line 1399 "asn1p_y.y"
+#line 1402 "asn1p_y.y"
     {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
@@ -3147,7 +3147,7 @@
     break;
 
   case 141:
-#line 1403 "asn1p_y.y"
+#line 1406 "asn1p_y.y"
     {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
@@ -3155,7 +3155,7 @@
     break;
 
   case 142:
-#line 1410 "asn1p_y.y"
+#line 1413 "asn1p_y.y"
     {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
@@ -3163,7 +3163,7 @@
     break;
 
   case 143:
-#line 1430 "asn1p_y.y"
+#line 1433 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -3174,7 +3174,7 @@
     break;
 
   case 146:
-#line 1442 "asn1p_y.y"
+#line 1445 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3185,12 +3185,12 @@
     break;
 
   case 147:
-#line 1449 "asn1p_y.y"
+#line 1452 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 148:
-#line 1449 "asn1p_y.y"
+#line 1452 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -3199,7 +3199,7 @@
     break;
 
   case 149:
-#line 1454 "asn1p_y.y"
+#line 1457 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3208,7 +3208,7 @@
     break;
 
   case 150:
-#line 1462 "asn1p_y.y"
+#line 1465 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3217,7 +3217,7 @@
     break;
 
   case 151:
-#line 1467 "asn1p_y.y"
+#line 1470 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3226,7 +3226,7 @@
     break;
 
   case 152:
-#line 1472 "asn1p_y.y"
+#line 1475 "asn1p_y.y"
     {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
@@ -3234,7 +3234,7 @@
     break;
 
   case 153:
-#line 1476 "asn1p_y.y"
+#line 1479 "asn1p_y.y"
     {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
@@ -3242,21 +3242,21 @@
     break;
 
   case 154:
-#line 1480 "asn1p_y.y"
+#line 1483 "asn1p_y.y"
     {
 		yyval.a_value = yyval.a_value;
 	}
     break;
 
   case 155:
-#line 1483 "asn1p_y.y"
+#line 1486 "asn1p_y.y"
     {
 		yyval.a_value = yyvsp[0].a_value;
 	}
     break;
 
   case 156:
-#line 1489 "asn1p_y.y"
+#line 1492 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3271,7 +3271,7 @@
     break;
 
   case 157:
-#line 1500 "asn1p_y.y"
+#line 1503 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3289,7 +3289,7 @@
     break;
 
   case 158:
-#line 1518 "asn1p_y.y"
+#line 1521 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -3297,7 +3297,7 @@
     break;
 
   case 159:
-#line 1522 "asn1p_y.y"
+#line 1525 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -3306,7 +3306,7 @@
     break;
 
   case 160:
-#line 1527 "asn1p_y.y"
+#line 1530 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -3315,7 +3315,7 @@
     break;
 
   case 161:
-#line 1561 "asn1p_y.y"
+#line 1564 "asn1p_y.y"
     {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -3328,7 +3328,7 @@
     break;
 
   case 162:
-#line 1570 "asn1p_y.y"
+#line 1573 "asn1p_y.y"
     {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -3344,87 +3344,87 @@
     break;
 
   case 163:
-#line 1585 "asn1p_y.y"
+#line 1588 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_BOOLEAN; }
     break;
 
   case 164:
-#line 1586 "asn1p_y.y"
+#line 1589 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_NULL; }
     break;
 
   case 165:
-#line 1587 "asn1p_y.y"
+#line 1590 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_REAL; }
     break;
 
   case 166:
-#line 1588 "asn1p_y.y"
+#line 1591 "asn1p_y.y"
     { yyval.a_type = yyvsp[0].a_type; }
     break;
 
   case 167:
-#line 1589 "asn1p_y.y"
+#line 1592 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_OCTET_STRING; }
     break;
 
   case 168:
-#line 1590 "asn1p_y.y"
+#line 1593 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
     break;
 
   case 169:
-#line 1591 "asn1p_y.y"
+#line 1594 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
     break;
 
   case 170:
-#line 1592 "asn1p_y.y"
+#line 1595 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_EXTERNAL; }
     break;
 
   case 171:
-#line 1593 "asn1p_y.y"
+#line 1596 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
     break;
 
   case 172:
-#line 1594 "asn1p_y.y"
+#line 1597 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
     break;
 
   case 173:
-#line 1595 "asn1p_y.y"
+#line 1598 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_UTCTime; }
     break;
 
   case 174:
-#line 1596 "asn1p_y.y"
+#line 1599 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_GeneralizedTime; }
     break;
 
   case 175:
-#line 1597 "asn1p_y.y"
+#line 1600 "asn1p_y.y"
     { yyval.a_type = yyvsp[0].a_type; }
     break;
 
   case 176:
-#line 1604 "asn1p_y.y"
+#line 1607 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_INTEGER; }
     break;
 
   case 177:
-#line 1605 "asn1p_y.y"
+#line 1608 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_ENUMERATED; }
     break;
 
   case 178:
-#line 1606 "asn1p_y.y"
+#line 1609 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_BIT_STRING; }
     break;
 
   case 179:
-#line 1610 "asn1p_y.y"
+#line 1613 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3434,7 +3434,7 @@
     break;
 
   case 180:
-#line 1616 "asn1p_y.y"
+#line 1619 "asn1p_y.y"
     {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -3448,12 +3448,12 @@
     break;
 
   case 181:
-#line 1629 "asn1p_y.y"
+#line 1632 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_BMPString; }
     break;
 
   case 182:
-#line 1630 "asn1p_y.y"
+#line 1633 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
@@ -3461,7 +3461,7 @@
     break;
 
   case 183:
-#line 1634 "asn1p_y.y"
+#line 1637 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
@@ -3469,27 +3469,27 @@
     break;
 
   case 184:
-#line 1638 "asn1p_y.y"
+#line 1641 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_IA5String; }
     break;
 
   case 185:
-#line 1639 "asn1p_y.y"
+#line 1642 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_ISO646String; }
     break;
 
   case 186:
-#line 1640 "asn1p_y.y"
+#line 1643 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_NumericString; }
     break;
 
   case 187:
-#line 1641 "asn1p_y.y"
+#line 1644 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_PrintableString; }
     break;
 
   case 188:
-#line 1642 "asn1p_y.y"
+#line 1645 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
@@ -3497,22 +3497,22 @@
     break;
 
   case 189:
-#line 1646 "asn1p_y.y"
+#line 1649 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_TeletexString; }
     break;
 
   case 190:
-#line 1647 "asn1p_y.y"
+#line 1650 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_UniversalString; }
     break;
 
   case 191:
-#line 1648 "asn1p_y.y"
+#line 1651 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_UTF8String; }
     break;
 
   case 192:
-#line 1649 "asn1p_y.y"
+#line 1652 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
@@ -3520,36 +3520,36 @@
     break;
 
   case 193:
-#line 1653 "asn1p_y.y"
+#line 1656 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_VisibleString; }
     break;
 
   case 194:
-#line 1654 "asn1p_y.y"
+#line 1657 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_ObjectDescriptor; }
     break;
 
   case 200:
-#line 1666 "asn1p_y.y"
+#line 1669 "asn1p_y.y"
     { yyval.a_constr = 0; }
     break;
 
   case 201:
-#line 1667 "asn1p_y.y"
+#line 1670 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 202:
-#line 1673 "asn1p_y.y"
+#line 1676 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	}
     break;
 
   case 203:
-#line 1676 "asn1p_y.y"
+#line 1679 "asn1p_y.y"
     {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -3560,21 +3560,21 @@
     break;
 
   case 204:
-#line 1686 "asn1p_y.y"
+#line 1689 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	}
     break;
 
   case 205:
-#line 1689 "asn1p_y.y"
+#line 1692 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	}
     break;
 
   case 206:
-#line 1695 "asn1p_y.y"
+#line 1698 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		yyval.a_constr->type = ACT_EL_EXT;
@@ -3582,14 +3582,14 @@
     break;
 
   case 207:
-#line 1699 "asn1p_y.y"
+#line 1702 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 208:
-#line 1702 "asn1p_y.y"
+#line 1705 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3599,7 +3599,7 @@
     break;
 
   case 209:
-#line 1708 "asn1p_y.y"
+#line 1711 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3611,42 +3611,42 @@
     break;
 
   case 210:
-#line 1719 "asn1p_y.y"
+#line 1722 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 211:
-#line 1722 "asn1p_y.y"
+#line 1725 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	}
     break;
 
   case 212:
-#line 1725 "asn1p_y.y"
+#line 1728 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 213:
-#line 1728 "asn1p_y.y"
+#line 1731 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 214:
-#line 1731 "asn1p_y.y"
+#line 1734 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 215:
-#line 1737 "asn1p_y.y"
+#line 1740 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3658,7 +3658,7 @@
     break;
 
   case 216:
-#line 1745 "asn1p_y.y"
+#line 1748 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3670,7 +3670,7 @@
     break;
 
   case 217:
-#line 1753 "asn1p_y.y"
+#line 1756 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3680,7 +3680,7 @@
     break;
 
   case 218:
-#line 1759 "asn1p_y.y"
+#line 1762 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3690,7 +3690,7 @@
     break;
 
   case 219:
-#line 1765 "asn1p_y.y"
+#line 1768 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3701,7 +3701,7 @@
     break;
 
   case 220:
-#line 1772 "asn1p_y.y"
+#line 1775 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3713,7 +3713,7 @@
     break;
 
   case 221:
-#line 1780 "asn1p_y.y"
+#line 1783 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3725,7 +3725,7 @@
     break;
 
   case 222:
-#line 1788 "asn1p_y.y"
+#line 1791 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3738,26 +3738,26 @@
     break;
 
   case 223:
-#line 1797 "asn1p_y.y"
-    {
-		yyval.a_constr = yyvsp[0].a_constr;
-	}
-    break;
-
-  case 224:
 #line 1800 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
+  case 224:
+#line 1803 "asn1p_y.y"
+    {
+		yyval.a_constr = yyvsp[0].a_constr;
+	}
+    break;
+
   case 225:
-#line 1804 "asn1p_y.y"
+#line 1807 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 226:
-#line 1804 "asn1p_y.y"
+#line 1807 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3769,41 +3769,41 @@
     break;
 
   case 227:
-#line 1815 "asn1p_y.y"
+#line 1818 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_RANGE; }
     break;
 
   case 228:
-#line 1816 "asn1p_y.y"
+#line 1819 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_RLRANGE; }
     break;
 
   case 229:
-#line 1817 "asn1p_y.y"
+#line 1820 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_LLRANGE; }
     break;
 
   case 230:
-#line 1818 "asn1p_y.y"
+#line 1821 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_ULRANGE; }
     break;
 
   case 231:
-#line 1822 "asn1p_y.y"
+#line 1825 "asn1p_y.y"
     {
 		yyval.a_ctype = ACT_CT_SIZE;
 	}
     break;
 
   case 232:
-#line 1825 "asn1p_y.y"
+#line 1828 "asn1p_y.y"
     {
 		yyval.a_ctype = ACT_CT_FROM;
 	}
     break;
 
   case 233:
-#line 1831 "asn1p_y.y"
+#line 1834 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3812,7 +3812,7 @@
     break;
 
   case 234:
-#line 1836 "asn1p_y.y"
+#line 1839 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -3820,22 +3820,8 @@
 	}
     break;
 
-  case 235:
-#line 1841 "asn1p_y.y"
-    {
-		yyval.a_value = yyvsp[0].a_value;
-	}
-    break;
-
-  case 236:
-#line 1844 "asn1p_y.y"
-    {
-		yyval.a_value = yyvsp[0].a_value;
-	}
-    break;
-
   case 237:
-#line 1847 "asn1p_y.y"
+#line 1846 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3850,7 +3836,7 @@
     break;
 
   case 238:
-#line 1861 "asn1p_y.y"
+#line 1860 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3865,35 +3851,35 @@
     break;
 
   case 239:
-#line 1875 "asn1p_y.y"
+#line 1874 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	}
     break;
 
   case 240:
-#line 1878 "asn1p_y.y"
+#line 1877 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	}
     break;
 
   case 241:
-#line 1884 "asn1p_y.y"
+#line 1883 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 242:
-#line 1887 "asn1p_y.y"
+#line 1886 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 243:
-#line 1893 "asn1p_y.y"
+#line 1892 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3903,7 +3889,7 @@
     break;
 
   case 244:
-#line 1899 "asn1p_y.y"
+#line 1898 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3915,52 +3901,52 @@
     break;
 
   case 245:
-#line 1913 "asn1p_y.y"
+#line 1912 "asn1p_y.y"
     { yyval.a_pres = ACPRES_DEFAULT; }
     break;
 
   case 246:
-#line 1914 "asn1p_y.y"
+#line 1913 "asn1p_y.y"
     { yyval.a_pres = yyvsp[0].a_pres; }
     break;
 
   case 247:
-#line 1918 "asn1p_y.y"
+#line 1917 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_PRESENT;
 	}
     break;
 
   case 248:
-#line 1921 "asn1p_y.y"
+#line 1920 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_ABSENT;
 	}
     break;
 
   case 249:
-#line 1924 "asn1p_y.y"
+#line 1923 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	}
     break;
 
   case 250:
-#line 1930 "asn1p_y.y"
+#line 1929 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 251:
-#line 1933 "asn1p_y.y"
+#line 1932 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 252:
-#line 1942 "asn1p_y.y"
+#line 1941 "asn1p_y.y"
     {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3976,14 +3962,14 @@
     break;
 
   case 253:
-#line 1957 "asn1p_y.y"
+#line 1956 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	}
     break;
 
   case 254:
-#line 1963 "asn1p_y.y"
+#line 1962 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3993,7 +3979,7 @@
     break;
 
   case 255:
-#line 1969 "asn1p_y.y"
+#line 1968 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -4005,7 +3991,7 @@
     break;
 
   case 256:
-#line 1983 "asn1p_y.y"
+#line 1982 "asn1p_y.y"
     {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -4020,7 +4006,7 @@
     break;
 
   case 257:
-#line 1994 "asn1p_y.y"
+#line 1993 "asn1p_y.y"
     {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -4036,14 +4022,14 @@
     break;
 
   case 258:
-#line 2010 "asn1p_y.y"
+#line 2009 "asn1p_y.y"
     {
 		yyval.tv_str = yyvsp[0].tv_str;
 	}
     break;
 
   case 259:
-#line 2013 "asn1p_y.y"
+#line 2012 "asn1p_y.y"
     {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -4056,7 +4042,7 @@
     break;
 
   case 260:
-#line 2031 "asn1p_y.y"
+#line 2030 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
@@ -4064,12 +4050,12 @@
     break;
 
   case 261:
-#line 2035 "asn1p_y.y"
+#line 2034 "asn1p_y.y"
     { yyval.a_marker = yyvsp[0].a_marker; }
     break;
 
   case 262:
-#line 2039 "asn1p_y.y"
+#line 2038 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
 		yyval.a_marker.default_value = 0;
@@ -4077,7 +4063,7 @@
     break;
 
   case 263:
-#line 2043 "asn1p_y.y"
+#line 2042 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
@@ -4085,7 +4071,7 @@
     break;
 
   case 264:
-#line 2066 "asn1p_y.y"
+#line 2065 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4093,14 +4079,14 @@
     break;
 
   case 265:
-#line 2070 "asn1p_y.y"
+#line 2069 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	}
     break;
 
   case 266:
-#line 2076 "asn1p_y.y"
+#line 2075 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4109,7 +4095,7 @@
     break;
 
   case 267:
-#line 2081 "asn1p_y.y"
+#line 2080 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -4117,7 +4103,7 @@
     break;
 
   case 268:
-#line 2088 "asn1p_y.y"
+#line 2087 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4128,7 +4114,7 @@
     break;
 
   case 269:
-#line 2095 "asn1p_y.y"
+#line 2094 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4140,7 +4126,7 @@
     break;
 
   case 270:
-#line 2103 "asn1p_y.y"
+#line 2102 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4152,7 +4138,7 @@
     break;
 
   case 271:
-#line 2111 "asn1p_y.y"
+#line 2110 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4163,7 +4149,7 @@
     break;
 
   case 272:
-#line 2118 "asn1p_y.y"
+#line 2117 "asn1p_y.y"
     {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -4175,7 +4161,7 @@
     break;
 
   case 273:
-#line 2129 "asn1p_y.y"
+#line 2128 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -4183,92 +4169,84 @@
     break;
 
   case 274:
-#line 2133 "asn1p_y.y"
+#line 2132 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	}
     break;
 
-  case 275:
-#line 2164 "asn1p_y.y"
-    { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
-    break;
-
   case 276:
-#line 2165 "asn1p_y.y"
-    { yyval.a_tag = yyvsp[0].a_tag; }
+#line 2140 "asn1p_y.y"
+    {
+		yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
+		checkmem(yyval.a_value);
+	}
     break;
 
   case 277:
-#line 2169 "asn1p_y.y"
+#line 2171 "asn1p_y.y"
+    { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
+    break;
+
+  case 278:
+#line 2172 "asn1p_y.y"
+    { yyval.a_tag = yyvsp[0].a_tag; }
+    break;
+
+  case 279:
+#line 2176 "asn1p_y.y"
     {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	}
     break;
 
-  case 278:
-#line 2176 "asn1p_y.y"
+  case 280:
+#line 2183 "asn1p_y.y"
     {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	}
     break;
 
-  case 279:
-#line 2182 "asn1p_y.y"
+  case 281:
+#line 2189 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
     break;
 
-  case 280:
-#line 2183 "asn1p_y.y"
+  case 282:
+#line 2190 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_UNIVERSAL; }
     break;
 
-  case 281:
-#line 2184 "asn1p_y.y"
+  case 283:
+#line 2191 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_APPLICATION; }
     break;
 
-  case 282:
-#line 2185 "asn1p_y.y"
+  case 284:
+#line 2192 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_PRIVATE; }
     break;
 
-  case 283:
-#line 2189 "asn1p_y.y"
+  case 285:
+#line 2196 "asn1p_y.y"
     { yyval.a_tag.tag_mode = TM_DEFAULT; }
     break;
 
-  case 284:
-#line 2190 "asn1p_y.y"
+  case 286:
+#line 2197 "asn1p_y.y"
     { yyval.a_tag.tag_mode = TM_IMPLICIT; }
     break;
 
-  case 285:
-#line 2191 "asn1p_y.y"
+  case 287:
+#line 2198 "asn1p_y.y"
     { yyval.a_tag.tag_mode = TM_EXPLICIT; }
     break;
 
-  case 286:
-#line 2195 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
-    break;
-
-  case 287:
-#line 2199 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
-    break;
-
   case 288:
-#line 2207 "asn1p_y.y"
+#line 2202 "asn1p_y.y"
     {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -4276,19 +4254,35 @@
     break;
 
   case 289:
-#line 2214 "asn1p_y.y"
-    { yyval.tv_str = 0; }
+#line 2206 "asn1p_y.y"
+    {
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
     break;
 
   case 290:
-#line 2215 "asn1p_y.y"
+#line 2214 "asn1p_y.y"
     {
+		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	}
     break;
 
   case 291:
 #line 2221 "asn1p_y.y"
+    { yyval.tv_str = 0; }
+    break;
+
+  case 292:
+#line 2222 "asn1p_y.y"
+    {
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
+    break;
+
+  case 293:
+#line 2228 "asn1p_y.y"
     {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -4299,7 +4293,7 @@
     }
 
 /* Line 1016 of /usr/local/share/bison/yacc.c.  */
-#line 4303 "asn1p_y.c"
+#line 4297 "asn1p_y.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4518,7 +4512,7 @@
 }
 
 
-#line 2227 "asn1p_y.y"
+#line 2234 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index b7b7f1a..3874ede 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -40,100 +40,101 @@
      TOK_hstring = 263,
      TOK_identifier = 264,
      TOK_number = 265,
-     TOK_tuple = 266,
-     TOK_quadruple = 267,
-     TOK_number_negative = 268,
-     TOK_typereference = 269,
-     TOK_capitalreference = 270,
-     TOK_typefieldreference = 271,
-     TOK_valuefieldreference = 272,
-     TOK_Literal = 273,
-     TOK_ABSENT = 274,
-     TOK_ABSTRACT_SYNTAX = 275,
-     TOK_ALL = 276,
-     TOK_ANY = 277,
-     TOK_APPLICATION = 278,
-     TOK_AUTOMATIC = 279,
-     TOK_BEGIN = 280,
-     TOK_BIT = 281,
-     TOK_BMPString = 282,
-     TOK_BOOLEAN = 283,
-     TOK_BY = 284,
-     TOK_CHARACTER = 285,
-     TOK_CHOICE = 286,
-     TOK_CLASS = 287,
-     TOK_COMPONENT = 288,
-     TOK_COMPONENTS = 289,
-     TOK_CONSTRAINED = 290,
-     TOK_CONTAINING = 291,
-     TOK_DEFAULT = 292,
-     TOK_DEFINITIONS = 293,
-     TOK_DEFINED = 294,
-     TOK_EMBEDDED = 295,
-     TOK_ENCODED = 296,
-     TOK_ENCODING_CONTROL = 297,
-     TOK_END = 298,
-     TOK_ENUMERATED = 299,
-     TOK_EXPLICIT = 300,
-     TOK_EXPORTS = 301,
-     TOK_EXTENSIBILITY = 302,
-     TOK_EXTERNAL = 303,
-     TOK_FALSE = 304,
-     TOK_FROM = 305,
-     TOK_GeneralizedTime = 306,
-     TOK_GeneralString = 307,
-     TOK_GraphicString = 308,
-     TOK_IA5String = 309,
-     TOK_IDENTIFIER = 310,
-     TOK_IMPLICIT = 311,
-     TOK_IMPLIED = 312,
-     TOK_IMPORTS = 313,
-     TOK_INCLUDES = 314,
-     TOK_INSTANCE = 315,
-     TOK_INSTRUCTIONS = 316,
-     TOK_INTEGER = 317,
-     TOK_ISO646String = 318,
-     TOK_MAX = 319,
-     TOK_MIN = 320,
-     TOK_MINUS_INFINITY = 321,
-     TOK_NULL = 322,
-     TOK_NumericString = 323,
-     TOK_OBJECT = 324,
-     TOK_ObjectDescriptor = 325,
-     TOK_OCTET = 326,
-     TOK_OF = 327,
-     TOK_OPTIONAL = 328,
-     TOK_PATTERN = 329,
-     TOK_PDV = 330,
-     TOK_PLUS_INFINITY = 331,
-     TOK_PRESENT = 332,
-     TOK_PrintableString = 333,
-     TOK_PRIVATE = 334,
-     TOK_REAL = 335,
-     TOK_RELATIVE_OID = 336,
-     TOK_SEQUENCE = 337,
-     TOK_SET = 338,
-     TOK_SIZE = 339,
-     TOK_STRING = 340,
-     TOK_SYNTAX = 341,
-     TOK_T61String = 342,
-     TOK_TAGS = 343,
-     TOK_TeletexString = 344,
-     TOK_TRUE = 345,
-     TOK_TYPE_IDENTIFIER = 346,
-     TOK_UNIQUE = 347,
-     TOK_UNIVERSAL = 348,
-     TOK_UniversalString = 349,
-     TOK_UTCTime = 350,
-     TOK_UTF8String = 351,
-     TOK_VideotexString = 352,
-     TOK_VisibleString = 353,
-     TOK_WITH = 354,
-     TOK_EXCEPT = 355,
-     TOK_INTERSECTION = 356,
-     TOK_UNION = 357,
-     TOK_TwoDots = 358,
-     TOK_ThreeDots = 359
+     TOK_number_negative = 266,
+     TOK_realnumber = 267,
+     TOK_tuple = 268,
+     TOK_quadruple = 269,
+     TOK_typereference = 270,
+     TOK_capitalreference = 271,
+     TOK_typefieldreference = 272,
+     TOK_valuefieldreference = 273,
+     TOK_Literal = 274,
+     TOK_ABSENT = 275,
+     TOK_ABSTRACT_SYNTAX = 276,
+     TOK_ALL = 277,
+     TOK_ANY = 278,
+     TOK_APPLICATION = 279,
+     TOK_AUTOMATIC = 280,
+     TOK_BEGIN = 281,
+     TOK_BIT = 282,
+     TOK_BMPString = 283,
+     TOK_BOOLEAN = 284,
+     TOK_BY = 285,
+     TOK_CHARACTER = 286,
+     TOK_CHOICE = 287,
+     TOK_CLASS = 288,
+     TOK_COMPONENT = 289,
+     TOK_COMPONENTS = 290,
+     TOK_CONSTRAINED = 291,
+     TOK_CONTAINING = 292,
+     TOK_DEFAULT = 293,
+     TOK_DEFINITIONS = 294,
+     TOK_DEFINED = 295,
+     TOK_EMBEDDED = 296,
+     TOK_ENCODED = 297,
+     TOK_ENCODING_CONTROL = 298,
+     TOK_END = 299,
+     TOK_ENUMERATED = 300,
+     TOK_EXPLICIT = 301,
+     TOK_EXPORTS = 302,
+     TOK_EXTENSIBILITY = 303,
+     TOK_EXTERNAL = 304,
+     TOK_FALSE = 305,
+     TOK_FROM = 306,
+     TOK_GeneralizedTime = 307,
+     TOK_GeneralString = 308,
+     TOK_GraphicString = 309,
+     TOK_IA5String = 310,
+     TOK_IDENTIFIER = 311,
+     TOK_IMPLICIT = 312,
+     TOK_IMPLIED = 313,
+     TOK_IMPORTS = 314,
+     TOK_INCLUDES = 315,
+     TOK_INSTANCE = 316,
+     TOK_INSTRUCTIONS = 317,
+     TOK_INTEGER = 318,
+     TOK_ISO646String = 319,
+     TOK_MAX = 320,
+     TOK_MIN = 321,
+     TOK_MINUS_INFINITY = 322,
+     TOK_NULL = 323,
+     TOK_NumericString = 324,
+     TOK_OBJECT = 325,
+     TOK_ObjectDescriptor = 326,
+     TOK_OCTET = 327,
+     TOK_OF = 328,
+     TOK_OPTIONAL = 329,
+     TOK_PATTERN = 330,
+     TOK_PDV = 331,
+     TOK_PLUS_INFINITY = 332,
+     TOK_PRESENT = 333,
+     TOK_PrintableString = 334,
+     TOK_PRIVATE = 335,
+     TOK_REAL = 336,
+     TOK_RELATIVE_OID = 337,
+     TOK_SEQUENCE = 338,
+     TOK_SET = 339,
+     TOK_SIZE = 340,
+     TOK_STRING = 341,
+     TOK_SYNTAX = 342,
+     TOK_T61String = 343,
+     TOK_TAGS = 344,
+     TOK_TeletexString = 345,
+     TOK_TRUE = 346,
+     TOK_TYPE_IDENTIFIER = 347,
+     TOK_UNIQUE = 348,
+     TOK_UNIVERSAL = 349,
+     TOK_UniversalString = 350,
+     TOK_UTCTime = 351,
+     TOK_UTF8String = 352,
+     TOK_VideotexString = 353,
+     TOK_VisibleString = 354,
+     TOK_WITH = 355,
+     TOK_EXCEPT = 356,
+     TOK_INTERSECTION = 357,
+     TOK_UNION = 358,
+     TOK_TwoDots = 359,
+     TOK_ThreeDots = 360
    };
 #endif
 #define TOK_PPEQ 258
@@ -144,100 +145,101 @@
 #define TOK_hstring 263
 #define TOK_identifier 264
 #define TOK_number 265
-#define TOK_tuple 266
-#define TOK_quadruple 267
-#define TOK_number_negative 268
-#define TOK_typereference 269
-#define TOK_capitalreference 270
-#define TOK_typefieldreference 271
-#define TOK_valuefieldreference 272
-#define TOK_Literal 273
-#define TOK_ABSENT 274
-#define TOK_ABSTRACT_SYNTAX 275
-#define TOK_ALL 276
-#define TOK_ANY 277
-#define TOK_APPLICATION 278
-#define TOK_AUTOMATIC 279
-#define TOK_BEGIN 280
-#define TOK_BIT 281
-#define TOK_BMPString 282
-#define TOK_BOOLEAN 283
-#define TOK_BY 284
-#define TOK_CHARACTER 285
-#define TOK_CHOICE 286
-#define TOK_CLASS 287
-#define TOK_COMPONENT 288
-#define TOK_COMPONENTS 289
-#define TOK_CONSTRAINED 290
-#define TOK_CONTAINING 291
-#define TOK_DEFAULT 292
-#define TOK_DEFINITIONS 293
-#define TOK_DEFINED 294
-#define TOK_EMBEDDED 295
-#define TOK_ENCODED 296
-#define TOK_ENCODING_CONTROL 297
-#define TOK_END 298
-#define TOK_ENUMERATED 299
-#define TOK_EXPLICIT 300
-#define TOK_EXPORTS 301
-#define TOK_EXTENSIBILITY 302
-#define TOK_EXTERNAL 303
-#define TOK_FALSE 304
-#define TOK_FROM 305
-#define TOK_GeneralizedTime 306
-#define TOK_GeneralString 307
-#define TOK_GraphicString 308
-#define TOK_IA5String 309
-#define TOK_IDENTIFIER 310
-#define TOK_IMPLICIT 311
-#define TOK_IMPLIED 312
-#define TOK_IMPORTS 313
-#define TOK_INCLUDES 314
-#define TOK_INSTANCE 315
-#define TOK_INSTRUCTIONS 316
-#define TOK_INTEGER 317
-#define TOK_ISO646String 318
-#define TOK_MAX 319
-#define TOK_MIN 320
-#define TOK_MINUS_INFINITY 321
-#define TOK_NULL 322
-#define TOK_NumericString 323
-#define TOK_OBJECT 324
-#define TOK_ObjectDescriptor 325
-#define TOK_OCTET 326
-#define TOK_OF 327
-#define TOK_OPTIONAL 328
-#define TOK_PATTERN 329
-#define TOK_PDV 330
-#define TOK_PLUS_INFINITY 331
-#define TOK_PRESENT 332
-#define TOK_PrintableString 333
-#define TOK_PRIVATE 334
-#define TOK_REAL 335
-#define TOK_RELATIVE_OID 336
-#define TOK_SEQUENCE 337
-#define TOK_SET 338
-#define TOK_SIZE 339
-#define TOK_STRING 340
-#define TOK_SYNTAX 341
-#define TOK_T61String 342
-#define TOK_TAGS 343
-#define TOK_TeletexString 344
-#define TOK_TRUE 345
-#define TOK_TYPE_IDENTIFIER 346
-#define TOK_UNIQUE 347
-#define TOK_UNIVERSAL 348
-#define TOK_UniversalString 349
-#define TOK_UTCTime 350
-#define TOK_UTF8String 351
-#define TOK_VideotexString 352
-#define TOK_VisibleString 353
-#define TOK_WITH 354
-#define TOK_EXCEPT 355
-#define TOK_INTERSECTION 356
-#define TOK_UNION 357
-#define TOK_TwoDots 358
-#define TOK_ThreeDots 359
+#define TOK_number_negative 266
+#define TOK_realnumber 267
+#define TOK_tuple 268
+#define TOK_quadruple 269
+#define TOK_typereference 270
+#define TOK_capitalreference 271
+#define TOK_typefieldreference 272
+#define TOK_valuefieldreference 273
+#define TOK_Literal 274
+#define TOK_ABSENT 275
+#define TOK_ABSTRACT_SYNTAX 276
+#define TOK_ALL 277
+#define TOK_ANY 278
+#define TOK_APPLICATION 279
+#define TOK_AUTOMATIC 280
+#define TOK_BEGIN 281
+#define TOK_BIT 282
+#define TOK_BMPString 283
+#define TOK_BOOLEAN 284
+#define TOK_BY 285
+#define TOK_CHARACTER 286
+#define TOK_CHOICE 287
+#define TOK_CLASS 288
+#define TOK_COMPONENT 289
+#define TOK_COMPONENTS 290
+#define TOK_CONSTRAINED 291
+#define TOK_CONTAINING 292
+#define TOK_DEFAULT 293
+#define TOK_DEFINITIONS 294
+#define TOK_DEFINED 295
+#define TOK_EMBEDDED 296
+#define TOK_ENCODED 297
+#define TOK_ENCODING_CONTROL 298
+#define TOK_END 299
+#define TOK_ENUMERATED 300
+#define TOK_EXPLICIT 301
+#define TOK_EXPORTS 302
+#define TOK_EXTENSIBILITY 303
+#define TOK_EXTERNAL 304
+#define TOK_FALSE 305
+#define TOK_FROM 306
+#define TOK_GeneralizedTime 307
+#define TOK_GeneralString 308
+#define TOK_GraphicString 309
+#define TOK_IA5String 310
+#define TOK_IDENTIFIER 311
+#define TOK_IMPLICIT 312
+#define TOK_IMPLIED 313
+#define TOK_IMPORTS 314
+#define TOK_INCLUDES 315
+#define TOK_INSTANCE 316
+#define TOK_INSTRUCTIONS 317
+#define TOK_INTEGER 318
+#define TOK_ISO646String 319
+#define TOK_MAX 320
+#define TOK_MIN 321
+#define TOK_MINUS_INFINITY 322
+#define TOK_NULL 323
+#define TOK_NumericString 324
+#define TOK_OBJECT 325
+#define TOK_ObjectDescriptor 326
+#define TOK_OCTET 327
+#define TOK_OF 328
+#define TOK_OPTIONAL 329
+#define TOK_PATTERN 330
+#define TOK_PDV 331
+#define TOK_PLUS_INFINITY 332
+#define TOK_PRESENT 333
+#define TOK_PrintableString 334
+#define TOK_PRIVATE 335
+#define TOK_REAL 336
+#define TOK_RELATIVE_OID 337
+#define TOK_SEQUENCE 338
+#define TOK_SET 339
+#define TOK_SIZE 340
+#define TOK_STRING 341
+#define TOK_SYNTAX 342
+#define TOK_T61String 343
+#define TOK_TAGS 344
+#define TOK_TeletexString 345
+#define TOK_TRUE 346
+#define TOK_TYPE_IDENTIFIER 347
+#define TOK_UNIQUE 348
+#define TOK_UNIVERSAL 349
+#define TOK_UniversalString 350
+#define TOK_UTCTime 351
+#define TOK_UTF8String 352
+#define TOK_VideotexString 353
+#define TOK_VisibleString 354
+#define TOK_WITH 355
+#define TOK_EXCEPT 356
+#define TOK_INTERSECTION 357
+#define TOK_UNION 358
+#define TOK_TwoDots 359
+#define TOK_ThreeDots 360
 
 
 
@@ -267,6 +269,7 @@
 	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1c_integer_t		 a_int;
+	double			 a_dbl;
 	char	*tv_str;
 	struct {
 		char *buf;
@@ -278,7 +281,7 @@
 	} tv_nametag;
 } yystype;
 /* Line 1281 of /usr/local/share/bison/yacc.c.  */
-#line 282 "asn1p_y.h"
+#line 285 "asn1p_y.h"
 # define YYSTYPE yystype
 #endif
 
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 3589a8e..eacab98 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -92,6 +92,7 @@
 	struct asn1p_expr_marker_s a_marker;	/* OPTIONAL/DEFAULT */
 	enum asn1p_constr_pres_e a_pres;	/* PRESENT/ABSENT/OPTIONAL */
 	asn1c_integer_t		 a_int;
+	double			 a_dbl;
 	char	*tv_str;
 	struct {
 		char *buf;
@@ -114,9 +115,10 @@
 %token	<tv_str>	TOK_hstring
 %token	<tv_str>	TOK_identifier
 %token	<a_int>		TOK_number
+%token	<a_int>		TOK_number_negative
+%token	<a_dbl>		TOK_realnumber
 %token	<a_int>		TOK_tuple
 %token	<a_int>		TOK_quadruple
-%token	<a_int>		TOK_number_negative
 %token	<tv_str>	TOK_typereference
 %token	<tv_str>	TOK_capitalreference		/* "CLASS1" */
 %token	<tv_str>	TOK_typefieldreference		/* "&Pork" */
@@ -258,6 +260,7 @@
 %type	<a_value>		SimpleValue
 %type	<a_value>		DefinedValue
 %type	<a_value>		SignedNumber
+%type	<a_value>		RealValue
 %type	<a_expr>		optComponentTypeLists
 %type	<a_expr>		ComponentTypeLists
 %type	<a_expr>		ComponentType
@@ -1838,12 +1841,8 @@
 		checkmem($$);
 		$$->type = ATV_TRUE;
 	}
-	| SignedNumber {
-		$$ = $1;
-	}
-	| RestrictedCharacterStringValue {
-		$$ = $1;
-	}
+	| RealValue
+	| RestrictedCharacterStringValue
 	| Identifier {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2136,6 +2135,14 @@
 	}
 	;
 
+RealValue:
+	SignedNumber
+	| TOK_realnumber {
+		$$ = asn1p_value_fromdouble($1);
+		checkmem($$);
+	}
+	;
+
 /*
  * SEQUENCE definition.
  * === EXAMPLE ===
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index 6d2d6c1..b43f0a8 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2003, 2004, 2005 Lev Walkin <vlm@lionet.info>.
+ * Copyright (c) 2003, 2004, 2005, 2006 Lev Walkin <vlm@lionet.info>.
  * All rights reserved.
  * Redistribution and modifications are permitted subject to BSD license.
  */
@@ -121,7 +121,10 @@
 	int edx;			/* SET element's index */
 
 	ASN_DEBUG("Decoding %s as SET", td->name);
-	
+
+	if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx))
+		_ASN_DECODE_FAILED;
+
 	/*
 	 * Create the target structure if it is not present already.
 	 */
@@ -862,6 +865,144 @@
 	_ASN_ENCODE_FAILED;
 }
 
+asn_dec_rval_t
+SET_decode_uper(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
+	asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
+	asn_SET_specifics_t *specs = (asn_SET_specifics_t *)td->specifics;
+	void *st = *sptr;	/* Target structure. */
+	int extpresent = 0;	/* Extension additions are present */
+	uint8_t *opres;		/* Presence of optional root members */
+	asn_per_data_t opmd;
+	asn_dec_rval_t rv;
+	int edx;
+
+	(void)constraints;
+
+	ASN_DEBUG("Decoding %s as SET", td->name);
+
+	if(_ASN_STACK_OVERFLOW_CHECK(opt_codec_ctx))
+		_ASN_DECODE_FAILED;
+
+	if(!st) {
+		st = *sptr = CALLOC(1, specs->struct_size);
+		if(!st) _ASN_DECODE_FAILED;
+	}
+
+	ASN_DEBUG("Decoding %s as SEQUENCE (UPER)", td->name);
+
+	/* Handle extensions */
+	if(specs->ext_before >= 0) {
+		extpresent = per_get_few_bits(pd, 1);
+		if(extpresent < 0) _ASN_DECODE_FAILED;
+	}
+
+	/* Prepare a place and read-in the presence bitmap */
+	if(specs->roms_count) {
+		opres = (uint8_t *)MALLOC(((specs->roms_count + 7) >> 3) + 1);
+		if(!opres) _ASN_DECODE_FAILED;
+		/* Get the presence map */
+		if(per_get_many_bits(pd, opres, 0, specs->roms_count)) {
+			FREEMEM(opres);
+			_ASN_DECODE_FAILED;
+		}
+		opmd.buffer = opres;
+		opmd.nboff = 0;
+		opmd.nbits = specs->roms_count;
+		ASN_DEBUG("Read in presence bitmap for %s of %d bits (%x..)",
+			td->name, specs->roms_count, *opres);
+	} else {
+		opres = 0;
+		memset(&opmd, 0, sizeof opmd);
+	}
+
+	/*
+	 * Get the sequence ROOT elements.
+	 */
+	for(edx = 0; edx < ((specs->ext_before < 0)
+			? td->elements_count : specs->ext_before + 1); edx++) {
+		asn_TYPE_member_t *elm = &td->elements[edx];
+		void *memb_ptr;		/* Pointer to the member */
+		void **memb_ptr2;	/* Pointer to that pointer */
+
+		/* Fetch the pointer to this member */
+		if(elm->flags & ATF_POINTER) {
+			memb_ptr2 = (void **)((char *)st + elm->memb_offset);
+		} else {
+			memb_ptr = (char *)st + elm->memb_offset;
+			memb_ptr2 = &memb_ptr;
+		}
+
+		/* Deal with optionality */
+		if(elm->optional) {
+			int present = per_get_few_bits(&opmd, 1);
+			ASN_DEBUG("Member %s->%s is optional, p=%d (%d->%d)",
+				td->name, elm->name, present,
+				(int)opmd.nboff, (int)opmd.nbits);
+			if(present == 0) {
+				/* This element is not present */
+				if(elm->default_value) {
+					/* Fill-in DEFAULT */
+					if(elm->default_value(1, memb_ptr2)) {
+						FREEMEM(opres);
+						_ASN_DECODE_FAILED;
+					}
+				}
+				/* The member is just not present */
+				continue;
+			}
+			/* Fall through */
+		}
+
+		/* Fetch the member from the stream */
+		ASN_DEBUG("Decoding member %s in %s", elm->name, td->name);
+		rv = elm->type->uper_decoder(opt_codec_ctx, elm->type,
+			elm->per_constraints, memb_ptr2, pd);
+		if(rv.code != RC_OK) {
+			ASN_DEBUG("Failed decode %s in %s",
+				elm->name, td->name);
+			FREEMEM(opres);
+			return rv;
+		}
+	}
+
+	/*
+	 * Deal with extensions.
+	 */
+	if(extpresent) {
+		ASN_DEBUG("Extensibility for %s: NOT IMPLEMENTED", td->name);
+		_ASN_DECODE_FAILED;
+	} else {
+		for(edx = specs->roms_count; edx < specs->roms_count
+				+ specs->aoms_count; edx++) {
+			asn_TYPE_member_t *elm = &td->elements[edx];
+			void *memb_ptr;		/* Pointer to the member */
+			void **memb_ptr2;	/* Pointer to that pointer */
+
+			if(!elm->default_value) continue;
+
+			/* Fetch the pointer to this member */
+			if(elm->flags & ATF_POINTER) {
+				memb_ptr2 = (void **)((char *)st
+						+ elm->memb_offset);
+			} else {
+				memb_ptr = (char *)st + elm->memb_offset;
+				memb_ptr2 = &memb_ptr;
+			}
+
+			/* Set default value */
+			if(elm->default_value(1, memb_ptr2)) {
+				FREEMEM(opres);
+				_ASN_DECODE_FAILED;
+			}
+		}
+	}
+
+	rv.consumed = 0;
+	rv.code = RC_OK;
+	FREEMEM(opres);
+	return rv;
+}
+
 int
 SET_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
 		asn_app_consume_bytes_f *cb, void *app_key) {
diff --git a/skeletons/constr_SET.h b/skeletons/constr_SET.h
index 3adfb33..0c78ed5 100644
--- a/skeletons/constr_SET.h
+++ b/skeletons/constr_SET.h
@@ -52,6 +52,8 @@
 der_type_encoder_f SET_encode_der;
 xer_type_decoder_f SET_decode_xer;
 xer_type_encoder_f SET_encode_xer;
+per_type_decoder_f SET_decode_uper;
+per_type_encoder_f SET_encode_uper;
 
 /***********************
  * Some handy helpers. *