bit string value constraints parsing


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1265 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 13541e9..f1d4ad4 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -523,16 +523,16 @@
 
 /* YYFINAL -- State number of the termination state. */
 #define YYFINAL  7
-#define YYLAST   745
+#define YYLAST   805
 
 /* YYNTOKENS -- Number of terminals. */
 #define YYNTOKENS  121
 /* YYNNTS -- Number of nonterminals. */
-#define YYNNTS  121
+#define YYNNTS  122
 /* YYNRULES -- Number of rules. */
-#define YYNRULES  309
+#define YYNRULES  312
 /* YYNRULES -- Number of states. */
-#define YYNSTATES  467
+#define YYNSTATES  470
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -612,22 +612,23 @@
      586,   590,   595,   597,   599,   603,   609,   611,   613,   617,
      619,   623,   625,   629,   631,   635,   640,   644,   646,   648,
      652,   656,   660,   664,   666,   668,   671,   674,   676,   678,
-     680,   682,   684,   686,   688,   690,   694,   700,   702,   706,
-     708,   712,   713,   715,   717,   719,   721,   723,   725,   727,
-     728,   734,   737,   739,   742,   745,   749,   751,   753,   757,
-     762,   764,   768,   771,   775,   777,   781,   782,   784,   786,
-     789,   792,   796,   798,   802,   804,   809,   814,   816,   818,
-     820,   822,   824,   826,   827,   829,   832,   837,   838,   840,
-     842,   844,   845,   847,   849,   851,   853,   855,   856,   858
+     680,   682,   684,   686,   688,   690,   692,   694,   696,   700,
+     706,   708,   712,   714,   718,   719,   721,   723,   725,   727,
+     729,   731,   733,   734,   740,   743,   745,   748,   751,   755,
+     757,   759,   763,   768,   770,   774,   777,   781,   783,   787,
+     788,   790,   792,   795,   798,   802,   804,   808,   810,   815,
+     820,   822,   824,   826,   828,   830,   832,   833,   835,   838,
+     843,   844,   846,   848,   850,   851,   853,   855,   857,   859,
+     861,   862,   864
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
 static const short yyrhs[] =
 {
      122,     0,    -1,   123,    -1,   124,    -1,   123,   124,    -1,
-      -1,   238,   125,   126,    39,   130,     3,    26,   133,    44,
+      -1,   239,   125,   126,    39,   130,     3,    26,   133,    44,
       -1,    -1,   127,    -1,   108,   128,   109,    -1,   108,   109,
-      -1,   129,    -1,   128,   129,    -1,   241,    -1,   241,   110,
+      -1,   129,    -1,   128,   129,    -1,   242,    -1,   242,   110,
       10,   111,    -1,    10,    -1,    -1,   131,    -1,   132,    -1,
      131,   132,    -1,    46,    89,    -1,    57,    89,    -1,    25,
       89,    -1,    48,    58,    -1,    16,    62,    -1,    -1,   134,
@@ -635,117 +636,119 @@
      153,    -1,   183,    -1,   151,    -1,    -1,    43,    16,   137,
       -1,   193,    -1,    -1,   139,    -1,    59,   140,   112,    -1,
       59,    51,    -1,    -1,   141,    -1,   143,    -1,   141,   143,
-      -1,    -1,   127,    -1,   144,    51,   238,   142,    -1,   145,
-      -1,   144,   113,   145,    -1,   238,    -1,   238,   108,   109,
-      -1,   241,    -1,    -1,   147,    -1,    47,   148,   112,    -1,
+      -1,    -1,   127,    -1,   144,    51,   239,   142,    -1,   145,
+      -1,   144,   113,   145,    -1,   239,    -1,   239,   108,   109,
+      -1,   242,    -1,    -1,   147,    -1,    47,   148,   112,    -1,
       47,    22,   112,    -1,    47,   112,    -1,   149,    -1,   148,
-     113,   149,    -1,   238,    -1,   238,   108,   109,    -1,   241,
-      -1,   108,   200,   109,    -1,   238,   152,     3,   150,    -1,
-     192,    -1,   177,    -1,   177,   108,   156,   109,    -1,   238,
-       3,   173,    -1,   238,     3,   163,    -1,   238,   108,   154,
-     109,     3,   173,    -1,   238,   108,   154,   109,     3,   163,
-      -1,   155,    -1,   154,   113,   155,    -1,   238,    -1,   238,
-     114,   241,    -1,   238,   114,   238,    -1,   190,   114,   241,
-      -1,   190,   114,   238,    -1,   157,    -1,   156,   113,   157,
-      -1,   173,    -1,   186,    -1,   241,    -1,   150,    -1,    -1,
-     159,    -1,   160,    -1,   159,   113,   160,    -1,   241,   173,
-     226,    -1,   173,   226,    -1,    35,    73,   173,    -1,   172,
-      -1,   162,    -1,   161,   113,   162,    -1,   241,   173,    -1,
+     113,   149,    -1,   239,    -1,   239,   108,   109,    -1,   242,
+      -1,   108,   200,   109,    -1,   239,   152,     3,   150,    -1,
+     192,    -1,   177,    -1,   177,   108,   156,   109,    -1,   239,
+       3,   173,    -1,   239,     3,   163,    -1,   239,   108,   154,
+     109,     3,   173,    -1,   239,   108,   154,   109,     3,   163,
+      -1,   155,    -1,   154,   113,   155,    -1,   239,    -1,   239,
+     114,   242,    -1,   239,   114,   239,    -1,   190,   114,   242,
+      -1,   190,   114,   239,    -1,   157,    -1,   156,   113,   157,
+      -1,   173,    -1,   186,    -1,   242,    -1,   150,    -1,    -1,
+     159,    -1,   160,    -1,   159,   113,   160,    -1,   242,   173,
+     227,    -1,   173,   227,    -1,    35,    73,   173,    -1,   172,
+      -1,   162,    -1,   161,   113,   162,    -1,   242,   173,    -1,
      172,    -1,   173,    -1,    33,   108,   165,   109,   167,    -1,
       -1,    93,    -1,   166,    -1,   165,   113,   166,    -1,    17,
-     226,    -1,    18,   173,   164,   226,    -1,    18,   181,   226,
-      -1,    18,   182,   226,    -1,    17,   181,   226,    -1,    17,
-     173,   226,    -1,    17,   182,   226,    -1,    -1,   168,    -1,
+     227,    -1,    18,   173,   164,   227,    -1,    18,   181,   227,
+      -1,    18,   182,   227,    -1,    17,   181,   227,    -1,    17,
+     173,   227,    -1,    17,   182,   227,    -1,    -1,   168,    -1,
       -1,   100,    87,   108,   169,   170,   109,    -1,   171,    -1,
      170,   171,    -1,     4,    -1,    19,    -1,   180,    -1,   115,
      170,   116,    -1,   107,    -1,   107,   117,   187,    -1,   107,
-     117,   231,    -1,   233,   175,   196,    -1,    -1,   174,   176,
+     117,   232,    -1,   234,   175,   196,    -1,    -1,   174,   176,
       -1,   152,    -1,    32,   108,   161,   109,    -1,    83,   108,
      158,   109,    -1,    84,   108,   158,   109,    -1,    83,   196,
-      73,   240,   233,   175,    -1,    84,   196,    73,   240,   233,
-     175,    -1,    23,    -1,    23,    40,    30,   241,    -1,    61,
-      73,   177,    -1,    15,    -1,    15,   118,   238,    -1,   239,
-     118,   238,    -1,    15,   118,   241,    -1,   239,    -1,   239,
+      73,   241,   234,   175,    -1,    84,   196,    73,   241,   234,
+     175,    -1,    23,    -1,    23,    40,    30,   242,    -1,    61,
+      73,   177,    -1,    15,    -1,    15,   118,   239,    -1,   240,
+     118,   239,    -1,    15,   118,   242,    -1,   240,    -1,   240,
      118,   178,    -1,   179,    -1,   178,   118,   179,    -1,   180,
       -1,    17,    -1,    18,    -1,    17,    -1,   181,   118,    17,
-      -1,   181,   118,    18,    -1,    16,    -1,   241,   173,     3,
-     184,    -1,   186,    -1,   187,    -1,   241,   114,   184,    -1,
+      -1,   181,   118,    18,    -1,    16,    -1,   242,   173,     3,
+     184,    -1,   186,    -1,   187,    -1,   242,   114,   184,    -1,
       -1,   108,   185,   189,    -1,    68,    -1,    50,    -1,    91,
-      -1,     6,    -1,     8,    -1,   188,    -1,   231,    -1,   241,
-      -1,   238,   118,   241,    -1,     7,    -1,    13,    -1,    14,
+      -1,     6,    -1,     8,    -1,   188,    -1,   232,    -1,   242,
+      -1,   239,   118,   242,    -1,     7,    -1,    13,    -1,    14,
       -1,     5,    -1,   189,     5,    -1,    29,    -1,    68,    -1,
       81,    -1,   191,    -1,    72,    86,    -1,    70,    56,    -1,
       82,    -1,    49,    -1,    41,    76,    -1,    31,    86,    -1,
       96,    -1,    52,    -1,   193,    -1,    63,    -1,    45,    -1,
-      27,    86,    -1,   190,    -1,   191,   228,    -1,    28,    -1,
+      27,    86,    -1,   190,    -1,   191,   229,    -1,    28,    -1,
       53,    -1,    54,    -1,    55,    -1,    64,    -1,    69,    -1,
       79,    -1,    88,    -1,    90,    -1,    95,    -1,    97,    -1,
       98,    -1,    99,    -1,    71,    -1,   104,    -1,   105,    -1,
      102,    -1,   103,    -1,    -1,   197,    -1,   198,    -1,   199,
       -1,    85,   110,   200,   111,    -1,   110,   200,   111,    -1,
      199,   110,   200,   111,    -1,   107,    -1,   201,    -1,   201,
-     113,   107,    -1,   201,   113,   107,   113,   201,    -1,   215,
+     113,   107,    -1,   201,   113,   107,   113,   201,    -1,   216,
       -1,   202,    -1,    22,   101,   205,    -1,   203,    -1,   202,
      194,   203,    -1,   204,    -1,   203,   195,   204,    -1,   205,
       -1,   205,   101,   205,    -1,   207,   110,   200,   111,    -1,
-     110,   200,   111,    -1,   208,    -1,   209,    -1,   208,   219,
-     208,    -1,    66,   219,   208,    -1,   208,   219,    65,    -1,
-      66,   219,    65,    -1,   210,    -1,   206,    -1,    75,     7,
-      -1,    75,   241,    -1,    85,    -1,    51,    -1,    50,    -1,
-      91,    -1,   232,    -1,   188,    -1,   241,    -1,   238,    -1,
-     100,    34,   199,    -1,   100,    35,   108,   211,   109,    -1,
-     212,    -1,   211,   113,   212,    -1,   107,    -1,   241,   196,
-     213,    -1,    -1,   214,    -1,    78,    -1,    20,    -1,    74,
-      -1,   216,    -1,   220,    -1,   218,    -1,    -1,    36,    30,
-     108,   217,   189,    -1,    37,   173,    -1,   106,    -1,   106,
-     119,    -1,   119,   106,    -1,   119,   106,   119,    -1,   221,
-      -1,   222,    -1,   108,   238,   109,    -1,   221,   108,   223,
-     109,    -1,   224,    -1,   223,   113,   224,    -1,   120,   225,
-      -1,   120,   118,   225,    -1,   241,    -1,   225,   118,   241,
-      -1,    -1,   227,    -1,    74,    -1,    38,   184,    -1,   108,
-     109,    -1,   108,   229,   109,    -1,   230,    -1,   229,   113,
-     230,    -1,   241,    -1,   241,   110,   231,   111,    -1,   241,
-     110,   187,   111,    -1,   231,    -1,   107,    -1,    10,    -1,
-      11,    -1,   231,    -1,    12,    -1,    -1,   234,    -1,   235,
-     237,    -1,   115,   236,    10,   116,    -1,    -1,    94,    -1,
-      24,    -1,    80,    -1,    -1,    57,    -1,    46,    -1,    15,
-      -1,    16,    -1,    16,    -1,    -1,   241,    -1,     9,    -1
+     110,   200,   111,    -1,   208,    -1,   210,    -1,   208,   220,
+     208,    -1,    66,   220,   208,    -1,   208,   220,    65,    -1,
+      66,   220,    65,    -1,   211,    -1,   206,    -1,    75,     7,
+      -1,    75,   242,    -1,    85,    -1,    51,    -1,    50,    -1,
+      91,    -1,   233,    -1,   188,    -1,   209,    -1,   242,    -1,
+       6,    -1,     8,    -1,   239,    -1,   100,    34,   199,    -1,
+     100,    35,   108,   212,   109,    -1,   213,    -1,   212,   113,
+     213,    -1,   107,    -1,   242,   196,   214,    -1,    -1,   215,
+      -1,    78,    -1,    20,    -1,    74,    -1,   217,    -1,   221,
+      -1,   219,    -1,    -1,    36,    30,   108,   218,   189,    -1,
+      37,   173,    -1,   106,    -1,   106,   119,    -1,   119,   106,
+      -1,   119,   106,   119,    -1,   222,    -1,   223,    -1,   108,
+     239,   109,    -1,   222,   108,   224,   109,    -1,   225,    -1,
+     224,   113,   225,    -1,   120,   226,    -1,   120,   118,   226,
+      -1,   242,    -1,   226,   118,   242,    -1,    -1,   228,    -1,
+      74,    -1,    38,   184,    -1,   108,   109,    -1,   108,   230,
+     109,    -1,   231,    -1,   230,   113,   231,    -1,   242,    -1,
+     242,   110,   232,   111,    -1,   242,   110,   187,   111,    -1,
+     232,    -1,   107,    -1,    10,    -1,    11,    -1,   232,    -1,
+      12,    -1,    -1,   235,    -1,   236,   238,    -1,   115,   237,
+      10,   116,    -1,    -1,    94,    -1,    24,    -1,    80,    -1,
+      -1,    57,    -1,    46,    -1,    15,    -1,    16,    -1,    16,
+      -1,    -1,   242,    -1,     9,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const unsigned short yyrline[] =
 {
-       0,   354,   354,   360,   366,   383,   382,   411,   413,   416,
-     420,   425,   432,   440,   445,   449,   458,   460,   468,   472,
-     480,   484,   487,   490,   494,   514,   516,   524,   533,   537,
-     552,   560,   573,   581,   580,   594,   606,   608,   610,   621,
-     626,   628,   630,   636,   642,   644,   647,   658,   664,   670,
-     677,   683,   692,   694,   705,   709,   712,   719,   725,   731,
-     738,   744,   753,   755,   765,   779,   789,   805,   815,   831,
-     837,   844,   854,   864,   869,   876,   883,   891,   901,   907,
-     913,   917,   925,   936,   958,   960,   962,   968,   974,   982,
-     988,   995,  1000,  1006,  1012,  1018,  1021,  1027,  1037,  1039,
-    1042,  1050,  1057,  1070,  1081,  1091,  1102,  1112,  1123,  1134,
-    1136,  1143,  1141,  1150,  1155,  1161,  1166,  1169,  1173,  1178,
-    1187,  1196,  1207,  1229,  1236,  1255,  1259,  1265,  1271,  1277,
-    1287,  1297,  1303,  1314,  1328,  1337,  1347,  1357,  1367,  1375,
-    1396,  1405,  1414,  1416,  1423,  1430,  1436,  1440,  1446,  1466,
-    1476,  1478,  1479,  1486,  1486,  1491,  1498,  1504,  1509,  1513,
-    1517,  1520,  1525,  1537,  1554,  1559,  1564,  1597,  1607,  1621,
-    1623,  1624,  1625,  1626,  1627,  1628,  1629,  1630,  1631,  1632,
-    1633,  1634,  1640,  1642,  1643,  1646,  1653,  1665,  1667,  1671,
-    1675,  1676,  1677,  1678,  1679,  1683,  1684,  1685,  1686,  1690,
-    1691,  1698,  1698,  1699,  1699,  1701,  1703,  1708,  1712,  1716,
-    1725,  1729,  1734,  1739,  1742,  1748,  1756,  1761,  1763,  1768,
-    1770,  1775,  1777,  1783,  1785,  1790,  1799,  1807,  1813,  1819,
-    1826,  1834,  1842,  1851,  1854,  1859,  1865,  1875,  1879,  1884,
-    1890,  1895,  1896,  1897,  1910,  1924,  1928,  1933,  1937,  1942,
-    1949,  1962,  1964,  1967,  1971,  1974,  1981,  1983,  1984,  1989,
-    1987,  1999,  2007,  2009,  2010,  2011,  2013,  2017,  2025,  2040,
-    2046,  2053,  2066,  2078,  2093,  2097,  2114,  2119,  2122,  2127,
-    2149,  2154,  2159,  2165,  2171,  2179,  2187,  2195,  2202,  2212,
-    2217,  2223,  2225,  2255,  2257,  2260,  2267,  2273,  2275,  2276,
-    2277,  2280,  2282,  2283,  2286,  2291,  2298,  2305,  2307,  2312
+       0,   355,   355,   361,   367,   384,   383,   412,   414,   417,
+     421,   426,   433,   441,   446,   450,   459,   461,   469,   473,
+     481,   485,   488,   491,   495,   515,   517,   525,   534,   538,
+     553,   561,   574,   582,   581,   595,   607,   609,   611,   622,
+     627,   629,   631,   637,   643,   645,   648,   659,   665,   671,
+     678,   684,   693,   695,   706,   710,   713,   720,   726,   732,
+     739,   745,   754,   756,   766,   780,   790,   806,   816,   832,
+     838,   845,   855,   865,   870,   877,   884,   892,   902,   908,
+     914,   918,   926,   937,   959,   961,   963,   969,   975,   983,
+     989,   996,  1001,  1007,  1013,  1019,  1022,  1028,  1038,  1040,
+    1043,  1051,  1058,  1071,  1082,  1092,  1103,  1113,  1124,  1135,
+    1137,  1144,  1142,  1151,  1156,  1162,  1167,  1170,  1174,  1179,
+    1188,  1197,  1208,  1230,  1237,  1256,  1260,  1266,  1272,  1278,
+    1288,  1298,  1304,  1315,  1329,  1338,  1348,  1358,  1368,  1376,
+    1397,  1406,  1415,  1417,  1424,  1431,  1437,  1441,  1447,  1467,
+    1477,  1479,  1480,  1487,  1487,  1492,  1499,  1505,  1510,  1514,
+    1518,  1521,  1526,  1538,  1555,  1560,  1565,  1572,  1582,  1596,
+    1598,  1599,  1600,  1601,  1602,  1603,  1604,  1605,  1606,  1607,
+    1608,  1609,  1615,  1617,  1618,  1621,  1628,  1640,  1642,  1646,
+    1650,  1651,  1652,  1653,  1654,  1658,  1659,  1660,  1661,  1665,
+    1666,  1673,  1673,  1674,  1674,  1676,  1678,  1683,  1687,  1691,
+    1700,  1704,  1709,  1714,  1717,  1723,  1731,  1736,  1738,  1743,
+    1745,  1750,  1752,  1758,  1760,  1765,  1774,  1782,  1788,  1794,
+    1801,  1809,  1817,  1826,  1829,  1834,  1840,  1850,  1854,  1859,
+    1865,  1870,  1871,  1872,  1873,  1886,  1891,  1897,  1911,  1915,
+    1920,  1924,  1929,  1936,  1949,  1951,  1954,  1958,  1961,  1968,
+    1970,  1971,  1976,  1974,  1986,  1994,  1996,  1997,  1998,  2000,
+    2004,  2012,  2027,  2033,  2040,  2053,  2065,  2080,  2084,  2101,
+    2106,  2109,  2114,  2136,  2141,  2146,  2152,  2158,  2166,  2174,
+    2182,  2189,  2199,  2204,  2210,  2212,  2242,  2244,  2247,  2254,
+    2260,  2262,  2263,  2264,  2267,  2269,  2270,  2273,  2278,  2285,
+    2292,  2294,  2299
 };
 #endif
 
@@ -807,7 +810,7 @@
   "Constraint", "SubtypeConstraint", "SetOfConstraints", 
   "ElementSetSpecs", "ElementSetSpec", "Unions", "Intersections", 
   "IntersectionElements", "ConstraintSubtypeElement", "PatternConstraint", 
-  "ConstraintSpec", "SingleValue", "ContainedSubtype", 
+  "ConstraintSpec", "SingleValue", "BitStringValue", "ContainedSubtype", 
   "InnerTypeConstraint", "WithComponentsList", "WithComponentsElement", 
   "optPresenceConstraint", "PresenceConstraint", "GeneralConstraint", 
   "UserDefinedConstraint", "@5", "ContentsConstraint", 
@@ -868,13 +871,14 @@
      199,   199,   200,   200,   200,   200,   200,   201,   201,   202,
      202,   203,   203,   204,   204,   205,   205,   205,   205,   205,
      205,   205,   205,   205,   205,   206,   206,   207,   207,   208,
-     208,   208,   208,   208,   209,   210,   210,   211,   211,   212,
-     212,   213,   213,   214,   214,   214,   215,   215,   215,   217,
-     216,   218,   219,   219,   219,   219,   220,   220,   221,   222,
-     223,   223,   224,   224,   225,   225,   226,   226,   227,   227,
-     228,   228,   229,   229,   230,   230,   230,   230,   230,   231,
-     231,   232,   232,   233,   233,   234,   235,   236,   236,   236,
-     236,   237,   237,   237,   238,   238,   239,   240,   240,   241
+     208,   208,   208,   208,   208,   209,   209,   210,   211,   211,
+     212,   212,   213,   213,   214,   214,   215,   215,   215,   216,
+     216,   216,   218,   217,   219,   220,   220,   220,   220,   221,
+     221,   222,   223,   224,   224,   225,   225,   226,   226,   227,
+     227,   228,   228,   229,   229,   230,   230,   231,   231,   231,
+     231,   231,   232,   232,   233,   233,   234,   234,   235,   236,
+     237,   237,   237,   237,   238,   238,   238,   239,   239,   240,
+     241,   241,   242
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -904,13 +908,14 @@
        3,     4,     1,     1,     3,     5,     1,     1,     3,     1,
        3,     1,     3,     1,     3,     4,     3,     1,     1,     3,
        3,     3,     3,     1,     1,     2,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     3,     5,     1,     3,     1,
-       3,     0,     1,     1,     1,     1,     1,     1,     1,     0,
-       5,     2,     1,     2,     2,     3,     1,     1,     3,     4,
-       1,     3,     2,     3,     1,     3,     0,     1,     1,     2,
-       2,     3,     1,     3,     1,     4,     4,     1,     1,     1,
-       1,     1,     1,     0,     1,     2,     4,     0,     1,     1,
-       1,     0,     1,     1,     1,     1,     1,     0,     1,     1
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     5,
+       1,     3,     1,     3,     0,     1,     1,     1,     1,     1,
+       1,     1,     0,     5,     2,     1,     2,     2,     3,     1,
+       1,     3,     4,     1,     3,     2,     3,     1,     3,     0,
+       1,     1,     2,     2,     3,     1,     3,     1,     4,     4,
+       1,     1,     1,     1,     1,     1,     0,     1,     2,     4,
+       0,     1,     1,     1,     0,     1,     1,     1,     1,     1,
+       0,     1,     1
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -918,8 +923,8 @@
    means the default is an error.  */
 static const unsigned short yydefact[] =
 {
-       0,   304,   305,     0,     2,     3,     5,     1,     4,     7,
-       0,     0,     8,   309,    15,    10,     0,    11,    13,    16,
+       0,   307,   308,     0,     2,     3,     5,     1,     4,     7,
+       0,     0,     8,   312,    15,    10,     0,    11,    13,    16,
        9,    12,     0,     0,     0,     0,     0,     0,     0,    17,
       18,     0,    24,    22,    20,    23,    21,     0,    19,    14,
       52,     0,     0,    26,    36,    53,     0,    56,     0,    57,
@@ -927,44 +932,44 @@
       39,     0,    41,    42,     0,    47,    49,    51,   187,     0,
      188,   189,   190,   191,   192,   200,   193,   194,   195,   196,
      197,   198,   199,    27,    28,    32,    30,    31,    35,     0,
-     293,    58,    60,    38,    43,     0,     0,     0,    33,    29,
-     293,   134,   306,     0,   169,     0,     0,   183,   176,   180,
+     296,    58,    60,    38,    43,     0,     0,     0,    33,    29,
+     296,   134,   309,     0,   169,     0,     0,   183,   176,   180,
      182,   170,     0,     0,   171,   175,   179,     0,     0,    65,
-     185,   172,    64,   181,   138,   297,     0,   123,   294,   301,
+     185,   172,    64,   181,   138,   300,     0,   123,   297,   304,
       44,    48,    50,    34,     0,    68,    67,     0,   184,   178,
-     177,   174,   173,     0,    71,     0,   172,    73,     0,   293,
-       0,   186,     0,   299,   300,   298,     0,     0,     0,   205,
-     303,   302,   295,    45,    46,     0,   135,   137,     0,     0,
-       0,     0,     0,    63,   158,   164,   159,   289,   290,   165,
+     177,   174,   173,     0,    71,     0,   172,    73,     0,   296,
+       0,   186,     0,   302,   303,   301,     0,     0,     0,   205,
+     306,   305,   298,    45,    46,     0,   135,   137,     0,     0,
+       0,     0,     0,    63,   158,   164,   159,   292,   293,   165,
      166,   156,   157,    83,     0,    78,    80,    81,   160,   161,
-      82,   288,   280,     0,   282,   287,   284,   143,   144,   139,
+      82,   291,   283,     0,   285,   290,   287,   143,   144,   139,
      140,   142,   136,     0,   155,   153,   149,   150,   151,     0,
      162,   131,     0,     0,   205,   205,   125,   124,     0,     0,
-     122,   206,   207,   208,   293,   293,     0,   100,   293,    72,
-      77,    76,    75,    74,   292,     0,     0,   293,   239,   238,
-       0,     0,   237,   240,     0,   212,     0,     0,   242,     0,
-     213,   217,   219,   221,   223,   234,     0,   227,   228,   233,
-     216,   256,   258,   257,   266,   267,   291,   241,   244,   243,
-      66,   293,   281,     0,     0,     0,   296,     0,     0,     0,
-       0,   293,     0,   293,     0,   293,     0,     0,     0,     0,
-     148,   145,     0,   278,   276,   276,   276,   102,   277,    98,
-     276,   276,   109,     0,    70,    69,     0,     0,   261,   262,
-       0,     0,   235,   236,     0,     0,     0,     0,    62,     0,
-     201,   202,     0,   203,   204,     0,     0,     0,     0,     0,
-      79,   283,     0,     0,   162,   141,   167,   154,   163,   152,
-       0,   119,     0,    92,    95,    96,   293,   133,     0,     0,
-      85,    86,    91,   276,   293,   307,     0,   307,     0,   210,
-       0,   279,   107,     0,   106,   108,    99,   276,   104,   105,
-       0,    97,   110,   101,   218,   259,   263,   264,   232,   230,
-     245,     0,   268,   226,   214,   220,   222,   224,     0,   231,
-     229,     0,     0,   270,   286,   285,   168,   132,     0,   126,
-     293,    94,   293,   127,   293,    89,   276,   293,   308,   128,
-     293,   209,   211,   146,   147,   103,     0,     0,   265,   249,
-       0,   247,   205,     0,   225,     0,   272,   274,   269,     0,
-     120,   121,    93,    90,    87,    88,   123,   123,   111,   260,
-     246,     0,   251,   215,   273,     0,   271,   129,   130,     0,
-     248,   254,   255,   253,   250,   252,   275,   115,   116,     0,
-       0,   113,   117,     0,   112,   114,   118
+     122,   206,   207,   208,   296,   296,     0,   100,   296,    72,
+      77,    76,    75,    74,   245,   246,   295,     0,     0,   296,
+     239,   238,     0,     0,   237,   240,     0,   212,     0,     0,
+     242,     0,   213,   217,   219,   221,   223,   234,     0,   227,
+     243,   228,   233,   216,   259,   261,   260,   269,   270,   294,
+     241,   247,   244,    66,   296,   284,     0,     0,     0,   299,
+       0,     0,     0,     0,   296,     0,   296,     0,   296,     0,
+       0,     0,     0,   148,   145,     0,   281,   279,   279,   279,
+     102,   280,    98,   279,   279,   109,     0,    70,    69,     0,
+       0,   264,   265,     0,     0,   235,   236,     0,     0,     0,
+       0,    62,     0,   201,   202,     0,   203,   204,     0,     0,
+       0,     0,     0,    79,   286,     0,     0,   162,   141,   167,
+     154,   163,   152,     0,   119,     0,    92,    95,    96,   296,
+     133,     0,     0,    85,    86,    91,   279,   296,   310,     0,
+     310,     0,   210,     0,   282,   107,     0,   106,   108,    99,
+     279,   104,   105,     0,    97,   110,   101,   218,   262,   266,
+     267,   232,   230,   248,     0,   271,   226,   214,   220,   222,
+     224,     0,   231,   229,     0,     0,   273,   289,   288,   168,
+     132,     0,   126,   296,    94,   296,   127,   296,    89,   279,
+     296,   311,   128,   296,   209,   211,   146,   147,   103,     0,
+       0,   268,   252,     0,   250,   205,     0,   225,     0,   275,
+     277,   272,     0,   120,   121,    93,    90,    87,    88,   123,
+     123,   111,   263,   249,     0,   254,   215,   276,     0,   274,
+     129,   130,     0,   251,   257,   258,   256,   253,   255,   278,
+     115,   116,     0,     0,   113,   117,     0,   112,   114,   118
 };
 
 /* YYDEFGOTO[NTERM-NUM]. */
@@ -973,159 +978,165 @@
       -1,     3,     4,     5,     9,    11,    12,    16,    17,    28,
       29,    30,    42,    43,    83,    84,   133,    54,    55,    61,
       62,   164,    63,    64,    65,    44,    45,    48,    49,   183,
-      85,   118,    86,   143,   144,   184,   185,   349,   350,   351,
-     342,   343,   135,   367,   226,   227,   371,   372,   449,   460,
-     461,   352,   353,   158,   159,   217,   119,   199,   200,   462,
-     295,   296,    87,   206,   277,   207,   208,   248,   337,   120,
-     121,   122,   123,   322,   325,   220,   221,   222,   223,   249,
-     250,   251,   252,   253,   254,   255,   256,   257,   258,   259,
-     420,   421,   454,   455,   260,   261,   417,   262,   311,   263,
-     264,   265,   392,   393,   426,   297,   298,   151,   193,   194,
-     266,   267,   127,   128,   129,   156,   162,   268,   124,   407,
-     269
+      85,   118,    86,   143,   144,   184,   185,   352,   353,   354,
+     345,   346,   135,   370,   226,   227,   374,   375,   452,   463,
+     464,   355,   356,   158,   159,   217,   119,   199,   200,   465,
+     298,   299,    87,   206,   280,   207,   208,   250,   340,   120,
+     121,   122,   123,   325,   328,   220,   221,   222,   223,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   423,   424,   457,   458,   263,   264,   420,   265,   314,
+     266,   267,   268,   395,   396,   429,   300,   301,   151,   193,
+     194,   269,   270,   127,   128,   129,   156,   162,   271,   124,
+     410,   272
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -282
+#define YYPACT_NINF -287
 static const short yypact[] =
 {
-     221,  -282,  -282,    51,   221,  -282,  -282,  -282,  -282,     8,
-       6,    75,  -282,  -282,  -282,  -282,    26,  -282,    13,   237,
-    -282,  -282,   144,   104,   106,   126,   115,   133,   205,   237,
-    -282,   136,  -282,  -282,  -282,  -282,  -282,   204,  -282,  -282,
-     166,    55,   213,  -282,   190,  -282,   165,  -282,   153,  -282,
-     185,  -282,  -282,   176,   493,  -282,  -282,  -282,   196,   186,
-    -282,   202,   196,  -282,   -14,  -282,   209,  -282,  -282,   303,
-    -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,  -282,   493,  -282,  -282,  -282,  -282,  -282,   271,
-     206,  -282,  -282,  -282,  -282,   221,   196,   223,  -282,  -282,
-     -19,   220,  -282,   258,  -282,   260,   275,  -282,  -282,  -282,
-    -282,  -282,   304,   272,  -282,  -282,  -282,   646,   361,   257,
-    -282,   266,  -282,  -282,   259,     9,   372,  -282,  -282,   122,
-       8,  -282,  -282,  -282,   268,  -282,  -282,   196,  -282,  -282,
-    -282,  -282,  -282,    74,  -282,   264,  -282,   269,   274,    99,
-      73,  -282,   273,  -282,  -282,  -282,   370,   210,   570,    34,
-    -282,  -282,  -282,  -282,  -282,   289,  -282,  -282,   381,   646,
-     196,   196,   386,  -282,  -282,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,  -282,  -282,    84,  -282,  -282,  -282,  -282,  -282,
-    -282,  -282,  -282,   119,  -282,  -282,   276,  -282,  -282,   267,
-    -282,  -282,  -282,   288,  -282,  -282,  -282,  -282,  -282,   287,
-     277,   347,   281,   319,    78,    96,  -282,  -282,   296,   386,
-    -282,  -282,  -282,   297,   218,    44,   120,  -282,   -19,  -282,
-    -282,  -282,  -282,  -282,  -282,   308,   380,   206,  -282,  -282,
-     -32,    95,  -282,  -282,   302,  -282,   221,   386,  -282,   305,
-     298,   224,   246,  -282,   311,  -282,   306,   -32,  -282,  -282,
-    -282,  -282,  -282,  -282,   309,  -282,  -282,  -282,  -282,  -282,
-    -282,    99,  -282,    82,   294,   337,  -282,   408,   409,   210,
-     389,    19,   341,    63,   348,    63,   351,   386,   314,   386,
-    -282,  -282,   210,  -282,    -6,    47,    -6,  -282,  -282,   327,
-      47,    -6,   326,   289,  -282,  -282,   453,   320,  -282,   310,
-     321,   189,  -282,  -282,   322,   325,   330,   323,  -282,   342,
-    -282,  -282,   453,  -282,  -282,   453,   453,   386,   231,   328,
-    -282,  -282,   339,   340,  -282,  -282,  -282,   425,  -282,  -282,
-     409,   338,   137,  -282,  -282,  -282,   206,  -282,   383,   349,
-     344,  -282,  -282,    -6,   206,   409,   350,   409,   343,  -282,
-     359,  -282,  -282,   345,  -282,  -282,  -282,    -6,  -282,  -282,
-     385,  -282,  -282,  -282,  -282,  -282,  -282,   354,  -282,  -282,
-     297,    48,  -282,  -282,   362,   246,  -282,  -282,   363,  -282,
-    -282,    -1,   139,  -282,  -282,  -282,  -282,  -282,   294,  -282,
-      19,  -282,   206,  -282,    18,  -282,    -6,   206,  -282,  -282,
-     206,  -282,  -282,  -282,  -282,  -282,   368,   408,  -282,  -282,
-     163,  -282,    34,   431,  -282,   409,   360,  -282,  -282,   328,
-    -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,   425,
-    -282,    48,    -9,  -282,   360,   409,  -282,  -282,  -282,    21,
-    -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,  -282,    21,
-      62,  -282,  -282,    37,  -282,  -282,  -282
+      80,  -287,  -287,    24,    80,  -287,  -287,  -287,  -287,   -57,
+       7,    17,  -287,  -287,  -287,  -287,    44,  -287,   -42,   240,
+    -287,  -287,    77,    42,    61,   119,   107,   129,   168,   240,
+    -287,   114,  -287,  -287,  -287,  -287,  -287,   205,  -287,  -287,
+      82,    68,   190,  -287,   178,  -287,   140,  -287,    98,  -287,
+     191,  -287,  -287,   198,   538,  -287,  -287,  -287,   232,   184,
+    -287,   202,   232,  -287,    69,  -287,   209,  -287,  -287,   304,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,  -287,   538,  -287,  -287,  -287,  -287,  -287,   274,
+     207,  -287,  -287,  -287,  -287,    80,   232,   223,  -287,  -287,
+       9,   218,  -287,   255,  -287,   261,   273,  -287,  -287,  -287,
+    -287,  -287,   295,   266,  -287,  -287,  -287,   706,   351,   249,
+    -287,   250,  -287,  -287,   241,    79,   357,  -287,  -287,   186,
+     -57,  -287,  -287,  -287,   253,  -287,  -287,   232,  -287,  -287,
+    -287,  -287,  -287,   145,  -287,   251,  -287,   252,   259,   101,
+      16,  -287,   291,  -287,  -287,  -287,   353,   213,   630,   -16,
+    -287,  -287,  -287,  -287,  -287,   243,  -287,  -287,   365,   706,
+     232,   232,   413,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,  -287,  -287,   146,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,  -287,   166,  -287,  -287,   265,  -287,  -287,   258,
+    -287,  -287,  -287,   262,  -287,  -287,  -287,  -287,  -287,   263,
+     269,   337,   271,   312,    85,   130,  -287,  -287,   270,   413,
+    -287,  -287,  -287,   276,    81,    48,   171,  -287,     9,  -287,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,   286,   358,   207,
+    -287,  -287,   -17,    23,  -287,  -287,   234,  -287,    80,   413,
+    -287,   280,   277,   206,   210,  -287,   293,  -287,   282,   -17,
+    -287,  -287,  -287,  -287,  -287,  -287,  -287,   287,  -287,  -287,
+    -287,  -287,  -287,  -287,   101,  -287,    71,   235,   307,  -287,
+     391,   389,   213,   369,    51,   315,    70,   327,    70,   328,
+     413,   292,   413,  -287,  -287,   213,  -287,   -27,   -19,   -27,
+    -287,  -287,   309,   -19,   -27,   305,   243,  -287,  -287,   564,
+     296,  -287,   288,   302,   192,  -287,  -287,   299,   303,   301,
+     306,  -287,   308,  -287,  -287,   564,  -287,  -287,   564,   564,
+     413,   446,   294,  -287,  -287,   319,   320,  -287,  -287,  -287,
+     407,  -287,  -287,   389,   316,   182,  -287,  -287,  -287,   207,
+    -287,   340,   323,   324,  -287,  -287,   -27,   207,   389,   330,
+     389,   325,  -287,   329,  -287,  -287,   317,  -287,  -287,  -287,
+     -27,  -287,  -287,   354,  -287,  -287,  -287,  -287,  -287,  -287,
+     297,  -287,  -287,   276,    76,  -287,  -287,   331,   210,  -287,
+    -287,   332,  -287,  -287,    -1,   183,  -287,  -287,  -287,  -287,
+    -287,   235,  -287,    51,  -287,   207,  -287,     6,  -287,   -27,
+     207,  -287,  -287,   207,  -287,  -287,  -287,  -287,  -287,   334,
+     391,  -287,  -287,   185,  -287,   -16,   459,  -287,   389,   333,
+    -287,  -287,   294,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,   407,  -287,    76,   161,  -287,   333,   389,  -287,
+    -287,  -287,    57,  -287,  -287,  -287,  -287,  -287,  -287,  -287,
+    -287,  -287,    57,    19,  -287,  -287,    53,  -287,  -287,  -287
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const short yypgoto[] =
 {
-    -282,  -282,  -282,   475,  -282,  -282,   353,  -282,   464,  -282,
-    -282,   455,  -282,  -282,  -282,   402,  -282,  -282,  -282,  -282,
-    -282,  -282,   426,  -282,   391,  -282,  -282,  -282,   432,   352,
-    -282,   331,  -282,  -282,   329,  -282,   228,   207,  -282,    87,
-    -282,   101,   279,  -282,  -282,   192,  -282,  -282,  -282,    46,
-    -205,  -269,   -87,  -282,   -64,  -282,   229,  -282,   235,  -145,
-     290,   292,  -282,  -168,  -282,  -139,  -270,  -123,    97,   -75,
-     -72,  -282,   -34,  -282,  -282,  -213,  -282,  -282,   198,  -169,
-      90,  -282,   201,   193,  -231,  -282,  -282,  -281,  -282,  -282,
-    -282,    79,  -282,  -282,  -282,  -282,  -282,  -282,   270,  -282,
-    -282,  -282,  -282,   100,   105,  -277,  -282,  -282,  -282,   251,
-    -128,  -282,   -99,  -282,  -282,  -282,  -282,     5,  -282,   168,
-     -10
+    -287,  -287,  -287,   441,  -287,  -287,   318,  -287,   430,  -287,
+    -287,   418,  -287,  -287,  -287,   378,  -287,  -287,  -287,  -287,
+    -287,  -287,   400,  -287,   380,  -287,  -287,  -287,   419,   335,
+    -287,   322,  -287,  -287,   313,  -287,   204,   196,  -287,    78,
+    -287,    83,   264,  -287,  -287,   181,  -287,  -287,  -287,    27,
+    -277,  -270,   -87,  -287,  -100,  -287,   208,  -287,   212,  -148,
+     272,   275,  -287,   -65,  -287,  -142,  -265,  -139,    74,   -51,
+      67,  -287,    -5,  -287,  -287,  -213,  -287,  -287,   174,  -199,
+      73,  -287,   170,   173,  -165,  -287,  -287,  -286,  -287,  -287,
+    -287,  -287,    58,  -287,  -287,  -287,  -287,  -287,  -287,   244,
+    -287,  -287,  -287,  -287,    75,    84,  -264,  -287,  -287,  -287,
+     229,  -128,  -287,  -222,  -287,  -287,  -287,  -287,     5,  -287,
+     148,   -10
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
    positive, shift that token.  If negative, reduce the rule which
    number is the opposite.  If zero, do what YYDEFACT says.
    If YYTABLE_NINF, parse error.  */
-#define YYTABLE_NINF -277
+#define YYTABLE_NINF -280
 static const short yytable[] =
 {
-      18,   284,   286,   126,   332,     6,    18,   201,    13,     6,
-     187,   451,   344,   136,   134,    13,    14,   362,   364,   365,
-      88,   189,   195,   368,   369,   457,   188,    13,    13,   189,
-     379,    51,   292,   153,   188,    13,    14,    95,   197,   198,
-     458,   457,   145,    67,    90,   146,    50,   390,    51,    88,
-     288,     7,    67,   348,   197,   198,   458,    13,    66,    89,
-     290,   291,   186,    50,    13,   452,   457,    66,   293,   453,
-       1,     2,    13,    90,   309,   374,   405,    46,   317,   197,
-     198,   458,    13,   177,   178,   292,    67,   310,    89,   154,
-     415,    13,   177,   178,   145,   387,   125,   146,   348,    96,
-     130,    66,   312,   155,    13,   174,   175,   176,    13,   177,
-     178,   339,   179,   180,    19,    15,    10,   425,   358,   218,
-     360,   293,   147,    22,   361,   341,   341,   167,   430,   435,
-     201,   344,   187,   125,   125,    20,   459,   294,   299,   190,
-     196,   305,   166,   189,   219,   195,   333,   210,   188,   181,
-     308,   189,   459,   466,    31,   419,   188,   202,   388,   125,
-     231,   233,   209,   218,   189,   363,    32,    47,   160,   188,
-     341,   464,   -84,    35,   147,   230,   232,   459,   125,   161,
-     191,   218,   192,   168,   186,    13,   283,   169,   219,   191,
-     182,     1,     2,   270,   345,    33,   175,   271,    13,   177,
-     178,   234,   179,   180,   285,    13,   219,   172,    37,   442,
-     -25,     1,     2,    41,   125,    34,   174,   175,   176,    13,
-     177,   178,    36,   179,   180,     1,     2,    60,   272,   302,
-      40,   313,   273,   303,   290,   291,     1,     2,   175,   238,
-      13,   177,   178,   234,   179,   180,   399,    39,   428,    53,
-     400,   316,   429,    23,   378,   465,   292,    52,   465,   401,
-     181,   190,    24,   196,   334,    57,    58,   406,   338,   210,
-     431,   346,   440,   354,   100,   354,   441,    56,   204,   209,
-     243,   238,   210,    25,   209,    26,   101,   102,     1,     2,
-     197,   198,   293,    59,    27,    92,   389,   209,   103,    68,
-     104,   182,   105,    13,   177,   178,   224,   225,   436,     1,
-       2,   437,   106,   345,    93,   433,   107,    97,   205,    98,
-     108,   125,   243,   109,    70,    71,    72,  -276,   320,   321,
-     397,  -276,   132,   125,   110,    73,   314,   315,   137,   111,
-      74,   112,    75,   113,   138,   408,   139,   408,   323,   324,
-      76,   140,   114,   115,   197,   198,   101,   102,   142,    77,
-     141,    78,   413,   414,   148,   149,    79,   116,    80,    81,
-      82,   422,   447,   448,   150,   157,   165,   152,   170,   117,
-     203,   427,   172,   171,   228,   275,   274,   280,   334,   281,
-     346,   279,   282,   175,   354,    13,   177,   178,   234,   179,
-     180,     1,     2,   209,   276,   278,   287,   289,   235,   306,
-     307,   319,   326,   336,   318,   427,   327,   329,    13,   340,
-     366,   355,   236,   237,   357,   359,   370,   377,   375,   376,
-     396,   422,   219,   381,   383,   456,   238,   239,   175,   382,
-      13,   177,   178,   234,   179,   180,     1,     2,   391,   384,
-     394,   395,   240,   235,   411,   398,   402,   404,   403,   409,
-     175,   241,    13,   177,   178,   234,   179,   180,     1,     2,
-     412,   242,   416,   418,   424,   423,   438,   243,   445,     8,
-      21,   238,   239,   163,    38,    99,   244,   131,    94,   216,
-      91,   434,   356,   245,   246,   373,   247,   240,   229,   330,
-     173,   432,    13,   238,   239,   463,   241,   304,     1,     2,
-     335,   347,   380,   443,   439,   300,   242,   301,   386,   240,
-     450,    68,   243,   385,   331,   410,     0,   328,   241,   446,
-     444,   244,     0,     0,     0,     0,    69,     0,   242,     0,
-       0,   247,     0,     0,   243,     0,    70,    71,    72,     0,
-       0,     0,     0,   244,     0,     0,     0,    73,     0,     0,
-       0,     0,    74,   247,    75,     0,     0,     0,     0,     0,
-       0,     0,    76,     0,     0,     0,     0,     0,     0,     0,
-       0,    77,     0,    78,     0,   101,   102,     0,    79,     0,
-      80,    81,    82,   211,     0,     0,     0,   103,    68,   104,
-       0,   105,   212,     0,     0,     0,     0,     0,     0,     0,
-       0,   106,     0,     0,     0,   107,     0,     0,     0,   108,
+      18,   287,   289,   126,   201,     6,    18,   187,    13,     6,
+     188,   295,   335,   136,   347,    13,    13,    14,   188,   295,
+     291,   189,   195,   460,     7,    13,   177,   178,   382,   189,
+     315,    51,    13,   365,   367,   368,   197,   198,   461,   371,
+     372,   351,   134,    67,    90,   393,    50,   296,    51,    88,
+     320,    10,    67,    13,    14,   296,    19,   460,    66,    89,
+      13,   460,   186,    50,   293,   294,   145,    66,    22,   218,
+     197,   198,   461,    90,   197,   198,   461,    13,    88,    13,
+      13,   177,   178,     1,     2,    13,    67,    31,    89,   312,
+      46,   361,   408,   363,   219,     1,     2,   293,   294,   366,
+     130,    66,   313,   153,    32,   351,   418,   174,   175,   176,
+      13,   177,   178,   344,   179,   180,    15,   428,   145,   295,
+      95,   125,   147,   191,   125,   192,   -25,   167,   467,    41,
+     201,   391,   187,   347,   462,   188,   433,   297,   302,   190,
+     196,   308,   166,   188,   377,   438,   189,   210,   195,   336,
+      33,   181,   311,    20,   189,   296,   188,   202,   344,   154,
+     231,   233,   209,   125,   390,    35,   125,   189,   462,   469,
+     218,    37,   462,   155,   147,   230,   232,   344,   191,   -84,
+      47,   454,    96,   422,   146,   125,   468,   186,   439,   468,
+    -279,   440,   182,   286,  -279,   219,   125,   348,   234,   175,
+     235,    13,   177,   178,   236,   179,   180,    13,    34,   172,
+      57,    58,   445,     1,     2,   218,   125,   342,    36,   174,
+     175,   176,    13,   177,   178,    39,   179,   180,     1,     2,
+     364,    40,   160,   316,    52,   455,   146,    53,   288,   456,
+     219,    13,   240,   161,    13,   177,   178,     1,     2,    60,
+       1,     2,    56,   319,   168,   273,    23,   381,   169,   274,
+     224,   225,   404,   181,   190,    24,   196,   337,   317,   318,
+     409,   341,   210,   434,   349,   275,   357,   100,   357,   276,
+     305,   204,   209,   245,   306,   210,    25,   209,    26,   101,
+     102,   402,   431,    92,   443,   403,   432,    27,   444,    59,
+     209,   103,    68,   104,   182,   105,     1,     2,   197,   198,
+     323,   324,   326,   327,    93,   106,   348,    97,   436,   107,
+      98,   205,   125,   108,   197,   198,   109,    70,    71,    72,
+     101,   102,   132,   400,   416,   417,   137,   110,    73,   450,
+     451,   138,   111,    74,   112,    75,   113,   139,   411,   140,
+     411,   141,   142,    76,   148,   114,   115,   149,   150,   152,
+     157,   165,    77,   203,    78,   170,   171,   172,   228,    79,
+     116,    80,    81,    82,   425,   277,   278,   283,   279,   284,
+     290,   281,   117,   282,   430,   285,   292,   309,   310,   321,
+     322,   337,   330,   349,   329,   332,   339,   357,    13,   343,
+     358,   360,   369,   362,   378,   373,   209,   379,   380,   219,
+     385,   384,   399,   405,   394,   387,   421,   386,   430,   234,
+     175,   235,    13,   177,   178,   236,   179,   180,     1,     2,
+     397,   398,   406,   401,   425,   237,   414,   407,   459,   412,
+     415,   419,   441,   427,   426,     8,    21,    38,   163,   238,
+     239,   448,   234,   175,   235,    13,   177,   178,   236,   179,
+     180,    99,    94,   240,   241,   234,   175,   235,    13,   177,
+     178,   236,   179,   180,     1,     2,   131,    91,   333,   242,
+     216,   237,   229,   173,   359,   437,   435,   376,   243,   466,
+     338,   383,   307,   350,   442,   388,   240,   303,   244,   446,
+     304,   389,   453,   331,   245,   334,     0,   449,   413,   240,
+     241,   392,   447,   246,     0,     0,     0,     0,     0,     0,
+     247,   248,     0,   249,     0,   242,     0,     0,     0,     0,
+       0,     0,     0,     0,   243,     0,     0,   245,     0,     0,
+       0,     0,     0,     0,   244,     0,     0,    13,     0,     0,
+     245,     0,     0,     1,     2,     0,     0,     0,     0,   246,
+       0,     0,     0,     0,     0,     0,    68,     0,     0,   249,
+     234,   175,   235,    13,   177,   178,   236,   179,   180,     1,
+       2,    69,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    70,    71,    72,     0,     0,     0,     0,     0,     0,
+       0,     0,    73,     0,     0,     0,     0,    74,     0,    75,
+       0,     0,     0,     0,   240,   241,     0,    76,     0,     0,
+       0,     0,     0,     0,     0,     0,    77,     0,    78,     0,
+     242,     0,     0,    79,     0,    80,    81,    82,     0,   243,
+       0,     0,     0,     0,     0,   101,   102,     0,     0,   244,
+       0,     0,     0,   211,     0,   245,     0,   103,    68,   104,
+       0,   105,   212,     0,   246,     0,     0,     0,     0,     0,
+       0,   106,     0,     0,   249,   107,     0,     0,     0,   108,
        0,     0,   109,    70,    71,    72,     0,     0,     0,     0,
        0,   213,     0,   110,    73,     0,     0,     0,   111,    74,
      112,    75,   113,     0,     0,     0,     0,     0,     0,    76,
@@ -1143,68 +1154,74 @@
 
 static const short yycheck[] =
 {
-      10,   214,   215,    90,   274,     0,    16,   152,     9,     4,
-     149,    20,   281,   100,    33,     9,    10,   294,   295,   296,
-      54,   149,   150,   300,   301,     4,   149,     9,     9,   157,
-     311,    41,    38,    24,   157,     9,    10,    51,    17,    18,
-      19,     4,   117,    53,    54,   117,    41,   328,    58,    83,
-     219,     0,    62,    35,    17,    18,    19,     9,    53,    54,
-      16,    17,   149,    58,     9,    74,     4,    62,    74,    78,
-      15,    16,     9,    83,   106,   306,   353,    22,   247,    17,
-      18,    19,     9,    10,    11,    38,    96,   119,    83,    80,
-     367,     9,    10,    11,   169,   326,   115,   169,    35,   113,
-      95,    96,     7,    94,     9,     6,     7,     8,     9,    10,
-      11,   279,    13,    14,    39,   109,   108,   118,   287,    85,
-     289,    74,   117,   110,   292,   107,   107,   137,   398,   406,
-     275,   400,   271,   115,   115,   109,   115,   224,   225,   149,
-     150,   228,   137,   271,   110,   273,   274,   157,   271,    50,
-     237,   279,   115,   116,    10,   107,   279,   152,   327,   115,
-     170,   171,   157,    85,   292,   118,    62,   112,    46,   292,
-     107,   109,   109,    58,   169,   170,   171,   115,   115,    57,
-     107,    85,   109,   109,   271,     9,   108,   113,   110,   107,
-      91,    15,    16,   109,   281,    89,     7,   113,     9,    10,
-      11,    12,    13,    14,   108,     9,   110,   108,     3,   422,
-      44,    15,    16,    47,   115,    89,     6,     7,     8,     9,
-      10,    11,    89,    13,    14,    15,    16,    51,   109,   109,
-      26,   241,   113,   113,    16,    17,    15,    16,     7,    50,
-       9,    10,    11,    12,    13,    14,   109,   111,   109,    59,
-     113,   246,   113,    16,    65,   460,    38,    44,   463,   346,
-      50,   271,    25,   273,   274,   112,   113,   354,   278,   279,
-     398,   281,   109,   283,     3,   285,   113,   112,    68,   274,
-      91,    50,   292,    46,   279,    48,    15,    16,    15,    16,
-      17,    18,    74,   108,    57,   109,    65,   292,    27,    28,
-      29,    91,    31,     9,    10,    11,    17,    18,   407,    15,
-      16,   410,    41,   400,   112,   402,    45,   108,   108,    16,
-      49,   115,    91,    52,    53,    54,    55,   109,   104,   105,
-     340,   113,   109,   115,    63,    64,    34,    35,   118,    68,
-      69,    70,    71,    72,    86,   355,    86,   357,   102,   103,
-      79,    76,    81,    82,    17,    18,    15,    16,    86,    88,
-      56,    90,    17,    18,     3,   108,    95,    96,    97,    98,
-      99,   381,   436,   437,   108,     3,   108,   118,   114,   108,
-      10,   391,   108,   114,     3,   118,   110,    40,   398,   108,
-     400,   114,    73,     7,   404,     9,    10,    11,    12,    13,
-      14,    15,    16,   398,   116,   118,   110,   110,    22,   101,
-      30,   113,   101,     5,   109,   425,   110,   108,     9,    30,
-      93,    73,    36,    37,    73,   111,   100,   106,   108,   119,
-       5,   441,   110,   108,   111,   445,    50,    51,     7,   109,
-       9,    10,    11,    12,    13,    14,    15,    16,   120,   107,
-     111,   111,    66,    22,   111,   117,    73,   113,   109,   109,
-       7,    75,     9,    10,    11,    12,    13,    14,    15,    16,
-     111,    85,    87,   119,   111,   113,   108,    91,   118,     4,
-      16,    50,    51,   130,    29,    83,   100,    96,    62,   158,
-      58,   404,   285,   107,   108,   303,   110,    66,   169,   271,
-     148,   400,     9,    50,    51,   459,    75,   228,    15,    16,
-     275,   282,   314,   423,   417,   225,    85,   225,   325,    66,
-     441,    28,    91,   322,   273,   357,    -1,   257,    75,   429,
-     425,   100,    -1,    -1,    -1,    -1,    43,    -1,    85,    -1,
-      -1,   110,    -1,    -1,    91,    -1,    53,    54,    55,    -1,
-      -1,    -1,    -1,   100,    -1,    -1,    -1,    64,    -1,    -1,
-      -1,    -1,    69,   110,    71,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    -1,    90,    -1,    15,    16,    -1,    95,    -1,
-      97,    98,    99,    23,    -1,    -1,    -1,    27,    28,    29,
-      -1,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    41,    -1,    -1,    -1,    45,    -1,    -1,    -1,    49,
+      10,   214,   215,    90,   152,     0,    16,   149,     9,     4,
+     149,    38,   277,   100,   284,     9,     9,    10,   157,    38,
+     219,   149,   150,     4,     0,     9,    10,    11,   314,   157,
+       7,    41,     9,   297,   298,   299,    17,    18,    19,   303,
+     304,    35,    33,    53,    54,   331,    41,    74,    58,    54,
+     249,   108,    62,     9,    10,    74,    39,     4,    53,    54,
+       9,     4,   149,    58,    16,    17,   117,    62,   110,    85,
+      17,    18,    19,    83,    17,    18,    19,     9,    83,     9,
+       9,    10,    11,    15,    16,     9,    96,    10,    83,   106,
+      22,   290,   356,   292,   110,    15,    16,    16,    17,   118,
+      95,    96,   119,    24,    62,    35,   370,     6,     7,     8,
+       9,    10,    11,   107,    13,    14,   109,   118,   169,    38,
+      51,   115,   117,   107,   115,   109,    44,   137,   109,    47,
+     278,   330,   274,   403,   115,   274,   401,   224,   225,   149,
+     150,   228,   137,   282,   309,   409,   274,   157,   276,   277,
+      89,    50,   239,   109,   282,    74,   295,   152,   107,    80,
+     170,   171,   157,   115,   329,    58,   115,   295,   115,   116,
+      85,     3,   115,    94,   169,   170,   171,   107,   107,   109,
+     112,    20,   113,   107,   117,   115,   463,   274,   410,   466,
+     109,   413,    91,   108,   113,   110,   115,   284,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,     9,    89,   108,
+     112,   113,   425,    15,    16,    85,   115,   282,    89,     6,
+       7,     8,     9,    10,    11,   111,    13,    14,    15,    16,
+     295,    26,    46,   243,    44,    74,   169,    59,   108,    78,
+     110,     9,    50,    57,     9,    10,    11,    15,    16,    51,
+      15,    16,   112,   248,   109,   109,    16,    65,   113,   113,
+      17,    18,   349,    50,   274,    25,   276,   277,    34,    35,
+     357,   281,   282,   401,   284,   109,   286,     3,   288,   113,
+     109,    68,   277,    91,   113,   295,    46,   282,    48,    15,
+      16,   109,   109,   109,   109,   113,   113,    57,   113,   108,
+     295,    27,    28,    29,    91,    31,    15,    16,    17,    18,
+     104,   105,   102,   103,   112,    41,   403,   108,   405,    45,
+      16,   108,   115,    49,    17,    18,    52,    53,    54,    55,
+      15,    16,   109,   343,    17,    18,   118,    63,    64,   439,
+     440,    86,    68,    69,    70,    71,    72,    86,   358,    76,
+     360,    56,    86,    79,     3,    81,    82,   108,   108,   118,
+       3,   108,    88,    10,    90,   114,   114,   108,     3,    95,
+      96,    97,    98,    99,   384,   110,   118,    40,   116,   108,
+     110,   118,   108,   114,   394,    73,   110,   101,    30,   109,
+     113,   401,   110,   403,   101,   108,     5,   407,     9,    30,
+      73,    73,    93,   111,   108,   100,   401,   119,   106,   110,
+     109,   108,     5,    73,   120,   107,   119,   111,   428,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+     111,   111,   109,   117,   444,    22,   111,   113,   448,   109,
+     111,    87,   108,   111,   113,     4,    16,    29,   130,    36,
+      37,   118,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    83,    62,    50,    51,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    96,    58,   274,    66,
+     158,    22,   169,   148,   288,   407,   403,   306,    75,   462,
+     278,   317,   228,   285,   420,   325,    50,   225,    85,   426,
+     225,   328,   444,   259,    91,   276,    -1,   432,   360,    50,
+      51,    65,   428,   100,    -1,    -1,    -1,    -1,    -1,    -1,
+     107,   108,    -1,   110,    -1,    66,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    75,    -1,    -1,    91,    -1,    -1,
+      -1,    -1,    -1,    -1,    85,    -1,    -1,     9,    -1,    -1,
+      91,    -1,    -1,    15,    16,    -1,    -1,    -1,    -1,   100,
+      -1,    -1,    -1,    -1,    -1,    -1,    28,    -1,    -1,   110,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    43,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    53,    54,    55,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    64,    -1,    -1,    -1,    -1,    69,    -1,    71,
+      -1,    -1,    -1,    -1,    50,    51,    -1,    79,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    -1,    90,    -1,
+      66,    -1,    -1,    95,    -1,    97,    98,    99,    -1,    75,
+      -1,    -1,    -1,    -1,    -1,    15,    16,    -1,    -1,    85,
+      -1,    -1,    -1,    23,    -1,    91,    -1,    27,    28,    29,
+      -1,    31,    32,    -1,   100,    -1,    -1,    -1,    -1,    -1,
+      -1,    41,    -1,    -1,   110,    45,    -1,    -1,    -1,    49,
       -1,    -1,    52,    53,    54,    55,    -1,    -1,    -1,    -1,
       -1,    61,    -1,    63,    64,    -1,    -1,    -1,    68,    69,
       70,    71,    72,    -1,    -1,    -1,    -1,    -1,    -1,    79,
@@ -1224,53 +1241,53 @@
    symbol of state STATE-NUM.  */
 static const unsigned char yystos[] =
 {
-       0,    15,    16,   122,   123,   124,   238,     0,   124,   125,
-     108,   126,   127,     9,    10,   109,   128,   129,   241,    39,
+       0,    15,    16,   122,   123,   124,   239,     0,   124,   125,
+     108,   126,   127,     9,    10,   109,   128,   129,   242,    39,
      109,   129,   110,    16,    25,    46,    48,    57,   130,   131,
      132,    10,    62,    89,    89,    58,    89,     3,   132,   111,
       26,    47,   133,   134,   146,   147,    22,   112,   148,   149,
-     238,   241,    44,    59,   138,   139,   112,   112,   113,   108,
-      51,   140,   141,   143,   144,   145,   238,   241,    28,    43,
+     239,   242,    44,    59,   138,   139,   112,   112,   113,   108,
+      51,   140,   141,   143,   144,   145,   239,   242,    28,    43,
       53,    54,    55,    64,    69,    71,    79,    88,    90,    95,
-      97,    98,    99,   135,   136,   151,   153,   183,   193,   238,
-     241,   149,   109,   112,   143,    51,   113,   108,    16,   136,
+      97,    98,    99,   135,   136,   151,   153,   183,   193,   239,
+     242,   149,   109,   112,   143,    51,   113,   108,    16,   136,
        3,    15,    16,    27,    29,    31,    41,    45,    49,    52,
       63,    68,    70,    72,    81,    82,    96,   108,   152,   177,
-     190,   191,   192,   193,   239,   115,   173,   233,   234,   235,
-     238,   145,   109,   137,    33,   163,   173,   118,    86,    86,
-      76,    56,    86,   154,   155,   190,   191,   238,     3,   108,
-     108,   228,   118,    24,    80,    94,   236,     3,   174,   175,
-      46,    57,   237,   127,   142,   108,   238,   241,   109,   113,
+     190,   191,   192,   193,   240,   115,   173,   234,   235,   236,
+     239,   145,   109,   137,    33,   163,   173,   118,    86,    86,
+      76,    56,    86,   154,   155,   190,   191,   239,     3,   108,
+     108,   229,   118,    24,    80,    94,   237,     3,   174,   175,
+      46,    57,   238,   127,   142,   108,   239,   242,   109,   113,
      114,   114,   108,   150,     6,     7,     8,    10,    11,    13,
-      14,    50,    91,   150,   156,   157,   173,   186,   188,   231,
-     241,   107,   109,   229,   230,   231,   241,    17,    18,   178,
-     179,   180,   238,    10,    68,   108,   184,   186,   187,   238,
-     241,    23,    32,    61,    83,    84,   152,   176,    85,   110,
+      14,    50,    91,   150,   156,   157,   173,   186,   188,   232,
+     242,   107,   109,   230,   231,   232,   242,    17,    18,   178,
+     179,   180,   239,    10,    68,   108,   184,   186,   187,   239,
+     242,    23,    32,    61,    83,    84,   152,   176,    85,   110,
      196,   197,   198,   199,    17,    18,   165,   166,     3,   155,
-     238,   241,   238,   241,    12,    22,    36,    37,    50,    51,
-      66,    75,    85,    91,   100,   107,   108,   110,   188,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     215,   216,   218,   220,   221,   222,   231,   232,   238,   241,
-     109,   113,   109,   113,   110,   118,   116,   185,   118,   114,
-      40,   108,    73,   108,   196,   108,   196,   110,   200,   110,
-      16,    17,    38,    74,   173,   181,   182,   226,   227,   173,
-     181,   182,   109,   113,   163,   173,   101,    30,   173,   106,
-     119,   219,     7,   241,    34,    35,   238,   200,   109,   113,
-     104,   105,   194,   102,   103,   195,   101,   110,   219,   108,
-     157,   230,   187,   231,   241,   179,     5,   189,   241,   184,
-      30,   107,   161,   162,   172,   173,   241,   177,    35,   158,
-     159,   160,   172,   173,   241,    73,   158,    73,   200,   111,
-     200,   184,   226,   118,   226,   226,    93,   164,   226,   226,
-     100,   167,   168,   166,   205,   108,   119,   106,    65,   208,
-     199,   108,   109,   111,   107,   203,   204,   205,   200,    65,
-     208,   120,   223,   224,   111,   111,     5,   241,   117,   109,
-     113,   173,    73,   109,   113,   226,   173,   240,   241,   109,
-     240,   111,   111,    17,    18,   226,    87,   217,   119,   107,
-     211,   212,   241,   113,   111,   118,   225,   241,   109,   113,
-     187,   231,   162,   173,   160,   226,   233,   233,   108,   189,
-     109,   113,   196,   201,   225,   118,   224,   175,   175,   169,
-     212,    20,    74,    78,   213,   214,   241,     4,    19,   115,
-     170,   171,   180,   170,   109,   171,   116
+     239,   242,   239,   242,     6,     8,    12,    22,    36,    37,
+      50,    51,    66,    75,    85,    91,   100,   107,   108,   110,
+     188,   200,   201,   202,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   216,   217,   219,   221,   222,   223,   232,
+     233,   239,   242,   109,   113,   109,   113,   110,   118,   116,
+     185,   118,   114,    40,   108,    73,   108,   196,   108,   196,
+     110,   200,   110,    16,    17,    38,    74,   173,   181,   182,
+     227,   228,   173,   181,   182,   109,   113,   163,   173,   101,
+      30,   173,   106,   119,   220,     7,   242,    34,    35,   239,
+     200,   109,   113,   104,   105,   194,   102,   103,   195,   101,
+     110,   220,   108,   157,   231,   187,   232,   242,   179,     5,
+     189,   242,   184,    30,   107,   161,   162,   172,   173,   242,
+     177,    35,   158,   159,   160,   172,   173,   242,    73,   158,
+      73,   200,   111,   200,   184,   227,   118,   227,   227,    93,
+     164,   227,   227,   100,   167,   168,   166,   205,   108,   119,
+     106,    65,   208,   199,   108,   109,   111,   107,   203,   204,
+     205,   200,    65,   208,   120,   224,   225,   111,   111,     5,
+     242,   117,   109,   113,   173,    73,   109,   113,   227,   173,
+     241,   242,   109,   241,   111,   111,    17,    18,   227,    87,
+     218,   119,   107,   212,   213,   242,   113,   111,   118,   226,
+     242,   109,   113,   187,   232,   162,   173,   160,   227,   234,
+     234,   108,   189,   109,   113,   196,   201,   226,   118,   225,
+     175,   175,   169,   213,    20,    74,    78,   214,   215,   242,
+       4,    19,   115,   170,   171,   180,   170,   109,   171,   116
 };
 
 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
@@ -1821,14 +1838,14 @@
   switch (yyn)
     {
         case 2:
-#line 355 "asn1p_y.y"
+#line 356 "asn1p_y.y"
     {
 		*(void **)param = yyvsp[0].a_grammar;
 	}
     break;
 
   case 3:
-#line 361 "asn1p_y.y"
+#line 362 "asn1p_y.y"
     {
 		yyval.a_grammar = asn1p_new();
 		checkmem(yyval.a_grammar);
@@ -1837,7 +1854,7 @@
     break;
 
   case 4:
-#line 366 "asn1p_y.y"
+#line 367 "asn1p_y.y"
     {
 		yyval.a_grammar = yyvsp[-1].a_grammar;
 		TQ_ADD(&(yyval.a_grammar->modules), yyvsp[0].a_module, mod_next);
@@ -1845,12 +1862,12 @@
     break;
 
   case 5:
-#line 383 "asn1p_y.y"
+#line 384 "asn1p_y.y"
     { currentModule = asn1p_module_new(); }
     break;
 
   case 6:
-#line 388 "asn1p_y.y"
+#line 389 "asn1p_y.y"
     {
 
 		yyval.a_module = currentModule;
@@ -1871,31 +1888,31 @@
     break;
 
   case 7:
-#line 412 "asn1p_y.y"
+#line 413 "asn1p_y.y"
     { yyval.a_oid = 0; }
     break;
 
   case 8:
-#line 413 "asn1p_y.y"
+#line 414 "asn1p_y.y"
     { yyval.a_oid = yyvsp[0].a_oid; }
     break;
 
   case 9:
-#line 417 "asn1p_y.y"
+#line 418 "asn1p_y.y"
     {
 		yyval.a_oid = yyvsp[-1].a_oid;
 	}
     break;
 
   case 10:
-#line 420 "asn1p_y.y"
+#line 421 "asn1p_y.y"
     {
 		yyval.a_oid = 0;
 	}
     break;
 
   case 11:
-#line 426 "asn1p_y.y"
+#line 427 "asn1p_y.y"
     {
 		yyval.a_oid = asn1p_oid_new();
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1905,7 +1922,7 @@
     break;
 
   case 12:
-#line 432 "asn1p_y.y"
+#line 433 "asn1p_y.y"
     {
 		yyval.a_oid = yyvsp[-1].a_oid;
 		asn1p_oid_add_arc(yyval.a_oid, &yyvsp[0].a_oid_arc);
@@ -1915,7 +1932,7 @@
     break;
 
   case 13:
-#line 441 "asn1p_y.y"
+#line 442 "asn1p_y.y"
     {					/* iso */
 		yyval.a_oid_arc.name = yyvsp[0].tv_str;
 		yyval.a_oid_arc.number = -1;
@@ -1923,7 +1940,7 @@
     break;
 
   case 14:
-#line 445 "asn1p_y.y"
+#line 446 "asn1p_y.y"
     {		/* iso(1) */
 		yyval.a_oid_arc.name = yyvsp[-3].tv_str;
 		yyval.a_oid_arc.number = yyvsp[-1].a_int;
@@ -1931,7 +1948,7 @@
     break;
 
   case 15:
-#line 449 "asn1p_y.y"
+#line 450 "asn1p_y.y"
     {					/* 1 */
 		yyval.a_oid_arc.name = 0;
 		yyval.a_oid_arc.number = yyvsp[0].a_int;
@@ -1939,61 +1956,61 @@
     break;
 
   case 16:
-#line 459 "asn1p_y.y"
+#line 460 "asn1p_y.y"
     { yyval.a_module_flags = MSF_NOFLAGS; }
     break;
 
   case 17:
-#line 460 "asn1p_y.y"
+#line 461 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	}
     break;
 
   case 18:
-#line 469 "asn1p_y.y"
+#line 470 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[0].a_module_flags;
 	}
     break;
 
   case 19:
-#line 472 "asn1p_y.y"
+#line 473 "asn1p_y.y"
     {
 		yyval.a_module_flags = yyvsp[-1].a_module_flags | yyvsp[0].a_module_flags;
 	}
     break;
 
   case 20:
-#line 481 "asn1p_y.y"
+#line 482 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_EXPLICIT_TAGS;
 	}
     break;
 
   case 21:
-#line 484 "asn1p_y.y"
+#line 485 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_IMPLICIT_TAGS;
 	}
     break;
 
   case 22:
-#line 487 "asn1p_y.y"
+#line 488 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_AUTOMATIC_TAGS;
 	}
     break;
 
   case 23:
-#line 490 "asn1p_y.y"
+#line 491 "asn1p_y.y"
     {
 		yyval.a_module_flags = MSF_EXTENSIBILITY_IMPLIED;
 	}
     break;
 
   case 24:
-#line 494 "asn1p_y.y"
+#line 495 "asn1p_y.y"
     {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp(yyvsp[-1].tv_str, "TAG") == 0) {
@@ -2012,19 +2029,19 @@
     break;
 
   case 25:
-#line 515 "asn1p_y.y"
+#line 516 "asn1p_y.y"
     { yyval.a_module = 0; }
     break;
 
   case 26:
-#line 516 "asn1p_y.y"
+#line 517 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 27:
-#line 525 "asn1p_y.y"
+#line 526 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		AL_IMPORT(yyval.a_module, exports, yyvsp[-2].a_module, xp_next);
@@ -2034,14 +2051,14 @@
     break;
 
   case 28:
-#line 534 "asn1p_y.y"
+#line 535 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[0].a_module;
 	}
     break;
 
   case 29:
-#line 537 "asn1p_y.y"
+#line 538 "asn1p_y.y"
     {
 		if(yyvsp[-1].a_module) {
 			yyval.a_module = yyvsp[-1].a_module;
@@ -2054,7 +2071,7 @@
     break;
 
   case 30:
-#line 553 "asn1p_y.y"
+#line 554 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2065,7 +2082,7 @@
     break;
 
   case 31:
-#line 560 "asn1p_y.y"
+#line 561 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2076,7 +2093,7 @@
     break;
 
   case 32:
-#line 573 "asn1p_y.y"
+#line 574 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2087,12 +2104,12 @@
     break;
 
   case 33:
-#line 581 "asn1p_y.y"
+#line 582 "asn1p_y.y"
     { asn1p_lexer_hack_push_encoding_control(); }
     break;
 
   case 34:
-#line 582 "asn1p_y.y"
+#line 583 "asn1p_y.y"
     {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -2104,7 +2121,7 @@
     break;
 
   case 35:
-#line 594 "asn1p_y.y"
+#line 595 "asn1p_y.y"
     {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -2113,12 +2130,12 @@
     break;
 
   case 36:
-#line 607 "asn1p_y.y"
+#line 608 "asn1p_y.y"
     { yyval.a_module = 0; }
     break;
 
   case 38:
-#line 611 "asn1p_y.y"
+#line 612 "asn1p_y.y"
     {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -2129,19 +2146,19 @@
     break;
 
   case 39:
-#line 621 "asn1p_y.y"
+#line 622 "asn1p_y.y"
     {
 		return yyerror("Empty IMPORTS list");
 	}
     break;
 
   case 40:
-#line 627 "asn1p_y.y"
+#line 628 "asn1p_y.y"
     { yyval.a_module = asn1p_module_new(); }
     break;
 
   case 42:
-#line 631 "asn1p_y.y"
+#line 632 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2150,7 +2167,7 @@
     break;
 
   case 43:
-#line 636 "asn1p_y.y"
+#line 637 "asn1p_y.y"
     {
 		yyval.a_module = yyvsp[-1].a_module;
 		TQ_ADD(&(yyval.a_module->imports), yyvsp[0].a_xports, xp_next);
@@ -2158,17 +2175,17 @@
     break;
 
   case 44:
-#line 643 "asn1p_y.y"
+#line 644 "asn1p_y.y"
     { memset(&yyval.a_aid, 0, sizeof(yyval.a_aid)); }
     break;
 
   case 45:
-#line 644 "asn1p_y.y"
+#line 645 "asn1p_y.y"
     { yyval.a_aid.oid = yyvsp[0].a_oid; }
     break;
 
   case 46:
-#line 648 "asn1p_y.y"
+#line 649 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-3].a_xports;
 		yyval.a_xports->fromModuleName = yyvsp[-1].tv_str;
@@ -2180,7 +2197,7 @@
     break;
 
   case 47:
-#line 659 "asn1p_y.y"
+#line 660 "asn1p_y.y"
     {
 		yyval.a_xports = asn1p_xports_new();
 		checkmem(yyval.a_xports);
@@ -2189,7 +2206,7 @@
     break;
 
   case 48:
-#line 664 "asn1p_y.y"
+#line 665 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
@@ -2197,7 +2214,7 @@
     break;
 
   case 49:
-#line 671 "asn1p_y.y"
+#line 672 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2207,7 +2224,7 @@
     break;
 
   case 50:
-#line 677 "asn1p_y.y"
+#line 678 "asn1p_y.y"
     {		/* Completely equivalent to above */
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2217,7 +2234,7 @@
     break;
 
   case 51:
-#line 683 "asn1p_y.y"
+#line 684 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2227,12 +2244,12 @@
     break;
 
   case 52:
-#line 693 "asn1p_y.y"
+#line 694 "asn1p_y.y"
     { yyval.a_module = 0; }
     break;
 
   case 53:
-#line 694 "asn1p_y.y"
+#line 695 "asn1p_y.y"
     {
 		yyval.a_module = asn1p_module_new();
 		checkmem(yyval.a_module);
@@ -2245,21 +2262,21 @@
     break;
 
   case 54:
-#line 706 "asn1p_y.y"
+#line 707 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-1].a_xports;
 	}
     break;
 
   case 55:
-#line 709 "asn1p_y.y"
+#line 710 "asn1p_y.y"
     {
 		yyval.a_xports = 0;
 	}
     break;
 
   case 56:
-#line 712 "asn1p_y.y"
+#line 713 "asn1p_y.y"
     {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		yyval.a_xports = asn1p_xports_new();
@@ -2268,7 +2285,7 @@
     break;
 
   case 57:
-#line 720 "asn1p_y.y"
+#line 721 "asn1p_y.y"
     {
 		yyval.a_xports = asn1p_xports_new();
 		assert(yyval.a_xports);
@@ -2277,7 +2294,7 @@
     break;
 
   case 58:
-#line 725 "asn1p_y.y"
+#line 726 "asn1p_y.y"
     {
 		yyval.a_xports = yyvsp[-2].a_xports;
 		TQ_ADD(&(yyval.a_xports->members), yyvsp[0].a_expr, next);
@@ -2285,7 +2302,7 @@
     break;
 
   case 59:
-#line 732 "asn1p_y.y"
+#line 733 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2295,7 +2312,7 @@
     break;
 
   case 60:
-#line 738 "asn1p_y.y"
+#line 739 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2305,7 +2322,7 @@
     break;
 
   case 61:
-#line 744 "asn1p_y.y"
+#line 745 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2315,12 +2332,12 @@
     break;
 
   case 62:
-#line 753 "asn1p_y.y"
+#line 754 "asn1p_y.y"
     { yyval.a_constr = yyvsp[-1].a_constr; }
     break;
 
   case 63:
-#line 756 "asn1p_y.y"
+#line 757 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2331,14 +2348,14 @@
     break;
 
   case 64:
-#line 766 "asn1p_y.y"
+#line 767 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 65:
-#line 779 "asn1p_y.y"
+#line 780 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2349,7 +2366,7 @@
     break;
 
   case 66:
-#line 789 "asn1p_y.y"
+#line 790 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2361,7 +2378,7 @@
     break;
 
   case 67:
-#line 809 "asn1p_y.y"
+#line 810 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2371,7 +2388,7 @@
     break;
 
   case 68:
-#line 815 "asn1p_y.y"
+#line 816 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2381,7 +2398,7 @@
     break;
 
   case 69:
-#line 831 "asn1p_y.y"
+#line 832 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
@@ -2390,7 +2407,7 @@
     break;
 
   case 70:
-#line 837 "asn1p_y.y"
+#line 838 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->Identifier = yyvsp[-5].tv_str;
@@ -2399,7 +2416,7 @@
     break;
 
   case 71:
-#line 845 "asn1p_y.y"
+#line 846 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_plist = asn1p_paramlist_new(yylineno);
@@ -2412,7 +2429,7 @@
     break;
 
   case 72:
-#line 854 "asn1p_y.y"
+#line 855 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_plist = yyvsp[-2].a_plist;
@@ -2424,7 +2441,7 @@
     break;
 
   case 73:
-#line 865 "asn1p_y.y"
+#line 866 "asn1p_y.y"
     {
 		yyval.a_parg.governor = NULL;
 		yyval.a_parg.argument = yyvsp[0].tv_str;
@@ -2432,7 +2449,7 @@
     break;
 
   case 74:
-#line 869 "asn1p_y.y"
+#line 870 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2443,7 +2460,7 @@
     break;
 
   case 75:
-#line 876 "asn1p_y.y"
+#line 877 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2454,7 +2471,7 @@
     break;
 
   case 76:
-#line 883 "asn1p_y.y"
+#line 884 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2466,7 +2483,7 @@
     break;
 
   case 77:
-#line 891 "asn1p_y.y"
+#line 892 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_parg.governor = asn1p_ref_new(yylineno);
@@ -2478,7 +2495,7 @@
     break;
 
   case 78:
-#line 902 "asn1p_y.y"
+#line 903 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2487,7 +2504,7 @@
     break;
 
   case 79:
-#line 907 "asn1p_y.y"
+#line 908 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2495,14 +2512,14 @@
     break;
 
   case 80:
-#line 914 "asn1p_y.y"
+#line 915 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 81:
-#line 917 "asn1p_y.y"
+#line 918 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2514,7 +2531,7 @@
     break;
 
   case 82:
-#line 925 "asn1p_y.y"
+#line 926 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		yyval.a_expr = NEW_EXPR();
@@ -2529,7 +2546,7 @@
     break;
 
   case 83:
-#line 936 "asn1p_y.y"
+#line 937 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->expr_type = A1TC_VALUESET;
@@ -2539,17 +2556,17 @@
     break;
 
   case 84:
-#line 959 "asn1p_y.y"
+#line 960 "asn1p_y.y"
     { yyval.a_expr = NEW_EXPR(); }
     break;
 
   case 85:
-#line 960 "asn1p_y.y"
+#line 961 "asn1p_y.y"
     { yyval.a_expr = yyvsp[0].a_expr; }
     break;
 
   case 86:
-#line 963 "asn1p_y.y"
+#line 964 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2558,7 +2575,7 @@
     break;
 
   case 87:
-#line 968 "asn1p_y.y"
+#line 969 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2566,7 +2583,7 @@
     break;
 
   case 88:
-#line 975 "asn1p_y.y"
+#line 976 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2577,7 +2594,7 @@
     break;
 
   case 89:
-#line 982 "asn1p_y.y"
+#line 983 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyvsp[0].a_marker.flags |= yyval.a_expr->marker.flags;
@@ -2587,7 +2604,7 @@
     break;
 
   case 90:
-#line 988 "asn1p_y.y"
+#line 989 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2598,14 +2615,14 @@
     break;
 
   case 91:
-#line 995 "asn1p_y.y"
+#line 996 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 92:
-#line 1001 "asn1p_y.y"
+#line 1002 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2614,7 +2631,7 @@
     break;
 
   case 93:
-#line 1006 "asn1p_y.y"
+#line 1007 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2622,7 +2639,7 @@
     break;
 
   case 94:
-#line 1013 "asn1p_y.y"
+#line 1014 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		assert(yyval.a_expr->Identifier == 0);
@@ -2631,14 +2648,14 @@
     break;
 
   case 95:
-#line 1018 "asn1p_y.y"
+#line 1019 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 96:
-#line 1021 "asn1p_y.y"
+#line 1022 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		_fixup_anonymous_identifier(yyval.a_expr);
@@ -2646,7 +2663,7 @@
     break;
 
   case 97:
-#line 1028 "asn1p_y.y"
+#line 1029 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		checkmem(yyval.a_expr);
@@ -2657,17 +2674,17 @@
     break;
 
   case 98:
-#line 1038 "asn1p_y.y"
+#line 1039 "asn1p_y.y"
     { yyval.a_int = 0; }
     break;
 
   case 99:
-#line 1039 "asn1p_y.y"
+#line 1040 "asn1p_y.y"
     { yyval.a_int = 1; }
     break;
 
   case 100:
-#line 1043 "asn1p_y.y"
+#line 1044 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2678,7 +2695,7 @@
     break;
 
   case 101:
-#line 1050 "asn1p_y.y"
+#line 1051 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
@@ -2686,7 +2703,7 @@
     break;
 
   case 102:
-#line 1060 "asn1p_y.y"
+#line 1061 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2698,7 +2715,7 @@
     break;
 
   case 103:
-#line 1070 "asn1p_y.y"
+#line 1071 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->Identifier = yyvsp[-3].tv_str;
@@ -2711,7 +2728,7 @@
     break;
 
   case 104:
-#line 1081 "asn1p_y.y"
+#line 1082 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2723,7 +2740,7 @@
     break;
 
   case 105:
-#line 1091 "asn1p_y.y"
+#line 1092 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2736,7 +2753,7 @@
     break;
 
   case 106:
-#line 1102 "asn1p_y.y"
+#line 1103 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		yyval.a_expr->Identifier = yyvsp[-2].tv_str;
@@ -2748,7 +2765,7 @@
     break;
 
   case 107:
-#line 1112 "asn1p_y.y"
+#line 1113 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2761,7 +2778,7 @@
     break;
 
   case 108:
-#line 1123 "asn1p_y.y"
+#line 1124 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2774,31 +2791,31 @@
     break;
 
   case 109:
-#line 1135 "asn1p_y.y"
+#line 1136 "asn1p_y.y"
     { yyval.a_wsynt = 0; }
     break;
 
   case 110:
-#line 1136 "asn1p_y.y"
+#line 1137 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[0].a_wsynt;
 	}
     break;
 
   case 111:
-#line 1143 "asn1p_y.y"
+#line 1144 "asn1p_y.y"
     { asn1p_lexer_hack_enable_with_syntax(); }
     break;
 
   case 112:
-#line 1145 "asn1p_y.y"
+#line 1146 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 	}
     break;
 
   case 113:
-#line 1151 "asn1p_y.y"
+#line 1152 "asn1p_y.y"
     {
 		yyval.a_wsynt = asn1p_wsyntx_new();
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
@@ -2806,7 +2823,7 @@
     break;
 
   case 114:
-#line 1155 "asn1p_y.y"
+#line 1156 "asn1p_y.y"
     {
 		yyval.a_wsynt = yyvsp[-1].a_wsynt;
 		TQ_ADD(&(yyval.a_wsynt->chunks), yyvsp[0].a_wchunk, next);
@@ -2814,7 +2831,7 @@
     break;
 
   case 115:
-#line 1162 "asn1p_y.y"
+#line 1163 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_opaque.buf, 0);
 		yyval.a_wchunk->type = WC_WHITESPACE;
@@ -2822,14 +2839,14 @@
     break;
 
   case 116:
-#line 1166 "asn1p_y.y"
+#line 1167 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].tv_str, 0);
 	}
     break;
 
   case 117:
-#line 1169 "asn1p_y.y"
+#line 1170 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromstring(yyvsp[0].a_refcomp.name, 0);
 		yyval.a_wchunk->type = WC_FIELD;
@@ -2837,14 +2854,14 @@
     break;
 
   case 118:
-#line 1173 "asn1p_y.y"
+#line 1174 "asn1p_y.y"
     {
 		yyval.a_wchunk = asn1p_wsyntx_chunk_fromsyntax(yyvsp[-1].a_wsynt);
 	}
     break;
 
   case 119:
-#line 1179 "asn1p_y.y"
+#line 1180 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2856,7 +2873,7 @@
     break;
 
   case 120:
-#line 1187 "asn1p_y.y"
+#line 1188 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2869,7 +2886,7 @@
     break;
 
   case 121:
-#line 1196 "asn1p_y.y"
+#line 1197 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2882,7 +2899,7 @@
     break;
 
   case 122:
-#line 1208 "asn1p_y.y"
+#line 1209 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		yyval.a_expr->tag = yyvsp[-2].a_tag;
@@ -2905,7 +2922,7 @@
     break;
 
   case 123:
-#line 1230 "asn1p_y.y"
+#line 1231 "asn1p_y.y"
     {
 		yyval.a_int = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
@@ -2913,7 +2930,7 @@
     break;
 
   case 124:
-#line 1237 "asn1p_y.y"
+#line 1238 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 		yyval.a_expr->marker.flags |= yyvsp[-1].a_int;
@@ -2933,14 +2950,14 @@
     break;
 
   case 125:
-#line 1256 "asn1p_y.y"
+#line 1257 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[0].a_expr;
 	}
     break;
 
   case 126:
-#line 1259 "asn1p_y.y"
+#line 1260 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2950,7 +2967,7 @@
     break;
 
   case 127:
-#line 1265 "asn1p_y.y"
+#line 1266 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2960,7 +2977,7 @@
     break;
 
   case 128:
-#line 1271 "asn1p_y.y"
+#line 1272 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 		assert(yyval.a_expr->expr_type == A1TC_INVALID);
@@ -2970,7 +2987,7 @@
     break;
 
   case 129:
-#line 1277 "asn1p_y.y"
+#line 1278 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2984,7 +3001,7 @@
     break;
 
   case 130:
-#line 1287 "asn1p_y.y"
+#line 1288 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -2998,7 +3015,7 @@
     break;
 
   case 131:
-#line 1297 "asn1p_y.y"
+#line 1298 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3008,7 +3025,7 @@
     break;
 
   case 132:
-#line 1303 "asn1p_y.y"
+#line 1304 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_expr = NEW_EXPR();
@@ -3023,7 +3040,7 @@
     break;
 
   case 133:
-#line 1314 "asn1p_y.y"
+#line 1315 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3034,7 +3051,7 @@
     break;
 
   case 134:
-#line 1329 "asn1p_y.y"
+#line 1330 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3046,7 +3063,7 @@
     break;
 
   case 135:
-#line 1337 "asn1p_y.y"
+#line 1338 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3060,7 +3077,7 @@
     break;
 
   case 136:
-#line 1347 "asn1p_y.y"
+#line 1348 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3074,7 +3091,7 @@
     break;
 
   case 137:
-#line 1357 "asn1p_y.y"
+#line 1358 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3088,7 +3105,7 @@
     break;
 
   case 138:
-#line 1367 "asn1p_y.y"
+#line 1368 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3100,7 +3117,7 @@
     break;
 
   case 139:
-#line 1375 "asn1p_y.y"
+#line 1376 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = yyvsp[0].a_ref;
@@ -3123,7 +3140,7 @@
     break;
 
   case 140:
-#line 1397 "asn1p_y.y"
+#line 1398 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = asn1p_ref_new(yylineno);
@@ -3135,7 +3152,7 @@
     break;
 
   case 141:
-#line 1405 "asn1p_y.y"
+#line 1406 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_ref = yyvsp[-2].a_ref;
@@ -3146,7 +3163,7 @@
     break;
 
   case 143:
-#line 1418 "asn1p_y.y"
+#line 1419 "asn1p_y.y"
     {
 		yyval.a_refcomp.lex_type = RLT_AmpUppercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
@@ -3154,7 +3171,7 @@
     break;
 
   case 144:
-#line 1423 "asn1p_y.y"
+#line 1424 "asn1p_y.y"
     {
 		yyval.a_refcomp.lex_type = RLT_Amplowercase;
 		yyval.a_refcomp.name = yyvsp[0].tv_str;
@@ -3162,7 +3179,7 @@
     break;
 
   case 145:
-#line 1432 "asn1p_y.y"
+#line 1433 "asn1p_y.y"
     {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
@@ -3170,7 +3187,7 @@
     break;
 
   case 146:
-#line 1436 "asn1p_y.y"
+#line 1437 "asn1p_y.y"
     {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_AmpUppercase);
@@ -3178,7 +3195,7 @@
     break;
 
   case 147:
-#line 1440 "asn1p_y.y"
+#line 1441 "asn1p_y.y"
     {
 		yyval.a_ref = yyval.a_ref;
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_Amplowercase);
@@ -3186,7 +3203,7 @@
     break;
 
   case 148:
-#line 1447 "asn1p_y.y"
+#line 1448 "asn1p_y.y"
     {
 		yyval.a_ref = asn1p_ref_new(yylineno);
 		asn1p_ref_add_component(yyval.a_ref, yyvsp[0].tv_str, RLT_CAPITALS);
@@ -3194,7 +3211,7 @@
     break;
 
   case 149:
-#line 1467 "asn1p_y.y"
+#line 1468 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		assert(yyval.a_expr->Identifier == NULL);
@@ -3205,7 +3222,7 @@
     break;
 
   case 152:
-#line 1479 "asn1p_y.y"
+#line 1480 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3216,12 +3233,12 @@
     break;
 
   case 153:
-#line 1486 "asn1p_y.y"
+#line 1487 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 154:
-#line 1486 "asn1p_y.y"
+#line 1487 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -3230,7 +3247,7 @@
     break;
 
   case 155:
-#line 1491 "asn1p_y.y"
+#line 1492 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3239,7 +3256,7 @@
     break;
 
   case 156:
-#line 1499 "asn1p_y.y"
+#line 1500 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3248,7 +3265,7 @@
     break;
 
   case 157:
-#line 1504 "asn1p_y.y"
+#line 1505 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3257,7 +3274,7 @@
     break;
 
   case 158:
-#line 1509 "asn1p_y.y"
+#line 1510 "asn1p_y.y"
     {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
 		checkmem(yyval.a_value);
@@ -3265,7 +3282,7 @@
     break;
 
   case 159:
-#line 1513 "asn1p_y.y"
+#line 1514 "asn1p_y.y"
     {
 		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
 		checkmem(yyval.a_value);
@@ -3273,21 +3290,21 @@
     break;
 
   case 160:
-#line 1517 "asn1p_y.y"
+#line 1518 "asn1p_y.y"
     {
 		yyval.a_value = yyval.a_value;
 	}
     break;
 
   case 161:
-#line 1520 "asn1p_y.y"
+#line 1521 "asn1p_y.y"
     {
 		yyval.a_value = yyvsp[0].a_value;
 	}
     break;
 
   case 162:
-#line 1526 "asn1p_y.y"
+#line 1527 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3302,7 +3319,7 @@
     break;
 
   case 163:
-#line 1537 "asn1p_y.y"
+#line 1538 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3320,7 +3337,7 @@
     break;
 
   case 164:
-#line 1555 "asn1p_y.y"
+#line 1556 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_frombuf(yyvsp[0].tv_opaque.buf, yyvsp[0].tv_opaque.len, 0);
 		checkmem(yyval.a_value);
@@ -3328,7 +3345,7 @@
     break;
 
   case 165:
-#line 1559 "asn1p_y.y"
+#line 1560 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -3337,7 +3354,7 @@
     break;
 
   case 166:
-#line 1564 "asn1p_y.y"
+#line 1565 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
 		checkmem(yyval.a_value);
@@ -3346,7 +3363,7 @@
     break;
 
   case 167:
-#line 1598 "asn1p_y.y"
+#line 1573 "asn1p_y.y"
     {
 		yyval.tv_opaque.len = yyvsp[0].tv_opaque.len + 1;
 		yyval.tv_opaque.buf = malloc(yyval.tv_opaque.len + 1);
@@ -3359,7 +3376,7 @@
     break;
 
   case 168:
-#line 1607 "asn1p_y.y"
+#line 1582 "asn1p_y.y"
     {
 		int newsize = yyvsp[-1].tv_opaque.len + yyvsp[0].tv_opaque.len;
 		char *p = malloc(newsize + 1);
@@ -3375,87 +3392,87 @@
     break;
 
   case 169:
-#line 1622 "asn1p_y.y"
+#line 1597 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_BOOLEAN; }
     break;
 
   case 170:
-#line 1623 "asn1p_y.y"
+#line 1598 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_NULL; }
     break;
 
   case 171:
-#line 1624 "asn1p_y.y"
+#line 1599 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_REAL; }
     break;
 
   case 172:
-#line 1625 "asn1p_y.y"
+#line 1600 "asn1p_y.y"
     { yyval.a_type = yyvsp[0].a_type; }
     break;
 
   case 173:
-#line 1626 "asn1p_y.y"
+#line 1601 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_OCTET_STRING; }
     break;
 
   case 174:
-#line 1627 "asn1p_y.y"
+#line 1602 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_OBJECT_IDENTIFIER; }
     break;
 
   case 175:
-#line 1628 "asn1p_y.y"
+#line 1603 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_RELATIVE_OID; }
     break;
 
   case 176:
-#line 1629 "asn1p_y.y"
+#line 1604 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_EXTERNAL; }
     break;
 
   case 177:
-#line 1630 "asn1p_y.y"
+#line 1605 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_EMBEDDED_PDV; }
     break;
 
   case 178:
-#line 1631 "asn1p_y.y"
+#line 1606 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_CHARACTER_STRING; }
     break;
 
   case 179:
-#line 1632 "asn1p_y.y"
+#line 1607 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_UTCTime; }
     break;
 
   case 180:
-#line 1633 "asn1p_y.y"
+#line 1608 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_GeneralizedTime; }
     break;
 
   case 181:
-#line 1634 "asn1p_y.y"
+#line 1609 "asn1p_y.y"
     { yyval.a_type = yyvsp[0].a_type; }
     break;
 
   case 182:
-#line 1641 "asn1p_y.y"
+#line 1616 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_INTEGER; }
     break;
 
   case 183:
-#line 1642 "asn1p_y.y"
+#line 1617 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_ENUMERATED; }
     break;
 
   case 184:
-#line 1643 "asn1p_y.y"
+#line 1618 "asn1p_y.y"
     { yyval.a_type = ASN_BASIC_BIT_STRING; }
     break;
 
   case 185:
-#line 1647 "asn1p_y.y"
+#line 1622 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -3465,7 +3482,7 @@
     break;
 
   case 186:
-#line 1653 "asn1p_y.y"
+#line 1628 "asn1p_y.y"
     {
 		if(yyvsp[0].a_expr) {
 			yyval.a_expr = yyvsp[0].a_expr;
@@ -3479,12 +3496,12 @@
     break;
 
   case 187:
-#line 1666 "asn1p_y.y"
+#line 1641 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_BMPString; }
     break;
 
   case 188:
-#line 1667 "asn1p_y.y"
+#line 1642 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
@@ -3492,7 +3509,7 @@
     break;
 
   case 189:
-#line 1671 "asn1p_y.y"
+#line 1646 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
@@ -3500,27 +3517,27 @@
     break;
 
   case 190:
-#line 1675 "asn1p_y.y"
+#line 1650 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_IA5String; }
     break;
 
   case 191:
-#line 1676 "asn1p_y.y"
+#line 1651 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_ISO646String; }
     break;
 
   case 192:
-#line 1677 "asn1p_y.y"
+#line 1652 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_NumericString; }
     break;
 
   case 193:
-#line 1678 "asn1p_y.y"
+#line 1653 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_PrintableString; }
     break;
 
   case 194:
-#line 1679 "asn1p_y.y"
+#line 1654 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
@@ -3528,22 +3545,22 @@
     break;
 
   case 195:
-#line 1683 "asn1p_y.y"
+#line 1658 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_TeletexString; }
     break;
 
   case 196:
-#line 1684 "asn1p_y.y"
+#line 1659 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_UniversalString; }
     break;
 
   case 197:
-#line 1685 "asn1p_y.y"
+#line 1660 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_UTF8String; }
     break;
 
   case 198:
-#line 1686 "asn1p_y.y"
+#line 1661 "asn1p_y.y"
     {
 		yyval.a_type = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
@@ -3551,36 +3568,36 @@
     break;
 
   case 199:
-#line 1690 "asn1p_y.y"
+#line 1665 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_VisibleString; }
     break;
 
   case 200:
-#line 1691 "asn1p_y.y"
+#line 1666 "asn1p_y.y"
     { yyval.a_type = ASN_STRING_ObjectDescriptor; }
     break;
 
   case 205:
-#line 1702 "asn1p_y.y"
+#line 1677 "asn1p_y.y"
     { yyval.a_constr = 0; }
     break;
 
   case 206:
-#line 1703 "asn1p_y.y"
+#line 1678 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 208:
-#line 1713 "asn1p_y.y"
+#line 1688 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[0].a_constr, 0);
 	}
     break;
 
   case 209:
-#line 1716 "asn1p_y.y"
+#line 1691 "asn1p_y.y"
     {
 		/*
 		 * This is a special case, for compatibility purposes.
@@ -3591,21 +3608,21 @@
     break;
 
   case 210:
-#line 1726 "asn1p_y.y"
+#line 1701 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[-1].a_constr;
 	}
     break;
 
   case 211:
-#line 1729 "asn1p_y.y"
+#line 1704 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_SET, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	}
     break;
 
   case 212:
-#line 1735 "asn1p_y.y"
+#line 1710 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		yyval.a_constr->type = ACT_EL_EXT;
@@ -3613,14 +3630,14 @@
     break;
 
   case 213:
-#line 1739 "asn1p_y.y"
+#line 1714 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 214:
-#line 1742 "asn1p_y.y"
+#line 1717 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3630,7 +3647,7 @@
     break;
 
   case 215:
-#line 1748 "asn1p_y.y"
+#line 1723 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -3642,42 +3659,42 @@
     break;
 
   case 216:
-#line 1756 "asn1p_y.y"
+#line 1731 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 218:
-#line 1763 "asn1p_y.y"
+#line 1738 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_AEX, yyvsp[0].a_constr, 0);
 	}
     break;
 
   case 220:
-#line 1770 "asn1p_y.y"
+#line 1745 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_UNI, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 222:
-#line 1777 "asn1p_y.y"
+#line 1752 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_INT, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 224:
-#line 1785 "asn1p_y.y"
+#line 1760 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_EXC, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
   case 225:
-#line 1791 "asn1p_y.y"
+#line 1766 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3689,7 +3706,7 @@
     break;
 
   case 226:
-#line 1799 "asn1p_y.y"
+#line 1774 "asn1p_y.y"
     {
 		int ret;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3701,7 +3718,7 @@
     break;
 
   case 227:
-#line 1807 "asn1p_y.y"
+#line 1782 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3711,7 +3728,7 @@
     break;
 
   case 228:
-#line 1813 "asn1p_y.y"
+#line 1788 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3721,7 +3738,7 @@
     break;
 
   case 229:
-#line 1819 "asn1p_y.y"
+#line 1794 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3732,7 +3749,7 @@
     break;
 
   case 230:
-#line 1826 "asn1p_y.y"
+#line 1801 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3744,7 +3761,7 @@
     break;
 
   case 231:
-#line 1834 "asn1p_y.y"
+#line 1809 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3756,7 +3773,7 @@
     break;
 
   case 232:
-#line 1842 "asn1p_y.y"
+#line 1817 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3769,21 +3786,21 @@
     break;
 
   case 233:
-#line 1851 "asn1p_y.y"
+#line 1826 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 234:
-#line 1854 "asn1p_y.y"
+#line 1829 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
   case 235:
-#line 1860 "asn1p_y.y"
+#line 1835 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		yyval.a_constr->type = ACT_CT_PATTERN;
@@ -3792,7 +3809,7 @@
     break;
 
   case 236:
-#line 1865 "asn1p_y.y"
+#line 1840 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		yyval.a_constr = asn1p_constraint_new(yylineno);
@@ -3804,21 +3821,21 @@
     break;
 
   case 237:
-#line 1876 "asn1p_y.y"
+#line 1851 "asn1p_y.y"
     {
 		yyval.a_ctype = ACT_CT_SIZE;
 	}
     break;
 
   case 238:
-#line 1879 "asn1p_y.y"
+#line 1854 "asn1p_y.y"
     {
 		yyval.a_ctype = ACT_CT_FROM;
 	}
     break;
 
   case 239:
-#line 1885 "asn1p_y.y"
+#line 1860 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(0);
 		checkmem(yyval.a_value);
@@ -3827,7 +3844,7 @@
     break;
 
   case 240:
-#line 1890 "asn1p_y.y"
+#line 1865 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromint(1);
 		checkmem(yyval.a_value);
@@ -3835,8 +3852,8 @@
 	}
     break;
 
-  case 243:
-#line 1897 "asn1p_y.y"
+  case 244:
+#line 1873 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3850,8 +3867,24 @@
 	}
     break;
 
-  case 244:
-#line 1911 "asn1p_y.y"
+  case 245:
+#line 1887 "asn1p_y.y"
+    {
+		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'B');
+		checkmem(yyval.a_value);
+	}
+    break;
+
+  case 246:
+#line 1891 "asn1p_y.y"
+    {
+		yyval.a_value = _convert_bitstring2binary(yyvsp[0].tv_str, 'H');
+		checkmem(yyval.a_value);
+	}
+    break;
+
+  case 247:
+#line 1898 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3865,36 +3898,36 @@
 	}
     break;
 
-  case 245:
-#line 1925 "asn1p_y.y"
+  case 248:
+#line 1912 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMP, yyvsp[0].a_constr, 0);
 	}
     break;
 
-  case 246:
-#line 1928 "asn1p_y.y"
+  case 249:
+#line 1915 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-1].a_constr, 0);
 	}
     break;
 
-  case 247:
-#line 1934 "asn1p_y.y"
+  case 250:
+#line 1921 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 248:
-#line 1937 "asn1p_y.y"
+  case 251:
+#line 1924 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CT_WCOMPS, yyvsp[-2].a_constr, yyvsp[0].a_constr);
 	}
     break;
 
-  case 249:
-#line 1943 "asn1p_y.y"
+  case 252:
+#line 1930 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3903,8 +3936,8 @@
 	}
     break;
 
-  case 250:
-#line 1949 "asn1p_y.y"
+  case 253:
+#line 1936 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3915,44 +3948,44 @@
 	}
     break;
 
-  case 251:
-#line 1963 "asn1p_y.y"
+  case 254:
+#line 1950 "asn1p_y.y"
     { yyval.a_pres = ACPRES_DEFAULT; }
     break;
 
-  case 252:
-#line 1964 "asn1p_y.y"
+  case 255:
+#line 1951 "asn1p_y.y"
     { yyval.a_pres = yyvsp[0].a_pres; }
     break;
 
-  case 253:
-#line 1968 "asn1p_y.y"
+  case 256:
+#line 1955 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_PRESENT;
 	}
     break;
 
-  case 254:
-#line 1971 "asn1p_y.y"
+  case 257:
+#line 1958 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_ABSENT;
 	}
     break;
 
-  case 255:
-#line 1974 "asn1p_y.y"
+  case 258:
+#line 1961 "asn1p_y.y"
     {
 		yyval.a_pres = ACPRES_OPTIONAL;
 	}
     break;
 
-  case 259:
-#line 1989 "asn1p_y.y"
+  case 262:
+#line 1976 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
-  case 260:
-#line 1989 "asn1p_y.y"
+  case 263:
+#line 1976 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -3963,8 +3996,8 @@
 	}
     break;
 
-  case 261:
-#line 2000 "asn1p_y.y"
+  case 264:
+#line 1987 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		yyval.a_constr->type = ACT_CT_CTNG;
@@ -3972,42 +4005,42 @@
 	}
     break;
 
-  case 262:
-#line 2008 "asn1p_y.y"
+  case 265:
+#line 1995 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_RANGE; }
     break;
 
-  case 263:
-#line 2009 "asn1p_y.y"
+  case 266:
+#line 1996 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_RLRANGE; }
     break;
 
-  case 264:
-#line 2010 "asn1p_y.y"
+  case 267:
+#line 1997 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_LLRANGE; }
     break;
 
-  case 265:
-#line 2011 "asn1p_y.y"
+  case 268:
+#line 1998 "asn1p_y.y"
     { yyval.a_ctype = ACT_EL_ULRANGE; }
     break;
 
-  case 266:
-#line 2014 "asn1p_y.y"
+  case 269:
+#line 2001 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 267:
-#line 2017 "asn1p_y.y"
+  case 270:
+#line 2004 "asn1p_y.y"
     {
 		yyval.a_constr = yyvsp[0].a_constr;
 	}
     break;
 
-  case 268:
-#line 2026 "asn1p_y.y"
+  case 271:
+#line 2013 "asn1p_y.y"
     {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno);
 		asn1p_constraint_t *ct;
@@ -4022,15 +4055,15 @@
 	}
     break;
 
-  case 269:
-#line 2041 "asn1p_y.y"
+  case 272:
+#line 2028 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT(yyval.a_constr, ACT_CA_CRC, yyvsp[-3].a_constr, yyvsp[-1].a_constr);
 	}
     break;
 
-  case 270:
-#line 2047 "asn1p_y.y"
+  case 273:
+#line 2034 "asn1p_y.y"
     {
 		yyval.a_constr = asn1p_constraint_new(yylineno);
 		checkmem(yyval.a_constr);
@@ -4039,8 +4072,8 @@
 	}
     break;
 
-  case 271:
-#line 2053 "asn1p_y.y"
+  case 274:
+#line 2040 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno);
@@ -4051,8 +4084,8 @@
 	}
     break;
 
-  case 272:
-#line 2067 "asn1p_y.y"
+  case 275:
+#line 2054 "asn1p_y.y"
     {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 2);
 		int ret;
@@ -4066,8 +4099,8 @@
 	}
     break;
 
-  case 273:
-#line 2078 "asn1p_y.y"
+  case 276:
+#line 2065 "asn1p_y.y"
     {
 		char *p = malloc(strlen(yyvsp[0].tv_str) + 3);
 		int ret;
@@ -4082,15 +4115,15 @@
 	}
     break;
 
-  case 274:
-#line 2094 "asn1p_y.y"
+  case 277:
+#line 2081 "asn1p_y.y"
     {
 		yyval.tv_str = yyvsp[0].tv_str;
 	}
     break;
 
-  case 275:
-#line 2097 "asn1p_y.y"
+  case 278:
+#line 2084 "asn1p_y.y"
     {
 		int l1 = strlen(yyvsp[-2].tv_str);
 		int l3 = strlen(yyvsp[0].tv_str);
@@ -4102,52 +4135,52 @@
 	}
     break;
 
-  case 276:
-#line 2115 "asn1p_y.y"
+  case 279:
+#line 2102 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_NOMARK;
 		yyval.a_marker.default_value = 0;
 	}
     break;
 
-  case 277:
-#line 2119 "asn1p_y.y"
+  case 280:
+#line 2106 "asn1p_y.y"
     { yyval.a_marker = yyvsp[0].a_marker; }
     break;
 
-  case 278:
-#line 2123 "asn1p_y.y"
+  case 281:
+#line 2110 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_OPTIONAL | EM_INDIRECT;
 		yyval.a_marker.default_value = 0;
 	}
     break;
 
-  case 279:
-#line 2127 "asn1p_y.y"
+  case 282:
+#line 2114 "asn1p_y.y"
     {
 		yyval.a_marker.flags = EM_DEFAULT;
 		yyval.a_marker.default_value = yyvsp[0].a_value;
 	}
     break;
 
-  case 280:
-#line 2150 "asn1p_y.y"
+  case 283:
+#line 2137 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
 	}
     break;
 
-  case 281:
-#line 2154 "asn1p_y.y"
+  case 284:
+#line 2141 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-1].a_expr;
 	}
     break;
 
-  case 282:
-#line 2160 "asn1p_y.y"
+  case 285:
+#line 2147 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4155,16 +4188,16 @@
 	}
     break;
 
-  case 283:
-#line 2165 "asn1p_y.y"
+  case 286:
+#line 2152 "asn1p_y.y"
     {
 		yyval.a_expr = yyvsp[-2].a_expr;
 		asn1p_expr_add(yyval.a_expr, yyvsp[0].a_expr);
 	}
     break;
 
-  case 284:
-#line 2172 "asn1p_y.y"
+  case 287:
+#line 2159 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4174,8 +4207,8 @@
 	}
     break;
 
-  case 285:
-#line 2179 "asn1p_y.y"
+  case 288:
+#line 2166 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4186,8 +4219,8 @@
 	}
     break;
 
-  case 286:
-#line 2187 "asn1p_y.y"
+  case 289:
+#line 2174 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4198,8 +4231,8 @@
 	}
     break;
 
-  case 287:
-#line 2195 "asn1p_y.y"
+  case 290:
+#line 2182 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4209,8 +4242,8 @@
 	}
     break;
 
-  case 288:
-#line 2202 "asn1p_y.y"
+  case 291:
+#line 2189 "asn1p_y.y"
     {
 		yyval.a_expr = NEW_EXPR();
 		checkmem(yyval.a_expr);
@@ -4221,129 +4254,129 @@
 	}
     break;
 
-  case 289:
-#line 2213 "asn1p_y.y"
-    {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	}
-    break;
-
-  case 290:
-#line 2217 "asn1p_y.y"
-    {
-		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
-		checkmem(yyval.a_value);
-	}
-    break;
-
   case 292:
-#line 2225 "asn1p_y.y"
+#line 2200 "asn1p_y.y"
+    {
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	}
+    break;
+
+  case 293:
+#line 2204 "asn1p_y.y"
+    {
+		yyval.a_value = asn1p_value_fromint(yyvsp[0].a_int);
+		checkmem(yyval.a_value);
+	}
+    break;
+
+  case 295:
+#line 2212 "asn1p_y.y"
     {
 		yyval.a_value = asn1p_value_fromdouble(yyvsp[0].a_dbl);
 		checkmem(yyval.a_value);
 	}
     break;
 
-  case 293:
-#line 2256 "asn1p_y.y"
+  case 296:
+#line 2243 "asn1p_y.y"
     { memset(&yyval.a_tag, 0, sizeof(yyval.a_tag)); }
     break;
 
-  case 294:
-#line 2257 "asn1p_y.y"
+  case 297:
+#line 2244 "asn1p_y.y"
     { yyval.a_tag = yyvsp[0].a_tag; }
     break;
 
-  case 295:
-#line 2261 "asn1p_y.y"
+  case 298:
+#line 2248 "asn1p_y.y"
     {
 		yyval.a_tag = yyvsp[-1].a_tag;
 		yyval.a_tag.tag_mode = yyvsp[0].a_tag.tag_mode;
 	}
     break;
 
-  case 296:
-#line 2268 "asn1p_y.y"
+  case 299:
+#line 2255 "asn1p_y.y"
     {
 		yyval.a_tag = yyvsp[-2].a_tag;
 		yyval.a_tag.tag_value = yyvsp[-1].a_int;
 	}
     break;
 
-  case 297:
-#line 2274 "asn1p_y.y"
+  case 300:
+#line 2261 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_CONTEXT_SPECIFIC; }
     break;
 
-  case 298:
-#line 2275 "asn1p_y.y"
+  case 301:
+#line 2262 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_UNIVERSAL; }
     break;
 
-  case 299:
-#line 2276 "asn1p_y.y"
+  case 302:
+#line 2263 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_APPLICATION; }
     break;
 
-  case 300:
-#line 2277 "asn1p_y.y"
+  case 303:
+#line 2264 "asn1p_y.y"
     { yyval.a_tag.tag_class = TC_PRIVATE; }
     break;
 
-  case 301:
-#line 2281 "asn1p_y.y"
+  case 304:
+#line 2268 "asn1p_y.y"
     { yyval.a_tag.tag_mode = TM_DEFAULT; }
     break;
 
-  case 302:
-#line 2282 "asn1p_y.y"
+  case 305:
+#line 2269 "asn1p_y.y"
     { yyval.a_tag.tag_mode = TM_IMPLICIT; }
     break;
 
-  case 303:
-#line 2283 "asn1p_y.y"
+  case 306:
+#line 2270 "asn1p_y.y"
     { yyval.a_tag.tag_mode = TM_EXPLICIT; }
     break;
 
-  case 304:
-#line 2287 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
-    break;
-
-  case 305:
-#line 2291 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
-    break;
-
-  case 306:
-#line 2299 "asn1p_y.y"
-    {
-		checkmem(yyvsp[0].tv_str);
-		yyval.tv_str = yyvsp[0].tv_str;
-	}
-    break;
-
   case 307:
-#line 2306 "asn1p_y.y"
-    { yyval.tv_str = 0; }
+#line 2274 "asn1p_y.y"
+    {
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
     break;
 
   case 308:
-#line 2307 "asn1p_y.y"
+#line 2278 "asn1p_y.y"
     {
+		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
 	}
     break;
 
   case 309:
-#line 2313 "asn1p_y.y"
+#line 2286 "asn1p_y.y"
+    {
+		checkmem(yyvsp[0].tv_str);
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
+    break;
+
+  case 310:
+#line 2293 "asn1p_y.y"
+    { yyval.tv_str = 0; }
+    break;
+
+  case 311:
+#line 2294 "asn1p_y.y"
+    {
+		yyval.tv_str = yyvsp[0].tv_str;
+	}
+    break;
+
+  case 312:
+#line 2300 "asn1p_y.y"
     {
 		checkmem(yyvsp[0].tv_str);
 		yyval.tv_str = yyvsp[0].tv_str;
@@ -4354,7 +4387,7 @@
     }
 
 /* Line 1016 of /usr/local/share/bison/yacc.c.  */
-#line 4358 "asn1p_y.c"
+#line 4391 "asn1p_y.c"
 
   yyvsp -= yylen;
   yyssp -= yylen;
@@ -4573,7 +4606,7 @@
 }
 
 
-#line 2319 "asn1p_y.y"
+#line 2306 "asn1p_y.y"