valuesettypeassignment parsing


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1105 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 33d56f9..9bbad6e 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -223,7 +223,7 @@
 
 
 
-#define	YYFINAL		443
+#define	YYFINAL		444
 #define	YYFLAG		-32768
 #define	YYNTBASE	120
 
@@ -275,30 +275,30 @@
     57,    60,    63,    64,    66,    68,    71,    73,    75,    77,
     79,    81,    82,    86,    88,    92,    95,    97,   100,   101,
    103,   108,   110,   114,   116,   120,   122,   126,   130,   133,
-   135,   139,   141,   145,   147,   148,   155,   157,   159,   164,
-   168,   172,   179,   181,   185,   187,   191,   195,   199,   201,
-   205,   207,   209,   211,   212,   214,   216,   220,   224,   227,
-   231,   233,   235,   239,   242,   244,   246,   252,   253,   255,
-   257,   261,   264,   269,   273,   277,   281,   285,   289,   290,
-   292,   293,   300,   302,   305,   307,   309,   311,   315,   317,
-   321,   325,   329,   330,   333,   335,   340,   345,   350,   357,
-   364,   366,   371,   375,   377,   381,   385,   389,   391,   395,
-   397,   401,   403,   405,   407,   409,   413,   417,   419,   424,
-   426,   428,   432,   433,   437,   439,   441,   443,   445,   447,
-   449,   451,   453,   457,   459,   461,   463,   465,   468,   470,
-   472,   474,   476,   479,   482,   484,   486,   489,   492,   494,
-   496,   498,   500,   502,   505,   507,   510,   512,   514,   516,
-   518,   520,   522,   524,   526,   528,   530,   532,   534,   536,
-   538,   540,   542,   544,   546,   548,   549,   551,   553,   558,
-   562,   567,   569,   573,   579,   581,   585,   589,   593,   597,
-   602,   606,   608,   610,   614,   618,   622,   626,   628,   630,
-   631,   637,   639,   642,   645,   649,   651,   653,   655,   657,
-   659,   661,   663,   665,   669,   675,   677,   681,   683,   687,
-   688,   690,   692,   694,   696,   698,   700,   704,   709,   711,
-   715,   718,   722,   724,   728,   729,   731,   733,   736,   739,
-   743,   745,   749,   751,   756,   761,   763,   765,   767,   769,
-   770,   772,   775,   780,   781,   783,   785,   787,   788,   790,
-   792,   794,   796,   798,   799,   801
+   135,   139,   141,   145,   147,   151,   156,   158,   160,   165,
+   169,   173,   180,   182,   186,   188,   192,   196,   200,   202,
+   206,   208,   210,   212,   213,   215,   217,   221,   225,   228,
+   232,   234,   236,   240,   243,   245,   247,   253,   254,   256,
+   258,   262,   265,   270,   274,   278,   282,   286,   290,   291,
+   293,   294,   301,   303,   306,   308,   310,   312,   316,   318,
+   322,   326,   330,   331,   334,   336,   341,   346,   351,   358,
+   365,   367,   372,   376,   378,   382,   386,   390,   392,   396,
+   398,   402,   404,   406,   408,   410,   414,   418,   420,   425,
+   427,   429,   433,   434,   438,   440,   442,   444,   446,   448,
+   450,   452,   454,   458,   460,   462,   464,   466,   469,   471,
+   473,   475,   477,   480,   483,   485,   487,   490,   493,   495,
+   497,   499,   501,   503,   506,   508,   511,   513,   515,   517,
+   519,   521,   523,   525,   527,   529,   531,   533,   535,   537,
+   539,   541,   543,   545,   547,   549,   550,   552,   554,   559,
+   563,   568,   570,   574,   580,   582,   586,   590,   594,   598,
+   603,   607,   609,   611,   615,   619,   623,   627,   629,   631,
+   632,   638,   640,   643,   646,   650,   652,   654,   656,   658,
+   660,   662,   664,   666,   670,   676,   678,   682,   684,   688,
+   689,   691,   693,   695,   697,   699,   701,   705,   710,   712,
+   716,   719,   723,   725,   729,   730,   732,   734,   737,   740,
+   744,   746,   750,   752,   757,   762,   764,   766,   768,   770,
+   771,   773,   776,   781,   782,   784,   786,   788,   789,   791,
+   793,   795,   797,   799,   800,   802
 };
 
 static const short yyrhs[] = {   121,
@@ -309,115 +309,115 @@
    128,     0,   129,     0,   128,   129,     0,    45,    88,     0,
     56,    88,     0,    24,    88,     0,    47,    57,     0,    15,
     61,     0,     0,   131,     0,   132,     0,   131,   132,     0,
-   134,     0,   140,     0,   146,     0,   176,     0,   143,     0,
+   134,     0,   140,     0,   146,     0,   176,     0,   144,     0,
      0,    42,    15,   133,     0,   186,     0,    58,   135,   111,
      0,    58,    50,     0,   137,     0,   135,   137,     0,     0,
    124,     0,   138,    50,   223,   136,     0,   139,     0,   138,
    112,   139,     0,   223,     0,   223,   107,   108,     0,   226,
      0,    46,   141,   111,     0,    46,    21,   111,     0,    46,
    111,     0,   142,     0,   141,   112,   142,     0,   223,     0,
-   223,   107,   108,     0,   226,     0,     0,   223,   145,     3,
-   107,   144,   182,     0,   185,     0,   170,     0,   170,   107,
-   149,   108,     0,   223,     3,   166,     0,   223,     3,   156,
-     0,   223,   107,   147,   108,     3,   166,     0,   148,     0,
-   147,   112,   148,     0,   223,     0,   223,   113,   226,     0,
-   223,   113,   223,     0,   183,   113,   226,     0,   150,     0,
-   149,   112,   150,     0,   166,     0,   179,     0,   226,     0,
-     0,   152,     0,   153,     0,   152,   112,   153,     0,   226,
-   166,   212,     0,   166,   212,     0,    34,    72,   166,     0,
-   165,     0,   155,     0,   154,   112,   155,     0,   226,   166,
-     0,   165,     0,   166,     0,    32,   107,   158,   108,   160,
-     0,     0,    92,     0,   159,     0,   158,   112,   159,     0,
-    16,   212,     0,    17,   166,   157,   212,     0,    17,   174,
-   212,     0,    17,   175,   212,     0,    16,   174,   212,     0,
-    16,   166,   212,     0,    16,   175,   212,     0,     0,   161,
-     0,     0,    99,    86,   107,   162,   163,   108,     0,   164,
-     0,   163,   164,     0,     4,     0,    18,     0,   173,     0,
-   114,   163,   115,     0,   106,     0,   106,   116,   180,     0,
-   106,   116,   217,     0,   218,   168,   190,     0,     0,   167,
-   169,     0,   145,     0,    31,   107,   154,   108,     0,    82,
-   107,   151,   108,     0,    83,   107,   151,   108,     0,    82,
-   190,    72,   225,   218,   168,     0,    83,   190,    72,   225,
-   218,   168,     0,    22,     0,    22,    39,    29,   226,     0,
-    60,    72,   170,     0,    14,     0,    14,   117,   223,     0,
-   224,   117,   223,     0,    14,   117,   226,     0,   224,     0,
-   224,   117,   171,     0,   172,     0,   171,   117,   172,     0,
-   173,     0,    16,     0,    17,     0,    16,     0,   174,   117,
-    16,     0,   174,   117,    17,     0,    15,     0,   226,   145,
-     3,   177,     0,   179,     0,   180,     0,   226,   113,   177,
-     0,     0,   107,   178,   182,     0,    67,     0,    49,     0,
-    90,     0,     6,     0,     8,     0,   181,     0,   217,     0,
-   226,     0,   223,   117,   226,     0,     7,     0,    11,     0,
-    12,     0,     5,     0,   182,     5,     0,    28,     0,    67,
-     0,    80,     0,   184,     0,    71,    85,     0,    69,    55,
-     0,    81,     0,    48,     0,    40,    75,     0,    30,    85,
-     0,    95,     0,    51,     0,   186,     0,    62,     0,    44,
-     0,    26,    85,     0,   183,     0,   184,   214,     0,    27,
-     0,    52,     0,    53,     0,    54,     0,    63,     0,    68,
-     0,    78,     0,    87,     0,    89,     0,    94,     0,    96,
-     0,    97,     0,    98,     0,    70,     0,   103,     0,   104,
-     0,   101,     0,   102,     0,   100,     0,     0,   191,     0,
-   192,     0,    84,   109,   193,   110,     0,   109,   193,   110,
-     0,   192,   109,   193,   110,     0,   194,     0,   194,   112,
-   106,     0,   194,   112,   106,   112,   194,     0,   195,     0,
-    21,   100,   195,     0,   194,   187,   195,     0,   194,   188,
-   195,     0,   195,   189,   195,     0,   198,   109,   193,   110,
-     0,   109,   193,   110,     0,   199,     0,   200,     0,   199,
-   197,   199,     0,    65,   197,   199,     0,   199,   197,    64,
-     0,    65,   197,    64,     0,   206,     0,   201,     0,     0,
-    35,    29,   107,   196,   182,     0,   105,     0,   105,   118,
-     0,   118,   105,     0,   118,   105,   118,     0,    84,     0,
-    50,     0,    49,     0,    90,     0,   217,     0,   181,     0,
-   226,     0,   223,     0,    99,    33,   192,     0,    99,    34,
-   107,   202,   108,     0,   203,     0,   202,   112,   203,     0,
-   106,     0,   226,   190,   204,     0,     0,   205,     0,    77,
-     0,    19,     0,    73,     0,   207,     0,   208,     0,   107,
-   223,   108,     0,   207,   107,   209,   108,     0,   210,     0,
-   209,   112,   210,     0,   119,   211,     0,   119,   117,   211,
-     0,   226,     0,   211,   117,   226,     0,     0,   213,     0,
-    73,     0,    37,   177,     0,   107,   108,     0,   107,   215,
-   108,     0,   216,     0,   215,   112,   216,     0,   226,     0,
-   226,   109,   217,   110,     0,   226,   109,   180,   110,     0,
-   217,     0,   106,     0,    10,     0,    13,     0,     0,   219,
-     0,   220,   222,     0,   114,   221,    10,   115,     0,     0,
-    93,     0,    23,     0,    79,     0,     0,    56,     0,    45,
-     0,    14,     0,    15,     0,    15,     0,     0,   226,     0,
-     9,     0
+   223,   107,   108,     0,   226,     0,   107,   193,   108,     0,
+   223,   145,     3,   143,     0,   185,     0,   170,     0,   170,
+   107,   149,   108,     0,   223,     3,   166,     0,   223,     3,
+   156,     0,   223,   107,   147,   108,     3,   166,     0,   148,
+     0,   147,   112,   148,     0,   223,     0,   223,   113,   226,
+     0,   223,   113,   223,     0,   183,   113,   226,     0,   150,
+     0,   149,   112,   150,     0,   166,     0,   179,     0,   226,
+     0,     0,   152,     0,   153,     0,   152,   112,   153,     0,
+   226,   166,   212,     0,   166,   212,     0,    34,    72,   166,
+     0,   165,     0,   155,     0,   154,   112,   155,     0,   226,
+   166,     0,   165,     0,   166,     0,    32,   107,   158,   108,
+   160,     0,     0,    92,     0,   159,     0,   158,   112,   159,
+     0,    16,   212,     0,    17,   166,   157,   212,     0,    17,
+   174,   212,     0,    17,   175,   212,     0,    16,   174,   212,
+     0,    16,   166,   212,     0,    16,   175,   212,     0,     0,
+   161,     0,     0,    99,    86,   107,   162,   163,   108,     0,
+   164,     0,   163,   164,     0,     4,     0,    18,     0,   173,
+     0,   114,   163,   115,     0,   106,     0,   106,   116,   180,
+     0,   106,   116,   217,     0,   218,   168,   190,     0,     0,
+   167,   169,     0,   145,     0,    31,   107,   154,   108,     0,
+    82,   107,   151,   108,     0,    83,   107,   151,   108,     0,
+    82,   190,    72,   225,   218,   168,     0,    83,   190,    72,
+   225,   218,   168,     0,    22,     0,    22,    39,    29,   226,
+     0,    60,    72,   170,     0,    14,     0,    14,   117,   223,
+     0,   224,   117,   223,     0,    14,   117,   226,     0,   224,
+     0,   224,   117,   171,     0,   172,     0,   171,   117,   172,
+     0,   173,     0,    16,     0,    17,     0,    16,     0,   174,
+   117,    16,     0,   174,   117,    17,     0,    15,     0,   226,
+   145,     3,   177,     0,   179,     0,   180,     0,   226,   113,
+   177,     0,     0,   107,   178,   182,     0,    67,     0,    49,
+     0,    90,     0,     6,     0,     8,     0,   181,     0,   217,
+     0,   226,     0,   223,   117,   226,     0,     7,     0,    11,
+     0,    12,     0,     5,     0,   182,     5,     0,    28,     0,
+    67,     0,    80,     0,   184,     0,    71,    85,     0,    69,
+    55,     0,    81,     0,    48,     0,    40,    75,     0,    30,
+    85,     0,    95,     0,    51,     0,   186,     0,    62,     0,
+    44,     0,    26,    85,     0,   183,     0,   184,   214,     0,
+    27,     0,    52,     0,    53,     0,    54,     0,    63,     0,
+    68,     0,    78,     0,    87,     0,    89,     0,    94,     0,
+    96,     0,    97,     0,    98,     0,    70,     0,   103,     0,
+   104,     0,   101,     0,   102,     0,   100,     0,     0,   191,
+     0,   192,     0,    84,   109,   193,   110,     0,   109,   193,
+   110,     0,   192,   109,   193,   110,     0,   194,     0,   194,
+   112,   106,     0,   194,   112,   106,   112,   194,     0,   195,
+     0,    21,   100,   195,     0,   194,   187,   195,     0,   194,
+   188,   195,     0,   195,   189,   195,     0,   198,   109,   193,
+   110,     0,   109,   193,   110,     0,   199,     0,   200,     0,
+   199,   197,   199,     0,    65,   197,   199,     0,   199,   197,
+    64,     0,    65,   197,    64,     0,   206,     0,   201,     0,
+     0,    35,    29,   107,   196,   182,     0,   105,     0,   105,
+   118,     0,   118,   105,     0,   118,   105,   118,     0,    84,
+     0,    50,     0,    49,     0,    90,     0,   217,     0,   181,
+     0,   226,     0,   223,     0,    99,    33,   192,     0,    99,
+    34,   107,   202,   108,     0,   203,     0,   202,   112,   203,
+     0,   106,     0,   226,   190,   204,     0,     0,   205,     0,
+    77,     0,    19,     0,    73,     0,   207,     0,   208,     0,
+   107,   223,   108,     0,   207,   107,   209,   108,     0,   210,
+     0,   209,   112,   210,     0,   119,   211,     0,   119,   117,
+   211,     0,   226,     0,   211,   117,   226,     0,     0,   213,
+     0,    73,     0,    37,   177,     0,   107,   108,     0,   107,
+   215,   108,     0,   216,     0,   215,   112,   216,     0,   226,
+     0,   226,   109,   217,   110,     0,   226,   109,   180,   110,
+     0,   217,     0,   106,     0,    10,     0,    13,     0,     0,
+   219,     0,   220,   222,     0,   114,   221,    10,   115,     0,
+     0,    93,     0,    23,     0,    79,     0,     0,    56,     0,
+    45,     0,    14,     0,    15,     0,    15,     0,     0,   226,
+     0,     9,     0
 };
 
 #endif
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   322,   328,   334,   350,   375,   377,   380,   384,   389,   396,
-   404,   409,   413,   422,   424,   432,   436,   444,   448,   451,
-   454,   458,   478,   480,   488,   492,   524,   528,   537,   544,
-   557,   564,   566,   578,   590,   601,   606,   612,   618,   620,
-   623,   634,   640,   646,   653,   659,   667,   671,   674,   681,
-   687,   693,   700,   706,   715,   717,   726,   740,   750,   766,
-   776,   792,   800,   810,   820,   825,   832,   839,   849,   855,
-   861,   865,   873,   900,   902,   904,   910,   916,   924,   930,
-   937,   942,   948,   954,   960,   963,   969,   979,   981,   984,
-   992,   999,  1012,  1023,  1033,  1044,  1054,  1065,  1076,  1078,
-  1083,  1087,  1092,  1097,  1103,  1108,  1111,  1115,  1120,  1129,
-  1138,  1149,  1171,  1178,  1197,  1201,  1207,  1213,  1219,  1229,
-  1239,  1245,  1257,  1271,  1280,  1290,  1300,  1310,  1318,  1339,
-  1348,  1357,  1359,  1366,  1373,  1379,  1383,  1389,  1409,  1419,
-  1421,  1422,  1429,  1429,  1434,  1441,  1447,  1452,  1456,  1460,
-  1463,  1468,  1480,  1497,  1502,  1507,  1540,  1550,  1564,  1566,
-  1567,  1568,  1569,  1570,  1571,  1572,  1573,  1574,  1575,  1576,
-  1577,  1583,  1585,  1586,  1589,  1596,  1608,  1610,  1614,  1618,
-  1619,  1620,  1621,  1622,  1626,  1627,  1628,  1629,  1633,  1634,
-  1641,  1641,  1642,  1642,  1643,  1645,  1647,  1652,  1656,  1665,
-  1669,  1674,  1678,  1684,  1694,  1698,  1701,  1704,  1707,  1712,
-  1721,  1729,  1735,  1741,  1748,  1756,  1764,  1773,  1776,  1779,
-  1780,  1790,  1792,  1793,  1794,  1797,  1801,  1806,  1812,  1817,
-  1820,  1823,  1836,  1850,  1854,  1859,  1863,  1868,  1875,  1888,
-  1890,  1893,  1897,  1900,  1905,  1909,  1917,  1932,  1938,  1945,
-  1958,  1970,  1985,  1989,  2006,  2011,  2014,  2019,  2041,  2046,
-  2051,  2057,  2063,  2071,  2079,  2087,  2094,  2104,  2109,  2139,
-  2141,  2144,  2151,  2157,  2159,  2160,  2161,  2164,  2166,  2167,
-  2170,  2175,  2182,  2189,  2191,  2196
+   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,   565,   567,   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,   802,   812,   822,   827,   834,   841,   851,   857,
+   863,   867,   875,   902,   904,   906,   912,   918,   926,   932,
+   939,   944,   950,   956,   962,   965,   971,   981,   983,   986,
+   994,  1001,  1014,  1025,  1035,  1046,  1056,  1067,  1078,  1080,
+  1085,  1089,  1094,  1099,  1105,  1110,  1113,  1117,  1122,  1131,
+  1140,  1151,  1173,  1180,  1199,  1203,  1209,  1215,  1221,  1231,
+  1241,  1247,  1259,  1273,  1282,  1292,  1302,  1312,  1320,  1341,
+  1350,  1359,  1361,  1368,  1375,  1381,  1385,  1391,  1411,  1421,
+  1423,  1424,  1431,  1431,  1436,  1443,  1449,  1454,  1458,  1462,
+  1465,  1470,  1482,  1499,  1504,  1509,  1542,  1552,  1566,  1568,
+  1569,  1570,  1571,  1572,  1573,  1574,  1575,  1576,  1577,  1578,
+  1579,  1585,  1587,  1588,  1591,  1598,  1610,  1612,  1616,  1620,
+  1621,  1622,  1623,  1624,  1628,  1629,  1630,  1631,  1635,  1636,
+  1643,  1643,  1644,  1644,  1645,  1647,  1649,  1654,  1658,  1667,
+  1671,  1676,  1680,  1686,  1696,  1700,  1703,  1706,  1709,  1714,
+  1723,  1731,  1737,  1743,  1750,  1758,  1766,  1775,  1778,  1781,
+  1782,  1792,  1794,  1795,  1796,  1799,  1803,  1808,  1814,  1819,
+  1822,  1825,  1838,  1852,  1856,  1861,  1865,  1870,  1877,  1890,
+  1892,  1895,  1899,  1902,  1907,  1911,  1919,  1934,  1940,  1947,
+  1960,  1972,  1987,  1991,  2008,  2013,  2016,  2021,  2043,  2048,
+  2053,  2059,  2065,  2073,  2081,  2089,  2096,  2106,  2111,  2141,
+  2143,  2146,  2153,  2159,  2161,  2162,  2163,  2166,  2168,  2169,
+  2172,  2177,  2184,  2191,  2193,  2198
 };
 #endif
 
