Took out parsing of military time, which was causing issues when it
[mmh] / sbr / dtimep.c
index a8cce79..69a0c74 100644 (file)
@@ -261,9 +261,6 @@ static void yy_flex_free YY_PROTO(( void * ));
 
 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
 
-
-#define yywrap() 1
-#define YY_SKIP_YYWRAP
 typedef unsigned char YY_CHAR;
 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 typedef int yy_state_type;
@@ -285,73 +282,82 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 39
-#define YY_END_OF_BUFFER 40
-static yyconst short int yy_accept[572] =
+#define YY_NUM_RULES 36
+#define YY_END_OF_BUFFER 37
+static yyconst short int yy_accept[661] =
     {   0,
-        0,    0,   40,   38,   37,   38,   38,   38,   38,   34,
-       34,   34,   34,   34,   34,   34,   34,   34,   38,   35,
-       35,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+        0,    0,   37,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
+       35,   35,   35,   35,   35,   35,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   14,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   28,
 
-        0,   27,    0,   33,   21,   20,    0,   19,   18,    0,
-        0,   15,   32,   31,    0,   17,   16,    0,    0,    0,
-        0,   23,    0,   22,    0,   26,    0,   25,   24,    0,
-        0,    0,    0,    0,    0,   30,   29,   12,   13,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   14,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   12,   13,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   14,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   34,   28,   27,    0,
+        0,   33,   21,   20,    0,   19,   18,    0,    0,   15,
+       32,   31,   17,   16,    0,    0,    0,   23,   22,    0,
+        0,    0,   26,    0,    0,   25,   24,    0,    0,    0,
+
+        0,    0,    0,   30,   29,    0,    0,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   12,   13,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   12,   13,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        9,    9,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    9,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
+        9,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    9,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        9,   10,   11,    7,    7,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    9,
+        7,    7,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
+        0,   10,   11,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    7,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    7,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    7,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    8,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    6,
-        6,    6,    6,    6,    6,    6,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    5,    0,    5,    0,    0,
-        0,    0,    0,    0,    3,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    6,    6,
+        6,    6,    6,    6,    6,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    5,    0,    5,    0,    0,    0,
+        0,    0,    0,    3,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    5,    5,    5,    0,    0,    8,
 
-        0,    0,    0,    0,    0,    5,    5,    5,    0,    0,
-        8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    5,    0,    0,    6,    6,
-        0,    6,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    3,    0,    0,    6,    0,    0,    0,    0,
-        0,    0,    6,    6,    0,    2,    4,    1,    1,    0,
-        6,    0,    0,    0,    1,    0,    0,    1,    2,    4,
-        0
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    5,    0,    0,    6,    6,    0,
+        6,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    3,    0,    0,    6,    0,    0,    0,    0,    0,
+        0,    6,    6,    0,    2,    4,    1,    1,    0,    6,
+        0,    0,    0,    1,    0,    0,    1,    2,    4,    0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -362,14 +368,14 @@ static yyconst int yy_ec[256] =
         1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    4,    5,    6,    1,    7,    8,    9,    8,
         8,    8,    8,    8,    8,    8,    8,   10,    1,    1,
-        1,    1,    1,    1,   13,   14,   15,   16,   17,   18,
-       19,   20,   21,   22,   23,   24,   25,   26,   27,   28,
-       29,   30,   31,   32,   33,   34,   35,   29,   36,    1,
-       11,    1,   12,    1,    1,    1,   13,   14,   15,   16,
-
-       17,   18,   19,   20,   21,   22,   23,   24,   25,   26,
-       27,   28,   29,   30,   31,   32,   33,   34,   35,   29,
-       36,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,   11,   12,   13,   14,   15,   16,
+       17,   18,   19,   20,   19,   19,   21,   22,   23,   24,
+       19,   19,   25,   26,   27,   19,   28,   19,   29,   19,
+       30,    1,   31,    1,    1,    1,   32,   33,   34,   35,
+
+       36,   37,   38,   39,   40,   41,   42,   43,   44,   45,
+       46,   47,   42,   48,   49,   50,   51,   52,   53,   42,
+       54,   42,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -386,354 +392,434 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[37] =
+static yyconst int yy_meta[55] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    1,
+        1,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    3,    3,    3,    4,    3,    3,    3,
+        4,    3,    3,    3
     } ;
 
-static yyconst short int yy_base[572] =
+static yyconst short int yy_base[665] =
     {   0,
-        0,    0,  869,  870,  870,   29,   31,   63,   30,   45,
-      837,   31,  850,   44,   24,  841,   50,  870,   61,  870,
-       66,   53,  850,   52,  870,   72,   22,  832,  846,   70,
-       79,   82,   79,  831,   80,   82,  836,   83,   84,   86,
-      829,   87,  827,   88,  118,   98,  119,  845,  829,  824,
-      825,  822,  834,  820,  819,  818,  834,  816,  815,  832,
-      824,  812,  811,  810,  815,  808,  807,   98,   93,  806,
-      811,  804,  801,  802,  801,  800,  799,  798,  801,  802,
-      794,  809,  870,  809,  792,  791,  100,  119,  102,  805,
-      804,   99,  807,  792,  803,  800,  144,  804,  803,  870,
-
-      135,  870,  114,  870,  870,  870,  131,  870,  870,  136,
-       47,  870,  870,  870,  137,  870,  870,  139,  140,  144,
-      812,  870,  153,  870,  159,  870,  152,  870,  870,  158,
-      160,  162,  163,  169,  175,  870,  870,  164,  173,  783,
-      793,  796,  796,  783,  159,  154,  774,  775,  778,  178,
-      182,  794,  793,  194,  779,  771,  776,  767,  202,  797,
-      785,  784,  794,  793,  774,  780,  767,  777,  760,  772,
-      775,  756,  770,  768,  870,  870,  192,  193,  195,  204,
-      197,  196,  205,  206,  782,  214,  212,  203,  228,  232,
-      758,  757,  240,  779,  748,  765,  765,  242,  210,  760,
-
-      759,  233,  762,  747,  758,  755,  735,  740,  767,  732,
-      753,  749,  749,  739,  727,  746,  748,  729,  245,  735,
-      727,  732,  723,  742,  752,  751,  732,  726,  736,  732,
-      250,  253,  723,  722,  255,  744,  263,  743,  727,  713,
-      267,  740,  711,  721,  724,  724,  711,  193,  237,  702,
-      703,  706,  269,  697,  270,  715,  701,  717,  715,  274,
-      715,  691,  710,  269,  273,  723,  692,  709,  709,  691,
-      718,  705,  701,  692,  282,  278,  293,  704,  703,  288,
-      291,  684,  677,  275,  695,  694,  291,  697,  682,  693,
-      690,  286,  223,  303,  304,  307,  308,  309,  310,  704,
-
-      311,  312,  313,  675,  702,  667,  685,  665,  314,  687,
-      321,  329,  697,  681,  667,  660,  678,  664,  679,  333,
-      690,  870,  870,  344,  346,  689,  688,  659,  669,  672,
-      672,  659,  309,  291,  650,  651,  654,  348,  657,  649,
-      654,  645,  664,  674,  673,  654,  648,  658,  654,  668,
-      356,  639,  357,  632,  358,  309,  361,  637,  630,  635,
-      662,  646,  652,  356,  369,  659,  364,  372,  374,  345,
-      366,  373,  377,  380,  382,  383,  658,  388,  384,  386,
-      404,  657,  626,  643,  643,  625,  652,  639,  635,  626,
-      648,  387,  411,  647,  646,  645,  644,  615,  388,  614,
-
-      616,  389,  394,  625,  421,  422,  617,  609,  614,  605,
-      624,  634,  633,  614,  608,  618,  614,  426,  628,  427,
-      627,  611,  597,  590,  608,  594,  609,  612,  399,  619,
-      610,  598,  592,  585,  590,  582,  597,  597,  428,  430,
-      610,  579,  596,  596,  578,  605,  592,  588,  579,  432,
-      435,  444,  573,  566,  571,  598,  582,  439,  441,  582,
-      581,  563,  579,  564,  562,  566,  449,  452,  589,  573,
-      559,  552,  570,  556,  571,  454,  457,  465,  460,  463,
-      582,  581,  580,  551,  570,  468,  566,  565,  547,  563,
-      544,  558,  556,  476,  471,  479,  542,  535,  540,  567,
-
-      551,  481,  565,  483,  485,  493,  495,  503,  564,  498,
-      870,  529,  528,  547,  526,  545,  547,  528,  505,  556,
-      555,  554,  553,  498,  508,  494,  415,  501,  870,  870,
-      473,  870,  469,  419,  417,  405,  511,  391,  381,  513,
-      521,  516,  870,  300,  296,  870,  309,  518,  523,  525,
-      527,  529,  870,  870,  234,  250,  213,  531,  533,  207,
-      870,  535,  537,  539,  541,  543,  545,  870,  870,  870,
-      870
+        0,    0, 1119, 1120,   47,   49,  102,   91,   81,   93,
+       76,   99,  100,  101,  105,  106,  120,  121,  129,  125,
+      133,  119,   82,  130,  113,  143,  150,  137, 1069,  127,
+     1081,  130,  137, 1072,  134,    0,  155,  159,  143, 1081,
+      147,  161,  156, 1064, 1077,  164,   71,  192,  184,  189,
+        0,  196,  197,  202,  201,  203,  204,  205,  206,  210,
+      218,  190, 1063,  198,    0,  199, 1067,  202,  203,  205,
+     1061,  206, 1059,  207,  255,  236,  256,    0, 1082, 1081,
+     1058, 1067, 1078, 1077, 1076, 1067, 1074, 1073, 1065, 1057,
+     1070, 1069, 1068, 1067, 1066, 1046,  135, 1064, 1063,  205,
+
+     1043, 1061, 1034, 1035, 1058, 1057, 1032, 1034, 1035, 1028,
+     1042,    0, 1042, 1050, 1049, 1042, 1026,    0, 1022, 1023,
+     1020, 1031, 1018, 1017, 1016, 1031, 1014, 1013, 1029, 1021,
+     1010, 1009, 1008, 1012, 1006, 1005,  222,  216, 1004, 1008,
+     1002,  999, 1000,  999,  998,  997,  996,  998,  999,  992,
+     1006,    0, 1006,  990,  989,  241,  252,   90, 1002, 1001,
+      240, 1004,  989, 1000,  997,  275, 1120, 1120, 1120,  266,
+      244, 1120, 1120, 1120,  271, 1120, 1120,  115,  283, 1120,
+     1120, 1120, 1120, 1120,  272,  277,  284, 1120, 1120,  287,
+     1030,  292, 1120,  296,  291, 1120, 1120,  300,  306,  307,
+
+      309,  311,  317, 1120, 1120, 1000,  999,  301,  308,  313,
+      315,  323,  322,  324,  328,  327, 1027,  331,  332,  333,
+      338,  336,  342,  343,  348,  350,  361,  363,  980,  989,
+      992,  992,  979,  322,  326,  971,  972,  974,  367,  375,
+      385,  977,  970,  974,  966,  396, 1014,  983,  982, 1011,
+     1010,  972,  978,  965,  975,  959,  970,  973,  955,  968,
+      966,  971,  970, 1120, 1120,  344,  337,  388,  352,  381,
+      390,  394,  400,  997,  399,  383,  397,  400,  405,  418,
+      996,  947,  963,  963,  441,  364,  958,  957,  371,  960,
+      945,  956,  953,  934,  939,  984,  931,  951,  947,  947,
+
+      937,  926,  944,  946,  928,  955,  954,  444,  931,  924,
+      928,  920,  938,  967,  966,  928,  922,  932,  928,  446,
+      449,  454,  961,  434,  960,  925,  912,  462,  957,  910,
+      919,  922,  922,  909,  416,  412,  901,  902,  904,  463,
+      896,  465,  913,  900,  915,  913,  467,  913,  890,  908,
+      898,  897,  466,  471,  938,  889,  905,  905,  888,  933,
+      901,  897,  888,  484,  480,  493,  482,  496,  883,  876,
+      430,  893,  892,  374,  895,  880,  891,  888,  469,  494,
+      496,  498,  508,  510,  511,  514,  921,  513,  512,  515,
+      874,  919,  866,  883,  864,  516,  885,  885,  884,  517,
+
+      520,  912,  877,  864,  857,  874,  861,  875,  525,  905,
+      522,  534,  904,  903,  856,  865,  868,  868,  855,  495,
+      496,  847,  848,  850,  552,  853,  846,  850,  842,  860,
+      889,  888,  850,  844,  854,  850,  883,  518,  836,  550,
+      829, 1120, 1120,  554,  558,  566,  834,  827,  832,  877,
+      842,  867,  561,  574,  874,  563,  575,  539,  535,  549,
+      555,  571,  551,  576,  579,  873,  580,  585,  586,  589,
+      872,  823,  839,  839,  822,  867,  835,  831,  822,  863,
+      587,  598,  862,  861,  860,  859,  812,  601,  811,  812,
+      564,  575,  821,  599,  626,  813,  806,  810,  802,  820,
+
+      849,  848,  810,  804,  814,  810,  630,  843,  615,  842,
+      807,  794,  787,  804,  791,  805,  827,  621,  834,  825,
+      794,  788,  782,  786,  779,  793,  793,  632,  634,  825,
+      776,  792,  792,  775,  820,  788,  784,  775,  636,  639,
+      648,  770,  763,  768,  813,  778,  643,  645,  778,  777,
+      760,  775,  761,  759,  762,  653,  656,  804,  769,  756,
+      749,  766,  753,  767,  658,  661,  669,  664,  667,  797,
+      796,  795,  748,  785,  672,  762,  761,  744,  759,  741,
+      754,  752,  680,  675,  683,  739,  732,  737,  782,  747,
+      685,  780,  687,  689,  697,  699,  707,  779,  702, 1120,
+
+      726,  725,  743,  723,  741,  743,  725,  709,  771,  770,
+      769,  768,  721,  712,  698,  623,  705, 1120, 1120,  736,
+     1120,  735,  712,  725,  722,  715,  688,  676,  717,  725,
+      720, 1120,  605,  583, 1120,  589,  722,  727,  729,  731,
+      733, 1120, 1120,  565,  583,  428,  735,  737,  200, 1120,
+      739,  741,  743,  745,  747,  749, 1120, 1120, 1120, 1120,
+      757,  759,   57,  761
     } ;
 
-static yyconst short int yy_def[572] =
+static yyconst short int yy_def[665] =
     {   0,
-      571,    1,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-        0
+      660,    1,  660,  660,  660,  660,  660,  661,  661,  661,
+      661,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,  661,  661,  661,  661,   10,  660,  662,  662,  662,
+      662,  662,  662,  662,  662,  662,  662,  662,  662,  662,
+      662,  662,  662,  662,  662,  662,  660,  660,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,  662,  662,  662,  662,  662,  662,  662,  662,  662,
+      662,  662,  662,  662,  660,  660,  660,  663,  663,  663,
+      660,  660,  663,  663,  663,  660,  663,  663,  660,  660,
+      663,  663,  663,  663,  663,  660,  660,  663,  663,  660,
+
+      660,  663,  660,  660,  663,  663,  660,  660,  660,  660,
+      660,  663,  660,  663,  663,  660,  660,  664,  664,  664,
+      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      664,  664,  664,  664,  664,  664,  664,  664,  664,  664,
+      664,  664,  664,  664,  664,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,    0,
+      660,  660,  660,  660
     } ;
 