@@ -450,18 +450,18 @@
 "ModuleSpecificationFlags","ModuleSpecificationFlag","optModuleSpecificationBody",
 "ModuleSpecificationBody","ModuleSpecificationElement","@1","ImportsDefinition",
 "ImportsBundleSet","AssignedIdentifier","ImportsBundle","ImportsList","ImportsElement",
-"ExportsDefinition","ExportsBody","ExportsElement","ValueSetDefinition","@2",
+"ExportsDefinition","ExportsBody","ExportsElement","ValueSet","ValueSetTypeAssignment",
 "DefinedType","DataTypeReference","ParameterArgumentList","ParameterArgumentName",
 "Specializations","Specialization","optComponentTypeLists","ComponentTypeLists",
 "ComponentType","AlternativeTypeLists","AlternativeType","ObjectClass","optUnique",
-"FieldSpec","ClassField","optWithSyntax","WithSyntax","@3","WithSyntaxList",
+"FieldSpec","ClassField","optWithSyntax","WithSyntax","@2","WithSyntaxList",
 "WithSyntaxToken","ExtensionAndException","Type","NSTD_IndirectMarker","TypeDeclaration",
 "TypeDeclarationSet","ComplexTypeReference","ComplexTypeReferenceAmpList","ComplexTypeReferenceElement",
 "PrimitiveFieldReference","FieldName","DefinedObjectClass","ValueDefinition",
-"Value","@4","SimpleValue","DefinedValue","RestrictedCharacterStringValue","Opaque",
+"Value","@3","SimpleValue","DefinedValue","RestrictedCharacterStringValue","Opaque",
 "BasicTypeId","BasicTypeId_UniverationCompatible","BasicType","BasicString",
 "Union","Intersection","Except","optConstraints","Constraints","SetOfConstraints",
-"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","@5","ConstraintRangeSpec",
+"ElementSetSpecs","ElementSetSpec","ConstraintSubtypeElement","@4","ConstraintRangeSpec",
 "ConstraintSpec","SingleValue","ContainedSubtype","InnerTypeConstraint","WithComponentsList",
 "WithComponentsElement","optPresenceConstraint","PresenceConstraint","TableConstraint",
 "SimpleTableConstraint","ComponentRelationConstraint","AtNotationList","AtNotationElement",
@@ -477,7 +477,7 @@
    129,   129,   130,   130,   131,   131,   132,   132,   132,   132,
    132,   133,   132,   132,   134,   134,   135,   135,   136,   136,
    137,   138,   138,   139,   139,   139,   140,   140,   140,   141,
-   141,   142,   142,   142,   144,   143,   145,   145,   145,   146,
+   141,   142,   142,   142,   143,   144,   145,   145,   145,   146,
    146,   146,   147,   147,   148,   148,   148,   148,   149,   149,
    150,   150,   150,   151,   151,   152,   152,   153,   153,   153,
    153,   154,   154,   155,   155,   155,   156,   157,   157,   158,
@@ -509,7 +509,7 @@
      2,     2,     0,     1,     1,     2,     1,     1,     1,     1,
      1,     0,     3,     1,     3,     2,     1,     2,     0,     1,
      4,     1,     3,     1,     3,     1,     3,     3,     2,     1,
-     3,     1,     3,     1,     0,     6,     1,     1,     4,     3,
+     3,     1,     3,     1,     3,     4,     1,     1,     4,     3,
      3,     6,     1,     3,     1,     3,     3,     3,     1,     3,
      1,     1,     1,     0,     1,     1,     3,     3,     2,     3,
      1,     1,     3,     2,     1,     1,     5,     0,     1,     1,