-static yyconst short int yy_nxt[907] =
+static yyconst short int yy_nxt[1175] =
     {   0,
-        4,    4,    5,    6,    4,    7,    4,    8,    8,    4,
-        9,    4,   10,   11,   12,   13,   14,   15,   16,   17,
-       18,   19,   20,   20,   21,   22,   23,   24,   25,   25,
-       26,   27,   28,   25,   29,   30,   31,   31,   32,   32,
-       60,   81,   48,   33,   34,   35,   55,   36,  159,   37,
-       38,  160,   39,   61,   82,   40,   41,   49,   42,   58,
-       50,   56,  161,   43,   45,   63,   44,   76,   46,   46,
-       47,   47,   51,   65,   59,   52,   66,   53,   69,   73,
-       64,   70,   77,   74,   78,   85,   87,   87,   79,   88,
-       88,   67,   71,   68,   50,   55,   72,   58,   63,   66,
-
-       86,   70,   76,   85,   80,   97,   97,  138,  138,   52,
-       56,  144,   59,   64,   67,  154,   72,   77,   86,   45,
-       45,  118,  120,  119,   46,   46,  139,  139,  121,  140,
-       89,  145,  154,   90,  141,   91,  154,  154,  154,   92,
-      154,  154,   93,   94,   95,  154,  156,  157,   96,  150,
-      150,  151,  151,  154,  159,  155,  164,  160,  165,  159,
-      154,  154,  160,  159,  159,  158,  160,  160,  166,  162,
-      159,  175,  175,  160,  163,  167,  159,  171,  168,  160,
-      176,  176,  182,  184,  183,  189,  190,  150,  150,  185,
-      169,  170,  172,  219,  219,  154,  219,  219,  219,  173,
-
-      174,  193,  193,  159,  219,  219,  219,  219,  541,  198,
-      198,  222,  220,  219,  199,  219,  297,  200,  298,  201,
-      227,  226,  563,  202,  338,  221,  203,  204,  205,  224,
-      228,  225,  206,  223,  230,  231,  231,  243,  229,  232,
-      232,  235,  244,  241,  236,  247,  219,  237,  237,  242,
-      242,  275,  264,  265,  275,  340,  235,  276,  276,  562,
-      277,  277,  280,  281,  235,  248,  299,  236,  241,  561,
-      159,  159,  300,  160,  160,  159,  311,  311,  160,  284,
-      312,  312,  285,  275,  286,  321,  321,  338,  287,  320,
-      320,  288,  289,  290,  275,  324,  324,  291,  325,  325,
-
-      321,  321,  328,  332,  338,  338,  339,  329,  338,  338,
-      338,  338,  338,  338,  338,  159,  394,  394,  160,  341,
-      376,  555,  355,  333,  346,  345,  377,  347,  356,  356,
-      355,  554,  374,  342,  375,  553,  357,  357,  348,  343,
-      363,  363,  364,  344,  349,  365,  406,  365,  366,  338,
-      366,  367,  367,  368,  368,  381,  381,  159,  159,  355,
-      160,  160,  355,  399,  399,  393,  393,  406,  394,  394,
-      365,  405,  405,  365,  406,  406,  366,  408,  406,  405,
-      405,  406,  409,  406,  406,  406,  400,  406,  159,  406,
-      540,  160,  406,  401,  407,  431,  431,  414,  413,  402,
-
-      403,  434,  410,  404,  415,  418,  458,  458,  419,  411,
-      416,  420,  420,  436,  537,  412,  541,  417,  428,  428,
-      429,  435,  365,  406,  542,  366,  437,  418,  418,  439,
-      440,  419,  547,  450,  451,  467,  467,  468,  468,  476,
-      476,  477,  478,  478,  477,  452,  485,  485,  486,  486,
-      494,  479,  480,  494,  546,  502,  495,  495,  503,  496,
-      496,  504,  504,  477,  505,  505,  502,  507,  507,  503,
-      508,  508,  506,  506,  477,  511,  511,  494,  520,  520,
-      494,  545,  502,  519,  519,  544,  520,  520,  525,  525,
-      526,  526,  527,  527,  502,  502,  502,  503,  503,  503,
-
-      526,  526,  504,  504,  502,  528,  528,  503,  543,  543,
-      506,  506,  536,  536,  537,  539,  539,  540,  548,  548,
-      549,  549,  541,  552,  552,  556,  556,  538,  550,  551,
-      557,  557,  558,  558,  559,  559,  560,  560,  564,  564,
-      565,  565,  566,  566,  567,  567,  568,  568,  568,  568,
-      569,  569,  570,  570,  406,  406,  406,  494,  535,  534,
-      533,  532,  531,  530,  529,  338,  502,  524,  406,  523,
-      522,  521,  518,  517,  516,  515,  514,  513,  512,  510,
-      509,  338,  338,  338,  501,  500,  499,  377,  498,  497,
-      406,  493,  492,  491,  490,  489,  488,  487,  484,  338,
-
-      483,  482,  481,  475,  474,  473,  406,  472,  471,  470,
-      469,  406,  466,  465,  464,  463,  462,  461,  460,  459,
-      219,  429,  457,  456,  455,  300,  454,  453,  338,  452,
-      449,  448,  447,  446,  406,  406,  445,  444,  443,  442,
-      441,  438,  433,  432,  430,  219,  219,  219,  355,  154,
-      427,  426,  425,  338,  424,  423,  422,  421,  338,  406,
-      365,  364,  398,  219,  397,  396,  395,  392,  391,  154,
-      390,  389,  388,  387,  338,  338,  386,  385,  384,  383,
-      382,  380,  379,  378,  373,  372,  371,  370,  369,  154,
-      154,  275,  362,  361,  360,  185,  359,  358,  219,  354,
-
-      353,  352,  351,  154,  350,  338,  337,  336,  335,  334,
-      331,  330,  327,  326,  323,  322,  319,  318,  317,  219,
-      316,  315,  314,  313,  219,  310,  309,  308,  307,  306,
-      305,  304,  121,  303,  302,  301,  296,  295,  294,  293,
-      292,  241,  283,  282,  154,  235,  279,  278,  274,  273,
-      272,  271,  219,  219,  270,  269,  268,  267,  266,  263,
-      262,  261,  260,  259,  258,  257,  256,  255,  154,  254,
-      253,  252,  251,  250,  249,  246,  245,  240,  239,  238,
-      154,  234,  233,  219,  218,  217,  216,  215,  214,  213,
-      212,  211,  210,  209,  154,  154,  208,  207,  159,  197,
-
-      196,  195,  194,  192,  191,  188,  187,  186,  181,  180,
-      179,  178,  177,  154,  153,  152,  149,  148,  147,  146,
-      143,  142,  137,  136,  135,  134,  133,  132,  131,  130,
-      129,  128,  127,  126,  125,  124,  123,  122,  117,  116,
-      115,  114,  113,  112,  111,  110,  109,  108,  107,  106,
-      105,  104,  103,  102,  101,  100,   99,   98,   83,   74,
-       62,   54,   84,   83,   75,   62,   57,   54,  571,    3,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571
+        4,    4,    4,    5,    4,    6,    4,    7,    7,    4,
+        8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
+       18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
+        4,   28,   29,   30,   31,   32,   33,   34,   35,   36,
+       37,   36,   36,   38,   39,   40,   41,   36,   42,   43,
+       44,   36,   45,   46,   47,   47,   48,   48,  167,   49,
+       50,   51,   52,   53,   52,   54,   55,   52,   56,   57,
+       58,   52,   59,   52,   52,   60,   52,   61,  156,  156,
+       62,   63,   64,   65,   66,   65,   67,   68,   65,   69,
+       65,   65,   70,   71,   65,   72,   65,   65,   65,   73,
+
+       65,   65,   74,   75,   79,   83,   84,   76,   76,   77,
+       77,   86,   87,   78,   78,   80,  241,   85,   92,   78,
+      110,   91,  660,   88,   78,   78,  660,  660,  660,   93,
+       78,  660,  111,   94,   98,   89,  229,   81,   78,  660,
+      230,   82,   78,  660,   95,   99,  105,   90,  113,   78,
+      107,   96,  100,  102,  108,  112,  114,  106,  104,  660,
+      116,  124,  245,  660,  127,  660,  101,  115,  132,  109,
+       97,  119,  129,  117,  103,  125,  660,  186,  128,  187,
+      660,  145,  133,  120,  130,  121,  134,  122,  142,  135,
+      138,  143,  147,  139,  150,  146,  148,   79,  154,  157,
+
+      157,  630,   78,  136,  140,  137,  151,  141,   80,   78,
+       87,  149,  155,   83,   92,   78,   94,   98,   78,  105,
+       78,   88,   91,   78,  119,   93,   78,   95,   99,  102,
+      106,  114,  124,  127,   78,  112,  132,  135,  121,  139,
+      145,  154,  115,  166,  166,  241,  125,  128,  227,  227,
+      133,  136,  190,  141,  146,  155,   75,   75,  191,  228,
+      228,   76,   76,  216,  214,  158,  215,  241,  159,  217,
+      160,  233,  241,  241,  161,  162,  163,  164,  241,  165,
+      239,  239,  240,  240,  246,  241,  158,  247,  241,  159,
+      234,  160,  241,  246,  243,  161,  247,  241,  162,  163,
+
+      164,  246,  241,  165,  247,  242,  244,  241,  246,  241,
+      246,  247,  246,  247,  241,  247,  241,  248,  246,  251,
+      252,  247,  249,  241,  246,  241,  253,  247,  241,  241,
+      250,  254,  246,  241,  241,  247,  255,  241,  308,  246,
+      242,  258,  247,  246,  246,  308,  247,  247,  244,  246,
+      256,  246,  247,  308,  247,  257,  259,  248,  243,  260,
+      252,  261,  245,  251,  271,  253,  272,  254,  264,  264,
+      265,  265,  249,  273,  278,  279,  258,  250,  255,  274,
+      239,  239,  308,  309,  308,  257,  241,  310,  256,  308,
+      259,  308,  280,  280,  261,  308,  260,  246,  308,  312,
+
+      308,  308,  334,  285,  285,  419,  286,  320,  320,  287,
+      330,  288,  321,  321,  331,  289,  290,  291,  292,  322,
+      293,  335,  323,  311,  420,  324,  324,  286,  318,  315,
+      287,  313,  288,  316,  317,  322,  289,  652,  323,  290,
+      291,  292,  328,  314,  293,  308,  319,  364,  329,  329,
+      364,  353,  354,  365,  365,  322,  366,  366,  384,  386,
+      385,  367,  368,  328,  246,  387,  246,  247,  246,  247,
+      425,  247,  371,  400,  400,  372,  415,  373,  401,  401,
+      416,  374,  375,  376,  377,  364,  378,  410,  410,  411,
+      411,  409,  409,  371,  364,  425,  372,  425,  373,  425,
+
+      410,  410,  374,  412,  412,  375,  376,  377,  426,  425,
+      378,  425,  425,  425,  425,  425,  425,  246,  444,  246,
+      247,  444,  247,  454,  445,  445,  455,  446,  446,  456,
+      456,  428,  452,  452,  453,  454,  495,  463,  455,  464,
+      495,  457,  457,  465,  427,  429,  432,  433,  434,  466,
+      495,  246,  495,  425,  247,  444,  495,  435,  430,  470,
+      470,  482,  482,  431,  436,  483,  483,  444,  488,  488,
+      494,  494,  495,  483,  483,  454,  454,  495,  496,  455,
+      495,  495,  494,  494,  498,  497,  495,  495,  246,  489,
+      507,  247,  651,  508,  490,  523,  509,  509,  491,  492,
+
+      454,  493,  499,  455,  501,  517,  517,  518,  520,  520,
+      489,  502,  503,  525,  524,  504,  507,  490,  650,  508,
+      644,  500,  491,  492,  630,  526,  493,  495,  547,  547,
+      505,  507,  631,  528,  529,  506,  643,  539,  540,  556,
+      556,  557,  557,  565,  565,  566,  567,  567,  566,  541,
+      574,  574,  575,  575,  583,  568,  569,  583,  642,  591,
+      584,  584,  592,  585,  585,  593,  593,  566,  594,  594,
+      591,  596,  596,  592,  597,  597,  595,  595,  566,  600,
+      600,  583,  609,  609,  583,  629,  591,  608,  608,  495,
+      609,  609,  614,  614,  615,  615,  616,  616,  591,  591,
+
+      591,  592,  592,  592,  615,  615,  593,  593,  591,  617,
+      617,  592,  632,  632,  595,  595,  625,  625,  626,  628,
+      628,  629,  637,  637,  638,  638,  630,  641,  641,  645,
+      645,  626,  639,  640,  646,  646,  647,  647,  648,  648,
+      649,  649,  653,  653,  654,  654,  655,  655,  656,  656,
+      657,  657,  657,  657,  658,  658,  659,  659,   78,  636,
+       78,  118,  118,  167,  167,  635,  634,  633,  627,  495,
+      495,  495,  583,  624,  623,  622,  621,  620,  619,  618,
+      425,  591,  613,  495,  612,  611,  610,  607,  606,  605,
+      604,  603,  602,  601,  599,  598,  425,  425,  425,  590,
+
+      589,  588,  466,  587,  586,  495,  582,  581,  580,  579,
+      578,  577,  576,  573,  425,  572,  571,  570,  564,  563,
+      562,  495,  561,  560,  559,  558,  495,  555,  554,  553,
+      552,  551,  550,  549,  548,  308,  518,  546,  545,  544,
+      387,  543,  542,  425,  541,  538,  537,  536,  535,  495,
+      495,  534,  533,  532,  531,  530,  527,  522,  521,  519,
+      308,  308,  308,  444,  241,  516,  515,  514,  425,  513,
+      512,  511,  510,  425,  495,  454,  453,  487,  308,  486,
+      485,  484,  481,  480,  241,  479,  478,  477,  476,  425,
+      425,  475,  474,  473,  472,  471,  469,  468,  467,  462,
+
+      461,  460,  459,  458,  241,  241,  364,  451,  450,  449,
+      274,  448,  447,  308,  443,  442,  441,  440,  439,  438,
+      241,  437,  425,  424,  423,  422,  421,  418,  417,  414,
+      413,  408,  407,  406,  308,  405,  404,  403,  402,  308,
+      399,  398,  397,  396,  395,  394,  393,  392,  391,  191,
+      390,  389,  388,  383,  382,  381,  380,  379,  328,  370,
+      369,  241,  322,  363,  362,  361,  360,  308,  308,  359,
+      358,  357,  356,  355,  352,  351,  350,  349,  348,  347,
+      346,  345,  344,  343,  342,  241,  341,  340,  339,  338,
+      337,  336,  333,  332,  327,  326,  325,  241,  308,  307,
+
+      306,  305,  304,  303,  302,  301,  300,  299,  298,  297,
+      296,  241,  241,  295,  294,  246,  284,  283,  282,  281,
+      277,  276,  275,  270,  269,  268,  267,  266,  241,  263,
+      262,  241,  238,  237,  236,  235,  232,  231,  205,  204,
+      226,  225,  224,  223,  222,  221,  197,  196,  220,  193,
+      219,  189,  218,  188,  184,  183,  213,  182,  181,  180,
+      212,  211,  177,  176,  210,  174,  173,  172,  209,  169,
+      208,  168,  207,  206,  205,  204,  203,  202,  201,  200,
+      199,  198,  197,  196,  195,  194,  193,  192,  189,  188,
+      185,  184,  183,  182,  181,  180,  179,  178,  177,  176,
+
+      175,  174,  173,  172,  171,  170,  169,  168,  152,  143,
+      131,  123,  153,  152,  144,  131,  126,  123,  660,    3,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660
     } ;
 