@@ -552,184 +552,181 @@
      0,    63,     0,   162,    65,     0,   270,     0,   176,     0,
      0,    51,    53,    39,    43,    45,     0,   276,   277,   275,
      0,     0,   196,   280,   279,   272,   125,   127,     0,     0,
-     0,     0,    55,   148,   154,   149,   268,   155,   156,   269,
-   146,   147,     0,    69,    71,    72,   150,   151,    73,   267,
-   259,     0,   261,   266,   263,   133,   134,   129,   130,   132,
-   126,   145,   143,   139,   140,   141,     0,   152,    40,    41,
-   270,   270,     0,    90,     0,   121,     0,     0,   196,   196,
-   115,   114,     0,     0,   112,   197,   198,   270,    64,    68,
-    67,    66,     0,    59,   270,   260,     0,     0,     0,     0,
-     0,     0,   138,   135,     0,   257,   255,   255,   255,    92,
-   256,    88,   255,   255,    99,     0,   273,     0,   270,     0,
-   270,     0,   270,     0,     0,     0,     0,   228,   227,     0,
-   226,   229,     0,     0,     0,   231,     0,   202,   205,     0,
-   212,   213,   219,   218,   245,   246,   230,   233,   232,     0,
-    62,   157,    56,    70,   262,     0,     0,   152,   131,   144,
-   153,   142,   258,    97,     0,    96,    98,    89,   255,    94,
-    95,     0,    87,   100,    91,     0,   109,     0,    82,    85,
-    86,   270,   123,     0,     0,    75,    76,    81,   255,   270,
-   284,     0,   284,     0,     0,     0,   222,     0,     0,     0,
-     0,     0,     0,   200,   193,   194,   191,   192,     0,     0,
-     0,   195,     0,     0,     0,     0,     0,   158,   265,   264,
-   136,   137,    93,     0,   122,     0,   116,   270,    84,   270,
-   117,   270,    79,   255,   270,   285,   118,   270,   199,   206,
-   220,   223,   224,   217,   215,   234,     0,   247,   211,   203,
-   207,   208,   209,     0,   216,   214,     0,     0,   249,   201,
-   101,   110,   111,    83,    80,    77,    78,   113,   113,     0,
-   225,   238,     0,   236,   196,     0,   210,     0,   251,   253,
-   248,     0,     0,   119,   120,   221,   235,     0,   240,   204,
-   252,     0,   250,   105,   106,     0,     0,   103,   107,   237,
-   243,   244,   242,   239,   241,   254,     0,   102,   104,   108,
-     0,     0,     0
+     0,     0,     0,    56,   148,   154,   149,   268,   155,   156,
+   269,   146,   147,     0,    69,    71,    72,   150,   151,    73,
+   267,   259,     0,   261,   266,   263,   133,   134,   129,   130,
+   132,   126,   145,   143,   139,   140,   141,     0,   152,    40,
+    41,   270,   270,     0,    90,     0,   121,     0,     0,   196,
+   196,   115,   114,     0,     0,   112,   197,   198,   270,    64,
+    68,    67,    66,     0,     0,   228,   227,     0,   226,   229,
+     0,     0,     0,   231,     0,   202,   205,     0,   212,   213,
+   219,   218,   245,   246,   230,   233,   232,    59,   270,   260,
+     0,     0,     0,     0,     0,     0,   138,   135,     0,   257,
+   255,   255,   255,    92,   256,    88,   255,   255,    99,     0,
+   273,     0,   270,     0,   270,     0,   270,     0,     0,     0,
+     0,    62,     0,     0,   222,     0,     0,     0,     0,     0,
+     0,    55,   193,   194,   191,   192,     0,     0,     0,   195,
+     0,     0,     0,     0,    70,   262,     0,     0,   152,   131,
+   157,   144,   153,   142,   258,    97,     0,    96,    98,    89,
+   255,    94,    95,     0,    87,   100,    91,     0,   109,     0,
+    82,    85,    86,   270,   123,     0,     0,    75,    76,    81,
+   255,   270,   284,     0,   284,     0,   200,     0,   206,   220,
+   223,   224,   217,   215,   234,     0,   247,   211,   203,   207,
+   208,   209,     0,   216,   214,     0,     0,   249,   265,   264,
+   158,   136,   137,    93,     0,   122,     0,   116,   270,    84,
+   270,   117,   270,    79,   255,   270,   285,   118,   270,   199,
+   201,     0,   225,   238,     0,   236,   196,     0,   210,     0,
+   251,   253,   248,     0,   101,   110,   111,    83,    80,    77,
+    78,   113,   113,   221,   235,     0,   240,   204,   252,     0,
+   250,     0,   119,   120,   237,   243,   244,   242,   239,   241,
+   254,   105,   106,     0,     0,   103,   107,     0,   102,   104,
+   108,     0,     0,     0
 };
 