-static yyconst short int yy_chk[907] =
+static yyconst short int yy_chk[1175] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    6,    6,    7,    7,
-       15,   27,    9,    7,    7,    7,   12,    7,  111,    7,
-        7,  111,    7,   15,   27,    7,    7,    9,    7,   14,
-       10,   12,  111,    7,    8,   17,    7,   24,    8,    8,
-        8,    8,   10,   19,   14,   10,   19,   10,   21,   22,
-       17,   21,   24,   22,   26,   30,   31,   31,   26,   32,
-       32,   19,   21,   19,   33,   35,   21,   36,   38,   39,
-
-       30,   40,   42,   44,   26,   46,   46,   87,   87,   33,
-       35,   92,   36,   38,   39,  103,   40,   42,   44,   45,
-       47,   68,   69,   68,   47,   47,   88,   88,   69,   89,
-       45,   92,  107,   45,   89,   45,  101,  110,  115,   45,
-      118,  119,   45,   45,   45,  120,  103,  107,   45,   97,
-       97,   97,   97,  127,  123,  101,  119,  123,  120,  130,
-      125,  131,  130,  132,  133,  110,  132,  133,  123,  115,
-      134,  138,  138,  134,  118,  125,  135,  132,  127,  135,
-      139,  139,  145,  146,  145,  150,  150,  151,  151,  146,
-      130,  131,  133,  177,  178,  154,  179,  182,  181,  134,
-
-      135,  154,  154,  159,  188,  180,  183,  184,  560,  159,
-      159,  179,  177,  187,  159,  186,  248,  159,  248,  159,
-      184,  183,  557,  159,  293,  178,  159,  159,  159,  181,
-      186,  182,  159,  180,  188,  189,  189,  199,  187,  190,
-      190,  193,  199,  198,  193,  202,  219,  193,  193,  198,
-      198,  231,  219,  219,  232,  293,  235,  231,  231,  556,
-      232,  232,  235,  235,  237,  202,  249,  237,  241,  555,
-      253,  255,  249,  253,  255,  260,  264,  264,  260,  241,
-      265,  265,  241,  275,  241,  276,  276,  292,  241,  275,
-      275,  241,  241,  241,  277,  280,  280,  241,  281,  281,
-
-      277,  277,  284,  287,  294,  295,  292,  284,  296,  297,
-      298,  299,  301,  302,  303,  309,  356,  356,  309,  294,
-      334,  547,  311,  287,  299,  298,  334,  301,  311,  311,
-      312,  545,  333,  295,  333,  544,  312,  312,  302,  296,
-      320,  320,  320,  297,  303,  324,  370,  325,  324,  338,
-      325,  324,  324,  325,  325,  338,  338,  351,  353,  355,
-      351,  353,  357,  364,  364,  355,  355,  371,  357,  357,
-      365,  367,  367,  368,  372,  369,  368,  370,  373,  368,
-      368,  374,  371,  375,  376,  379,  365,  380,  392,  378,
-      539,  392,  538,  365,  369,  399,  399,  376,  375,  365,
-
-      365,  402,  372,  365,  378,  381,  429,  429,  381,  373,
-      379,  381,  381,  403,  536,  374,  527,  380,  393,  393,
-      393,  402,  405,  406,  527,  405,  403,  418,  420,  406,
-      406,  420,  535,  418,  418,  439,  439,  440,  440,  450,
-      450,  450,  451,  451,  451,  452,  458,  458,  459,  459,
-      467,  452,  452,  468,  534,  476,  467,  467,  476,  468,
-      468,  476,  476,  476,  477,  477,  478,  479,  479,  478,
-      480,  480,  478,  478,  478,  486,  486,  494,  495,  495,
-      496,  533,  502,  494,  494,  531,  496,  496,  502,  502,
-      504,  504,  505,  505,  506,  526,  507,  506,  526,  507,
-
-      506,  506,  507,  507,  508,  510,  510,  508,  528,  528,
-      508,  508,  519,  519,  519,  525,  525,  525,  537,  537,
-      540,  540,  541,  542,  542,  548,  548,  524,  541,  541,
-      549,  549,  550,  550,  551,  551,  552,  552,  558,  558,
-      559,  559,  562,  562,  563,  563,  564,  564,  565,  565,
-      566,  566,  567,  567,  523,  522,  521,  520,  518,  517,
-      516,  515,  514,  513,  512,  509,  503,  501,  500,  499,
-      498,  497,  493,  492,  491,  490,  489,  488,  487,  485,
-      484,  483,  482,  481,  475,  474,  473,  472,  471,  470,
-      469,  466,  465,  464,  463,  462,  461,  460,  457,  456,
-
-      455,  454,  453,  449,  448,  447,  446,  445,  444,  443,
-      442,  441,  438,  437,  436,  435,  434,  433,  432,  431,
-      430,  428,  427,  426,  425,  424,  423,  422,  421,  419,
-      417,  416,  415,  414,  413,  412,  411,  410,  409,  408,
-      407,  404,  401,  400,  398,  397,  396,  395,  394,  391,
-      390,  389,  388,  387,  386,  385,  384,  383,  382,  377,
-      366,  363,  362,  361,  360,  359,  358,  354,  352,  350,
-      349,  348,  347,  346,  345,  344,  343,  342,  341,  340,
-      339,  337,  336,  335,  332,  331,  330,  329,  328,  327,
-      326,  321,  319,  318,  317,  316,  315,  314,  313,  310,
-
-      308,  307,  306,  305,  304,  300,  291,  290,  289,  288,
-      286,  285,  283,  282,  279,  278,  274,  273,  272,  271,
-      270,  269,  268,  267,  266,  263,  262,  261,  259,  258,
-      257,  256,  254,  252,  251,  250,  247,  246,  245,  244,
-      243,  242,  240,  239,  238,  236,  234,  233,  230,  229,
-      228,  227,  226,  225,  224,  223,  222,  221,  220,  218,
-      217,  216,  215,  214,  213,  212,  211,  210,  209,  208,
-      207,  206,  205,  204,  203,  201,  200,  197,  196,  195,
-      194,  192,  191,  185,  174,  173,  172,  171,  170,  169,
-      168,  167,  166,  165,  164,  163,  162,  161,  160,  158,
-
-      157,  156,  155,  153,  152,  149,  148,  147,  144,  143,
-      142,  141,  140,  121,   99,   98,   96,   95,   94,   93,
-       91,   90,   86,   85,   84,   82,   81,   80,   79,   78,
-       77,   76,   75,   74,   73,   72,   71,   70,   67,   66,
-       65,   64,   63,   62,   61,   60,   59,   58,   57,   56,
-       55,   54,   53,   52,   51,   50,   49,   48,   43,   41,
-       37,   34,   29,   28,   23,   16,   13,   11,    3,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-      571,  571,  571,  571,  571,  571,  571,  571,  571,  571,
-
-      571,  571,  571,  571,  571,  571
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+        1,    1,    1,    1,    5,    5,    6,    6,  663,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,   47,   47,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+        6,    6,    6,    6,    6,    6,    6,    6,    6,    6,
+
+        6,    6,    6,    7,    8,    9,   10,    7,    7,    7,
+        7,   11,   12,   13,   14,    8,  178,   10,   15,   16,
+       23,   14,   11,   12,   13,   14,   11,    9,   23,   15,
+       16,    9,   23,   17,   18,   13,  158,    8,   20,   10,
+      158,    8,   19,   10,   17,   18,   21,   13,   25,   20,
+       22,   17,   18,   19,   22,   24,   26,   21,   20,   25,
+       27,   30,  178,   25,   32,   22,   18,   26,   35,   22,
+       17,   28,   33,   27,   19,   30,   24,   97,   32,   97,
+       24,   41,   35,   28,   33,   28,   37,   28,   39,   37,
+       38,   39,   42,   38,   43,   41,   42,   49,   46,   48,
+
+       48,  649,   50,   37,   38,   37,   43,   38,   49,   52,
+       53,   42,   46,   50,   55,   54,   56,   57,   58,   59,
+       52,   53,   54,   60,   62,   55,   54,   56,   57,   58,
+       59,   61,   64,   66,   60,   60,   68,   69,   62,   70,
+       72,   74,   61,   76,   76,  171,   64,   66,  156,  156,
+       68,   69,  100,   70,   72,   74,   75,   77,  100,  157,
+      157,   77,   77,  138,  137,   75,  137,  170,   75,  138,
+       75,  161,  175,  185,   75,   75,   75,   75,  186,   75,
+      166,  166,  166,  166,  179,  187,   75,  179,  190,   75,
+      161,   75,  195,  192,  171,   75,  192,  194,   75,   75,
+
+       75,  198,  208,   75,  198,  170,  175,  199,  200,  209,
+      201,  200,  202,  201,  210,  202,  211,  179,  203,  187,
+      190,  203,  185,  213,  212,  214,  192,  212,  216,  215,
+      186,  194,  218,  219,  220,  218,  195,  222,  267,  221,
+      208,  200,  221,  223,  224,  266,  223,  224,  210,  225,
+      198,  226,  225,  269,  226,  199,  201,  212,  209,  202,
+      216,  203,  211,  215,  234,  218,  234,  219,  227,  227,
+      228,  228,  213,  235,  239,  239,  223,  214,  220,  235,
+      240,  240,  270,  266,  276,  222,  241,  267,  221,  268,
+      224,  271,  241,  241,  226,  272,  225,  246,  277,  269,
+
+      275,  273,  289,  246,  246,  374,  246,  278,  278,  246,
+      286,  246,  279,  279,  286,  246,  246,  246,  246,  280,
+      246,  289,  280,  268,  374,  280,  280,  246,  276,  272,
+      246,  270,  246,  273,  275,  324,  246,  646,  324,  246,
+      246,  246,  285,  271,  246,  308,  277,  320,  285,  285,
+      321,  308,  308,  320,  320,  322,  321,  321,  335,  336,
+      335,  322,  322,  328,  340,  336,  342,  340,  347,  342,
+      379,  347,  328,  353,  353,  328,  371,  328,  354,  354,
+      371,  328,  328,  328,  328,  364,  328,  365,  365,  367,
+      367,  364,  364,  328,  366,  380,  328,  381,  328,  382,
+
+      366,  366,  328,  368,  368,  328,  328,  328,  379,  383,
+      328,  384,  385,  389,  388,  386,  390,  396,  400,  438,
+      396,  401,  438,  411,  400,  400,  411,  401,  401,  411,
+      411,  381,  409,  409,  409,  412,  459,  420,  412,  420,
+      458,  412,  412,  421,  380,  382,  385,  386,  388,  421,
+      460,  440,  463,  425,  440,  444,  461,  389,  383,  425,
+      425,  444,  444,  384,  390,  445,  445,  446,  453,  453,
+      456,  456,  462,  446,  446,  454,  457,  464,  458,  457,
+      465,  467,  457,  457,  460,  459,  468,  469,  481,  454,
+      470,  481,  645,  470,  454,  491,  470,  470,  454,  454,
+
+      494,  454,  461,  494,  463,  482,  482,  482,  488,  488,
+      454,  464,  465,  492,  491,  467,  509,  454,  644,  509,
+      636,  462,  454,  454,  616,  492,  454,  495,  518,  518,
+      468,  507,  616,  495,  495,  469,  634,  507,  507,  528,
+      528,  529,  529,  539,  539,  539,  540,  540,  540,  541,
+      547,  547,  548,  548,  556,  541,  541,  557,  633,  565,
+      556,  556,  565,  557,  557,  565,  565,  565,  566,  566,
+      567,  568,  568,  567,  569,  569,  567,  567,  567,  575,
+      575,  583,  584,  584,  585,  628,  591,  583,  583,  627,
+      585,  585,  591,  591,  593,  593,  594,  594,  595,  615,
+
+      596,  595,  615,  596,  595,  595,  596,  596,  597,  599,
+      599,  597,  617,  617,  597,  597,  608,  608,  608,  614,
+      614,  614,  626,  626,  629,  629,  630,  631,  631,  637,
+      637,  625,  630,  630,  638,  638,  639,  639,  640,  640,
+      641,  641,  647,  647,  648,  648,  651,  651,  652,  652,
+      653,  653,  654,  654,  655,  655,  656,  656,  661,  624,
+      661,  662,  662,  664,  664,  623,  622,  620,  613,  612,
+      611,  610,  609,  607,  606,  605,  604,  603,  602,  601,
+      598,  592,  590,  589,  588,  587,  586,  582,  581,  580,
+      579,  578,  577,  576,  574,  573,  572,  571,  570,  564,
+
+      563,  562,  561,  560,  559,  558,  555,  554,  553,  552,
+      551,  550,  549,  546,  545,  544,  543,  542,  538,  537,
+      536,  535,  534,  533,  532,  531,  530,  527,  526,  525,
+      524,  523,  522,  521,  520,  519,  517,  516,  515,  514,
+      513,  512,  511,  510,  508,  506,  505,  504,  503,  502,
+      501,  500,  499,  498,  497,  496,  493,  490,  489,  487,
+      486,  485,  484,  483,  480,  479,  478,  477,  476,  475,
+      474,  473,  472,  471,  466,  455,  452,  451,  450,  449,
+      448,  447,  441,  439,  437,  436,  435,  434,  433,  432,
+      431,  430,  429,  428,  427,  426,  424,  423,  422,  419,
+
+      418,  417,  416,  415,  414,  413,  410,  408,  407,  406,
+      405,  404,  403,  402,  399,  398,  397,  395,  394,  393,
+      392,  391,  387,  378,  377,  376,  375,  373,  372,  370,
+      369,  363,  362,  361,  360,  359,  358,  357,  356,  355,
+      352,  351,  350,  349,  348,  346,  345,  344,  343,  341,
+      339,  338,  337,  334,  333,  332,  331,  330,  329,  327,
+      326,  325,  323,  319,  318,  317,  316,  315,  314,  313,
+      312,  311,  310,  309,  307,  306,  305,  304,  303,  302,
+      301,  300,  299,  298,  297,  296,  295,  294,  293,  292,
+      291,  290,  288,  287,  284,  283,  282,  281,  274,  263,
+
+      262,  261,  260,  259,  258,  257,  256,  255,  254,  253,
+      252,  251,  250,  249,  248,  247,  245,  244,  243,  242,
+      238,  237,  236,  233,  232,  231,  230,  229,  217,  207,
+      206,  191,  165,  164,  163,  162,  160,  159,  155,  154,
+      153,  151,  150,  149,  148,  147,  146,  145,  144,  143,
+      142,  141,  140,  139,  136,  135,  134,  133,  132,  131,
+      130,  129,  128,  127,  126,  125,  124,  123,  122,  121,
+      120,  119,  117,  116,  115,  114,  113,  111,  110,  109,
+      108,  107,  106,  105,  104,  103,  102,  101,   99,   98,
+       96,   95,   94,   93,   92,   91,   90,   89,   88,   87,
+
+       86,   85,   84,   83,   82,   81,   80,   79,   73,   71,
+       67,   63,   45,   44,   40,   34,   31,   29,    3,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660,  660,  660,  660,  660,  660,  660,
+      660,  660,  660,  660
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -749,12 +835,31 @@ static char *yy_last_accepting_cpos;
 char *yytext;
 #line 1 "dtimep.lex"
 #define INITIAL 0
-#line 3 "dtimep.lex"
+#line 6 "dtimep.lex"
 #include <h/nmh.h>
 #include <h/tws.h>
 
+  /* Since we're looking at a string at a time, don't worry about
+   *  wrapping to the next buffer.
+   */
+#define yywrap() 1
+#define YY_SKIP_YYWRAP
+
 #define YY_NO_UNPUT
-#define YY_DECL struct tws * dparsetime(char *lexstr)
+
+  /* This is the tricky thing that makes this function cool.  We
+   *  replace the traditional int yylex(void) declaration with our
+   *  dparsetime() declaration, essentially piggy-backing off the
+   *  utility of the yylex() function and adding what we need to make
+   *  the parsing function useful to us.
+   */
+#define YY_DECL struct tws *dparsetime(char *lexstr)
+
+  /* yyerminate() is called after the input string is matched to
+   * completion (actually, when the lexer reaches an EOF).  The only
+   * thing that really needs to be in this macro function is the
+   * return call, which must be substituted inline into dparsetime.
+   */
 
 #define yyterminate() (void)yy_delete_buffer(lexhandle); \
   if(!(tw.tw_flags & TW_SUCC)) { \
@@ -814,8 +919,10 @@ static int month_map[] = {
 };
 
 /*
- * Same trick for day-of-week using the hash function
- *  (c1 & 7) + (c2 & 4)
+ * Lookup table for day-of-week using the same hash trick as for above name-of-
+ * month table, but using the first and second character, not second and third.
+ *
+ * Compute index into table using: (day_name[0] & 7) + (day_name[1] & 4)
  */
 static int day_map[] = {
        0,
@@ -832,44 +939,86 @@ static int day_map[] = {
        3       /*11 - Wed */
 };
 
-#define INIT()   { cp = yytext;}
-#define SETWDAY() { cp++; \
-                   tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
-                   tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
-                   SKIPA(); }
-#define SETMON() { cp++; \
-                   tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; \
-                  SKIPA(); }
+/* The SET* macros will parse for the appropriate field, and leave the
+ * cp pointer at the first character after the desired field. Be
+ * careful with variable-length fields or alpha-num mixes.
+
+ * The SKIP* macros skip over characters of a particular class and
+ * leave cp at the position of the first character that doesn't match
+ * that class. Correspondingly, SKIPTO* skips until it reaches a
+ * character of a particular class.
+ */
+
+#define INIT()       { cp = yytext;} 
+#define SETWDAY()    { tw.tw_wday= day_map[(cp[0] & 7) + (cp[1] & 4)]; \
+                       tw.tw_flags &= ~TW_SDAY; tw.tw_flags |= TW_SEXP; \
+                       SKIPA(); }
+#define SETMON()     { cp++; \
+                       tw.tw_mon = month_map[(cp[0] + cp[1]) & 0x1f]; \
+                      SKIPA(); }
 #define SETMON_NUM() { tw.tw_mon = atoi(cp)-1; \