-static const short yydefgoto[] = {   441,
+static const short yydefgoto[] = {   442,
      3,     4,     8,     9,    13,    14,    25,    26,    27,    55,
-    56,    57,   108,    58,    74,   200,    75,    76,    77,    59,
-    69,    70,    60,   223,   100,    61,   131,   132,   173,   174,
-   315,   316,   317,   308,   309,   120,   299,   203,   204,   303,
-   304,   413,   427,   428,   318,   319,   152,   153,   212,   101,
-   188,   189,   429,   238,   239,    62,   194,   230,   195,   196,
-   266,   283,   102,   103,   104,   105,   340,   341,   343,   215,
-   216,   217,   267,   268,   269,   400,   329,   270,   271,   272,
-   273,   403,   404,   434,   435,   274,   275,   276,   388,   389,
-   409,   240,   241,   139,   182,   183,   277,   122,   123,   124,
-   151,   156,   278,   106,   365,   279
+    56,    57,   108,    58,    74,   201,    75,    76,    77,    59,
+    69,    70,   164,    60,   100,    61,   131,   132,   174,   175,
+   337,   338,   339,   330,   331,   120,   321,   204,   205,   325,
+   326,   422,   435,   436,   340,   341,   152,   153,   213,   101,
+   189,   190,   437,   262,   263,    62,   195,   254,   196,   197,
+   234,   312,   102,   103,   104,   105,   298,   299,   301,   216,
+   217,   218,   235,   236,   237,   392,   287,   238,   239,   240,
+   241,   395,   396,   429,   430,   242,   243,   244,   367,   368,
+   401,   264,   265,   139,   183,   184,   245,   122,   123,   124,
+   151,   156,   246,   106,   386,   247
 };
 
-static const short yypact[] = {    58,
--32768,-32768,    58,-32768,   -52,-32768,    11,    63,-32768,-32768,
--32768,-32768,    19,-32768,   -13,   193,-32768,-32768,   105,    92,
-    20,    71,   108,   107,   197,   193,-32768,   101,-32768,-32768,
--32768,-32768,-32768,   212,-32768,-32768,   415,-32768,   230,    45,
--32768,-32768,-32768,   182,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   210,   415,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   240,   568,-32768,   152,-32768,   139,-32768,
-   162,-32768,-32768,    47,-32768,   -34,-32768,   164,-32768,-32768,
--32768,    37,   157,-32768,   204,-32768,   211,   226,-32768,-32768,
--32768,-32768,-32768,   251,   227,-32768,-32768,-32768,   644,   314,
-   217,-32768,   235,-32768,-32768,   202,   330,-32768,-32768,-32768,
-   200,   232,-32768,-32768,    58,   200,   253,   241,   134,-32768,
--32768,-32768,-32768,    36,   200,-32768,-32768,-32768,-32768,-32768,
-    95,-32768,   256,-32768,   260,   272,    76,    61,-32768,   367,
-   174,-32768,-32768,   -52,-32768,-32768,   288,-32768,-32768,-32768,
-   375,   492,    90,-32768,-32768,-32768,-32768,-32768,   384,   644,
-   381,   200,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   122,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   140,-32768,-32768,   289,-32768,-32768,   282,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   283,   293,-32768,-32768,
-    98,    32,   178,-32768,   292,   373,   306,   344,   188,   216,
--32768,-32768,   305,   353,-32768,-32768,   316,   309,-32768,-32768,
--32768,-32768,   421,-32768,    76,-32768,    67,   395,   315,   421,
-   381,   174,-32768,-32768,   174,-32768,    21,    99,    21,-32768,
--32768,   335,    99,    21,   329,   288,-32768,   404,    33,   268,
-    56,   362,    56,   363,   353,   336,   409,-32768,-32768,    74,
--32768,-32768,   319,    58,   353,-32768,   331,   274,   339,   337,
-    74,-32768,-32768,-32768,   333,-32768,-32768,-32768,-32768,   353,
--32768,-32768,   439,-32768,-32768,   338,   340,-32768,-32768,   439,
--32768,-32768,-32768,-32768,   342,-32768,-32768,-32768,    21,-32768,
--32768,   359,-32768,-32768,-32768,   381,   343,   214,-32768,-32768,
--32768,   309,-32768,   377,   345,   346,-32768,-32768,    21,   309,
-   381,   347,   381,   341,   382,   349,   352,   358,   249,   355,
-   364,   357,   365,-32768,-32768,-32768,-32768,-32768,   348,   382,
-   382,-32768,   382,   353,   266,   360,   366,-32768,-32768,-32768,
--32768,-32768,-32768,   370,-32768,   395,-32768,    33,-32768,   309,
--32768,    34,-32768,    21,   309,-32768,-32768,   309,-32768,-32768,
--32768,-32768,   356,-32768,-32768,   316,    31,-32768,-32768,   368,
--32768,-32768,-32768,   372,-32768,-32768,     5,   233,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   421,
--32768,-32768,   242,-32768,    90,   353,-32768,   381,   369,-32768,
--32768,   360,    18,-32768,-32768,   439,-32768,    31,   158,   318,
-   369,   381,-32768,-32768,-32768,    18,    35,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,     9,-32768,-32768,-32768,
-   484,   487,-32768
+static const short yypact[] = {   275,
+-32768,-32768,   275,-32768,   -91,-32768,    17,    36,-32768,-32768,
+-32768,-32768,    56,-32768,   -47,   262,-32768,-32768,    54,    44,
+    41,    62,    91,    68,   175,   262,-32768,    82,-32768,-32768,
+-32768,-32768,-32768,   155,-32768,-32768,   453,-32768,   193,    75,
+-32768,-32768,-32768,   197,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   198,   453,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   337,   614,-32768,   132,-32768,   119,-32768,
+   144,-32768,-32768,     3,-32768,    57,-32768,   154,-32768,-32768,
+-32768,   -11,   184,-32768,   196,-32768,   223,   251,-32768,-32768,
+-32768,-32768,-32768,   273,   252,-32768,-32768,-32768,   690,   336,
+   243,-32768,   246,-32768,-32768,   241,   357,-32768,-32768,-32768,
+   290,   253,-32768,-32768,   275,   290,   254,   259,     9,-32768,
+-32768,-32768,-32768,   102,   290,-32768,-32768,-32768,-32768,-32768,
+    -2,-32768,   255,-32768,   258,   266,    70,   163,-32768,   308,
+   207,-32768,-32768,   -91,-32768,-32768,   303,-32768,-32768,-32768,
+   364,   538,   -38,-32768,-32768,-32768,-32768,-32768,   372,   690,
+   370,   290,   189,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    69,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,    85,-32768,-32768,   271,-32768,-32768,   265,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   269,   270,-32768,
+-32768,    71,    76,   128,-32768,   272,   353,   287,   323,    98,
+   125,-32768,-32768,   288,   189,-32768,-32768,   289,   282,-32768,
+-32768,-32768,-32768,   311,   373,-32768,-32768,   -50,-32768,-32768,
+   301,   275,   189,-32768,   293,   191,   312,   294,   -50,-32768,
+-32768,-32768,   307,-32768,-32768,-32768,-32768,-32768,    70,-32768,
+   178,   302,   329,   411,   370,   207,-32768,-32768,   207,-32768,
+    26,    48,    26,-32768,-32768,   327,    48,    26,   321,   303,
+-32768,   392,    39,   333,    60,   350,    60,   351,   189,   315,
+   189,-32768,   436,   322,   309,   325,   216,   319,   330,   328,
+   331,-32768,-32768,-32768,-32768,-32768,   332,   436,   436,-32768,
+   436,   189,   320,   334,-32768,-32768,   342,   344,-32768,-32768,
+-32768,   434,-32768,-32768,-32768,-32768,   338,-32768,-32768,-32768,
+    26,-32768,-32768,   354,-32768,-32768,-32768,   370,   326,   138,
+-32768,-32768,-32768,   282,-32768,   383,   348,   345,-32768,-32768,
+    26,   282,   370,   352,   370,   349,-32768,   355,-32768,-32768,
+-32768,   340,-32768,-32768,   289,    22,-32768,-32768,   358,-32768,
+-32768,-32768,   356,-32768,-32768,    -4,   164,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   362,-32768,   302,-32768,    39,-32768,
+   282,-32768,    61,-32768,    26,   282,-32768,-32768,   282,-32768,
+-32768,   411,-32768,-32768,   179,-32768,   -38,   189,-32768,   370,
+   346,-32768,-32768,   334,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   434,-32768,    22,    24,   240,   346,   370,
+-32768,    35,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,    35,    43,-32768,-32768,    18,-32768,-32768,
+-32768,   461,   464,-32768
 };
 
 static const short yypgoto[] = {-32768,
--32768,   485,-32768,   350,-32768,   477,-32768,-32768,   466,-32768,
--32768,   440,-32768,-32768,-32768,-32768,   423,-32768,   379,-32768,
--32768,   387,-32768,-32768,   -19,-32768,-32768,   361,-32768,   275,
-   246,-32768,   141,-32768,   143,-32768,-32768,-32768,   259,-32768,
--32768,-32768,    82,  -277,  -237,   -73,-32768,   -27,-32768,   265,
--32768,   281,  -109,   322,   323,-32768,   -30,-32768,  -122,  -218,
-   -31,  -225,   -67,   -49,-32768,     7,-32768,-32768,-32768,  -207,
--32768,   186,   -87,   111,     3,-32768,   255,-32768,  -238,-32768,
--32768,-32768,   109,-32768,-32768,-32768,-32768,-32768,-32768,   116,
-   121,  -220,-32768,-32768,-32768,   303,  -130,  -146,-32768,-32768,
--32768,-32768,     1,-32768,   208,    -7
+-32768,   469,-32768,   335,-32768,   460,-32768,-32768,   448,-32768,
+-32768,   419,-32768,-32768,-32768,-32768,   402,-32768,   361,-32768,
+-32768,   367,-32768,-32768,   -54,-32768,-32768,   324,-32768,   232,
+   205,-32768,   100,-32768,   108,-32768,-32768,-32768,   218,-32768,
+-32768,-32768,    55,  -176,  -244,   -79,-32768,   -56,-32768,   217,
+-32768,   237,  -133,   291,   295,-32768,    19,-32768,  -127,  -250,
+   -97,   101,   -49,   -45,-32768,   -14,-32768,-32768,-32768,  -202,
+-32768,   204,   -44,    99,   -16,-32768,   257,-32768,  -231,-32768,
+-32768,-32768,    84,-32768,-32768,-32768,-32768,-32768,-32768,   104,
+   103,  -248,-32768,-32768,-32768,   261,  -113,   -76,-32768,-32768,
+-32768,-32768,     1,-32768,   157,    -7
 };
 
 
-#define	YYLAST		742
+#define	YYLAST		788
 
 
 static const short yytable[] = {    15,
-     5,   252,   254,     5,   290,    15,   178,   184,   121,   286,
-   178,   310,   424,    10,   176,   115,   294,   296,   297,    10,
-    11,   424,   300,   301,   186,   187,   425,    10,    11,    65,
-   190,   133,    72,   186,   187,   425,    79,    64,   424,    10,
-    71,    10,    10,    63,    78,   107,   233,   234,    65,   134,
-   186,   187,   425,    10,     7,    10,    64,   235,     1,     2,
-     1,     2,    63,   175,    10,    67,    79,   314,   118,    10,
-   167,     1,     2,   170,    78,    10,   167,   116,   353,   170,
-   154,   164,   165,   166,    10,   167,   168,   169,   170,   314,
-   375,   155,   133,   236,   178,    19,   184,   287,   363,   135,
-    16,   178,   176,    72,   178,   177,   386,    30,    79,   177,
-   134,    71,   233,   234,    28,   144,    78,   158,    12,   190,
-   310,   408,   426,   440,   171,   157,    17,   237,   242,   179,
-   185,   426,   211,   198,   235,   235,   402,   392,   307,   307,
-   191,   197,   438,   397,   281,   119,   119,   119,   426,   439,
-   119,   175,    29,   220,   222,    68,   148,   113,    31,   439,
-   135,   307,   221,   -74,    32,   172,   180,   324,   181,   119,
-   236,   236,   180,   213,   416,   311,   431,   333,   327,   164,
-   165,   166,    10,   167,   168,   169,   170,     1,     2,   119,
-    10,   328,   347,   177,    33,     1,     2,   419,   214,    34,
-   177,   292,   159,   177,   293,  -255,   160,    20,    10,  -255,
-    36,   119,   149,     1,     2,   295,    21,   179,   398,   185,
-   288,   399,   171,   291,   198,   393,   150,   198,   197,   224,
-   432,    73,   197,   225,   433,   197,    37,    22,   359,    23,
-   192,   312,    82,   320,    66,   320,   364,   226,    24,   110,
-   111,   227,    80,    83,    84,   165,   384,    10,   167,   168,
-   169,   170,   109,   172,   332,    85,    38,    86,   112,    87,
-   117,   213,   165,   125,    10,   167,   168,   169,   170,    88,
-   193,    83,    84,    89,   311,   245,   395,    90,   126,   246,
-    91,    41,    42,    43,   251,   127,   214,   258,   355,   213,
-   128,    92,    45,   201,   202,   129,    93,    46,    94,    47,
-    95,   130,   374,   366,   258,   366,   136,    48,   140,    96,
-    97,   357,   253,   137,   214,   358,    49,   370,    50,   385,
-   186,   187,   141,    51,    98,    52,    53,    54,   262,   143,
-   411,   138,   381,   382,   412,   383,    99,   147,   288,   417,
-   312,   330,   331,   418,   320,   262,   197,   351,   352,   165,
-   146,    10,   167,   168,   169,   170,     1,     2,   161,   405,
-   414,   415,   162,   256,   335,   336,   337,   338,   163,   410,
-     1,     2,   186,   187,   205,   339,   218,   257,   165,    10,
-    10,   167,   168,   169,   170,     1,     2,   228,   229,   231,
-   410,   258,   259,    10,   167,   232,   247,   170,     1,     2,
-   405,   248,   249,   255,   436,   250,   257,   260,   335,   336,
-   337,   338,   119,    10,   280,   282,   298,   302,     1,     2,
-   258,   259,   306,   321,   323,   325,   261,   326,   342,   346,
-   334,    38,   262,   348,   354,   344,   260,   349,   360,   350,
-   369,   263,   361,   380,   367,   371,    39,   362,   356,   264,
-    40,   265,   373,   214,   378,   261,    41,    42,    43,   372,
-   377,   262,    44,   401,   379,   390,   391,    45,   387,   406,
-   263,   407,    46,   442,    47,   422,   443,     6,   264,    18,
-   265,    35,    48,   199,   145,    81,   114,   142,   322,   284,
-   394,    49,   396,    50,   305,    83,    84,   437,    51,   289,
-    52,    53,    54,   206,   313,   376,   420,    85,    38,    86,
-   219,    87,   207,   243,   244,   345,   430,   423,   421,   285,
-   368,    88,     0,     0,     0,    89,     0,     0,     0,    90,
-     0,     0,    91,    41,    42,    43,     0,     0,     0,     0,
-     0,   208,     0,    92,    45,     0,     0,     0,    93,    46,
-    94,    47,    95,     0,     0,     0,     0,     0,     0,    48,
-     0,    96,    97,   209,   210,     0,     0,     0,    49,     0,
-    50,    83,    84,     0,     0,    51,    98,    52,    53,    54,
-     0,     0,     0,    85,    38,    86,     0,    87,     0,     0,
+     5,   307,   121,     5,    10,    15,   191,   276,   278,   177,
+   107,    10,   316,   318,   319,     7,     1,     2,   322,   323,
+   118,   432,    63,   179,   185,    10,    11,   179,   332,    65,
+    10,   148,    72,   187,   188,   433,    79,    64,   432,   178,
+    71,    63,   426,   178,    78,   214,   432,    10,    65,   133,
+   187,   188,   433,   134,   285,   354,    64,   176,   187,   188,
+   433,    19,   259,    28,    10,    11,    79,   286,    10,    10,
+   215,   365,   374,    16,    78,   165,   166,   167,    10,   168,
+   169,   170,   171,    10,   259,   257,   258,   149,     1,     2,
+   257,   258,   384,   336,   336,    67,   427,   212,   260,   135,
+   428,   150,   119,    72,    29,   159,   115,   259,    79,   160,
+   133,    71,   400,   113,   134,   144,    78,   158,   172,   191,
+   260,   177,   261,   266,    12,   157,   406,   394,    30,   180,
+   186,   434,   441,   199,   332,   179,   411,   185,   308,   282,
+   192,   198,   179,   260,   329,   179,   154,    32,   434,    31,
+   439,   178,   119,   221,   223,    33,   434,   155,   178,   173,
+   135,   178,   222,    17,   317,   329,   329,   -74,   116,   176,
+   280,    10,   168,   119,   119,   171,   248,    34,  -255,    37,
+   249,   214,  -255,   119,   119,    68,    10,   168,   291,   119,
+   171,    36,   250,   333,   417,   166,   251,    10,   168,   169,
+   170,   171,     1,     2,   275,    10,   215,    66,   214,   224,
+     1,     2,   165,   166,   167,    10,   168,   169,   170,   171,
+     1,     2,   166,   225,    10,   168,   169,   170,   171,   110,
+   111,   277,   290,   215,   346,   269,   348,   226,   227,   270,
+    80,   180,   109,   186,   309,   378,    73,   313,   199,   379,
+   112,   199,   198,   228,   380,   172,   198,   363,   440,   198,
+   117,   440,   385,   407,   226,   334,   349,   342,   181,   342,
+   182,   403,   229,   193,   314,   404,    20,   315,   230,   353,
+   126,   360,   361,   181,   362,    21,   415,   231,     1,     2,
+   416,   293,   294,   295,   296,   232,   173,   233,    10,   333,
+   125,   409,   297,     1,     2,   230,    22,   127,    23,   412,
+    10,   168,   413,   194,   171,     1,     2,    24,   202,   203,
+   376,     1,     2,   187,   188,   128,   166,   129,    10,   168,
+   169,   170,   171,   288,   289,   387,   130,   387,   136,    82,
+   293,   294,   295,   296,   187,   188,    83,    84,   397,   137,
+    83,    84,   138,   372,   373,   423,   424,   140,   402,   141,
+   143,   146,    85,    38,    86,   147,    87,   161,   226,   309,
+   162,   334,   163,   206,   219,   342,    88,   198,    10,   252,
+    89,   253,   256,   364,    90,   255,   271,    91,    41,    42,
+    43,   272,   402,   273,   274,   119,   279,   281,    92,    45,
+   292,   284,   302,    93,    46,    94,    47,    95,   397,   230,
+   283,   300,   431,   304,    48,   311,    96,    97,   320,   324,
+   328,   343,   345,    49,   347,    50,   351,   215,   350,   352,
+    51,    98,    52,    53,    54,   357,   356,   359,   371,   375,
+   358,   377,   166,    99,    10,   168,   169,   170,   171,     1,
+     2,   369,   366,   370,   381,   382,   383,   393,   390,   388,
+   443,    10,   420,   444,   391,   399,     1,     2,   405,   398,
+   225,     6,    18,    35,    81,   114,   145,   142,   200,    38,
+   305,   344,   410,   220,   226,   227,   408,   327,   438,   310,
+   335,   355,   414,   267,    39,   303,   418,   268,    40,   425,
+   228,   389,   419,     0,    41,    42,    43,   421,     0,     0,
+    44,   306,     0,     0,     0,    45,     0,     0,     0,   229,
+    46,     0,    47,     0,     0,   230,     0,     0,     0,     0,
+    48,     0,     0,     0,   231,     0,     0,     0,     0,    49,
+     0,    50,   232,     0,   233,     0,    51,     0,    52,    53,
+    54,    83,    84,     0,     0,     0,     0,     0,     0,   207,
+     0,     0,     0,    85,    38,    86,     0,    87,   208,     0,
      0,     0,     0,     0,     0,     0,     0,    88,     0,     0,
      0,    89,     0,     0,     0,    90,     0,     0,    91,    41,
-    42,    43,     0,     0,     0,     0,     0,     0,     0,    92,
+    42,    43,     0,     0,     0,     0,     0,   209,     0,    92,
     45,     0,     0,     0,    93,    46,    94,    47,    95,     0,
-     0,     0,     0,     0,     0,    48,     0,    96,    97,     0,
-     0,     0,     0,     0,    49,     0,    50,     1,     2,     0,
+     0,     0,     0,     0,     0,    48,     0,    96,    97,   210,
+   211,     0,     0,     0,    49,     0,    50,    83,    84,     0,
      0,    51,    98,    52,    53,    54,     0,     0,     0,    85,
     38,    86,     0,    87,     0,     0,     0,     0,     0,     0,
      0,     0,     0,    88,     0,     0,     0,    89,     0,     0,
@@ -737,77 +734,81 @@
      0,     0,     0,     0,     0,    92,    45,     0,     0,     0,
     93,    46,    94,    47,    95,     0,     0,     0,     0,     0,
      0,    48,     0,    96,    97,     0,     0,     0,     0,     0,
-    49,     0,    50,     0,     0,     0,     0,    51,    98,    52,
-    53,    54
+    49,     0,    50,     1,     2,     0,     0,    51,    98,    52,
+    53,    54,     0,     0,     0,    85,    38,    86,     0,    87,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    88,
+     0,     0,     0,    89,     0,     0,     0,    90,     0,     0,
+    91,    41,    42,    43,     0,     0,     0,     0,     0,     0,
+     0,    92,    45,     0,     0,     0,    93,    46,    94,    47,
+    95,     0,     0,     0,     0,     0,     0,    48,     0,    96,
+    97,     0,     0,     0,     0,     0,    49,     0,    50,     0,
+     0,     0,     0,    51,    98,    52,    53,    54
 };
 
 static const short yycheck[] = {     7,
-     0,   209,   210,     3,   230,    13,   137,   138,    82,   228,
-   141,   249,     4,     9,   137,    50,   237,   238,   239,     9,
-    10,     4,   243,   244,    16,    17,    18,     9,    10,    37,
-   140,    99,    40,    16,    17,    18,    44,    37,     4,     9,
-    40,     9,     9,    37,    44,    65,    15,    16,    56,    99,
-    16,    17,    18,     9,   107,     9,    56,    37,    14,    15,
-    14,    15,    56,   137,     9,    21,    74,    34,    32,     9,
-    10,    14,    15,    13,    74,     9,    10,   112,   299,    13,
-    45,     6,     7,     8,     9,    10,    11,    12,    13,    34,
-   329,    56,   160,    73,   225,   109,   227,   228,   319,    99,
-    38,   232,   225,   111,   235,   137,   345,    88,   116,   141,
-   160,   111,    15,    16,    10,   115,   116,   125,   108,   229,
-   358,   117,   114,   115,    49,   125,   108,   201,   202,   137,
-   138,   114,   152,   141,    37,    37,   106,   356,   106,   106,
-   140,   141,   108,   364,   218,   114,   114,   114,   114,   427,
-   114,   225,    61,   161,   162,   111,    23,   111,    88,   437,
-   160,   106,   162,   108,    57,    90,   106,   255,   108,   114,
-    73,    73,   106,    84,   400,   249,    19,   265,   105,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    15,   114,
-     9,   118,   280,   225,    88,    14,    15,   405,   109,     3,
-   232,   232,   108,   235,   235,   108,   112,    15,     9,   112,
-   110,   114,    79,    14,    15,   117,    24,   225,   365,   227,
-   228,   368,    49,   231,   232,   356,    93,   235,   228,   108,
-    73,    50,   232,   112,    77,   235,    25,    45,   312,    47,
-    67,   249,     3,   251,    15,   253,   320,   108,    56,   111,
-   112,   112,    43,    14,    15,     7,   344,     9,    10,    11,
-    12,    13,   111,    90,   264,    26,    27,    28,   107,    30,
-   107,    84,     7,   117,     9,    10,    11,    12,    13,    40,
-   107,    14,    15,    44,   358,   108,   360,    48,    85,   112,
-    51,    52,    53,    54,   107,    85,   109,    49,   306,    84,
-    75,    62,    63,    16,    17,    55,    67,    68,    69,    70,
-    71,    85,    64,   321,    49,   323,     3,    78,   117,    80,
-    81,   108,   107,   107,   109,   112,    87,   325,    89,    64,
-    16,    17,     3,    94,    95,    96,    97,    98,    90,   108,
-   108,   107,   340,   341,   112,   343,   107,   107,   356,   108,
-   358,    33,    34,   112,   362,    90,   356,    16,    17,     7,
-   108,     9,    10,    11,    12,    13,    14,    15,   113,   377,
-   398,   399,   113,    21,   101,   102,   103,   104,   107,   387,
-    14,    15,    16,    17,    10,   112,     3,    35,     7,     9,
-     9,    10,    11,    12,    13,    14,    15,   109,   117,   117,
-   408,    49,    50,     9,    10,   113,   115,    13,    14,    15,
-   418,    39,   107,   109,   422,    72,    35,    65,   101,   102,
-   103,   104,   114,     9,   109,     5,    92,    99,    14,    15,
-    49,    50,    29,    72,    72,   100,    84,    29,   100,   107,
-   110,    27,    90,     5,    86,   109,    65,   110,    72,   110,
-   110,    99,   108,   106,   108,   107,    42,   112,   116,   107,
-    46,   109,   105,   109,   108,    84,    52,    53,    54,   118,
-   107,    90,    58,   118,   110,   110,   107,    63,   119,   112,
-    99,   110,    68,     0,    70,   117,     0,     3,   107,    13,
-   109,    26,    78,   144,   116,    56,    74,   111,   253,   225,
-   358,    87,   362,    89,   246,    14,    15,   426,    94,   229,
-    96,    97,    98,    22,   250,   330,   406,    26,    27,    28,
-   160,    30,    31,   202,   202,   271,   418,   412,   408,   227,
-   323,    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,
+     0,   252,    82,     3,     9,    13,   140,   210,   211,   137,
+    65,     9,   261,   262,   263,   107,    14,    15,   267,   268,
+    32,     4,    37,   137,   138,     9,    10,   141,   273,    37,
+     9,    23,    40,    16,    17,    18,    44,    37,     4,   137,
+    40,    56,    19,   141,    44,    84,     4,     9,    56,    99,
+    16,    17,    18,    99,   105,   287,    56,   137,    16,    17,
+    18,   109,    37,    10,     9,    10,    74,   118,     9,     9,
+   109,   303,   321,    38,    74,     6,     7,     8,     9,    10,
+    11,    12,    13,     9,    37,    15,    16,    79,    14,    15,
+    15,    16,   341,    34,    34,    21,    73,   152,    73,    99,
+    77,    93,   114,   111,    61,   108,    50,    37,   116,   112,
+   160,   111,   117,   111,   160,   115,   116,   125,    49,   253,
+    73,   249,   202,   203,   108,   125,   377,   106,    88,   137,
+   138,   114,   115,   141,   379,   249,   385,   251,   252,   219,
+   140,   141,   256,    73,   106,   259,    45,    57,   114,    88,
+   108,   249,   114,   161,   162,    88,   114,    56,   256,    90,
+   160,   259,   162,   108,   117,   106,   106,   108,   112,   249,
+   215,     9,    10,   114,   114,    13,   108,     3,   108,    25,
+   112,    84,   112,   114,   114,   111,     9,    10,   233,   114,
+    13,   110,   108,   273,   397,     7,   112,     9,    10,    11,
+    12,    13,    14,    15,   107,     9,   109,    15,    84,    21,
+    14,    15,     6,     7,     8,     9,    10,    11,    12,    13,
+    14,    15,     7,    35,     9,    10,    11,    12,    13,   111,
+   112,   107,   232,   109,   279,   108,   281,    49,    50,   112,
+    43,   249,   111,   251,   252,   108,    50,   255,   256,   112,
+   107,   259,   252,    65,   334,    49,   256,   302,   435,   259,
+   107,   438,   342,   377,    49,   273,   283,   275,   106,   277,
+   108,   108,    84,    67,   256,   112,    15,   259,    90,    64,
+    85,   298,   299,   106,   301,    24,   108,    99,    14,    15,
+   112,   101,   102,   103,   104,   107,    90,   109,     9,   379,
+   117,   381,   112,    14,    15,    90,    45,    85,    47,   386,
+     9,    10,   389,   107,    13,    14,    15,    56,    16,    17,
+   328,    14,    15,    16,    17,    75,     7,    55,     9,    10,
+    11,    12,    13,    33,    34,   343,    85,   345,     3,     3,
+   101,   102,   103,   104,    16,    17,    14,    15,   356,   107,
+    14,    15,   107,    16,    17,   412,   413,   117,   366,     3,
+   108,   108,    26,    27,    28,   107,    30,   113,    49,   377,
+   113,   379,   107,    10,     3,   383,    40,   377,     9,   109,
+    44,   117,   113,    64,    48,   117,   115,    51,    52,    53,
+    54,    39,   400,   107,    72,   114,   109,   109,    62,    63,
+   108,    29,   109,    67,    68,    69,    70,    71,   416,    90,
+   100,   100,   420,   107,    78,     5,    80,    81,    92,    99,
+    29,    72,    72,    87,   110,    89,   118,   109,   107,   105,
+    94,    95,    96,    97,    98,   108,   107,   106,     5,    86,
+   110,   116,     7,   107,     9,    10,    11,    12,    13,    14,
+    15,   110,   119,   110,    72,   108,   112,   118,   110,   108,
+     0,     9,   117,     0,   110,   110,    14,    15,   107,   112,
+    35,     3,    13,    26,    56,    74,   116,   111,   144,    27,
+   249,   277,   383,   160,    49,    50,   379,   270,   434,   253,
+   274,   288,   392,   203,    42,   239,   398,   203,    46,   416,
+    65,   345,   400,    -1,    52,    53,    54,   404,    -1,    -1,
+    58,   251,    -1,    -1,    -1,    63,    -1,    -1,    -1,    84,
+    68,    -1,    70,    -1,    -1,    90,    -1,    -1,    -1,    -1,
+    78,    -1,    -1,    -1,    99,    -1,    -1,    -1,    -1,    87,
+    -1,    89,   107,    -1,   109,    -1,    94,    -1,    96,    97,
+    98,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    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,    -1,    -1,    62,
+    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,    -1,
-    -1,    -1,    -1,    -1,    87,    -1,    89,    14,    15,    -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,
@@ -815,8 +816,15 @@
     -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
+    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
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/share/bison.simple"
@@ -1362,13 +1370,13 @@
   switch (yyn) {
 
 case 1:
-#line 323 "asn1p_y.y"
+#line 324 "asn1p_y.y"
 {
 		*(void **)param = yyvsp[0].a_grammar;
 	;
     break;}
 case 2:
-#line 329 "asn1p_y.y"
+#line 330 "asn1p_y.y"
 {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1376,14 +1384,14 @@
 	;
     break;}
 case 3:
-#line 334 "asn1p_y.y"
+#line 335 "asn1p_y.y"
 {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
 	;
     break;}
 case 4:
-#line 355 "asn1p_y.y"
+#line 356 "asn1p_y.y"
 {
 
 		if(yyvsp[-1].a_module) {
@@ -1400,27 +1408,27 @@
 	;
     break;}
 case 5:
-#line 376 "asn1p_y.y"
+#line 377 "asn1p_y.y"
 { yyval.a_oid = 0; ;
     break;}
 case 6:
-#line 377 "asn1p_y.y"
+#line 378 "asn1p_y.y"
 { yyval.a_oid = yyvsp[0].a_oid; ;
     break;}
 case 7:
-#line 381 "asn1p_y.y"
+#line 382 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	;
     break;}
 case 8:
-#line 384 "asn1p_y.y"
+#line 385 "asn1p_y.y"
 {
 		yyval.a_oid = 0;
 	;
     break;}
 case 9:
-#line 390 "asn1p_y.y"
+#line 391 "asn1p_y.y"
 {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1429,7 +1437,7 @@
 	;
     break;}
 case 10:
-#line 396 "asn1p_y.y"
+#line 397 "asn1p_y.y"
 {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1438,74 +1446,74 @@
 	;
     break;}
 case 11:
-#line 405 "asn1p_y.y"
+#line 406 "asn1p_y.y"
 {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
 	;
     break;}
 case 12:
-#line 409 "asn1p_y.y"
+#line 410 "asn1p_y.y"
 {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
 	;
     break;}
 case 13:
-#line 413 "asn1p_y.y"
+#line 414 "asn1p_y.y"
 {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
 	;
     break;}
 case 14:
-#line 423 "asn1p_y.y"
+#line 424 "asn1p_y.y"
 { yyval.a_module_flags = MSF_NOFLAGS; ;
     break;}
 case 15:
-#line 424 "asn1p_y.y"
+#line 425 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 16:
-#line 433 "asn1p_y.y"
+#line 434 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	;
     break;}
 case 17:
-#line 436 "asn1p_y.y"
+#line 437 "asn1p_y.y"
 {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	;
     break;}
 case 18:
-#line 445 "asn1p_y.y"
+#line 446 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	;
     break;}
 case 19:
-#line 448 "asn1p_y.y"
+#line 449 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	;
     break;}
 case 20:
-#line 451 "asn1p_y.y"
+#line 452 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	;
     break;}
 case 21:
-#line 454 "asn1p_y.y"
+#line 455 "asn1p_y.y"
 {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	;
     break;}
 case 22:
-#line 458 "asn1p_y.y"
+#line 459 "asn1p_y.y"
 {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -1523,23 +1531,23 @@
 	;
     break;}
 case 23:
-#line 479 "asn1p_y.y"
+#line 480 "asn1p_y.y"
 { yyval.a_module = 0; ;
     break;}
 case 24:
-#line 480 "asn1p_y.y"
+#line 481 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 25:
-#line 489 "asn1p_y.y"
+#line 490 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 26:
-#line 492 "asn1p_y.y"
+#line 493 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 
@@ -1569,13 +1577,13 @@
 	;
     break;}
 case 27:
-#line 525 "asn1p_y.y"
+#line 526 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[0].a_module;
 	;
     break;}
 case 28:
-#line 528 "asn1p_y.y"
+#line 529 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1587,7 +1595,7 @@
 	;
     break;}
 case 29:
-#line 537 "asn1p_y.y"
+#line 538 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1597,7 +1605,7 @@
 	;
     break;}
 case 30:
-#line 544 "asn1p_y.y"
+#line 545 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1607,7 +1615,7 @@
 	;
     break;}
 case 31:
-#line 557 "asn1p_y.y"
+#line 558 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1617,11 +1625,11 @@
 	;
     break;}
 case 32:
-#line 565 "asn1p_y.y"
+#line 566 "asn1p_y.y"
 { asn1p_lexer_hack_push_encoding_control(); ;
     break;}
 case 33:
-#line 566 "asn1p_y.y"
+#line 567 "asn1p_y.y"
 {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -1632,7 +1640,7 @@
 	;
     break;}
 case 34:
-#line 578 "asn1p_y.y"
+#line 579 "asn1p_y.y"
 {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -1640,7 +1648,7 @@
 	;
     break;}
 case 35:
-#line 591 "asn1p_y.y"
+#line 592 "asn1p_y.y"
 {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -1650,13 +1658,13 @@
 	;
     break;}
 case 36:
-#line 601 "asn1p_y.y"
+#line 602 "asn1p_y.y"
 {
 		return yyerror("Empty IMPORTS list");
 	;
     break;}
 case 37:
-#line 607 "asn1p_y.y"
+#line 608 "asn1p_y.y"
 {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -1664,22 +1672,22 @@
 	;
     break;}
 case 38:
-#line 612 "asn1p_y.y"
+#line 613 "asn1p_y.y"
 {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
 	;
     break;}
 case 39:
-#line 619 "asn1p_y.y"
+#line 620 "asn1p_y.y"
 { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); ;
     break;}
 case 40:
-#line 620 "asn1p_y.y"
+#line 621 "asn1p_y.y"
 { yyval.a_aid.oid = yyvsp[0].a_oid; ;
     break;}
 case 41:
-#line 624 "asn1p_y.y"
+#line 625 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -1690,7 +1698,7 @@
 	;
     break;}
 case 42:
-#line 635 "asn1p_y.y"
+#line 636 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -1698,14 +1706,14 @@
 	;
     break;}
 case 43:
-#line 640 "asn1p_y.y"
+#line 641 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 44:
-#line 647 "asn1p_y.y"
+#line 648 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1714,7 +1722,7 @@
 	;
     break;}
 case 45:
-#line 653 "asn1p_y.y"
+#line 654 "asn1p_y.y"
 {		/* Completely equivalent to above */
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1723,7 +1731,7 @@
 	;
     break;}
 case 46:
-#line 659 "asn1p_y.y"
+#line 660 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1732,19 +1740,19 @@
 	;
     break;}
 case 47:
-#line 668 "asn1p_y.y"
+#line 669 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	;
     break;}
 case 48:
-#line 671 "asn1p_y.y"
+#line 672 "asn1p_y.y"
 {
 		yyval.a_xports = 0;
 	;
     break;}
 case 49:
-#line 674 "asn1p_y.y"
+#line 675 "asn1p_y.y"
 {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -1752,7 +1760,7 @@
 	;
     break;}
 case 50:
-#line 682 "asn1p_y.y"
+#line 683 "asn1p_y.y"
 {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -1760,14 +1768,14 @@
 	;
     break;}
 case 51:
-#line 687 "asn1p_y.y"
+#line 688 "asn1p_y.y"
 {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
 	;
     break;}
 case 52:
-#line 694 "asn1p_y.y"
+#line 695 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1776,7 +1784,7 @@
 	;
     break;}
 case 53:
-#line 700 "asn1p_y.y"
+#line 701 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1785,7 +1793,7 @@
 	;
     break;}
 case 54:
-#line 706 "asn1p_y.y"
+#line 707 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1794,27 +1802,27 @@
 	;
     break;}
 case 55:
-#line 717 "asn1p_y.y"
-{ asn1p_lexer_hack_push_opaque_state(); ;
+#line 716 "asn1p_y.y"
+{ yyval.a_constr = yyvsp[-1].a_constr; ;
     break;}
 case 56:
-#line 717 "asn1p_y.y"
+#line 719 "asn1p_y.y"
 {
-		yyval.a_expr = yyvsp[-4].a_expr;
+		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
-		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
+		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
 		yyval.a_expr->meta_type = AMT_VALUESET;
-		/* take care of ValueSet body */
+		yyval.a_expr->constraints = yyvsp[0].a_constr;
 	;
     break;}
 case 57:
-#line 727 "asn1p_y.y"
+#line 729 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 58:
-#line 740 "asn1p_y.y"
+#line 742 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1824,7 +1832,7 @@
 	;
     break;}
 case 59:
-#line 750 "asn1p_y.y"
+#line 752 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1835,7 +1843,7 @@
 	;
     break;}
 case 60:
-#line 770 "asn1p_y.y"
+#line 772 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1844,7 +1852,7 @@
 	;
     break;}
 case 61:
-#line 776 "asn1p_y.y"
+#line 778 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -1853,7 +1861,7 @@
 	;
     break;}
 case 62:
-#line 792 "asn1p_y.y"
+#line 794 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -1862,7 +1870,7 @@
 	;
     break;}
 case 63:
-#line 801 "asn1p_y.y"
+#line 803 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -1874,7 +1882,7 @@
 	;
     break;}
 case 64:
-#line 810 "asn1p_y.y"
+#line 812 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -1885,14 +1893,14 @@
 	;
     break;}
 case 65:
-#line 821 "asn1p_y.y"
+#line 823 "asn1p_y.y"
 {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
 	;
     break;}
 case 66:
-#line 825 "asn1p_y.y"
+#line 827 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1902,7 +1910,7 @@
 	;
     break;}
 case 67:
-#line 832 "asn1p_y.y"
+#line 834 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1912,7 +1920,7 @@
 	;
     break;}
 case 68:
-#line 839 "asn1p_y.y"
+#line 841 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -1923,7 +1931,7 @@
 	;
     break;}
 case 69:
-#line 850 "asn1p_y.y"
+#line 852 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1931,20 +1939,20 @@
 	;
     break;}
 case 70:
-#line 855 "asn1p_y.y"
+#line 857 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 71:
-#line 862 "asn1p_y.y"
+#line 864 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 72:
-#line 865 "asn1p_y.y"
+#line 867 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1955,7 +1963,7 @@
 	;
     break;}
 case 73:
-#line 873 "asn1p_y.y"
+#line 875 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -1969,15 +1977,15 @@
 	;
     break;}
 case 74:
-#line 901 "asn1p_y.y"
+#line 903 "asn1p_y.y"
 { yyval.a_expr = asn1p_expr_new(yylineno); ;
     break;}
 case 75:
-#line 902 "asn1p_y.y"
+#line 904 "asn1p_y.y"
 { yyval.a_expr = yyvsp[0].a_expr; ;
     break;}
 case 76:
-#line 905 "asn1p_y.y"
+#line 907 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -1985,14 +1993,14 @@
 	;
     break;}
 case 77:
-#line 910 "asn1p_y.y"
+#line 912 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 78:
-#line 917 "asn1p_y.y"
+#line 919 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2002,7 +2010,7 @@
 	;
     break;}
 case 79:
-#line 924 "asn1p_y.y"
+#line 926 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -2011,7 +2019,7 @@
 	;
     break;}
 case 80:
-#line 930 "asn1p_y.y"
+#line 932 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2021,13 +2029,13 @@
 	;
     break;}
 case 81:
-#line 937 "asn1p_y.y"
+#line 939 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 82:
-#line 943 "asn1p_y.y"
+#line 945 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2035,14 +2043,14 @@
 	;
     break;}
 case 83:
-#line 948 "asn1p_y.y"
+#line 950 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 84:
-#line 955 "asn1p_y.y"
+#line 957 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2050,20 +2058,20 @@
 	;
     break;}
 case 85:
-#line 960 "asn1p_y.y"
+#line 962 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 86:
-#line 963 "asn1p_y.y"
+#line 965 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
 	;
     break;}
 case 87:
-#line 970 "asn1p_y.y"
+#line 972 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2073,15 +2081,15 @@
 	;
     break;}
 case 88:
-#line 980 "asn1p_y.y"
+#line 982 "asn1p_y.y"
 { yyval.a_int = 0; ;
     break;}
 case 89:
-#line 981 "asn1p_y.y"
+#line 983 "asn1p_y.y"
 { yyval.a_int = 1; ;
     break;}
 case 90:
-#line 985 "asn1p_y.y"
+#line 987 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2091,14 +2099,14 @@
 	;
     break;}
 case 91:
-#line 992 "asn1p_y.y"
+#line 994 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 92:
-#line 1002 "asn1p_y.y"
+#line 1004 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2109,7 +2117,7 @@
 	;
     break;}
 case 93:
-#line 1012 "asn1p_y.y"
+#line 1014 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -2121,7 +2129,7 @@
 	;
     break;}
 case 94:
-#line 1023 "asn1p_y.y"
+#line 1025 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2132,7 +2140,7 @@
 	;
     break;}
 case 95:
-#line 1033 "asn1p_y.y"
+#line 1035 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2144,7 +2152,7 @@
 	;
     break;}
 case 96:
-#line 1044 "asn1p_y.y"
+#line 1046 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2155,7 +2163,7 @@
 	;
     break;}
 case 97:
-#line 1054 "asn1p_y.y"
+#line 1056 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2167,7 +2175,7 @@
 	;
     break;}
 case 98:
-#line 1065 "asn1p_y.y"
+#line 1067 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2179,67 +2187,67 @@
 	;
     break;}
 case 99:
-#line 1077 "asn1p_y.y"
+#line 1079 "asn1p_y.y"
 { yyval.a_wsynt = 0; ;
     break;}
 case 100:
-#line 1078 "asn1p_y.y"
+#line 1080 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	;
     break;}
 case 101:
-#line 1085 "asn1p_y.y"
+#line 1087 "asn1p_y.y"
 { asn1p_lexer_hack_enable_with_syntax(); ;
     break;}
 case 102:
-#line 1087 "asn1p_y.y"
+#line 1089 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	;
     break;}
 case 103:
-#line 1093 "asn1p_y.y"
+#line 1095 "asn1p_y.y"
 {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 104:
-#line 1097 "asn1p_y.y"
+#line 1099 "asn1p_y.y"
 {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
 	;
     break;}
 case 105:
-#line 1104 "asn1p_y.y"
+#line 1106 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		yyval.a_wchunk->type = WC_WHITESPACE;
 	;
     break;}
 case 106:
-#line 1108 "asn1p_y.y"
+#line 1110 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].tv_str, strlen(yyvsp[0].tv_str), 0);
 	;
     break;}
 case 107:
-#line 1111 "asn1p_y.y"
+#line 1113 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_frombuf(yyvsp[0].a_refcomp.name, strlen(yyvsp[0].a_refcomp.name), 0);
 		yyval.a_wchunk->type = WC_FIELD;
 	;
     break;}
 case 108:
-#line 1115 "asn1p_y.y"
+#line 1117 "asn1p_y.y"
 {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
 	;
     break;}
 case 109:
-#line 1121 "asn1p_y.y"
+#line 1123 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2250,7 +2258,7 @@
 	;
     break;}
 case 110:
-#line 1129 "asn1p_y.y"
+#line 1131 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2262,7 +2270,7 @@
 	;
     break;}
 case 111:
-#line 1138 "asn1p_y.y"
+#line 1140 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2274,7 +2282,7 @@
 	;
     break;}
 case 112:
-#line 1150 "asn1p_y.y"
+#line 1152 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2296,14 +2304,14 @@
 	;
     break;}
 case 113:
-#line 1172 "asn1p_y.y"
+#line 1174 "asn1p_y.y"
 {
 		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
 	;
     break;}
 case 114:
-#line 1179 "asn1p_y.y"
+#line 1181 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2322,13 +2330,13 @@
 	;
     break;}
 case 115:
-#line 1198 "asn1p_y.y"
+#line 1200 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[0].a_expr;
 	;
     break;}
 case 116:
-#line 1201 "asn1p_y.y"
+#line 1203 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2337,7 +2345,7 @@
 	;
     break;}
 case 117:
-#line 1207 "asn1p_y.y"
+#line 1209 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2346,7 +2354,7 @@
 	;
     break;}
 case 118:
-#line 1213 "asn1p_y.y"
+#line 1215 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2355,7 +2363,7 @@
 	;
     break;}
 case 119:
-#line 1219 "asn1p_y.y"
+#line 1221 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2368,7 +2376,7 @@
 	;
     break;}
 case 120:
-#line 1229 "asn1p_y.y"
+#line 1231 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2381,7 +2389,7 @@
 	;
     break;}
 case 121:
-#line 1239 "asn1p_y.y"
+#line 1241 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2390,7 +2398,7 @@
 	;
     break;}
 case 122:
-#line 1245 "asn1p_y.y"
+#line 1247 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_expr = asn1p_expr_new(yylineno);
@@ -2404,7 +2412,7 @@
 	;
     break;}
 case 123:
-#line 1257 "asn1p_y.y"
+#line 1259 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2414,7 +2422,7 @@
 	;
     break;}
 case 124:
-#line 1272 "asn1p_y.y"
+#line 1274 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2425,7 +2433,7 @@
 	;
     break;}
 case 125:
-#line 1280 "asn1p_y.y"
+#line 1282 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2438,7 +2446,7 @@
 	;
     break;}
 case 126:
-#line 1290 "asn1p_y.y"
+#line 1292 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2451,7 +2459,7 @@
 	;
     break;}
 case 127:
-#line 1300 "asn1p_y.y"
+#line 1302 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2464,7 +2472,7 @@
 	;
     break;}
 case 128:
-#line 1310 "asn1p_y.y"
+#line 1312 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2475,7 +2483,7 @@
 	;
     break;}
 case 129:
-#line 1318 "asn1p_y.y"
+#line 1320 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -2497,7 +2505,7 @@
 	;
     break;}
 case 130:
-#line 1340 "asn1p_y.y"
+#line 1342 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -2508,7 +2516,7 @@
 	;
     break;}
 case 131:
-#line 1348 "asn1p_y.y"
+#line 1350 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -2518,49 +2526,49 @@
 	;
     break;}
 case 133:
-#line 1361 "asn1p_y.y"
+#line 1363 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 134:
-#line 1366 "asn1p_y.y"
+#line 1368 "asn1p_y.y"
 {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
 	;
     break;}
 case 135:
-#line 1375 "asn1p_y.y"
+#line 1377 "asn1p_y.y"
 {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
 	;
     break;}
 case 136:
-#line 1379 "asn1p_y.y"
+#line 1381 "asn1p_y.y"
 {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
 	;
     break;}
 case 137:
-#line 1383 "asn1p_y.y"
+#line 1385 "asn1p_y.y"
 {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
 	;
     break;}
 case 138:
-#line 1390 "asn1p_y.y"
+#line 1392 "asn1p_y.y"
 {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
 	;
     break;}
 case 139:
-#line 1410 "asn1p_y.y"
+#line 1412 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -2570,7 +2578,7 @@
 	;
     break;}
 case 142:
-#line 1422 "asn1p_y.y"
+#line 1424 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2580,11 +2588,11 @@
 	;
     break;}
 case 143:
-#line 1429 "asn1p_y.y"
+#line 1431 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 144:
-#line 1429 "asn1p_y.y"
+#line 1431 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -2592,7 +2600,7 @@
 	;
     break;}
 case 145:
-#line 1434 "asn1p_y.y"
+#line 1436 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2600,7 +2608,7 @@
 	;
     break;}
 case 146:
-#line 1442 "asn1p_y.y"
+#line 1444 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2608,7 +2616,7 @@
 	;
     break;}
 case 147:
-#line 1447 "asn1p_y.y"
+#line 1449 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -2616,33 +2624,33 @@
 	;
     break;}
 case 148:
-#line 1452 "asn1p_y.y"
+#line 1454 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 149:
-#line 1456 "asn1p_y.y"
+#line 1458 "asn1p_y.y"
 {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
 	;
     break;}
 case 150:
-#line 1460 "asn1p_y.y"
+#line 1462 "asn1p_y.y"
 {
 		yyval.a_value = yyval.a_value;
 	;
     break;}
 case 151:
-#line 1463 "asn1p_y.y"
+#line 1465 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 152:
-#line 1469 "asn1p_y.y"
+#line 1471 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2656,7 +2664,7 @@
 	;
     break;}
 case 153:
-#line 1480 "asn1p_y.y"
+#line 1482 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -2673,14 +2681,14 @@
 	;
     break;}
 case 154:
-#line 1498 "asn1p_y.y"
+#line 1500 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 155:
-#line 1502 "asn1p_y.y"
+#line 1504 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -2688,7 +2696,7 @@
 	;
     break;}
 case 156:
-#line 1507 "asn1p_y.y"
+#line 1509 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -2696,7 +2704,7 @@
 	;
     break;}
 case 157:
-#line 1541 "asn1p_y.y"
+#line 1543 "asn1p_y.y"
 {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -2708,7 +2716,7 @@
 	;
     break;}
 case 158:
-#line 1550 "asn1p_y.y"
+#line 1552 "asn1p_y.y"
 {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -2723,71 +2731,71 @@
 	;
     break;}
 case 159:
-#line 1565 "asn1p_y.y"
+#line 1567 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BOOLEAN; ;
     break;}
 case 160:
-#line 1566 "asn1p_y.y"
+#line 1568 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_NULL; ;
     break;}
 case 161:
-#line 1567 "asn1p_y.y"
+#line 1569 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_REAL; ;
     break;}
 case 162:
-#line 1568 "asn1p_y.y"
+#line 1570 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 163:
-#line 1569 "asn1p_y.y"
+#line 1571 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OCTET_STRING; ;
     break;}
 case 164:
-#line 1570 "asn1p_y.y"
+#line 1572 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; ;
     break;}
 case 165:
-#line 1571 "asn1p_y.y"
+#line 1573 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_RELATIVE_OID; ;
     break;}
 case 166:
-#line 1572 "asn1p_y.y"
+#line 1574 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EXTERNAL; ;
     break;}
 case 167:
-#line 1573 "asn1p_y.y"
+#line 1575 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; ;
     break;}
 case 168:
-#line 1574 "asn1p_y.y"
+#line 1576 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_CHARACTER_STRING; ;
     break;}
 case 169:
-#line 1575 "asn1p_y.y"
+#line 1577 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_UTCTime; ;
     break;}
 case 170:
-#line 1576 "asn1p_y.y"
+#line 1578 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_GeneralizedTime; ;
     break;}
 case 171:
-#line 1577 "asn1p_y.y"
+#line 1579 "asn1p_y.y"
 { yyval.a_type = yyvsp[0].a_type; ;
     break;}
 case 172:
-#line 1584 "asn1p_y.y"
+#line 1586 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_INTEGER; ;
     break;}
 case 173:
-#line 1585 "asn1p_y.y"
+#line 1587 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_ENUMERATED; ;
     break;}
 case 174:
-#line 1586 "asn1p_y.y"
+#line 1588 "asn1p_y.y"
 { yyval.a_type = ASN_BASIC_BIT_STRING; ;
     break;}
 case 175:
-#line 1590 "asn1p_y.y"
+#line 1592 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -2796,7 +2804,7 @@
 	;
     break;}
 case 176:
-#line 1596 "asn1p_y.y"
+#line 1598 "asn1p_y.y"
 {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -2809,91 +2817,91 @@
 	;
     break;}
 case 177:
-#line 1609 "asn1p_y.y"
+#line 1611 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_BMPString; ;
     break;}
 case 178:
-#line 1610 "asn1p_y.y"
+#line 1612 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
 	;
     break;}
 case 179:
-#line 1614 "asn1p_y.y"
+#line 1616 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
 	;
     break;}
 case 180:
-#line 1618 "asn1p_y.y"
+#line 1620 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_IA5String; ;
     break;}
 case 181:
-#line 1619 "asn1p_y.y"
+#line 1621 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ISO646String; ;
     break;}
 case 182:
-#line 1620 "asn1p_y.y"
+#line 1622 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_NumericString; ;
     break;}
 case 183:
-#line 1621 "asn1p_y.y"
+#line 1623 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_PrintableString; ;
     break;}
 case 184:
-#line 1622 "asn1p_y.y"
+#line 1624 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
 	;
     break;}
 case 185:
-#line 1626 "asn1p_y.y"
+#line 1628 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_TeletexString; ;
     break;}
 case 186:
-#line 1627 "asn1p_y.y"
+#line 1629 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UniversalString; ;
     break;}
 case 187:
-#line 1628 "asn1p_y.y"
+#line 1630 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_UTF8String; ;
     break;}
 case 188:
-#line 1629 "asn1p_y.y"
+#line 1631 "asn1p_y.y"
 {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
 	;
     break;}
 case 189:
-#line 1633 "asn1p_y.y"
+#line 1635 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_VisibleString; ;
     break;}
 case 190:
-#line 1634 "asn1p_y.y"
+#line 1636 "asn1p_y.y"
 { yyval.a_type = ASN_STRING_ObjectDescriptor; ;
     break;}
 case 196:
-#line 1646 "asn1p_y.y"
+#line 1648 "asn1p_y.y"
 { yyval.a_constr = 0; ;
     break;}
 case 197:
-#line 1647 "asn1p_y.y"
+#line 1649 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 198:
-#line 1653 "asn1p_y.y"
+#line 1655 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 199:
-#line 1656 "asn1p_y.y"
+#line 1658 "asn1p_y.y"
 {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -2903,25 +2911,25 @@
 	;
     break;}
 case 200:
-#line 1666 "asn1p_y.y"
+#line 1668 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	;
     break;}
 case 201:
-#line 1669 "asn1p_y.y"
+#line 1671 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 202:
-#line 1675 "asn1p_y.y"
+#line 1677 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 203:
-#line 1678 "asn1p_y.y"
+#line 1680 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2930,7 +2938,7 @@
 	;
     break;}
 case 204:
-#line 1684 "asn1p_y.y"
+#line 1686 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -2941,37 +2949,37 @@
 	;
     break;}
 case 205:
-#line 1695 "asn1p_y.y"
+#line 1697 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 206:
-#line 1698 "asn1p_y.y"
+#line 1700 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 207:
-#line 1701 "asn1p_y.y"
+#line 1703 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 208:
-#line 1704 "asn1p_y.y"
+#line 1706 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 209:
-#line 1707 "asn1p_y.y"
+#line 1709 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 210:
-#line 1713 "asn1p_y.y"
+#line 1715 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2982,7 +2990,7 @@
 	;
     break;}
 case 211:
-#line 1721 "asn1p_y.y"
+#line 1723 "asn1p_y.y"
 {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -2993,7 +3001,7 @@
 	;
     break;}
 case 212:
-#line 1729 "asn1p_y.y"
+#line 1731 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3002,7 +3010,7 @@
 	;
     break;}
 case 213:
-#line 1735 "asn1p_y.y"
+#line 1737 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3011,7 +3019,7 @@
 	;
     break;}
 case 214:
-#line 1741 "asn1p_y.y"
+#line 1743 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3021,7 +3029,7 @@
 	;
     break;}
 case 215:
-#line 1748 "asn1p_y.y"
+#line 1750 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3032,7 +3040,7 @@
 	;
     break;}
 case 216:
-#line 1756 "asn1p_y.y"
+#line 1758 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3043,7 +3051,7 @@
 	;
     break;}
 case 217:
-#line 1764 "asn1p_y.y"
+#line 1766 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3055,23 +3063,23 @@
 	;
     break;}
 case 218:
-#line 1773 "asn1p_y.y"
+#line 1775 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 219:
-#line 1776 "asn1p_y.y"
+#line 1778 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 220:
-#line 1780 "asn1p_y.y"
+#line 1782 "asn1p_y.y"
 { asn1p_lexer_hack_push_opaque_state(); ;
     break;}
 case 221:
-#line 1780 "asn1p_y.y"
+#line 1782 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3082,35 +3090,35 @@
 	;
     break;}
 case 222:
-#line 1791 "asn1p_y.y"
+#line 1793 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RANGE; ;
     break;}
 case 223:
-#line 1792 "asn1p_y.y"
+#line 1794 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_RLRANGE; ;
     break;}
 case 224:
-#line 1793 "asn1p_y.y"
+#line 1795 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_LLRANGE; ;
     break;}
 case 225:
-#line 1794 "asn1p_y.y"
+#line 1796 "asn1p_y.y"
 { yyval.a_ctype = ACT_EL_ULRANGE; ;
     break;}
 case 226:
-#line 1798 "asn1p_y.y"
+#line 1800 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_SIZE;
 	;
     break;}
 case 227:
-#line 1801 "asn1p_y.y"
+#line 1803 "asn1p_y.y"
 {
 		yyval.a_ctype = ACT_CT_FROM;
 	;
     break;}
 case 228:
-#line 1807 "asn1p_y.y"
+#line 1809 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3118,7 +3126,7 @@
 	;
     break;}
 case 229:
-#line 1812 "asn1p_y.y"
+#line 1814 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -3126,19 +3134,19 @@
 	;
     break;}
 case 230:
-#line 1817 "asn1p_y.y"
+#line 1819 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 231:
-#line 1820 "asn1p_y.y"
+#line 1822 "asn1p_y.y"
 {
 		yyval.a_value = yyvsp[0].a_value;
 	;
     break;}
 case 232:
-#line 1823 "asn1p_y.y"
+#line 1825 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3152,7 +3160,7 @@
 	;
     break;}
 case 233:
-#line 1837 "asn1p_y.y"
+#line 1839 "asn1p_y.y"
 {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3166,31 +3174,31 @@
 	;
     break;}
 case 234:
-#line 1851 "asn1p_y.y"
+#line 1853 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	;
     break;}
 case 235:
-#line 1854 "asn1p_y.y"
+#line 1856 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	;
     break;}
 case 236:
-#line 1860 "asn1p_y.y"
+#line 1862 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 237:
-#line 1863 "asn1p_y.y"
+#line 1865 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	;
     break;}
 case 238:
-#line 1869 "asn1p_y.y"
+#line 1871 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3199,7 +3207,7 @@
 	;
     break;}
 case 239:
-#line 1875 "asn1p_y.y"
+#line 1877 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3210,45 +3218,45 @@
 	;
     break;}
 case 240:
-#line 1889 "asn1p_y.y"
+#line 1891 "asn1p_y.y"
 { yyval.a_pres = ACPRES_DEFAULT; ;
     break;}
 case 241:
-#line 1890 "asn1p_y.y"
+#line 1892 "asn1p_y.y"
 { yyval.a_pres = yyvsp[0].a_pres; ;
     break;}
 case 242:
-#line 1894 "asn1p_y.y"
+#line 1896 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_PRESENT;
 	;
     break;}
 case 243:
-#line 1897 "asn1p_y.y"
+#line 1899 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_ABSENT;
 	;
     break;}
 case 244:
-#line 1900 "asn1p_y.y"
+#line 1902 "asn1p_y.y"
 {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	;
     break;}
 case 245:
-#line 1906 "asn1p_y.y"
+#line 1908 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 246:
-#line 1909 "asn1p_y.y"
+#line 1911 "asn1p_y.y"
 {
 		yyval.a_constr = yyvsp[0].a_constr;
 	;
     break;}
 case 247:
-#line 1918 "asn1p_y.y"
+#line 1920 "asn1p_y.y"
 {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -3263,13 +3271,13 @@
 	;
     break;}
 case 248:
-#line 1933 "asn1p_y.y"
+#line 1935 "asn1p_y.y"
 {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	;
     break;}
 case 249:
-#line 1939 "asn1p_y.y"
+#line 1941 "asn1p_y.y"
 {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3278,7 +3286,7 @@
 	;
     break;}
 case 250:
-#line 1945 "asn1p_y.y"
+#line 1947 "asn1p_y.y"
 {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3289,7 +3297,7 @@
 	;
     break;}
 case 251:
-#line 1959 "asn1p_y.y"
+#line 1961 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -3303,7 +3311,7 @@
 	;
     break;}
 case 252:
-#line 1970 "asn1p_y.y"
+#line 1972 "asn1p_y.y"
 {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -3318,13 +3326,13 @@
 	;
     break;}
 case 253:
-#line 1986 "asn1p_y.y"
+#line 1988 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 254:
-#line 1989 "asn1p_y.y"
+#line 1991 "asn1p_y.y"
 {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -3336,45 +3344,45 @@
 	;
     break;}
 case 255:
-#line 2007 "asn1p_y.y"
+#line 2009 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 256:
-#line 2011 "asn1p_y.y"
+#line 2013 "asn1p_y.y"
 { yyval.a_marker = yyvsp[0].a_marker; ;
     break;}
 case 257:
-#line 2015 "asn1p_y.y"
+#line 2017 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
 		yyval.a_marker.default_value = 0;
 	;
     break;}
 case 258:
-#line 2019 "asn1p_y.y"
+#line 2021 "asn1p_y.y"
 {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	;
     break;}
 case 259:
-#line 2042 "asn1p_y.y"
+#line 2044 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
 	;
     break;}
 case 260:
-#line 2046 "asn1p_y.y"
+#line 2048 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	;
     break;}
 case 261:
-#line 2052 "asn1p_y.y"
+#line 2054 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3382,14 +3390,14 @@
 	;
     break;}
 case 262:
-#line 2057 "asn1p_y.y"
+#line 2059 "asn1p_y.y"
 {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	;
     break;}
 case 263:
-#line 2064 "asn1p_y.y"
+#line 2066 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3399,7 +3407,7 @@
 	;
     break;}
 case 264:
-#line 2071 "asn1p_y.y"
+#line 2073 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3410,7 +3418,7 @@
 	;
     break;}
 case 265:
-#line 2079 "asn1p_y.y"
+#line 2081 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3421,7 +3429,7 @@
 	;
     break;}
 case 266:
-#line 2087 "asn1p_y.y"
+#line 2089 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3431,7 +3439,7 @@
 	;
     break;}
 case 267:
-#line 2094 "asn1p_y.y"
+#line 2096 "asn1p_y.y"
 {
 		yyval.a_expr = asn1p_expr_new(yylineno);
 		checkmem(yyval.a_expr);
@@ -3442,102 +3450,102 @@
 	;
     break;}
 case 268:
-#line 2105 "asn1p_y.y"
+#line 2107 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 269:
-#line 2109 "asn1p_y.y"
+#line 2111 "asn1p_y.y"
 {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
 	;
     break;}
 case 270:
-#line 2140 "asn1p_y.y"
+#line 2142 "asn1p_y.y"
 { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); ;
     break;}
 case 271:
-#line 2141 "asn1p_y.y"
+#line 2143 "asn1p_y.y"
 { yyval.a_tag = yyvsp[0].a_tag; ;
     break;}
 case 272:
-#line 2145 "asn1p_y.y"
+#line 2147 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	;
     break;}
 case 273:
-#line 2152 "asn1p_y.y"
+#line 2154 "asn1p_y.y"
 {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	;
     break;}
 case 274:
-#line 2158 "asn1p_y.y"
+#line 2160 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; ;
     break;}
 case 275:
-#line 2159 "asn1p_y.y"
+#line 2161 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_UNIVERSAL; ;
     break;}
 case 276:
-#line 2160 "asn1p_y.y"
+#line 2162 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_APPLICATION; ;
     break;}
 case 277:
-#line 2161 "asn1p_y.y"
+#line 2163 "asn1p_y.y"
 { yyval.a_tag.tag_class = TC_PRIVATE; ;
     break;}
 case 278:
-#line 2165 "asn1p_y.y"
+#line 2167 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_DEFAULT; ;
     break;}
 case 279:
-#line 2166 "asn1p_y.y"
+#line 2168 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_IMPLICIT; ;
     break;}
 case 280:
-#line 2167 "asn1p_y.y"
+#line 2169 "asn1p_y.y"
 { yyval.a_tag.tag_mode = TM_EXPLICIT; ;
     break;}
 case 281:
-#line 2171 "asn1p_y.y"
+#line 2173 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 282:
-#line 2175 "asn1p_y.y"
+#line 2177 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 283:
-#line 2183 "asn1p_y.y"
+#line 2185 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 284:
-#line 2190 "asn1p_y.y"
+#line 2192 "asn1p_y.y"
 { yyval.tv_str = 0; ;
     break;}
 case 285:
-#line 2191 "asn1p_y.y"
+#line 2193 "asn1p_y.y"
 {
 		yyval.tv_str = yyvsp[0].tv_str;
 	;
     break;}
 case 286:
-#line 2197 "asn1p_y.y"
+#line 2199 "asn1p_y.y"
 {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -3765,7 +3773,7 @@
     }
   return 1;
 }
-#line 2203 "asn1p_y.y"
+#line 2205 "asn1p_y.y"