-                  SKIPD(); }
-#define SETYEAR() { tw.tw_year = atoi(cp); \
-                  SKIPD(); }
-#define SETDAY() { tw.tw_mday = atoi(cp); \
-                   tw.tw_flags |= TW_YES; \
-                  SKIPD(); }
-#define SETTIME() { tw.tw_hour = atoi(cp); \
-                    cp += 2; \
-                    SKIPTOD(); \
-                    tw.tw_min = atoi(cp); \
-                    cp += 2; \
-                    if(*cp == ':') { tw.tw_sec = atoi(++cp); SKIPD(); } \
-                    }
-#define SETZONE(x) { tw.tw_zone = ((x)/100)*60+(x)%100; \
-                     tw.tw_flags |= TW_SZEXP; \
-                     SKIPD(); }
-#define SETDST()   { tw.tw_flags |= TW_DST; }
-#define SKIPD()  { while ( isdigit(*cp++) ) ; \
-                      --cp; }
-#define SKIPTOD()  { while ( !isdigit(*cp++) ) ; \
-                      --cp; }
-#define SKIPA()  { while ( isalpha(*cp++) ) ; \
-                      --cp; }
-#define SKIPTOA()  { while ( !isalpha(*cp++) ) ; \
-                      --cp; }
-#define SKIPSP()  { while ( isspace(*cp++) ) ; \
-                      --cp; }
-#define SKIPTOSP()  { while ( !isspace(*cp++) ) ; \
-                      --cp; }
+                      SKIPD(); }
+#define SETYEAR()    { tw.tw_year = atoi(cp); \
+                      SKIPD(); }
+#define SETDAY()     { tw.tw_mday = atoi(cp); \
+                       tw.tw_flags |= TW_YES; \
+                      SKIPD(); }
+#define SETTIME()    { tw.tw_hour = atoi(cp); \
+                       cp += 2; \
+                       SKIPTOD(); \
+                       tw.tw_min = atoi(cp); \
+                       cp += 2; \
+                       if(*cp == ':') { \
+                          tw.tw_sec = atoi(++cp); SKIPD(); } }
+#define SETZONE(x)   { tw.tw_zone = ((x)/100)*60+(x)%100; \
+                       tw.tw_flags |= TW_SZEXP; \
+                       SKIPD(); }
+#define SETDST()     { tw.tw_flags |= TW_DST; }
+#define SKIPD()      { while ( isdigit(*cp++) ) ; \
+                       --cp; }
+#define SKIPTOD()    { while ( !isdigit(*cp++) ) ; \
+                       --cp; }
+#define SKIPA()      { while ( isalpha(*cp++) ) ; \
+                       --cp; }
+#define SKIPTOA()    { while ( !isalpha(*cp++) ) ; \
+                       --cp; }
+#define SKIPSP()     { while ( isspace(*cp++) ) ; \
+                       --cp; }
+#define SKIPTOSP()   { while ( !isspace(*cp++) ) ; \
+                       --cp; }
+
+#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
+# ifdef TIME_WITH_SYS_TIME
+#  include <sys/time.h>
+#  include <time.h>
+# else
+#  ifdef HAVE_SYS_TIME_H
+#   include <sys/time.h>
+#  else
+#   include <time.h>
+#  endif
+# endif
+
+static void
+zonehack (struct tws *tw)
+{
+    register struct tm *tm;
+
+    if (dmktime (tw) == (time_t) -1)
+       return;
+
+    tm = localtime (&tw->tw_clock);
+    if (tm->tm_isdst) {
+       tw->tw_flags |= TW_DST;
+       tw->tw_zone -= 60;
+    }
+}
+#endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
+/* The year can either be 2 digits, or 4. However, after
+Y2K, we found that some MUA were reporting the year 100, hence
+the middle term here. yyterminate() resolves the actual
+issues with 2-digit years.
+*/
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1020,16 +1169,19 @@ YY_DECL
        register char *yy_cp = NULL, *yy_bp = NULL;
        register int yy_act;
 
-#line 159 "dtimep.lex"
+#line 226 "dtimep.lex"
 
 
+  /* This section begins the definition of dparsetime().
+     Put here any local variable definitions and initializations */
   
   YY_BUFFER_STATE lexhandle;
 
-  register char *cp;  /* *cp is internal to the lexing function yylex() */
+  register char *cp;
   static struct tws tw; 
 
   memset(&tw,0,sizeof(struct tws));
+
   lexhandle = yy_scan_string(lexstr);
 
 
@@ -1083,13 +1235,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 572 )
+                               if ( yy_current_state >= 661 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 870 );
+               while ( yy_base[yy_current_state] != 1120 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1117,7 +1269,7 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 171 "dtimep.lex"
+#line 241 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1129,11 +1281,11 @@ YY_RULE_SETUP
                                     SETTIME();
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 184 "dtimep.lex"
+#line 254 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1145,11 +1297,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 196 "dtimep.lex"
+#line 266 "dtimep.lex"
 {
                                      INIT();
                                     SETDAY();
@@ -1159,11 +1311,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 206 "dtimep.lex"
+#line 276 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1175,11 +1327,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 218 "dtimep.lex"
+#line 288 "dtimep.lex"
 {
                                      INIT();
                                     SETWDAY();
@@ -1189,11 +1341,11 @@ YY_RULE_SETUP
                                     SETDAY();
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 228 "dtimep.lex"
+#line 298 "dtimep.lex"
 {
                                      INIT();
                                     SETMON();
@@ -1203,11 +1355,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOA();
                                     SETWDAY();
-                                  }
+                                     }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 238 "dtimep.lex"
+#line 308 "dtimep.lex"
 {
                                      INIT();
                                     SETMON();
@@ -1215,11 +1367,11 @@ YY_RULE_SETUP
                                     SETDAY();
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 246 "dtimep.lex"
+#line 316 "dtimep.lex"
 {
                                      INIT();
                                     if(europeandate) {
@@ -1237,11 +1389,11 @@ YY_RULE_SETUP
                                     SETYEAR();
                                     SKIPTOD();
                                     SETTIME();
-                                  }
+                                     }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 264 "dtimep.lex"
+#line 334 "dtimep.lex"
 {
                                      INIT();
                                     if(europeandate) {
@@ -1257,173 +1409,158 @@ YY_RULE_SETUP
                                     }
                                     SKIPTOD();
                                     SETYEAR();
-                                  }
+                                     }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 281 "dtimep.lex"
+#line 351 "dtimep.lex"
 
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 282 "dtimep.lex"
+#line 352 "dtimep.lex"
 tw.tw_hour += 12;
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 284 "dtimep.lex"
+#line 354 "dtimep.lex"
 {
                                     INIT();
                                     SKIPTOD();
                                     SETZONE(atoi(cp));
-                                }
+#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
+                                   zonehack (&tw);
+#endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
+                                   //                              yyterminate();
+                                    }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 289 "dtimep.lex"
+#line 363 "dtimep.lex"
 {
                                     INIT();
                                     SKIPTOD();
                                     SETZONE(-atoi(cp));
-                                }
+#ifdef ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST
+                                   zonehack (&tw);
+#endif /* ADJUST_NUMERIC_ONLY_TZ_OFFSETS_WRT_DST */
+                                   //                              yyterminate();
+                                   
+                                    }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 294 "dtimep.lex"
+#line 373 "dtimep.lex"
 INIT(); SETZONE(0);
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 295 "dtimep.lex"
+#line 374 "dtimep.lex"
 INIT(); SETZONE(0);
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 296 "dtimep.lex"
+#line 375 "dtimep.lex"
 INIT(); SETZONE(200);
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 297 "dtimep.lex"
+#line 376 "dtimep.lex"
 INIT(); SETDST(); SETZONE(2);
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 298 "dtimep.lex"
+#line 377 "dtimep.lex"
 INIT(); SETZONE(-500);
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 299 "dtimep.lex"
+#line 378 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-500);
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 300 "dtimep.lex"
+#line 379 "dtimep.lex"
 INIT(); SETZONE(-600);
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 301 "dtimep.lex"
+#line 380 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-600);
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 302 "dtimep.lex"
+#line 381 "dtimep.lex"
 INIT(); SETZONE(-700);
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 303 "dtimep.lex"
+#line 382 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-700);
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 304 "dtimep.lex"
+#line 383 "dtimep.lex"
 INIT(); SETZONE(-800);
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 305 "dtimep.lex"
+#line 384 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-800);
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 306 "dtimep.lex"
+#line 385 "dtimep.lex"
 INIT(); SETZONE(-330);
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 307 "dtimep.lex"
+#line 386 "dtimep.lex"
 INIT(); SETZONE(-400);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 308 "dtimep.lex"
+#line 387 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-400);
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 309 "dtimep.lex"
+#line 388 "dtimep.lex"
 INIT(); SETZONE(-900);
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 310 "dtimep.lex"
+#line 389 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-900);
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 311 "dtimep.lex"
+#line 390 "dtimep.lex"
 INIT(); SETZONE(-1000);
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 312 "dtimep.lex"
+#line 391 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-1000);
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 313 "dtimep.lex"
+#line 392 "dtimep.lex"
 INIT(); SETDST(); SETZONE(-100);
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 314 "dtimep.lex"
-{
-                                       INIT();
-                                       SETZONE(100*(('a'-1) - tolower(*cp)));
-                       }
+#line 393 "dtimep.lex"
+;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 318 "dtimep.lex"
-{
-                                       INIT();
-                                       SETZONE(100*('a' - tolower(*cp)));
-                       }
-       YY_BREAK
-case 36:
-YY_RULE_SETUP
-#line 322 "dtimep.lex"
-{
-                                       INIT();
-                                       SETZONE(100*(tolower(*cp) - 'm'));
-                       }
-       YY_BREAK
-case 37:
-YY_RULE_SETUP
-#line 328 "dtimep.lex"
+#line 394 "dtimep.lex"
 
        YY_BREAK
-case 38:
-YY_RULE_SETUP
-#line 329 "dtimep.lex"
-
-       YY_BREAK
-case 39:
+case 36:
 YY_RULE_SETUP
-#line 333 "dtimep.lex"
+#line 395 "dtimep.lex"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
@@ -1717,7 +1854,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 572 )
+                       if ( yy_current_state >= 661 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1752,11 +1889,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 572 )
+               if ( yy_current_state >= 661 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 571);
+       yy_is_jam = (yy_current_state == 660);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
@@ -2311,4 +2448,4 @@ int main()
        return 0;
        }
 #endif
-#line 333 "dtimep.lex"
+#line 395 "dtimep.lex"