]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#295,!325] regen flex/bison
authorFrancis Dupont <fdupont@isc.org>
Wed, 15 May 2019 19:59:36 +0000 (19:59 +0000)
committerFrancis Dupont <fdupont@isc.org>
Sat, 22 Jun 2019 14:05:23 +0000 (10:05 -0400)
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h

index 0bcc2da945b21e82d37283bd5f92a7fa4c359ef1..80abaddcfe21c1768c4e899dfa3b29b7433c8c0f 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 181
-#define YY_END_OF_BUFFER 182
+#define YY_NUM_RULES 183
+#define YY_END_OF_BUFFER 184
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,178 +700,181 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1548] =
+static const flex_int16_t yy_accept[1581] =
     {   0,
-      174,  174,    0,    0,    0,    0,    0,    0,    0,    0,
-      182,  180,   10,   11,  180,    1,  174,  171,  174,  174,
-      180,  173,  172,  180,  180,  180,  180,  180,  167,  168,
-      180,  180,  180,  169,  170,    5,    5,    5,  180,  180,
-      180,   10,   11,    0,    0,  163,    0,    0,    0,    0,
+      176,  176,    0,    0,    0,    0,    0,    0,    0,    0,
+      184,  182,   10,   11,  182,    1,  176,  173,  176,  176,
+      182,  175,  174,  182,  182,  182,  182,  182,  169,  170,
+      182,  182,  182,  171,  172,    5,    5,    5,  182,  182,
+      182,   10,   11,    0,    0,  165,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
-      174,  174,    0,  173,  174,    3,    2,    6,    0,  174,
+      176,  176,    0,  175,  176,    3,    2,    6,    0,  176,
         0,    0,    0,    0,    0,    0,    4,    0,    0,    9,
 
-        0,  164,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  166,    0,    0,    0,
+        0,  166,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  168,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    2,    0,    0,    0,    0,    0,    0,    0,    8,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
+        8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,  165,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  167,    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,   70,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   72,    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,  179,  177,    0,  176,  175,    0,    0,
+        0,    0,    0,    0,    0,  181,  179,    0,  178,  177,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  143,    0,
-      142,    0,    0,   76,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   35,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      145,    0,  144,    0,    0,   78,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   35,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   73,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   17,    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,   18,    0,    0,    0,    0,  178,  175,
+        0,    0,    0,    0,    0,    0,   75,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      144,    0,    0,  146,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   77,    0,    0,    0,    0,    0,    0,
-        0,   62,    0,    0,    0,    0,    0,   97,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   38,    0,
+       17,    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,   61,    0,    0,
+
+        0,    0,    0,    0,    0,    0,   18,    0,    0,    0,
+        0,  180,  177,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  146,    0,    0,  148,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   79,    0,    0,    0,
+        0,    0,    0,    0,   64,    0,    0,    0,    0,    0,
+       99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   38,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       65,    0,   39,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   63,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   67,    0,   39,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   94,   31,    0,    0,   36,    0,    0,    0,    0,
-        0,    0,    0,    0,   12,  151,    0,  148,    0,  147,
-        0,    0,    0,  107,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   96,   31,    0,    0,
+       36,    0,    0,    0,    0,    0,    0,    0,    0,   12,
+      153,    0,  150,    0,  149,    0,    0,    0,  109,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   87,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   89,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   33,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   33,    0,
 
-        0,    0,    0,    0,   64,    0,    0,    0,    0,    0,
-        0,    0,    0,  108,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  103,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    7,    0,    0,
-      149,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
+      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  105,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    7,    0,    0,  151,    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,   75,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   89,    0,    0,    0,    0,    0,    0,    0,
+       77,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   85,    0,    0,    0,    0,    0,    0,    0,    0,
+       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       87,    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,   68,    0,
+        0,    0,    0,    0,    0,    0,    0,   70,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   82,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   67,    0,    0,    0,    0,    0,    0,    0,
+        0,   84,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   69,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  101,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  113,   83,    0,
-        0,    0,    0,   88,   32,    0,    0,    0,    0,    0,
+        0,  103,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  115,   85,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   40,    0,    0,    0,
+        0,    0,    0,   90,   32,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   40,    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,   57,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  152,    0,    0,    0,    0,
+        0,    0,    0,    0,   59,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  154,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   72,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
-        0,    0,    0,    0,    0,   43,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       74,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      104,    0,    0,    0,    0,    0,   43,    0,    0,    0,
 
-        0,    0,    0,    0,   37,    0,    0,    0,   30,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   90,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   37,    0,    0,
+        0,   30,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       92,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       99,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  126,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   69,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  101,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  128,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       71,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  131,    0,    0,    0,  129,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  156,    0,    0,    0,    0,    0,    0,    0,
-      100,    0,    0,    0,    0,    0,    0,    0,    0,  104,
-       86,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   98,   22,    0,  109,
-        0,    0,    0,    0,    0,    0,    0,    0,  135,    0,
-        0,    0,    0,   59,    0,    0,    0,    0,    0,  112,
-       34,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,   56,    0,    0,
-        0,   80,   81,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   63,    0,    0,    0,    0,    0,    0,
-        0,    0,   44,    0,    0,    0,    0,    0,    0,    0,
-        0,  106,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   23,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  133,    0,
+        0,    0,  131,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  158,    0,    0,
+        0,    0,    0,    0,    0,  102,    0,    0,    0,    0,
+        0,    0,    0,    0,  106,   88,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  100,   22,    0,  111,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  137,    0,    0,    0,    0,
+
+       61,    0,    0,    0,    0,    0,  114,   34,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      160,    0,   60,   74,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   53,    0,    0,    0,    0,    0,    0,
-        0,  132,    0,    0,  130,    0,  124,  123,    0,   49,
-        0,   21,    0,    0,    0,    0,    0,  145,    0,    0,
-
-        0,   93,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  121,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  110,   15,    0,   41,    0,    0,
-        0,    0,    0,  134,    0,    0,    0,    0,    0,    0,
-       54,    0,    0,  105,    0,    0,    0,    0,   96,    0,
-        0,    0,    0,    0,    0,    0,   66,    0,  154,    0,
-      153,    0,  159,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   58,    0,    0,    0,   82,   83,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       65,    0,    0,    0,    0,    0,    0,    0,    0,   44,
+        0,    0,    0,    0,    0,    0,    0,    0,  108,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  162,
+        0,   62,   76,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   55,    0,    0,    0,    0,    0,    0,    0,
+
+      134,    0,    0,  132,    0,  126,  125,    0,   49,    0,
+       21,    0,    0,    0,    0,    0,  147,    0,    0,    0,
+       95,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  123,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  112,   15,    0,   41,    0,    0,    0,
+        0,    0,    0,    0,  136,    0,    0,    0,    0,    0,
+        0,   56,    0,    0,  107,    0,    0,    0,    0,   98,
+        0,    0,    0,    0,    0,    0,    0,   68,    0,  156,
+        0,  155,    0,  161,    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,   48,
-        0,    0,    0,    0,  162,    0,   91,   27,    0,    0,
-        0,   50,  122,    0,    0,    0,  157,  127,    0,    0,
-        0,    0,    0,    0,    0,    0,   25,    0,    0,   24,
-        0,  133,    0,    0,    0,    0,    0,   84,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   52,    0,    0,    0,    0,    0,   42,    0,
-        0,    0,    0,    0,    0,    0,  111,    0,    0,    0,
-       26,    0,  158,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   47,    0,    0,   20,    0,  161,
-
-       58,    0,  155,  150,    0,   28,    0,    0,    0,   16,
-        0,    0,  139,    0,    0,    0,    0,    0,    0,  119,
-        0,   95,    0,    0,    0,    0,    0,    0,    0,    0,
-       71,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  140,   13,    0,    0,    0,    0,    0,  128,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  125,
-        0,    0,    0,    0,    0,  118,    0,   19,    0,  136,
-        0,    0,    0,    0,   45,    0,   79,    0,    0,    0,
-        0,  117,    0,    0,   51,    0,    0,   46,  138,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   14,    0,
+        0,    0,   48,    0,    0,    0,    0,  164,    0,   93,
+       27,    0,    0,    0,   50,  124,    0,    0,    0,  159,
+      129,    0,    0,    0,    0,    0,    0,    0,    0,   25,
+        0,    0,   24,    0,  135,    0,    0,    0,    0,    0,
+        0,    0,   86,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   52,    0,    0,
+        0,    0,    0,   42,    0,    0,    0,    0,    0,    0,
+
+        0,  113,    0,    0,    0,   26,    0,  160,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   47,    0,    0,   20,    0,  163,   60,    0,  157,
+      152,    0,   28,    0,    0,    0,   16,    0,    0,  141,
+        0,    0,    0,    0,    0,    0,  121,    0,    0,    0,
+       97,    0,    0,    0,    0,    0,    0,    0,    0,   73,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  142,   13,    0,    0,    0,    0,    0,    0,    0,
+      130,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      127,    0,    0,    0,    0,    0,  120,    0,   54,   53,
 
+       19,    0,  138,    0,    0,    0,    0,   45,    0,   81,
+        0,    0,    0,    0,  119,    0,    0,   51,    0,    0,
+       46,  140,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   29,    0,    0,    0,    0,    0,  137,    0,   92,
-        0,    0,    0,    0,    0,    0,  115,  120,   55,    0,
-        0,    0,    0,  114,    0,    0,  141,    0,    0,    0,
-        0,    0,   78,    0,    0,  116,    0
+        0,    0,    0,    0,   29,    0,    0,    0,    0,    0,
+      139,    0,   94,    0,    0,    0,    0,    0,    0,  117,
+      122,   57,    0,    0,    0,    0,  116,    0,    0,  143,
+        0,    0,    0,    0,    0,   80,    0,    0,  118,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -918,374 +921,384 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1560] =
+static const flex_int16_t yy_base[1593] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     1948, 1949,   34, 1944,  145,    0,  207, 1949,  214,  221,
-       13,  228, 1949, 1924,  118,   25,    2,    6, 1949, 1949,
-       73,   11,   17, 1949, 1949, 1949,  104, 1932, 1885,    0,
-     1922,  108, 1939,   24,  262, 1949, 1881,   67, 1880, 1886,
-       84,   75, 1878,   88,  226,   91,   89,  290,  196, 1877,
-      206,  285,  206,  210,  219,   60,  223, 1886,  247,  290,
-      315,  303,  231, 1869,  297,  321,  343,  324, 1888,    0,
-      380,  387,  401,  408,  424, 1949,    0, 1949,  429,  438,
-      216,  249,  220,  315,  335,  266, 1949, 1885, 1926, 1949,
-
-      342, 1949,  421, 1913,  312, 1871, 1881,  400,   10, 1876,
-      361,  323,  370,  387,  359, 1921,    0,  474,  392, 1863,
-     1860, 1864, 1866, 1859, 1867,  412, 1863, 1852, 1853,   78,
-     1869, 1852, 1861, 1861,   95, 1852,  400, 1853, 1851,  405,
-     1899, 1903, 1843, 1896, 1836, 1859, 1856, 1856, 1850,  310,
-     1843, 1836, 1841, 1835,  436, 1846, 1839, 1830, 1829, 1843,
-      186, 1829,  413, 1845, 1822,  470,  286,  400, 1843, 1840,
-     1841, 1839, 1874, 1873,  445, 1819, 1821,  448, 1813, 1830,
-     1822,    0,  447,  447,  458,  471,  462,  483, 1821, 1949,
-        0, 1866,  490, 1811, 1814,  476,  482, 1822,  488, 1867,
-
-      499, 1866,  496, 1865, 1949,  542, 1864,  507, 1823, 1815,
-     1802, 1818, 1817, 1814, 1813, 1804,  486, 1855, 1849, 1813,
-     1792, 1800, 1795, 1809, 1805, 1793, 1805, 1805, 1796, 1780,
-     1784, 1797, 1799, 1796, 1788, 1778, 1796, 1949, 1791, 1794,
-     1775, 1774, 1826, 1773, 1783, 1786,  531, 1782, 1770, 1781,
-     1819, 1764, 1822, 1757, 1772,  533, 1762, 1778, 1759, 1758,
-     1764, 1755, 1754, 1761, 1811, 1767, 1766, 1760,  486, 1767,
-     1762, 1754, 1744, 1759, 1758, 1753, 1757,  322, 1755, 1741,
-     1747, 1754, 1742, 1739, 1738,  541, 1733, 1747, 1790, 1749,
-      366, 1740,  512, 1949, 1949,  521, 1949, 1949, 1727,    0,
-
-      241,  513, 1729,  546,  534, 1785, 1736,  538, 1949, 1783,
-     1949, 1777,  588, 1949,  537, 1717, 1726, 1774, 1718, 1717,
-     1723, 1775, 1730, 1725, 1728, 1723,  533, 1949, 1725, 1769,
-     1722, 1719,  564, 1725, 1765, 1759, 1712, 1707, 1704, 1755,
-     1712, 1701, 1717, 1751, 1697,  611, 1711, 1696, 1709, 1696,
-     1706, 1701, 1708, 1703, 1699,  432, 1697, 1700, 1695, 1691,
-     1741,  525, 1735, 1949, 1734, 1684, 1683, 1682, 1675, 1677,
-     1681, 1670, 1683,  568, 1730, 1683, 1680, 1949, 1683, 1672,
-     1672, 1684,  560, 1659, 1660, 1681,  570, 1663, 1714, 1659,
-     1673, 1676, 1671, 1657, 1669, 1668, 1667, 1666, 1665, 1664,
-
-      526, 1707, 1706, 1949, 1648, 1647,  615, 1660, 1949, 1949,
-     1659,    0, 1648, 1640,  561, 1645, 1698, 1697, 1653, 1695,
-     1949, 1641, 1693, 1949,  595,  662,  564, 1692, 1634, 1645,
-     1638, 1640, 1628, 1949, 1633, 1639, 1642, 1625, 1640, 1627,
-     1626, 1949, 1628, 1625,  569, 1623, 1625, 1949, 1633, 1630,
-     1615, 1628, 1623,  634, 1630, 1618, 1611, 1662, 1949, 1609,
-     1625, 1659, 1620, 1617, 1618, 1620, 1654, 1605, 1600, 1599,
-     1650, 1594, 1609, 1587, 1594, 1599, 1649, 1949, 1594, 1590,
-     1588, 1597, 1591, 1598, 1582, 1582, 1592, 1595, 1584, 1579,
-     1949, 1636, 1949, 1578, 1589, 1574, 1579, 1588, 1582, 1576,
-
-     1585, 1627, 1621, 1583, 1566, 1566, 1561, 1581, 1556, 1562,
-     1567, 1560, 1568, 1572, 1555, 1613, 1553, 1554, 1553, 1565,
-     1554, 1949, 1949, 1554, 1552, 1949, 1563, 1599, 1559,    0,
-     1543, 1560, 1600, 1548, 1949, 1949, 1545, 1949, 1551, 1949,
-      597,  606,  636, 1949, 1548, 1547, 1554, 1534, 1587, 1532,
-     1585, 1530, 1529, 1528, 1535, 1528, 1540, 1539, 1539, 1521,
-     1526, 1567, 1534, 1526, 1571, 1515, 1531, 1530, 1949, 1515,
-     1512, 1570, 1525, 1517, 1523, 1514, 1522, 1507, 1523, 1505,
-     1519,  560, 1501, 1495, 1500, 1515, 1512, 1513, 1510, 1553,
-     1508, 1949, 1494, 1496, 1505, 1503, 1542, 1541, 1492,   16,
-
-     1501, 1484, 1485, 1482, 1949, 1496, 1475, 1494, 1486, 1531,
-     1483, 1490, 1528, 1949, 1473, 1487, 1471, 1485, 1488, 1469,
-     1521, 1520, 1519, 1518, 1463, 1516, 1515, 1949,  593, 1477,
-     1476, 1473, 1473, 1471, 1454, 1459, 1461, 1949, 1467, 1457,
-     1949, 1504, 1450, 1507,  606,  617, 1448, 1446, 1453, 1444,
-     1497,  598, 1501,  600, 1495, 1455, 1493, 1492, 1444, 1434,
-     1489, 1440, 1448, 1449, 1485, 1446, 1440, 1427, 1435, 1480,
-     1484, 1439, 1438, 1949, 1439, 1432, 1421, 1434, 1437, 1432,
-     1433, 1430, 1429, 1425, 1431, 1426, 1469, 1468, 1416, 1406,
-      593, 1465, 1949, 1464, 1411, 1403, 1404, 1455, 1416, 1403,
-
-     1414, 1949, 1402, 1411, 1410, 1410, 1452, 1393, 1402, 1407,
-     1384, 1388, 1441, 1403, 1385,  166,  272,  323,  379,  346,
-      422,  448,  601,  529,  607,  517,  599,  600, 1949,  657,
-      614,  616,  612,  624,  632,  617,  624,  630,  628,  642,
-      647,  688, 1949,  684,  660,  647,  652,  649,  650,  647,
-      645,  654, 1949,  644,  659,  656,  642,  655,  654,  652,
-      671,  668,  658,  656,  655,  666,  662,  719,  676,  666,
-      682,  672, 1949,  682,  682,  675,  686,  684,  729,  671,
-      673,  688,  675,  735,  692,  678,  681, 1949, 1949,  691,
-      696,  701,  689, 1949, 1949,  703,  690,  684,  689,  707,
-
-      694,  744,  695,  747,  696,  754, 1949,  699,  703,  698,
-      758,  711,  701,  702,  698,  711,  722,  706,  724,  719,
-      720,  722,  715,  717,  718,  719,  719,  721,  736,  777,
-      734,  739,  716, 1949,  728,  729,  743,  733,  780,  738,
-      728,  743,  744,  731,  745, 1949,  764,  772,  741,  736,
-      791,  792,  755,  759,  800,  748,  743,  744,  756,  763,
-      752,  753,  749,  758,  753,  811,  768,  769,  760, 1949,
-      762,  774,  759,  776,  770,  817,  783,  767,  768, 1949,
-      784,  787,  770,  829,  772, 1949,  789,  792,  772,  790,
-      830,  788,  784,  779,  797,  796,  797,  783,  798,  790,
-
-      797,  787,  805,  790, 1949,  798,  804,  851, 1949,  800,
-      805,  849,  800,  812,  806,  811,  809,  807,  809,  819,
-      864,  808,  813,  809,  868,  812,  824, 1949,  812,  820,
-      818,  815,  816,  825,  837,  821,  826,  836,  837,  842,
-      883,  840,  856,  862,  843,  841,  837,  832,  892,  835,
-     1949,  835,  855,  854,  845,  834,  851,  858,  901,  902,
-      849, 1949,  899,  846,  849,  848,  868,  865,  870,  871,
-      857,  866,  876,  856,  871,  878,  920, 1949,  921,  922,
-      873,  883,  885,  874,  870,  877,  886,  931,  878,  876,
-      878,  895,  936,  886,  885,  891,  889,  887,  942,  943,
-
-      939, 1949,  901,  894,  885,  904,  892,  902,  899,  904,
-      900,  913,  913, 1949,  897,  899,  899, 1949,  900,  960,
-      899,  918,  919,  964,  965,  919,  904,  925,  924,  908,
-      913,  931, 1949,  921,  954,  945,  977,  917,  939,  936,
-     1949,  923,  925,  942,  937,  941,  986,  934,  938, 1949,
-     1949,  948,  948,  986,  933,  988,  935,  995,  938,  949,
-      942,  948,  944,  962,  963,  965, 1949, 1949,  964, 1949,
-      949,  950,  969,  959,  952,  964, 1008,  972, 1949,  964,
-     1016,  957, 1018, 1949, 1019,  961,  967,  974, 1018, 1949,
-     1949,  966,  968,  982,  987,  970, 1029,  986,  987,  988,
-
-     1028,  980,  985, 1036,  989,  985, 1039, 1949,  986, 1041,
-     1042, 1949, 1949,  982, 1044, 1003, 1046,  988, 1000, 1005,
-      991, 1021, 1052, 1949, 1009, 1002, 1011, 1056, 1003, 1018,
-     1054, 1006, 1949, 1002, 1018, 1023, 1010, 1006, 1066, 1019,
-     1024, 1949, 1025, 1018, 1027, 1028, 1025, 1015, 1018, 1018,
-     1023, 1078, 1080, 1023, 1082, 1078, 1019, 1034, 1028, 1088,
-     1949, 1041, 1949, 1949, 1046, 1038, 1048, 1034, 1035, 1096,
-     1040, 1050, 1099, 1949, 1048, 1048, 1050, 1052, 1105, 1046,
-     1049, 1949, 1050, 1069, 1949, 1053, 1949, 1949, 1067, 1949,
-     1061, 1949, 1113, 1062, 1115, 1116, 1096, 1949, 1118, 1075,
-
-     1116, 1949, 1064, 1072, 1066, 1063, 1066, 1069, 1069, 1070,
-     1077, 1067, 1949, 1089, 1075, 1076, 1091, 1091, 1094, 1094,
-     1091, 1136, 1098, 1090, 1949, 1949, 1100, 1949, 1097, 1102,
-     1103, 1100, 1144, 1949, 1093, 1094, 1094, 1100, 1099, 1110,
-     1949, 1151, 1098, 1949, 1099, 1099, 1101, 1107, 1949, 1109,
-     1163, 1105, 1113, 1116, 1167, 1128, 1949, 1125, 1949, 1122,
-     1949, 1145, 1949, 1172, 1114, 1174, 1175, 1132, 1137, 1119,
-     1179, 1180, 1133, 1123, 1128, 1184, 1185, 1181, 1144, 1140,
-     1184, 1132, 1137, 1135, 1194, 1150, 1196, 1154, 1199, 1160,
-     1149, 1143, 1159, 1159, 1205, 1147, 1164, 1163, 1147, 1205,
-
-     1206, 1153, 1208, 1171, 1172, 1949, 1172, 1173, 1160, 1949,
-     1171, 1220, 1178, 1191, 1949, 1175, 1949, 1949, 1166, 1177,
-     1226, 1949, 1949, 1173, 1171, 1185, 1949, 1949, 1175, 1226,
-     1169, 1174, 1234, 1182, 1192, 1193, 1949, 1238, 1191, 1949,
-     1240, 1949, 1183, 1198, 1186, 1201, 1205, 1949, 1241, 1207,
-     1200, 1209, 1192, 1200, 1254, 1213, 1212, 1257, 1205, 1259,
-     1260, 1209, 1949, 1262, 1263, 1212, 1265, 1207, 1949, 1214,
-     1214, 1269, 1213, 1212, 1272, 1225, 1949, 1269, 1220, 1217,
-     1949, 1231, 1949, 1234, 1279, 1232, 1281, 1240, 1223, 1225,
-     1222, 1238, 1239, 1248, 1949, 1238, 1290, 1949, 1249, 1949,
-
-     1949, 1287, 1949, 1949, 1249, 1949, 1289, 1290, 1245, 1949,
-     1243, 1250, 1949, 1247, 1252, 1250, 1302, 1303, 1246, 1949,
-     1261, 1949, 1262, 1252, 1264, 1309, 1251, 1259, 1260, 1273,
-     1949, 1250, 1273, 1258, 1258, 1263, 1319, 1278, 1269, 1278,
-     1280, 1284, 1949, 1949, 1325, 1268, 1327, 1285, 1329, 1949,
-     1325, 1287, 1288, 1275, 1334, 1271, 1336, 1289, 1294, 1949,
-     1295, 1296, 1341, 1298, 1301, 1949, 1344, 1949, 1305, 1949,
-     1287, 1347, 1348, 1291, 1949, 1308, 1949, 1299, 1295, 1295,
-     1297, 1949, 1302, 1312, 1949, 1298, 1310, 1949, 1949, 1315,
-     1309, 1317, 1314, 1305, 1359, 1306, 1314, 1323, 1316, 1311,
-
-     1326, 1371, 1318, 1325, 1312, 1327, 1332, 1377, 1334, 1379,
-     1322, 1949, 1338, 1329, 1343, 1339, 1332, 1949, 1386, 1949,
-     1387, 1388, 1343, 1342, 1343, 1333, 1949, 1949, 1949, 1393,
-     1335, 1351, 1396, 1949, 1392, 1341, 1949, 1340, 1342, 1353,
-     1402, 1351, 1949, 1360, 1405, 1949, 1949, 1411, 1416, 1421,
-     1426, 1431, 1436, 1441, 1444, 1418, 1423, 1425, 1438
+     1980, 1981,   34, 1976,  145,    0,  207, 1981,  214,  221,
+       13,  228, 1981, 1956,  118,   25,    2,    6, 1981, 1981,
+       73,   11,   17, 1981, 1981, 1981,  104, 1964, 1917,    0,
+     1954,  108, 1971,   24,  262, 1981, 1913,   67, 1912, 1918,
+       84,   75, 1910,   88,  226,   91,   89,  290,  196, 1909,
+      206,  285,  206,  210,  219,   60,  223, 1918,  247,  290,
+      315,  303,  231, 1901,  297,  321,  343,  324, 1920,    0,
+      380,  387,  401,  408,  424, 1981,    0, 1981,  429,  438,
+      216,  249,  220,  315,  335,  266, 1981, 1917, 1958, 1981,
+
+      342, 1981,  421, 1945,  312, 1903, 1913,  400,   10, 1908,
+      361,  323,  370,  387,  359, 1953,    0,  474,  392, 1895,
+     1892, 1896, 1898, 1891, 1899,  412, 1895, 1884, 1885,   78,
+     1901, 1884, 1893, 1893,   95, 1884,  400, 1885, 1883,  405,
+     1931, 1935, 1875, 1928, 1868, 1891, 1888, 1888, 1882,  310,
+     1875, 1873, 1867, 1872, 1866,  436, 1877, 1870, 1861, 1860,
+     1874,  186, 1860,  413, 1876, 1853,  470,  318,  400, 1874,
+     1871, 1872, 1870, 1905, 1904,  445, 1850, 1852,  448, 1844,
+     1861, 1853,    0,  447,  447,  458,  471,  462,  483, 1852,
+     1981,    0, 1897,  490, 1842, 1845,  476,  482, 1853,  488,
+
+     1898,  499, 1897,  496, 1896, 1981,  542, 1895,  507, 1854,
+     1846, 1833, 1849, 1848, 1845, 1844, 1835,  486, 1886, 1880,
+     1844, 1823, 1831, 1826, 1840, 1836, 1824, 1836, 1836, 1827,
+     1811, 1815, 1828, 1830, 1827, 1819, 1809, 1827, 1981, 1822,
+     1825, 1806, 1805, 1857, 1804, 1814, 1817,  531, 1813, 1852,
+     1800, 1811, 1849, 1794, 1852, 1787, 1802,  533, 1792, 1808,
+     1789, 1788, 1794, 1785, 1784, 1791, 1841, 1797, 1796, 1790,
+      486, 1797, 1792, 1784, 1774, 1789, 1788, 1783, 1787,  485,
+     1785, 1771, 1777, 1784, 1772, 1769, 1768,  565, 1763, 1777,
+     1820, 1779,  484, 1770,  527, 1981, 1981,  534, 1981, 1981,
+
+     1757,    0,  241,  531, 1759,  556,  535, 1815, 1766,  540,
+     1981, 1813, 1981, 1807,  590, 1981,  540, 1747, 1756, 1804,
+     1748, 1747, 1753, 1805, 1760, 1755, 1758, 1753,  533, 1981,
+     1755, 1799, 1752, 1749,  608, 1755, 1795, 1789, 1742, 1737,
+     1734, 1785, 1742, 1731, 1747, 1781, 1727,  591, 1741, 1726,
+     1739, 1726, 1736, 1731, 1738, 1733, 1729,  559, 1727, 1730,
+     1725, 1711, 1720, 1770,  548, 1764, 1981, 1763, 1713, 1712,
+     1711, 1704, 1706, 1710, 1699, 1712,  580, 1759, 1712, 1709,
+     1981, 1712, 1701, 1701, 1713,  370, 1688, 1689, 1710,  533,
+     1692, 1743, 1688, 1702, 1705, 1700, 1686, 1698, 1697, 1696,
+
+     1695, 1694, 1693,  564, 1736, 1735, 1981, 1677, 1676,  618,
+     1689, 1981, 1981, 1688,    0, 1677, 1669,  564, 1674, 1727,
+     1726, 1682, 1724, 1981, 1670, 1722, 1981,  598,  646,  611,
+     1721, 1663, 1674, 1667, 1669, 1657, 1981, 1662, 1668, 1671,
+     1654, 1669, 1656, 1655, 1981, 1657, 1654,  584, 1652, 1654,
+     1981, 1662, 1659, 1644, 1657, 1652,  643, 1659, 1647, 1640,
+     1691, 1981, 1638, 1654, 1688, 1649, 1646, 1647, 1649, 1683,
+     1634, 1629, 1628, 1679, 1623, 1638, 1641, 1615, 1622, 1627,
+     1637, 1676, 1981, 1621, 1617, 1615, 1624, 1618, 1625, 1609,
+     1609, 1619, 1622, 1611, 1606, 1981, 1663, 1981, 1605, 1616,
+
+     1601, 1606, 1615, 1609, 1603, 1612, 1654, 1648, 1610, 1593,
+     1593, 1588, 1608, 1583, 1589, 1594, 1587, 1595, 1599, 1582,
+     1640, 1580, 1581, 1580, 1592, 1581, 1981, 1981, 1581, 1579,
+     1981, 1590, 1626, 1586,    0, 1570, 1587, 1627, 1575, 1981,
+     1981, 1572, 1981, 1578, 1981,  598,  616,  670, 1981, 1575,
+     1574, 1581, 1561, 1614, 1559, 1612, 1557, 1556, 1555, 1562,
+     1555, 1567, 1566, 1566, 1548, 1553, 1594, 1561, 1553, 1598,
+     1542, 1558, 1557, 1981, 1542, 1539, 1597, 1552, 1544, 1550,
+     1541, 1549, 1534, 1550, 1532, 1546,  341, 1528, 1522, 1527,
+     1542, 1539, 1540, 1530, 1536, 1579, 1534, 1526, 1981, 1519,
+
+     1521, 1530, 1528, 1567, 1566, 1517,   16, 1526, 1509, 1510,
+     1507, 1981, 1521, 1500, 1519, 1511, 1556, 1508, 1515, 1553,
+     1981, 1498, 1512, 1496, 1510, 1513, 1494, 1546, 1545, 1544,
+     1543, 1488, 1541, 1540, 1981,  328, 1502, 1501, 1498, 1498,
+     1496, 1479, 1484, 1486, 1981, 1492, 1482, 1981, 1529, 1475,
+     1532,  615,  584, 1473, 1471, 1478, 1469, 1522,  629, 1526,
+      594, 1520, 1480, 1518, 1517, 1469, 1459, 1514, 1465, 1473,
+     1474, 1510, 1471, 1465, 1452, 1460, 1505, 1509, 1464, 1463,
+     1981, 1464, 1457, 1446, 1459, 1462, 1457, 1458, 1455, 1454,
+     1450, 1456, 1451, 1494, 1493, 1441, 1431,  596, 1442, 1489,
+
+     1981, 1488, 1439, 1434, 1426, 1427, 1478, 1439, 1426, 1437,
+     1981, 1425, 1434, 1433, 1433,    2,  156,  229,  363,  424,
+      431,  537,  515,  499,  524,  601,  616,  624,  600,  655,
+      619,  624,  620,  637,  612,  625,  640, 1981,  680,  637,
+      638,  628,  650,  652,  638,  645,  652,  644,  658,  663,
+      704, 1981,  700,  676,  663,  668,  665,  666,  663,  661,
+      670, 1981,  660,  675,  672,  658,  665,  664,  662,  681,
+      678,  668,  666,  665,  676,  672,  728,  685,  675,  691,
+      681, 1981,  691,  692,  685,  696,  694,  739,  681,  683,
+      698,  685,  745,  702,  688,  691, 1981, 1981,  701,  706,
+
+      711,  699,  710, 1981, 1981,  711,  715,  702,  696,  701,
+      719,  706,  756,  707,  759,  708,  766, 1981,  711,  715,
+      710,  770,  723,  713,  714,  710,  723,  734,  718,  736,
+      731,  732,  734,  727,  729,  730,  731,  731,  733,  748,
+      789,  746,  751,  728, 1981,  740,  741,  755,  745,  792,
+      750,  740,  755,  756,  743,  757, 1981,  776,  784,  753,
+      748,  803,  804,  767,  771,  812,  760,  755,  756,  768,
+      775,  764,  765,  761,  770,  765,  823,  780,  781,  772,
+     1981,  774,  786,  771,  788,  782,  829,  795,  779,  780,
+     1981,  796,  799,  782,  841,  784, 1981,  801,  804,  784,
+
+      802,  842,  800,  796,  845,  846,  793,  811,  810,  811,
+      797,  812,  804,  811,  801,  819,  804, 1981,  812,  818,
+      865, 1981,  814,  819,  863,  814,  826,  820,  825,  823,
+      821,  823,  833,  878,  822,  827,  823,  882,  826,  838,
+     1981,  826,  834,  832,  829,  830,  839,  851,  835,  840,
+      850,  851,  856,  897,  854,  871,  876,  858,  855,  851,
+      846,  906,  849, 1981,  849,  869,  868,  859,  848,  865,
+      872,  915,  916,  863, 1981,  913,  860,  863,  862,  882,
+      879,  884,  885,  871,  879,  890,  870,  885,  892,  934,
+     1981,  935,  936,  887,  897,  899,  888,  884,  891,  900,
+
+      894,  895,  947,  894,  892,  894,  911,  952,  902,  901,
+      907,  905,  903,  958,  959,  955, 1981,  917,  910,  901,
+      920,  908,  918,  915,  920,  916,  929,  929, 1981,  913,
+      915,  915, 1981,  916,  976,  915,  934,  935,  981,  982,
+      935,  920,  941,  940,  924,  929,  947, 1981,  937,  970,
+      961,  993,  933,  955,  952, 1981,  939,  941,  958,  953,
+      957, 1002,  950,  954, 1981, 1981,  964,  964, 1002,  949,
+     1004,  951, 1011,  954,  965,  958,  964,  960,  978,  979,
+      981, 1981, 1981,  980, 1981,  965,  966,  985,  975,  968,
+      980, 1024,  988,  983,  984, 1981,  982, 1034,  975, 1036,
+
+     1981, 1037,  979,  985,  992, 1036, 1981, 1981,  984,  986,
+     1000, 1005,  988, 1047, 1004, 1005, 1006, 1046,  998, 1003,
+     1054, 1007, 1003, 1057, 1981, 1004, 1059, 1060, 1981, 1981,
+     1000, 1062, 1021, 1064, 1006, 1018, 1023, 1009, 1039, 1070,
+     1981, 1027, 1020, 1029, 1074, 1021, 1036, 1072, 1024, 1981,
+     1020, 1036, 1041, 1028, 1024, 1084, 1037, 1042, 1981, 1043,
+     1036, 1045, 1046, 1043, 1033, 1036, 1036, 1041, 1096, 1098,
+     1041, 1100, 1096, 1037, 1052, 1046, 1061, 1062, 1108, 1981,
+     1061, 1981, 1981, 1066, 1059, 1069, 1054, 1055, 1116, 1060,
+     1071, 1120, 1981, 1068, 1068, 1070, 1072, 1125, 1066, 1069,
+
+     1981, 1070, 1089, 1981, 1073, 1981, 1981, 1087, 1981, 1081,
+     1981, 1133, 1082, 1135, 1136, 1116, 1981, 1138, 1095, 1136,
+     1981, 1084, 1092, 1086, 1083, 1086, 1089, 1089, 1090, 1097,
+     1087, 1981, 1109, 1095, 1096, 1111, 1111, 1114, 1114, 1111,
+     1156, 1118, 1110, 1981, 1981, 1120, 1981, 1117, 1122, 1123,
+     1120, 1164, 1126, 1127, 1981, 1115, 1116, 1116, 1122, 1121,
+     1132, 1981, 1173, 1120, 1981, 1121, 1121, 1123, 1129, 1981,
+     1131, 1185, 1127, 1135, 1138, 1189, 1150, 1981, 1147, 1981,
+     1144, 1981, 1167, 1981, 1194, 1136, 1196, 1197, 1154, 1159,
+     1141, 1201, 1202, 1155, 1145, 1150, 1206, 1207, 1203, 1166,
+
+     1162, 1206, 1154, 1159, 1157, 1216, 1172, 1218, 1176, 1221,
+     1182, 1171, 1165, 1166, 1167, 1183, 1183, 1229, 1171, 1188,
+     1187, 1171, 1229, 1230, 1177, 1232, 1195, 1196, 1981, 1196,
+     1197, 1184, 1981, 1195, 1244, 1202, 1216, 1981, 1198, 1981,
+     1981, 1190, 1201, 1250, 1981, 1981, 1197, 1195, 1209, 1981,
+     1981, 1199, 1250, 1193, 1198, 1258, 1206, 1216, 1217, 1981,
+     1262, 1215, 1981, 1264, 1981, 1207, 1222, 1210, 1220, 1221,
+     1227, 1231, 1981, 1267, 1233, 1228, 1237, 1219, 1226, 1280,
+     1239, 1238, 1283, 1231, 1285, 1286, 1235, 1981, 1288, 1289,
+     1238, 1291, 1233, 1981, 1240, 1240, 1295, 1239, 1238, 1298,
+
+     1251, 1981, 1295, 1246, 1243, 1981, 1257, 1981, 1260, 1305,
+     1258, 1255, 1256, 1309, 1268, 1251, 1253, 1250, 1266, 1267,
+     1276, 1981, 1266, 1318, 1981, 1277, 1981, 1981, 1315, 1981,
+     1981, 1277, 1981, 1317, 1318, 1273, 1981, 1271, 1278, 1981,
+     1275, 1280, 1278, 1330, 1331, 1274, 1981, 1289, 1290, 1291,
+     1981, 1292, 1282, 1294, 1339, 1281, 1289, 1290, 1303, 1981,
+     1280, 1303, 1288, 1288, 1293, 1349, 1308, 1299, 1308, 1310,
+     1314, 1981, 1981, 1355, 1298, 1357, 1358, 1359, 1317, 1361,
+     1981, 1357, 1319, 1320, 1307, 1366, 1303, 1368, 1321, 1326,
+     1981, 1327, 1328, 1373, 1330, 1333, 1981, 1376, 1981, 1981,
+
+     1981, 1337, 1981, 1319, 1379, 1380, 1323, 1981, 1340, 1981,
+     1331, 1327, 1327, 1329, 1981, 1334, 1344, 1981, 1330, 1342,
+     1981, 1981, 1347, 1341, 1349, 1346, 1337, 1391, 1338, 1346,
+     1355, 1348, 1343, 1358, 1403, 1350, 1357, 1344, 1359, 1364,
+     1409, 1366, 1411, 1354, 1981, 1370, 1361, 1375, 1371, 1364,
+     1981, 1418, 1981, 1419, 1420, 1375, 1374, 1375, 1365, 1981,
+     1981, 1981, 1425, 1367, 1383, 1428, 1981, 1424, 1373, 1981,
+     1372, 1374, 1385, 1434, 1383, 1981, 1392, 1437, 1981, 1981,
+     1443, 1448, 1453, 1458, 1463, 1468, 1473, 1476, 1450, 1455,
+     1457, 1470
+
     } ;
 
-static const flex_int16_t yy_def[1560] =
+static const flex_int16_t yy_def[1593] =
     {   0,
-     1548, 1548, 1549, 1549, 1548, 1548, 1548, 1548, 1548, 1548,
-     1547, 1547, 1547, 1547, 1547, 1550, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1551,
-     1547, 1547, 1547, 1552,   15, 1547,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1553,   45,   45,
+     1581, 1581, 1582, 1582, 1581, 1581, 1581, 1581, 1581, 1581,
+     1580, 1580, 1580, 1580, 1580, 1583, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1584,
+     1580, 1580, 1580, 1585,   15, 1580,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1586,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1550,
-     1547, 1547, 1547, 1547, 1547, 1547, 1554, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1551, 1547,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1583,
+     1580, 1580, 1580, 1580, 1580, 1580, 1587, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1584, 1580,
 
-     1552, 1547, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1555,   45, 1553,   45,   45,
+     1585, 1580, 1580,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1588,   45, 1586,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1554, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1556,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1587, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1589,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1555, 1547, 1553,   45,   45,   45,   45,
+       45,   45,   45,   45, 1588, 1580, 1586,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1580,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1557,
+       45,   45,   45,   45, 1580, 1580, 1580, 1580, 1580, 1580,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1547,   45,
-     1547,   45, 1553, 1547,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
+     1580, 1590,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45, 1580,   45, 1586, 1580,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1580,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
+       45,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1547,   45,   45,   45,   45, 1547, 1547,
-     1547, 1558,   45,   45,   45,   45,   45,   45,   45,   45,
-     1547,   45,   45, 1547,   45, 1553,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-       45, 1547,   45,   45,   45,   45,   45, 1547,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1547,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
+       45,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
+       45, 1580, 1580, 1580, 1591,   45,   45,   45,   45,   45,
+       45,   45,   45, 1580,   45,   45, 1580,   45, 1586,   45,
+       45,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1547,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1580,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1580,   45, 1580,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1547, 1547,   45,   45, 1547,   45,   45, 1547, 1559,
-       45,   45,   45,   45, 1547, 1547,   45, 1547,   45, 1547,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1580, 1580,   45,   45,
+     1580,   45,   45, 1580, 1592,   45,   45,   45,   45, 1580,
+     1580,   45, 1580,   45, 1580,   45,   45,   45, 1580,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1547,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1580,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1580,   45,
 
-       45,   45,   45,   45, 1547,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
-     1547,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45, 1580,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1547,   45,
+       45,   45,   45,   45,   45,   45,   45, 1580,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547, 1547,   45,
-       45,   45,   45, 1547, 1547,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1580, 1580,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1547,   45,   45,   45,
+       45,   45,   45, 1580, 1580,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1580,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1547,   45,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1547,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1547,
-       45,   45,   45,   45,   45, 1547,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
 
-       45,   45,   45,   45, 1547,   45,   45,   45, 1547,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1580,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1547,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1580,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45, 1547,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
-     1547,   45,   45,   45,   45,   45,   45,   45,   45, 1547,
-     1547,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1547, 1547,   45, 1547,
-       45,   45,   45,   45,   45,   45,   45,   45, 1547,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45, 1547,
-     1547,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45, 1547,   45,   45,
-       45, 1547, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1580,   45,
+       45,   45, 1580,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1580,   45,   45,
+       45,   45,   45,   45,   45, 1580,   45,   45,   45,   45,
+       45,   45,   45,   45, 1580, 1580,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1547,   45, 1547, 1547,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-       45, 1547,   45,   45, 1547,   45, 1547, 1547,   45, 1547,
-       45, 1547,   45,   45,   45,   45,   45, 1547,   45,   45,
-
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1547, 1547,   45, 1547,   45,   45,
-       45,   45,   45, 1547,   45,   45,   45,   45,   45,   45,
-     1547,   45,   45, 1547,   45,   45,   45,   45, 1547,   45,
-       45,   45,   45,   45,   45,   45, 1547,   45, 1547,   45,
-     1547,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580, 1580,   45, 1580,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1580,   45,   45,   45,   45,
+
+     1580,   45,   45,   45,   45,   45, 1580, 1580,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45,   45, 1580, 1580,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45, 1580,
+       45,   45,   45,   45,   45,   45,   45,   45, 1580,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1580,
+       45, 1580, 1580,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1580,   45,   45,   45,   45,   45,   45,   45,
+
+     1580,   45,   45, 1580,   45, 1580, 1580,   45, 1580,   45,
+     1580,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1580, 1580,   45, 1580,   45,   45,   45,
+       45,   45,   45,   45, 1580,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45, 1580,   45,   45,   45,   45, 1580,
+       45,   45,   45,   45,   45,   45,   45, 1580,   45, 1580,
+       45, 1580,   45, 1580,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45, 1547,   45,   45,   45, 1547,
-       45,   45,   45,   45, 1547,   45, 1547, 1547,   45,   45,
-       45, 1547, 1547,   45,   45,   45, 1547, 1547,   45,   45,
-       45,   45,   45,   45,   45,   45, 1547,   45,   45, 1547,
-       45, 1547,   45,   45,   45,   45,   45, 1547,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547,   45,   45,   45,   45,   45, 1547,   45,
-       45,   45,   45,   45,   45,   45, 1547,   45,   45,   45,
-     1547,   45, 1547,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1547,   45,   45, 1547,   45, 1547,
-
-     1547,   45, 1547, 1547,   45, 1547,   45,   45,   45, 1547,
-       45,   45, 1547,   45,   45,   45,   45,   45,   45, 1547,
-       45, 1547,   45,   45,   45,   45,   45,   45,   45,   45,
-     1547,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1547, 1547,   45,   45,   45,   45,   45, 1547,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1547,
-       45,   45,   45,   45,   45, 1547,   45, 1547,   45, 1547,
-       45,   45,   45,   45, 1547,   45, 1547,   45,   45,   45,
-       45, 1547,   45,   45, 1547,   45,   45, 1547, 1547,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1580,   45,
+       45,   45, 1580,   45,   45,   45,   45, 1580,   45, 1580,
+     1580,   45,   45,   45, 1580, 1580,   45,   45,   45, 1580,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45, 1580,
+       45,   45, 1580,   45, 1580,   45,   45,   45,   45,   45,
+       45,   45, 1580,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1580,   45,   45,
+       45,   45,   45, 1580,   45,   45,   45,   45,   45,   45,
+
+       45, 1580,   45,   45,   45, 1580,   45, 1580,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580,   45,   45, 1580,   45, 1580, 1580,   45, 1580,
+     1580,   45, 1580,   45,   45,   45, 1580,   45,   45, 1580,
+       45,   45,   45,   45,   45,   45, 1580,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45, 1580,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1580, 1580,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1580,   45,   45,   45,   45,   45, 1580,   45, 1580, 1580,
 
+     1580,   45, 1580,   45,   45,   45,   45, 1580,   45, 1580,
+       45,   45,   45,   45, 1580,   45,   45, 1580,   45,   45,
+     1580, 1580,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1547,   45,   45,   45,   45,   45, 1547,   45, 1547,
-       45,   45,   45,   45,   45,   45, 1547, 1547, 1547,   45,
-       45,   45,   45, 1547,   45,   45, 1547,   45,   45,   45,
-       45,   45, 1547,   45,   45, 1547,    0, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547
+       45,   45,   45,   45, 1580,   45,   45,   45,   45,   45,
+     1580,   45, 1580,   45,   45,   45,   45,   45,   45, 1580,
+     1580, 1580,   45,   45,   45,   45, 1580,   45,   45, 1580,
+       45,   45,   45,   45,   45, 1580,   45,   45, 1580,    0,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580
+
     } ;
 
-static const flex_int16_t yy_nxt[2023] =
+static const flex_int16_t yy_nxt[2055] =
     {   0,
-     1547,   13,   14,   13, 1547,   15,   16, 1547,   17,   18,
+     1580,   13,   14,   13, 1580,   15,   16,  818,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       86,  702,   37,   14,   37,   87,   25,   26,   38,  102,
-     1547,   27,   37,   14,   37,   42,   28,   42,   38,   92,
-       93,   29,  197,   30,   13,   14,   13,   91,   92,   25,
+       86,  711,   37,   14,   37,   87,   25,   26,   38,  102,
+     1580,   27,   37,   14,   37,   42,   28,   42,   38,   92,
+       93,   29,  198,   30,   13,   14,   13,   91,   92,   25,
        31,   93,   13,   14,   13,   13,   14,   13,   32,   40,
-      703,   13,   14,   13,   33,   40,  103,   92,   93,  197,
+      712,   13,   14,   13,   33,   40,  103,   92,   93,  198,
        91,   34,   35,   13,   14,   13,   95,   15,   16,   96,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   91,   39,  105,   25,   26,
 
        13,   14,   13,   27,   39,   42,  108,   42,   28,   42,
       109,   42,   41,   29,  111,   30,  114,  115,   94,  140,
-       41,   25,   31,  105,  221,  222,   89,  141,   89,  108,
+       41,   25,   31,  105,  222,  223,   89,  141,   89,  108,
        32,   90,   90,   90,   90,   90,   33,  111,  109,  114,
-      227,  115,  228,   34,   35,   44,   44,   44,   45,   45,
+      228,  115,  229,   34,   35,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   47,   45,   45,   45,   45,   45,   48,   45,   49,
        50,   45,   51,   45,   52,   53,   54,   45,   45,   45,
@@ -1293,217 +1306,220 @@ static const flex_int16_t yy_nxt[2023] =
        59,   60,   61,   62,   63,   64,   65,   66,   67,   52,
 
        68,   69,   70,   71,   72,   73,   74,   75,   76,   77,
-       78,   79,   57,   45,   45,   45,   45,   45,   81,  816,
+       78,   79,   57,   45,   45,   45,   45,   45,   81,  819,
        82,   82,   82,   82,   82,   81,  105,   84,   84,   84,
        84,   84,  108,   83,   85,   85,   85,   85,   85,   81,
-       83,   84,   84,   84,   84,   84,  183,   83,  258,  259,
-      112,  123,  119,  134,   83,  108,   83,  185,  120,  124,
+       83,   84,   84,   84,   84,   84,  184,   83,  260,  261,
+      112,  123,  119,  134,   83,  108,   83,  186,  120,  124,
       113,  121,  125,   83,  135,  126,  137,  127,  138,  128,
-       83,  142,  183,  112,  136,  139,  161,   83,   45,  184,
-      162,  143,  817,  144,   45,  185,   45,   45,  113,   45,
-      163,   45,   45,   45,  413,  117,  146,  147,   45,   45,
+       83,  142,  184,  112,  136,  139,  162,   83,   45,  185,
+      163,  143,  820,  144,   45,  186,   45,   45,  113,   45,
+      164,   45,   45,   45,  416,  117,  146,  147,   45,   45,
 
-      148,   45,   45,  185,  414,  184,  149,   45,   45,   45,
+      148,   45,   45,  186,  417,  185,  149,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-      129,  188,   45,  818,  130,  150,   45,  131,  132,  151,
-       45,  111,  165,  275,  276,  183,  166,  102,   45,  114,
-      133,  193,   45,  156,   45,  118,  200,  173,  174,  152,
-      153,  157,  154,  158,  155,  184,  167,  112,  159,  160,
-      168,  186,  178,  169,  246,  392,  406,  113,  247,  193,
-      170,  171,  179,  200,  103,  203,  172,  180,  393,  819,
-      175,  187,  176,   85,   85,   85,   85,   85,   81,  199,
-
-       82,   82,   82,   82,   82,  113,   83,  201,  203,   89,
-      820,   89,  177,   83,   90,   90,   90,   90,   90,   81,
-      202,   84,   84,   84,   84,   84,  101,  199,  407,   83,
-      196,  193,  821,  101,   83,  201,   83,   85,   85,   85,
-       85,   85,   90,   90,   90,   90,   90,  202,  207,  230,
-       83,   90,   90,   90,   90,   90,  196,   83,  277,  208,
-      215,  234,  278,  101,  235,  231,  279,  101,  236,  216,
-      217,  101,  261,   83,  199,  262,  263,  294,  200,  101,
-      266,  202,  293,  101,  295,  101,  191,  206,  206,  206,
-      206,  206,  294,  472,  473,  822,  206,  206,  206,  206,
-
-      206,  206,  199,  294,  252,  286,  293,  295,  289,  295,
-      293,  305,  302,  306,  308,  267,  268,  269,  297,  206,
-      206,  206,  206,  206,  206,  310,  270,  312,  271,  302,
-      272,  273,  298,  274,  296,  302,  324,  308,  409,  305,
-      306,  356,  382,  367,  325,  383,  309,  409,  310,  326,
-      327,  401,  315,  415,  312,  313,  313,  313,  313,  313,
-      420,  409,  417,  418,  313,  313,  313,  313,  313,  313,
-      410,  419,  423,  491,  445,  479,  825,  415,  439,  368,
-      446,  520,  415,  420,  521,  480,  830,  313,  313,  313,
-      313,  313,  313,  369,  357,  440,  533,  358,  729,  533,
-
-      423,  426,  426,  426,  426,  426,  427,  684,  685,  730,
-      426,  426,  426,  426,  426,  426,  459,  559,  500,  505,
-      526,  460,  501,  506,  533,  527,  541,  543,  542,  645,
-      560,  492,  561,  426,  426,  426,  426,  426,  426,  569,
-      646,  641,  744,  745,  570,  751,  647,  754,  755,  792,
-      756,  752,  793,  541,  823,  542,  645,  831,  832,  826,
-      827,  824,  834,  835,  833,  836,  745,  828,  646,  461,
-      744,  829,  837,  838,  462,   45,   45,   45,   45,   45,
-      839,  840,  841,  842,   45,   45,   45,   45,   45,   45,
-      843,  844,  845,  846,  847,  848,  849,  850,  851,  852,
-
-      853,  854,  855,  856,  857,  858,  859,   45,   45,   45,
-       45,   45,   45,  860,  861,  862,  863,  864,  865,  866,
-      867,  868,  869,  848,  870,  871,  872,  873,  874,  875,
-      876,  877,  878,  879,  880,  882,  883,  884,  885,  881,
-      886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  900,  901,  902,  899,  903,  904,  905,
-      906,  907,  908,  909,  910,  911,  912,  913,  914,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
-      926,  927,  928,  929,  930,  931,  932,  933,  934,  935,
-      936,  937,  938,  939,  940,  941,  942,  943,  944,  945,
-
-      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
-      956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  944,  967,  968,  943,  969,  970,  971,  972,  973,
-      974,  975,  976,  977,  978,  980,  981,  982,  983,  984,
-      985,  986,  987,  988,  989,  990,  991,  992,  993,  994,
-      995,  996,  997,  999, 1000, 1001, 1002, 1003, 1004, 1005,
-     1006, 1007, 1008,  998, 1009, 1010, 1011, 1012, 1013, 1014,
-     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
-     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
-     1035, 1037,  979, 1036, 1038, 1039, 1040, 1041, 1042, 1043,
-
-     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1035, 1062,
-     1036, 1063, 1064, 1065, 1066, 1067, 1068, 1070, 1072, 1073,
-     1074, 1069, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
-     1113, 1071, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
-     1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
-     1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
-
-     1142, 1143, 1144, 1122, 1145, 1146, 1147, 1148, 1149, 1123,
-     1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
-     1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169,
-     1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1180,
+      129,  189,   45,  738,  130,  150,   45,  131,  132,  151,
+       45,  111,  166,  152,  739,  184,  167,  102,   45,  114,
+      133,  194,   45,  157,   45,  118,  201,  174,  175,  153,
+      154,  158,  155,  159,  156,  185,  168,  112,  160,  161,
+      169,  187,  179,  170,  247,  277,  278,  113,  248,  194,
+      171,  172,  180,  201,  103,  204,  173,  181,  691,  692,
+      176,  188,  177,   85,   85,   85,   85,   85,   81,  200,
+
+       82,   82,   82,   82,   82,  113,   83,  202,  204,   89,
+      821,   89,  178,   83,   90,   90,   90,   90,   90,   81,
+      203,   84,   84,   84,   84,   84,  101,  200,  505,   83,
+      197,  194,  506,  101,   83,  202,   83,   85,   85,   85,
+       85,   85,   90,   90,   90,   90,   90,  203,  208,  231,
+       83,   90,   90,   90,   90,   90,  197,   83,  279,  209,
+      216,  235,  280,  101,  236,  232,  281,  101,  237,  217,
+      218,  101,  263,   83,  200,  264,  265,  296,  201,  101,
+      268,  203,  295,  101,  297,  101,  192,  207,  207,  207,
+      207,  207,  296,  822,  409,  823,  207,  207,  207,  207,
+
+      207,  207,  200,  296,  254,  288,  295,  297,  291,  297,
+      295,  307,  304,  308,  310,  269,  270,  271,  299,  207,
+      207,  207,  207,  207,  207,  312,  272,  314,  273,  304,
+      274,  275,  300,  276,  298,  304,  326,  310,  395,  307,
+      308,  358,  385,  370,  327,  386,  410,  824,  312,  328,
+      329,  396,  317,  412,  314,  315,  315,  315,  315,  315,
+      412,  423,  825,  826,  315,  315,  315,  315,  315,  315,
+      311,  418,  420,  421,  426,  404,  412,  827,  442,  371,
+      418,  422,  510,  413,  423,  496,  511,  315,  315,  315,
+      315,  315,  315,  372,  359,  443,  462,  360,  484,  538,
+
+      418,  463,  426,  429,  429,  429,  429,  429,  485,  430,
+      754,  828,  429,  429,  429,  429,  429,  429,  448,  525,
+      475,  476,  526,  531,  449,  477,  829,  538,  532,  546,
+      652,  547,  564,  754,  830,  429,  429,  429,  429,  429,
+      429,  763,  764,  497,  765,  565,  538,  566,  574,  464,
+      653,  753,  801,  575,  465,  802,  546,  652,  547,   45,
+       45,   45,   45,   45,  831,  832,  833,  836,   45,   45,
+       45,   45,   45,   45,  548,  648,  760,  834,  653,  753,
+      654,  841,  761,  842,  835,  845,  846,  847,  848,  837,
+      838,   45,   45,   45,   45,   45,   45,  839,  843,  849,
+
+      850,  840,  851,  852,  844,  853,  854,  855,  856,  857,
+      858,  859,  860,  861,  862,  863,  864,  865,  866,  867,
+      868,  869,  870,  871,  872,  873,  874,  875,  876,  877,
+      878,  879,  880,  881,  882,  883,  884,  885,  886,  859,
+      887,  888,  889,  890,  891,  893,  894,  895,  896,  892,
+      897,  898,  899,  900,  901,  902,  903,  904,  905,  906,
+      907,  908,  909,  910,  911,  913,  914,  915,  912,  916,
+      917,  918,  919,  920,  921,  922,  923,  924,  925,  926,
+      927,  928,  929,  930,  931,  932,  933,  934,  935,  936,
+      937,  938,  939,  940,  941,  942,  943,  944,  945,  946,
+
+      947,  948,  949,  950,  951,  952,  953,  954,  955,  956,
+      957,  958,  959,  960,  961,  962,  963,  964,  965,  966,
+      967,  968,  969,  970,  971,  972,  973,  974,  975,  976,
+      977,  978,  979,  957,  980,  981,  956,  982,  983,  984,
+      985,  986,  987,  988,  989,  990,  991,  993,  994,  995,
+      996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
+     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1014, 1015, 1016,
+     1017, 1018, 1019, 1020, 1021, 1022, 1023, 1013, 1024, 1025,
+     1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+
+     1046, 1047, 1048, 1049,  992, 1050, 1052, 1051, 1053, 1054,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
+     1075, 1076, 1077, 1050, 1051, 1078, 1079, 1080, 1081, 1082,
+     1083, 1085, 1087, 1088, 1089, 1084, 1090, 1091, 1092, 1093,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113,
+     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1124, 1125, 1126, 1127, 1128, 1086, 1129, 1130, 1131, 1132,
+     1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142,
+
+     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
+     1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1139,
+     1162, 1163, 1164, 1165, 1166, 1140, 1167, 1168, 1169, 1170,
+     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,
      1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
-     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200,
-     1201, 1202, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
+     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1199, 1200, 1201,
+     1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
      1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
-     1222, 1223, 1224, 1225, 1197, 1226, 1227, 1228, 1229, 1230,
-     1231, 1179, 1233, 1234, 1235, 1236, 1237, 1238, 1232, 1239,
-
-     1240, 1241, 1242, 1243, 1244, 1203, 1245, 1246, 1247, 1248,
-     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
-     1259, 1261, 1262, 1263, 1264, 1260, 1265, 1266, 1267, 1268,
-     1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278,
-     1279, 1280, 1281, 1282, 1283, 1262, 1284, 1285, 1286, 1287,
-     1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
-     1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
-     1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
-     1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
-     1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337,
-
-     1339, 1340, 1341, 1314, 1342, 1343, 1344, 1345, 1346, 1347,
-     1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
-     1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367,
-     1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
-     1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387,
-     1388, 1389, 1390, 1391, 1392, 1365, 1393, 1338, 1394, 1395,
-     1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
-     1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
-     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
-     1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435,
-
-     1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445,
-     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455,
-     1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465,
-     1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475,
-     1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485,
-     1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
-     1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
-     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
-     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
-     1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535,
-
-     1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545,
-     1546,   12,   12,   12,   12,   12,   36,   36,   36,   36,
-       36,   80,  300,   80,   80,   80,   99,  412,   99,  530,
-       99,  101,  101,  101,  101,  101,  116,  116,  116,  116,
-      116,  182,  101,  182,  182,  182,  204,  204,  204,  815,
-      814,  813,  812,  811,  810,  809,  808,  807,  806,  805,
-      804,  803,  802,  801,  800,  799,  798,  797,  796,  795,
-      794,  791,  790,  789,  788,  787,  786,  785,  784,  783,
-      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
-      772,  771,  770,  769,  768,  767,  766,  765,  764,  763,
-
-      762,  761,  760,  759,  758,  757,  753,  750,  749,  748,
-      747,  746,  743,  742,  741,  740,  739,  738,  737,  736,
-      735,  734,  733,  732,  731,  728,  727,  726,  725,  724,
-      723,  722,  721,  720,  719,  718,  717,  716,  715,  714,
-      713,  712,  711,  710,  709,  708,  707,  706,  705,  704,
-      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
-      691,  690,  689,  688,  687,  686,  683,  682,  681,  680,
-      679,  678,  677,  676,  675,  674,  673,  672,  671,  670,
-      669,  668,  667,  666,  665,  664,  663,  662,  661,  660,
-      659,  658,  657,  656,  655,  654,  653,  652,  651,  650,
-
-      649,  648,  644,  643,  642,  641,  640,  639,  638,  637,
-      636,  635,  634,  633,  632,  631,  630,  629,  628,  627,
-      626,  625,  624,  623,  622,  621,  620,  619,  618,  617,
-      616,  615,  614,  613,  612,  611,  610,  609,  608,  607,
-      606,  605,  604,  603,  602,  601,  600,  599,  598,  597,
-      596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
-      586,  585,  584,  583,  582,  581,  580,  579,  578,  577,
-      576,  575,  574,  573,  572,  571,  568,  567,  566,  565,
-      564,  563,  562,  558,  557,  556,  555,  554,  553,  552,
-      551,  550,  549,  548,  547,  546,  545,  544,  540,  539,
-
-      538,  537,  536,  535,  534,  532,  531,  529,  528,  525,
-      524,  523,  522,  519,  518,  517,  516,  515,  514,  513,
-      512,  511,  510,  509,  508,  507,  504,  503,  502,  499,
-      498,  497,  496,  495,  494,  493,  490,  489,  488,  487,
-      486,  485,  484,  483,  482,  481,  478,  477,  476,  475,
-      474,  471,  470,  469,  468,  467,  466,  465,  464,  463,
-      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
-      448,  447,  444,  443,  442,  441,  438,  437,  436,  435,
-      434,  433,  432,  431,  430,  429,  428,  425,  424,  422,
-      421,  416,  411,  408,  405,  404,  403,  402,  400,  399,
-
-      398,  397,  396,  395,  394,  391,  390,  389,  388,  387,
-      386,  385,  384,  381,  380,  379,  378,  377,  376,  375,
-      374,  373,  372,  371,  370,  366,  365,  364,  363,  362,
-      361,  360,  359,  355,  354,  353,  352,  351,  350,  349,
-      348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
-      338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
-      328,  323,  322,  321,  320,  319,  318,  317,  316,  314,
-      205,  311,  309,  307,  304,  303,  301,  299,  292,  291,
-      290,  288,  287,  285,  284,  283,  282,  281,  280,  265,
-      264,  260,  257,  256,  255,  254,  253,  251,  250,  249,
-
-      248,  245,  244,  243,  242,  241,  240,  239,  238,  237,
-      233,  232,  229,  226,  225,  224,  223,  220,  219,  218,
-      214,  213,  212,  211,  210,  209,  205,  198,  195,  194,
-      192,  190,  189,  181,  164,  145,  122,  110,  107,  106,
-      104,   43,  100,   98,   97,   88,   43, 1547,   11, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547
+     1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232,
+     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
+
+     1243, 1244, 1216, 1245, 1246, 1247, 1248, 1249, 1250, 1198,
+     1252, 1253, 1254, 1255, 1256, 1257, 1251, 1258, 1259, 1260,
+     1261, 1262, 1263, 1222, 1264, 1265, 1266, 1267, 1268, 1269,
+     1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
+     1280, 1282, 1283, 1284, 1285, 1281, 1286, 1287, 1288, 1289,
+     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
+     1300, 1301, 1302, 1303, 1304, 1283, 1305, 1306, 1307, 1308,
+     1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
+     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
+     1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338,
+
+     1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348,
+     1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
+     1359, 1360, 1362, 1363, 1364, 1337, 1365, 1366, 1367, 1368,
+     1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377, 1378,
+     1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388,
+     1389, 1391, 1390, 1392, 1393, 1394, 1395, 1396, 1397, 1398,
+     1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
+     1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1361,
+     1390, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
+     1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436,
+
+     1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446,
+     1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456,
+     1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466,
+     1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476,
+     1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486,
+     1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496,
+     1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506,
+     1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
+     1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526,
+     1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
+
+     1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546,
+     1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556,
+     1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
+     1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576,
+     1577, 1578, 1579,   12,   12,   12,   12,   12,   36,   36,
+       36,   36,   36,   80,  302,   80,   80,   80,   99,  415,
+       99,  535,   99,  101,  101,  101,  101,  101,  116,  116,
+      116,  116,  116,  183,  101,  183,  183,  183,  205,  205,
+      205,  817,  816,  815,  814,  813,  812,  811,  810,  809,
+      808,  807,  806,  805,  804,  803,  800,  799,  798,  797,
+
+      796,  795,  794,  793,  792,  791,  790,  789,  788,  787,
+      786,  785,  784,  783,  782,  781,  780,  779,  778,  777,
+      776,  775,  774,  773,  772,  771,  770,  769,  768,  767,
+      766,  762,  759,  758,  757,  756,  755,  752,  751,  750,
+      749,  748,  747,  746,  745,  744,  743,  742,  741,  740,
+      737,  736,  735,  734,  733,  732,  731,  730,  729,  728,
+      727,  726,  725,  724,  723,  722,  721,  720,  719,  718,
+      717,  716,  715,  714,  713,  710,  709,  708,  707,  706,
+      705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
+      695,  694,  693,  690,  689,  688,  687,  686,  685,  684,
+
+      683,  682,  681,  680,  679,  678,  677,  676,  675,  674,
+      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
+      663,  662,  661,  660,  659,  658,  657,  656,  655,  651,
+      650,  649,  648,  647,  646,  645,  644,  643,  642,  641,
+      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
+      630,  629,  628,  627,  626,  625,  624,  623,  622,  621,
+      620,  619,  618,  617,  616,  615,  614,  613,  612,  611,
+      610,  609,  608,  607,  606,  605,  604,  603,  602,  601,
+      600,  599,  598,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  587,  586,  585,  584,  583,  582,  581,
+
+      580,  579,  578,  577,  576,  573,  572,  571,  570,  569,
+      568,  567,  563,  562,  561,  560,  559,  558,  557,  556,
+      555,  554,  553,  552,  551,  550,  549,  545,  544,  543,
+      542,  541,  540,  539,  537,  536,  534,  533,  530,  529,
+      528,  527,  524,  523,  522,  521,  520,  519,  518,  517,
+      516,  515,  514,  513,  512,  509,  508,  507,  504,  503,
+      502,  501,  500,  499,  498,  495,  494,  493,  492,  491,
+      490,  489,  488,  487,  486,  483,  482,  481,  480,  479,
+      478,  474,  473,  472,  471,  470,  469,  468,  467,  466,
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
+
+      451,  450,  447,  446,  445,  444,  441,  440,  439,  438,
+      437,  436,  435,  434,  433,  432,  431,  428,  427,  425,
+      424,  419,  414,  411,  408,  407,  406,  405,  403,  402,
+      401,  400,  399,  398,  397,  394,  393,  392,  391,  390,
+      389,  388,  387,  384,  383,  382,  381,  380,  379,  378,
+      377,  376,  375,  374,  373,  369,  368,  367,  366,  365,
+      364,  363,  362,  361,  357,  356,  355,  354,  353,  352,
+      351,  350,  349,  348,  347,  346,  345,  344,  343,  342,
+      341,  340,  339,  338,  337,  336,  335,  334,  333,  332,
+      331,  330,  325,  324,  323,  322,  321,  320,  319,  318,
+
+      316,  206,  313,  311,  309,  306,  305,  303,  301,  294,
+      293,  292,  290,  289,  287,  286,  285,  284,  283,  282,
+      267,  266,  262,  259,  258,  257,  256,  255,  253,  252,
+      251,  250,  249,  246,  245,  244,  243,  242,  241,  240,
+      239,  238,  234,  233,  230,  227,  226,  225,  224,  221,
+      220,  219,  215,  214,  213,  212,  211,  210,  206,  199,
+      196,  195,  193,  191,  190,  182,  165,  145,  122,  110,
+      107,  106,  104,   43,  100,   98,   97,   88,   43, 1580,
+       11, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580
     } ;
 
-static const flex_int16_t yy_chk[2023] =
+static const flex_int16_t yy_chk[2055] =
     {   0,
-        0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
+        0,    1,    1,    1,    0,    1,    1,  716,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  600,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  607,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  109,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      600,    8,    8,    8,    1,    8,   44,   27,   28,  109,
+      607,    8,    8,    8,    1,    8,   44,   27,   28,  109,
        26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    9,    9,    9,   31,    5,   48,    2,    2,
@@ -1520,206 +1536,209 @@ static const flex_int16_t yy_chk[2023] =
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   15,   15,   15,   15,   15,   15,   15,   17,  716,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  717,
        17,   17,   17,   17,   17,   19,   59,   19,   19,   19,
        19,   19,   64,   17,   20,   20,   20,   20,   20,   22,
-       19,   22,   22,   22,   22,   22,   91,   20,  161,  161,
+       19,   22,   22,   22,   22,   22,   91,   20,  162,  162,
        55,   61,   59,   63,   22,   64,   17,   93,   59,   61,
        55,   59,   61,   19,   63,   61,   64,   61,   65,   61,
        20,   67,   91,   55,   63,   65,   73,   22,   45,   92,
-       73,   67,  717,   67,   45,   93,   45,   45,   55,   45,
-       73,   45,   45,   45,  301,   58,   69,   69,   45,   45,
+       73,   67,  718,   67,   45,   93,   45,   45,   55,   45,
+       73,   45,   45,   45,  303,   58,   69,   69,   45,   45,
 
-       69,   45,   58,   96,  301,   92,   69,   45,   45,   45,
+       69,   45,   58,   96,  303,   92,   69,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       62,   96,   58,  718,   62,   70,   58,   62,   62,   70,
-       58,   71,   75,  167,  167,   94,   75,  101,   58,   78,
+       62,   96,   58,  636,   62,   70,   58,   62,   62,   70,
+       58,   71,   75,   70,  636,   94,   75,  101,   58,   78,
        62,  105,   58,   72,   58,   58,  112,   77,   77,   70,
        71,   72,   71,   72,   71,   95,   76,   77,   72,   72,
-       76,   94,   78,   76,  150,  278,  291,   77,  150,  105,
-       76,   76,   78,  112,  101,  115,   76,   78,  278,  719,
+       76,   94,   78,   76,  150,  168,  168,   77,  150,  105,
+       76,   76,   78,  112,  101,  115,   76,   78,  587,  587,
        77,   95,   77,   81,   81,   81,   81,   81,   82,  111,
 
        82,   82,   82,   82,   82,   77,   81,  113,  115,   83,
-      720,   83,   77,   82,   83,   83,   83,   83,   83,   84,
-      114,   84,   84,   84,   84,   84,  103,  111,  291,   81,
-      108,  119,  721,  103,   84,  113,   82,   85,   85,   85,
+      719,   83,   77,   82,   83,   83,   83,   83,   83,   84,
+      114,   84,   84,   84,   84,   84,  103,  111,  386,   81,
+      108,  119,  386,  103,   84,  113,   82,   85,   85,   85,
        85,   85,   89,   89,   89,   89,   89,  114,  119,  137,
-       85,   90,   90,   90,   90,   90,  108,   84,  168,  119,
-      126,  140,  168,  103,  140,  137,  168,  103,  140,  126,
-      126,  103,  163,   85,  155,  163,  163,  184,  175,  103,
-      166,  178,  183,  103,  185,  103,  103,  118,  118,  118,
-      118,  118,  187,  356,  356,  722,  118,  118,  118,  118,
-
-      118,  118,  155,  184,  155,  175,  186,  185,  178,  188,
-      183,  196,  193,  197,  199,  166,  166,  166,  187,  118,
-      118,  118,  118,  118,  118,  201,  166,  203,  166,  208,
-      166,  166,  188,  166,  186,  193,  217,  199,  293,  196,
-      197,  247,  269,  256,  217,  269,  286,  296,  201,  217,
-      217,  286,  208,  302,  203,  206,  206,  206,  206,  206,
-      305,  293,  304,  304,  206,  206,  206,  206,  206,  206,
-      296,  304,  308,  374,  333,  362,  724,  315,  327,  256,
-      333,  401,  302,  305,  401,  362,  726,  206,  206,  206,
-      206,  206,  206,  256,  247,  327,  415,  247,  629,  427,
-
-      308,  313,  313,  313,  313,  313,  315,  582,  582,  629,
-      313,  313,  313,  313,  313,  313,  346,  445,  383,  387,
-      407,  346,  383,  387,  415,  407,  425,  427,  425,  541,
-      445,  374,  445,  313,  313,  313,  313,  313,  313,  454,
-      542,  543,  645,  646,  454,  652,  543,  654,  654,  691,
-      654,  652,  691,  425,  723,  425,  541,  727,  728,  725,
-      725,  723,  730,  731,  728,  732,  646,  725,  542,  346,
-      645,  725,  733,  734,  346,  426,  426,  426,  426,  426,
-      735,  736,  737,  738,  426,  426,  426,  426,  426,  426,
-      739,  740,  741,  742,  744,  745,  746,  747,  748,  749,
-
-      750,  751,  752,  754,  755,  756,  757,  426,  426,  426,
-      426,  426,  426,  758,  759,  760,  761,  762,  763,  764,
-      765,  766,  767,  745,  768,  769,  770,  771,  772,  774,
-      775,  776,  777,  778,  779,  780,  781,  782,  783,  779,
-      784,  785,  786,  787,  790,  791,  792,  793,  796,  797,
-      798,  799,  800,  801,  802,  803,  800,  804,  805,  806,
-      808,  809,  810,  811,  812,  813,  814,  815,  816,  817,
-      818,  819,  820,  821,  822,  823,  824,  825,  826,  827,
-      828,  829,  830,  831,  832,  833,  835,  836,  837,  838,
-      839,  840,  841,  842,  843,  844,  845,  847,  848,  849,
-
-      850,  851,  852,  853,  854,  855,  856,  857,  858,  859,
-      860,  861,  862,  863,  864,  865,  866,  867,  868,  869,
-      871,  848,  872,  873,  847,  874,  875,  876,  877,  878,
-      879,  881,  882,  883,  884,  885,  887,  888,  889,  890,
-      891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
-      901,  902,  903,  904,  906,  907,  908,  910,  911,  912,
-      913,  914,  915,  903,  916,  917,  918,  919,  920,  921,
-      922,  923,  924,  925,  926,  927,  929,  930,  931,  932,
-      933,  934,  935,  936,  937,  938,  939,  940,  941,  942,
-      943,  945,  884,  944,  946,  947,  948,  949,  950,  952,
-
-      953,  954,  955,  956,  957,  958,  959,  960,  961,  963,
-      964,  965,  966,  967,  968,  969,  970,  971,  943,  972,
-      944,  973,  974,  975,  976,  977,  979,  980,  981,  982,
-      983,  979,  984,  985,  986,  987,  988,  989,  990,  991,
-      992,  993,  994,  995,  996,  997,  998,  999, 1000, 1001,
-     1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012,
-     1013, 1015, 1016, 1017, 1019, 1020, 1021, 1022, 1023, 1024,
-     1025,  980, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1034,
-     1035, 1036, 1037, 1038, 1039, 1040, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1052, 1053, 1054, 1055, 1056, 1057,
-
-     1058, 1059, 1060, 1035, 1061, 1062, 1063, 1064, 1065, 1036,
-     1066, 1069, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078,
-     1080, 1081, 1082, 1083, 1085, 1086, 1087, 1088, 1089, 1092,
-     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1104, 1105, 1106, 1107, 1109, 1110, 1111, 1114, 1115,
-     1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126,
-     1127, 1128, 1129, 1130, 1131, 1132, 1134, 1135, 1136, 1137,
-     1138, 1139, 1140, 1141, 1143, 1144, 1145, 1146, 1147, 1148,
-     1149, 1150, 1151, 1152, 1122, 1153, 1154, 1155, 1156, 1157,
-     1158, 1101, 1159, 1160, 1162, 1165, 1166, 1167, 1158, 1168,
-
-     1169, 1170, 1171, 1172, 1173, 1128, 1175, 1176, 1177, 1178,
-     1179, 1180, 1181, 1183, 1184, 1186, 1189, 1191, 1193, 1194,
-     1195, 1196, 1197, 1199, 1200, 1195, 1201, 1203, 1204, 1205,
-     1206, 1207, 1208, 1209, 1210, 1211, 1212, 1214, 1215, 1216,
-     1217, 1218, 1219, 1220, 1221, 1197, 1222, 1223, 1224, 1227,
-     1229, 1230, 1231, 1232, 1233, 1235, 1236, 1237, 1238, 1239,
-     1240, 1242, 1243, 1245, 1246, 1247, 1248, 1250, 1251, 1252,
-     1253, 1254, 1255, 1256, 1258, 1260, 1262, 1264, 1265, 1266,
-     1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
-     1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1284, 1285,
-
-     1286, 1287, 1288, 1262, 1289, 1290, 1291, 1292, 1293, 1294,
-     1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304,
-     1305, 1307, 1308, 1309, 1311, 1312, 1313, 1314, 1316, 1319,
-     1320, 1321, 1324, 1325, 1326, 1329, 1330, 1331, 1332, 1333,
-     1334, 1335, 1336, 1338, 1339, 1341, 1343, 1344, 1345, 1346,
-     1347, 1349, 1350, 1351, 1352, 1314, 1353, 1285, 1354, 1355,
-     1356, 1357, 1358, 1359, 1360, 1361, 1362, 1364, 1365, 1366,
-     1367, 1368, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1378,
-     1379, 1380, 1382, 1384, 1385, 1386, 1387, 1388, 1389, 1390,
-     1391, 1392, 1393, 1394, 1396, 1397, 1399, 1402, 1405, 1407,
-
-     1408, 1409, 1411, 1412, 1414, 1415, 1416, 1417, 1418, 1419,
-     1421, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1432,
-     1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442,
-     1445, 1446, 1447, 1448, 1449, 1451, 1452, 1453, 1454, 1455,
-     1456, 1457, 1458, 1459, 1461, 1462, 1463, 1464, 1465, 1467,
-     1469, 1471, 1472, 1473, 1474, 1476, 1478, 1479, 1480, 1481,
-     1483, 1484, 1486, 1487, 1490, 1491, 1492, 1493, 1494, 1495,
-     1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
-     1506, 1507, 1508, 1509, 1510, 1511, 1513, 1514, 1515, 1516,
-     1517, 1519, 1521, 1522, 1523, 1524, 1525, 1526, 1530, 1531,
-
-     1532, 1533, 1535, 1536, 1538, 1539, 1540, 1541, 1542, 1544,
-     1545, 1548, 1548, 1548, 1548, 1548, 1549, 1549, 1549, 1549,
-     1549, 1550, 1556, 1550, 1550, 1550, 1551, 1557, 1551, 1558,
-     1551, 1552, 1552, 1552, 1552, 1552, 1553, 1553, 1553, 1553,
-     1553, 1554, 1559, 1554, 1554, 1554, 1555, 1555, 1555,  715,
-      714,  713,  712,  711,  710,  709,  708,  707,  706,  705,
-      704,  703,  701,  700,  699,  698,  697,  696,  695,  694,
-      692,  690,  689,  688,  687,  686,  685,  684,  683,  682,
-      681,  680,  679,  678,  677,  676,  675,  673,  672,  671,
-      670,  669,  668,  667,  666,  665,  664,  663,  662,  661,
-
-      660,  659,  658,  657,  656,  655,  653,  651,  650,  649,
-      648,  647,  644,  643,  642,  640,  639,  637,  636,  635,
-      634,  633,  632,  631,  630,  627,  626,  625,  624,  623,
-      622,  621,  620,  619,  618,  617,  616,  615,  613,  612,
-      611,  610,  609,  608,  607,  606,  604,  603,  602,  601,
-      599,  598,  597,  596,  595,  594,  593,  591,  590,  589,
-      588,  587,  586,  585,  584,  583,  581,  580,  579,  578,
-      577,  576,  575,  574,  573,  572,  571,  570,  568,  567,
-      566,  565,  564,  563,  562,  561,  560,  559,  558,  557,
-      556,  555,  554,  553,  552,  551,  550,  549,  548,  547,
-
-      546,  545,  539,  537,  534,  533,  532,  531,  529,  528,
-      527,  525,  524,  521,  520,  519,  518,  517,  516,  515,
-      514,  513,  512,  511,  510,  509,  508,  507,  506,  505,
-      504,  503,  502,  501,  500,  499,  498,  497,  496,  495,
-      494,  492,  490,  489,  488,  487,  486,  485,  484,  483,
-      482,  481,  480,  479,  477,  476,  475,  474,  473,  472,
-      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
-      461,  460,  458,  457,  456,  455,  453,  452,  451,  450,
-      449,  447,  446,  444,  443,  441,  440,  439,  438,  437,
-      436,  435,  433,  432,  431,  430,  429,  428,  423,  422,
-
-      420,  419,  418,  417,  416,  414,  413,  411,  408,  406,
-      405,  403,  402,  400,  399,  398,  397,  396,  395,  394,
-      393,  392,  391,  390,  389,  388,  386,  385,  384,  382,
-      381,  380,  379,  377,  376,  375,  373,  372,  371,  370,
-      369,  368,  367,  366,  365,  363,  361,  360,  359,  358,
-      357,  355,  354,  353,  352,  351,  350,  349,  348,  347,
-      345,  344,  343,  342,  341,  340,  339,  338,  337,  336,
-      335,  334,  332,  331,  330,  329,  326,  325,  324,  323,
-      322,  321,  320,  319,  318,  317,  316,  312,  310,  307,
-      306,  303,  299,  292,  290,  289,  288,  287,  285,  284,
-
-      283,  282,  281,  280,  279,  277,  276,  275,  274,  273,
-      272,  271,  270,  268,  267,  266,  265,  264,  263,  262,
-      261,  260,  259,  258,  257,  255,  254,  253,  252,  251,
-      250,  249,  248,  246,  245,  244,  243,  242,  241,  240,
-      239,  237,  236,  235,  234,  233,  232,  231,  230,  229,
-      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
-      218,  216,  215,  214,  213,  212,  211,  210,  209,  207,
-      204,  202,  200,  198,  195,  194,  192,  189,  181,  180,
-      179,  177,  176,  174,  173,  172,  171,  170,  169,  165,
-      164,  162,  160,  159,  158,  157,  156,  154,  153,  152,
-
-      151,  149,  148,  147,  146,  145,  144,  143,  142,  141,
-      139,  138,  136,  134,  133,  132,  131,  129,  128,  127,
-      125,  124,  123,  122,  121,  120,  116,  110,  107,  106,
-      104,   99,   98,   79,   74,   68,   60,   53,   50,   49,
-       47,   43,   41,   39,   38,   24,   14,   11, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547, 1547,
-     1547, 1547
+       85,   90,   90,   90,   90,   90,  108,   84,  169,  119,
+      126,  140,  169,  103,  140,  137,  169,  103,  140,  126,
+      126,  103,  164,   85,  156,  164,  164,  185,  176,  103,
+      167,  179,  184,  103,  186,  103,  103,  118,  118,  118,
+      118,  118,  188,  720,  293,  721,  118,  118,  118,  118,
+
+      118,  118,  156,  185,  156,  176,  187,  186,  179,  189,
+      184,  197,  194,  198,  200,  167,  167,  167,  188,  118,
+      118,  118,  118,  118,  118,  202,  167,  204,  167,  209,
+      167,  167,  189,  167,  187,  194,  218,  200,  280,  197,
+      198,  248,  271,  258,  218,  271,  293,  722,  202,  218,
+      218,  280,  209,  295,  204,  207,  207,  207,  207,  207,
+      298,  307,  723,  724,  207,  207,  207,  207,  207,  207,
+      288,  304,  306,  306,  310,  288,  295,  725,  329,  258,
+      317,  306,  390,  298,  307,  377,  390,  207,  207,  207,
+      207,  207,  207,  258,  248,  329,  348,  248,  365,  418,
+
+      304,  348,  310,  315,  315,  315,  315,  315,  365,  317,
+      653,  726,  315,  315,  315,  315,  315,  315,  335,  404,
+      358,  358,  404,  410,  335,  358,  727,  418,  410,  428,
+      546,  428,  448,  653,  728,  315,  315,  315,  315,  315,
+      315,  661,  661,  377,  661,  448,  430,  448,  457,  348,
+      547,  652,  698,  457,  348,  698,  428,  546,  428,  429,
+      429,  429,  429,  429,  729,  730,  731,  733,  429,  429,
+      429,  429,  429,  429,  430,  548,  659,  732,  547,  652,
+      548,  735,  659,  736,  732,  739,  740,  741,  742,  734,
+      734,  429,  429,  429,  429,  429,  429,  734,  737,  743,
+
+      744,  734,  745,  746,  737,  747,  748,  749,  750,  751,
+      753,  754,  755,  756,  757,  758,  759,  760,  761,  763,
+      764,  765,  766,  767,  768,  769,  770,  771,  772,  773,
+      774,  775,  776,  777,  778,  779,  780,  781,  783,  754,
+      784,  785,  786,  787,  788,  789,  790,  791,  792,  788,
+      793,  794,  795,  796,  799,  800,  801,  802,  803,  806,
+      807,  808,  809,  810,  811,  812,  813,  814,  811,  815,
+      816,  817,  819,  820,  821,  822,  823,  824,  825,  826,
+      827,  828,  829,  830,  831,  832,  833,  834,  835,  836,
+      837,  838,  839,  840,  841,  842,  843,  844,  846,  847,
+
+      848,  849,  850,  851,  852,  853,  854,  855,  856,  858,
+      859,  860,  861,  862,  863,  864,  865,  866,  867,  868,
+      869,  870,  871,  872,  873,  874,  875,  876,  877,  878,
+      879,  880,  882,  859,  883,  884,  858,  885,  886,  887,
+      888,  889,  890,  892,  893,  894,  895,  896,  898,  899,
+      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  916,  917,  919,  920,
+      921,  923,  924,  925,  926,  927,  928,  916,  929,  930,
+      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
+      942,  943,  944,  945,  946,  947,  948,  949,  950,  951,
+
+      952,  953,  954,  955,  895,  956,  958,  957,  959,  960,
+      961,  962,  963,  965,  966,  967,  968,  969,  970,  971,
+      972,  973,  974,  976,  977,  978,  979,  980,  981,  982,
+      983,  984,  985,  956,  957,  986,  987,  988,  989,  990,
+      992,  993,  994,  995,  996,  992,  997,  998,  999, 1000,
+     1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010,
+     1011, 1012, 1013, 1014, 1015, 1016, 1018, 1019, 1020, 1021,
+     1022, 1023, 1024, 1025, 1026, 1027, 1028, 1030, 1031, 1032,
+     1034, 1035, 1036, 1037, 1038,  993, 1039, 1040, 1041, 1042,
+     1043, 1044, 1045, 1046, 1047, 1049, 1050, 1051, 1052, 1053,
+
+     1054, 1055, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1050,
+     1076, 1077, 1078, 1079, 1080, 1051, 1081, 1084, 1086, 1087,
+     1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1097, 1098,
+     1099, 1100, 1102, 1103, 1104, 1105, 1106, 1109, 1110, 1111,
+     1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+     1122, 1123, 1124, 1126, 1127, 1128, 1131, 1132, 1133, 1134,
+     1135, 1136, 1137, 1138, 1139, 1140, 1142, 1143, 1144, 1145,
+     1146, 1147, 1148, 1149, 1151, 1152, 1153, 1154, 1155, 1156,
+     1157, 1158, 1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167,
+
+     1168, 1169, 1139, 1170, 1171, 1172, 1173, 1174, 1175, 1118,
+     1176, 1177, 1178, 1179, 1181, 1184, 1175, 1185, 1186, 1187,
+     1188, 1189, 1190, 1145, 1191, 1192, 1194, 1195, 1196, 1197,
+     1198, 1199, 1200, 1202, 1203, 1205, 1208, 1210, 1212, 1213,
+     1214, 1215, 1216, 1218, 1219, 1214, 1220, 1222, 1223, 1224,
+     1225, 1226, 1227, 1228, 1229, 1230, 1231, 1233, 1234, 1235,
+     1236, 1237, 1238, 1239, 1240, 1216, 1241, 1242, 1243, 1246,
+     1248, 1249, 1250, 1251, 1252, 1253, 1254, 1256, 1257, 1258,
+     1259, 1260, 1261, 1263, 1264, 1266, 1267, 1268, 1269, 1271,
+     1272, 1273, 1274, 1275, 1276, 1277, 1279, 1281, 1283, 1285,
+
+     1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295,
+     1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305,
+     1305, 1306, 1307, 1308, 1309, 1283, 1310, 1311, 1312, 1313,
+     1314, 1315, 1316, 1317, 1318, 1319, 1320, 1321, 1322, 1323,
+     1324, 1325, 1326, 1327, 1328, 1330, 1331, 1332, 1334, 1335,
+     1336, 1339, 1337, 1342, 1343, 1344, 1347, 1348, 1349, 1352,
+     1353, 1354, 1355, 1356, 1357, 1358, 1359, 1361, 1362, 1364,
+     1366, 1367, 1368, 1369, 1370, 1371, 1372, 1374, 1375, 1306,
+     1337, 1376, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384,
+     1385, 1386, 1387, 1389, 1390, 1391, 1392, 1393, 1395, 1396,
+
+     1397, 1398, 1399, 1400, 1401, 1403, 1404, 1405, 1407, 1409,
+     1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419,
+     1420, 1421, 1423, 1424, 1426, 1429, 1432, 1434, 1435, 1436,
+     1438, 1439, 1441, 1442, 1443, 1444, 1445, 1446, 1448, 1449,
+     1450, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1461,
+     1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471,
+     1474, 1475, 1476, 1477, 1478, 1479, 1480, 1482, 1483, 1484,
+     1485, 1486, 1487, 1488, 1489, 1490, 1492, 1493, 1494, 1495,
+     1496, 1498, 1502, 1504, 1505, 1506, 1507, 1509, 1511, 1512,
+     1513, 1514, 1516, 1517, 1519, 1520, 1523, 1524, 1525, 1526,
+
+     1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536,
+     1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1546, 1547,
+     1548, 1549, 1550, 1552, 1554, 1555, 1556, 1557, 1558, 1559,
+     1563, 1564, 1565, 1566, 1568, 1569, 1571, 1572, 1573, 1574,
+     1575, 1577, 1578, 1581, 1581, 1581, 1581, 1581, 1582, 1582,
+     1582, 1582, 1582, 1583, 1589, 1583, 1583, 1583, 1584, 1590,
+     1584, 1591, 1584, 1585, 1585, 1585, 1585, 1585, 1586, 1586,
+     1586, 1586, 1586, 1587, 1592, 1587, 1587, 1587, 1588, 1588,
+     1588,  715,  714,  713,  712,  710,  709,  708,  707,  706,
+      705,  704,  703,  702,  700,  699,  697,  696,  695,  694,
+
+      693,  692,  691,  690,  689,  688,  687,  686,  685,  684,
+      683,  682,  680,  679,  678,  677,  676,  675,  674,  673,
+      672,  671,  670,  669,  668,  667,  666,  665,  664,  663,
+      662,  660,  658,  657,  656,  655,  654,  651,  650,  649,
+      647,  646,  644,  643,  642,  641,  640,  639,  638,  637,
+      634,  633,  632,  631,  630,  629,  628,  627,  626,  625,
+      624,  623,  622,  620,  619,  618,  617,  616,  615,  614,
+      613,  611,  610,  609,  608,  606,  605,  604,  603,  602,
+      601,  600,  598,  597,  596,  595,  594,  593,  592,  591,
+      590,  589,  588,  586,  585,  584,  583,  582,  581,  580,
+
+      579,  578,  577,  576,  575,  573,  572,  571,  570,  569,
+      568,  567,  566,  565,  564,  563,  562,  561,  560,  559,
+      558,  557,  556,  555,  554,  553,  552,  551,  550,  544,
+      542,  539,  538,  537,  536,  534,  533,  532,  530,  529,
+      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
+      516,  515,  514,  513,  512,  511,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  501,  500,  499,  497,  495,
+      494,  493,  492,  491,  490,  489,  488,  487,  486,  485,
+      484,  482,  481,  480,  479,  478,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
+
+      463,  461,  460,  459,  458,  456,  455,  454,  453,  452,
+      450,  449,  447,  446,  444,  443,  442,  441,  440,  439,
+      438,  436,  435,  434,  433,  432,  431,  426,  425,  423,
+      422,  421,  420,  419,  417,  416,  414,  411,  409,  408,
+      406,  405,  403,  402,  401,  400,  399,  398,  397,  396,
+      395,  394,  393,  392,  391,  389,  388,  387,  385,  384,
+      383,  382,  380,  379,  378,  376,  375,  374,  373,  372,
+      371,  370,  369,  368,  366,  364,  363,  362,  361,  360,
+      359,  357,  356,  355,  354,  353,  352,  351,  350,  349,
+      347,  346,  345,  344,  343,  342,  341,  340,  339,  338,
+
+      337,  336,  334,  333,  332,  331,  328,  327,  326,  325,
+      324,  323,  322,  321,  320,  319,  318,  314,  312,  309,
+      308,  305,  301,  294,  292,  291,  290,  289,  287,  286,
+      285,  284,  283,  282,  281,  279,  278,  277,  276,  275,
+      274,  273,  272,  270,  269,  268,  267,  266,  265,  264,
+      263,  262,  261,  260,  259,  257,  256,  255,  254,  253,
+      252,  251,  250,  249,  247,  246,  245,  244,  243,  242,
+      241,  240,  238,  237,  236,  235,  234,  233,  232,  231,
+      230,  229,  228,  227,  226,  225,  224,  223,  222,  221,
+      220,  219,  217,  216,  215,  214,  213,  212,  211,  210,
+
+      208,  205,  203,  201,  199,  196,  195,  193,  190,  182,
+      181,  180,  178,  177,  175,  174,  173,  172,  171,  170,
+      166,  165,  163,  161,  160,  159,  158,  157,  155,  154,
+      153,  152,  151,  149,  148,  147,  146,  145,  144,  143,
+      142,  141,  139,  138,  136,  134,  133,  132,  131,  129,
+      128,  127,  125,  124,  123,  122,  121,  120,  116,  110,
+      107,  106,  104,   99,   98,   79,   74,   68,   60,   53,
+       50,   49,   47,   43,   41,   39,   38,   24,   14,   11,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580, 1580,
+     1580, 1580, 1580, 1580
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1728,27 +1747,28 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[181] =
+static const flex_int16_t yy_rule_linenum[183] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  255,  264,
       273,  282,  291,  300,  309,  318,  327,  336,  345,  354,
       363,  375,  384,  393,  402,  411,  422,  433,  444,  455,
       465,  475,  486,  497,  508,  519,  530,  541,  552,  563,
-      574,  585,  596,  607,  618,  627,  636,  646,  655,  665,
-      679,  695,  704,  713,  722,  731,  752,  773,  782,  792,
-      801,  812,  821,  830,  839,  848,  857,  867,  876,  887,
-      898,  910,  919,  929,  938,  947,  956,  965,  974,  983,
-      992, 1002, 1013, 1025, 1034, 1043, 1053, 1063, 1073, 1083,
-
-     1093, 1103, 1112, 1122, 1131, 1140, 1149, 1158, 1168, 1178,
-     1187, 1197, 1206, 1215, 1224, 1233, 1242, 1251, 1260, 1269,
-     1278, 1287, 1296, 1305, 1314, 1323, 1332, 1341, 1350, 1359,
-     1368, 1377, 1386, 1395, 1404, 1413, 1422, 1431, 1440, 1449,
-     1459, 1469, 1479, 1489, 1499, 1509, 1519, 1529, 1539, 1549,
-     1559, 1568, 1577, 1586, 1595, 1604, 1613, 1622, 1633, 1644,
-     1657, 1670, 1685, 1784, 1789, 1794, 1799, 1800, 1801, 1802,
-     1803, 1804, 1806, 1824, 1837, 1842, 1846, 1848, 1850, 1852
+      574,  585,  596,  607,  618,  629,  640,  649,  658,  668,
+      677,  687,  701,  717,  726,  735,  744,  753,  774,  795,
+      804,  814,  823,  834,  843,  852,  861,  870,  879,  889,
+      898,  909,  920,  932,  941,  951,  960,  969,  978,  987,
+      996, 1005, 1014, 1024, 1035, 1047, 1056, 1065, 1075, 1085,
+
+     1095, 1105, 1115, 1125, 1134, 1144, 1153, 1162, 1171, 1180,
+     1190, 1200, 1209, 1219, 1228, 1237, 1246, 1255, 1264, 1273,
+     1282, 1291, 1300, 1309, 1318, 1327, 1336, 1345, 1354, 1363,
+     1372, 1381, 1390, 1399, 1408, 1417, 1426, 1435, 1444, 1453,
+     1462, 1471, 1480, 1489, 1499, 1509, 1519, 1529, 1539, 1549,
+     1559, 1569, 1579, 1588, 1597, 1606, 1615, 1624, 1633, 1642,
+     1653, 1664, 1677, 1690, 1705, 1804, 1809, 1814, 1819, 1820,
+     1821, 1822, 1823, 1824, 1826, 1844, 1857, 1862, 1866, 1868,
+     1870, 1872
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1801,7 +1821,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1804 "dhcp4_lexer.cc"
+#line 1824 "dhcp4_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1827,8 +1847,8 @@ using namespace isc::dhcp;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1830 "dhcp4_lexer.cc"
-#line 1831 "dhcp4_lexer.cc"
+#line 1850 "dhcp4_lexer.cc"
+#line 1851 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2158,7 +2178,7 @@ YY_DECL
     }
 
 
-#line 2161 "dhcp4_lexer.cc"
+#line 2181 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2187,13 +2207,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 >= 1548 )
+                               if ( yy_current_state >= 1581 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1547 );
+               while ( yy_current_state != 1580 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2212,13 +2232,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 181 )
+                       else if ( yy_act < 183 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 181 )
+                       else if ( yy_act == 183 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 182 )
+                       else if ( yy_act == 184 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2858,9 +2878,9 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::DHCP4:
     case isc::dhcp::Parser4Context::SUBNET4:
     case isc::dhcp::Parser4Context::SHARED_NETWORK:
-        return isc::dhcp::Dhcp4Parser::make_RENEW_TIMER(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_MIN_VALID_LIFETIME(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("renew-timer", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("min-valid-lifetime", driver.loc_);
     }
 }
        YY_BREAK
@@ -2872,15 +2892,43 @@ YY_RULE_SETUP
     case isc::dhcp::Parser4Context::DHCP4:
     case isc::dhcp::Parser4Context::SUBNET4:
     case isc::dhcp::Parser4Context::SHARED_NETWORK:
-        return isc::dhcp::Dhcp4Parser::make_REBIND_TIMER(driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_MAX_VALID_LIFETIME(driver.loc_);
     default:
-        return isc::dhcp::Dhcp4Parser::make_STRING("rebind-timer", driver.loc_);
+        return isc::dhcp::Dhcp4Parser::make_STRING("max-valid-lifetime", driver.loc_);
     }
 }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 618 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+    case isc::dhcp::Parser4Context::SUBNET4:
+    case isc::dhcp::Parser4Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp4Parser::make_RENEW_TIMER(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("renew-timer", driver.loc_);
+    }
+}
+       YY_BREAK
+case 56:
+YY_RULE_SETUP
+#line 629 "dhcp4_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser4Context::DHCP4:
+    case isc::dhcp::Parser4Context::SUBNET4:
+    case isc::dhcp::Parser4Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp4Parser::make_REBIND_TIMER(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("rebind-timer", driver.loc_);
+    }
+}
+       YY_BREAK
+case 57:
+YY_RULE_SETUP
+#line 640 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2890,9 +2938,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 56:
+case 58:
 YY_RULE_SETUP
-#line 627 "dhcp4_lexer.ll"
+#line 649 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2902,9 +2950,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 57:
+case 59:
 YY_RULE_SETUP
-#line 636 "dhcp4_lexer.ll"
+#line 658 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2915,9 +2963,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 58:
+case 60:
 YY_RULE_SETUP
-#line 646 "dhcp4_lexer.ll"
+#line 668 "dhcp4_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2927,9 +2975,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 59:
+case 61:
 YY_RULE_SETUP
-#line 655 "dhcp4_lexer.ll"
+#line 677 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2940,9 +2988,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 60:
+case 62:
 YY_RULE_SETUP
-#line 665 "dhcp4_lexer.ll"
+#line 687 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -2957,9 +3005,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 61:
+case 63:
 YY_RULE_SETUP
-#line 679 "dhcp4_lexer.ll"
+#line 701 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -2976,9 +3024,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 62:
+case 64:
 YY_RULE_SETUP
-#line 695 "dhcp4_lexer.ll"
+#line 717 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -2988,9 +3036,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 63:
+case 65:
 YY_RULE_SETUP
-#line 704 "dhcp4_lexer.ll"
+#line 726 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3000,9 +3048,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 64:
+case 66:
 YY_RULE_SETUP
-#line 713 "dhcp4_lexer.ll"
+#line 735 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3012,9 +3060,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 65:
+case 67:
 YY_RULE_SETUP
-#line 722 "dhcp4_lexer.ll"
+#line 744 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -3024,9 +3072,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 66:
+case 68:
 YY_RULE_SETUP
-#line 731 "dhcp4_lexer.ll"
+#line 753 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3048,9 +3096,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 67:
+case 69:
 YY_RULE_SETUP
-#line 752 "dhcp4_lexer.ll"
+#line 774 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3072,9 +3120,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 68:
+case 70:
 YY_RULE_SETUP
-#line 773 "dhcp4_lexer.ll"
+#line 795 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3084,9 +3132,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 71:
 YY_RULE_SETUP
-#line 782 "dhcp4_lexer.ll"
+#line 804 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3097,9 +3145,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 792 "dhcp4_lexer.ll"
+#line 814 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3109,9 +3157,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 801 "dhcp4_lexer.ll"
+#line 823 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3123,9 +3171,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 812 "dhcp4_lexer.ll"
+#line 834 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3135,9 +3183,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 75:
 YY_RULE_SETUP
-#line 821 "dhcp4_lexer.ll"
+#line 843 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3147,9 +3195,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 76:
 YY_RULE_SETUP
-#line 830 "dhcp4_lexer.ll"
+#line 852 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3159,9 +3207,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 77:
 YY_RULE_SETUP
-#line 839 "dhcp4_lexer.ll"
+#line 861 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3171,9 +3219,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 78:
 YY_RULE_SETUP
-#line 848 "dhcp4_lexer.ll"
+#line 870 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3183,9 +3231,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 79:
 YY_RULE_SETUP
-#line 857 "dhcp4_lexer.ll"
+#line 879 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3196,9 +3244,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 80:
 YY_RULE_SETUP
-#line 867 "dhcp4_lexer.ll"
+#line 889 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3208,9 +3256,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 81:
 YY_RULE_SETUP
-#line 876 "dhcp4_lexer.ll"
+#line 898 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3222,9 +3270,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 82:
 YY_RULE_SETUP
-#line 887 "dhcp4_lexer.ll"
+#line 909 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3236,9 +3284,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 83:
 YY_RULE_SETUP
-#line 898 "dhcp4_lexer.ll"
+#line 920 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3250,9 +3298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 84:
 YY_RULE_SETUP
-#line 910 "dhcp4_lexer.ll"
+#line 932 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -3262,9 +3310,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 85:
 YY_RULE_SETUP
-#line 919 "dhcp4_lexer.ll"
+#line 941 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3275,9 +3323,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 86:
 YY_RULE_SETUP
-#line 929 "dhcp4_lexer.ll"
+#line 951 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3287,9 +3335,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 87:
 YY_RULE_SETUP
-#line 938 "dhcp4_lexer.ll"
+#line 960 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3299,9 +3347,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 88:
 YY_RULE_SETUP
-#line 947 "dhcp4_lexer.ll"
+#line 969 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3311,9 +3359,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 89:
 YY_RULE_SETUP
-#line 956 "dhcp4_lexer.ll"
+#line 978 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3323,9 +3371,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 90:
 YY_RULE_SETUP
-#line 965 "dhcp4_lexer.ll"
+#line 987 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3335,9 +3383,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 91:
 YY_RULE_SETUP
-#line 974 "dhcp4_lexer.ll"
+#line 996 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3347,9 +3395,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 92:
 YY_RULE_SETUP
-#line 983 "dhcp4_lexer.ll"
+#line 1005 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3359,9 +3407,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 93:
 YY_RULE_SETUP
-#line 992 "dhcp4_lexer.ll"
+#line 1014 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3372,9 +3420,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 94:
 YY_RULE_SETUP
-#line 1002 "dhcp4_lexer.ll"
+#line 1024 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3386,9 +3434,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 95:
 YY_RULE_SETUP
-#line 1013 "dhcp4_lexer.ll"
+#line 1035 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3401,9 +3449,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 96:
 YY_RULE_SETUP
-#line 1025 "dhcp4_lexer.ll"
+#line 1047 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3413,9 +3461,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1034 "dhcp4_lexer.ll"
+#line 1056 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3425,9 +3473,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1043 "dhcp4_lexer.ll"
+#line 1065 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3438,9 +3486,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1053 "dhcp4_lexer.ll"
+#line 1075 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3451,9 +3499,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1063 "dhcp4_lexer.ll"
+#line 1085 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3464,9 +3512,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1073 "dhcp4_lexer.ll"
+#line 1095 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3477,9 +3525,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1083 "dhcp4_lexer.ll"
+#line 1105 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3490,9 +3538,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1093 "dhcp4_lexer.ll"
+#line 1115 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3503,9 +3551,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1103 "dhcp4_lexer.ll"
+#line 1125 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3515,9 +3563,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1112 "dhcp4_lexer.ll"
+#line 1134 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3528,9 +3576,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1122 "dhcp4_lexer.ll"
+#line 1144 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3540,9 +3588,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1131 "dhcp4_lexer.ll"
+#line 1153 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3552,9 +3600,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1140 "dhcp4_lexer.ll"
+#line 1162 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3564,9 +3612,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1149 "dhcp4_lexer.ll"
+#line 1171 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3576,9 +3624,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1158 "dhcp4_lexer.ll"
+#line 1180 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3589,9 +3637,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 1168 "dhcp4_lexer.ll"
+#line 1190 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3602,9 +3650,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 1178 "dhcp4_lexer.ll"
+#line 1200 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3614,9 +3662,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 113:
 YY_RULE_SETUP
-#line 1187 "dhcp4_lexer.ll"
+#line 1209 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3626,9 +3674,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 114:
 YY_RULE_SETUP
-#line 1197 "dhcp4_lexer.ll"
+#line 1219 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3638,9 +3686,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 115:
 YY_RULE_SETUP
-#line 1206 "dhcp4_lexer.ll"
+#line 1228 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3650,9 +3698,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 1215 "dhcp4_lexer.ll"
+#line 1237 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3662,9 +3710,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 1224 "dhcp4_lexer.ll"
+#line 1246 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3674,9 +3722,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 1233 "dhcp4_lexer.ll"
+#line 1255 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3686,9 +3734,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 119:
 YY_RULE_SETUP
-#line 1242 "dhcp4_lexer.ll"
+#line 1264 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3698,9 +3746,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 120:
 YY_RULE_SETUP
-#line 1251 "dhcp4_lexer.ll"
+#line 1273 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3710,9 +3758,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 121:
 YY_RULE_SETUP
-#line 1260 "dhcp4_lexer.ll"
+#line 1282 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3722,9 +3770,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 122:
 YY_RULE_SETUP
-#line 1269 "dhcp4_lexer.ll"
+#line 1291 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3734,9 +3782,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 1278 "dhcp4_lexer.ll"
+#line 1300 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3746,9 +3794,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 1287 "dhcp4_lexer.ll"
+#line 1309 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3758,9 +3806,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 125:
 YY_RULE_SETUP
-#line 1296 "dhcp4_lexer.ll"
+#line 1318 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3770,9 +3818,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 1305 "dhcp4_lexer.ll"
+#line 1327 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -3782,9 +3830,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 1314 "dhcp4_lexer.ll"
+#line 1336 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3794,9 +3842,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 1323 "dhcp4_lexer.ll"
+#line 1345 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3806,9 +3854,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 129:
 YY_RULE_SETUP
-#line 1332 "dhcp4_lexer.ll"
+#line 1354 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3818,9 +3866,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1341 "dhcp4_lexer.ll"
+#line 1363 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3830,9 +3878,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1350 "dhcp4_lexer.ll"
+#line 1372 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3842,9 +3890,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1359 "dhcp4_lexer.ll"
+#line 1381 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3854,9 +3902,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1368 "dhcp4_lexer.ll"
+#line 1390 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3866,9 +3914,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1377 "dhcp4_lexer.ll"
+#line 1399 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3878,9 +3926,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1386 "dhcp4_lexer.ll"
+#line 1408 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3890,9 +3938,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1395 "dhcp4_lexer.ll"
+#line 1417 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3902,9 +3950,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1404 "dhcp4_lexer.ll"
+#line 1426 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3914,9 +3962,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1413 "dhcp4_lexer.ll"
+#line 1435 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3926,9 +3974,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1422 "dhcp4_lexer.ll"
+#line 1444 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3938,9 +3986,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1431 "dhcp4_lexer.ll"
+#line 1453 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3950,9 +3998,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1440 "dhcp4_lexer.ll"
+#line 1462 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -3962,12 +4010,11 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1449 "dhcp4_lexer.ll"
+#line 1471 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP4:
     case isc::dhcp::Parser4Context::DHCP_DDNS:
         return isc::dhcp::Dhcp4Parser::make_HOSTNAME_CHAR_SET(driver.loc_);
     default:
@@ -3975,12 +4022,11 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1459 "dhcp4_lexer.ll"
+#line 1480 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
-    case isc::dhcp::Parser4Context::DHCP4:
     case isc::dhcp::Parser4Context::DHCP_DDNS:
         return isc::dhcp::Dhcp4Parser::make_HOSTNAME_CHAR_REPLACEMENT(driver.loc_);
     default:
@@ -3988,9 +4034,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1469 "dhcp4_lexer.ll"
+#line 1489 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4001,9 +4047,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1479 "dhcp4_lexer.ll"
+#line 1499 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4014,9 +4060,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1489 "dhcp4_lexer.ll"
+#line 1509 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -4027,9 +4073,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1499 "dhcp4_lexer.ll"
+#line 1519 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4040,9 +4086,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1509 "dhcp4_lexer.ll"
+#line 1529 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4053,9 +4099,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1519 "dhcp4_lexer.ll"
+#line 1539 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4066,9 +4112,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1529 "dhcp4_lexer.ll"
+#line 1549 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4079,9 +4125,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1539 "dhcp4_lexer.ll"
+#line 1559 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4092,9 +4138,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1549 "dhcp4_lexer.ll"
+#line 1569 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4105,9 +4151,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1559 "dhcp4_lexer.ll"
+#line 1579 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -4117,9 +4163,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1568 "dhcp4_lexer.ll"
+#line 1588 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -4129,9 +4175,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1577 "dhcp4_lexer.ll"
+#line 1597 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONFIG:
@@ -4141,9 +4187,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1586 "dhcp4_lexer.ll"
+#line 1606 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4153,9 +4199,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1595 "dhcp4_lexer.ll"
+#line 1615 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4165,9 +4211,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1604 "dhcp4_lexer.ll"
+#line 1624 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4177,9 +4223,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1613 "dhcp4_lexer.ll"
+#line 1633 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4189,9 +4235,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1622 "dhcp4_lexer.ll"
+#line 1642 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4203,9 +4249,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1633 "dhcp4_lexer.ll"
+#line 1653 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4217,9 +4263,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1644 "dhcp4_lexer.ll"
+#line 1664 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4233,9 +4279,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 163:
 YY_RULE_SETUP
-#line 1657 "dhcp4_lexer.ll"
+#line 1677 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4249,9 +4295,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 164:
 YY_RULE_SETUP
-#line 1670 "dhcp4_lexer.ll"
+#line 1690 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4265,9 +4311,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 165:
 YY_RULE_SETUP
-#line 1685 "dhcp4_lexer.ll"
+#line 1705 "dhcp4_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -4367,65 +4413,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 164:
-/* rule 164 can match eol */
+case 166:
+/* rule 166 can match eol */
 YY_RULE_SETUP
-#line 1784 "dhcp4_lexer.ll"
+#line 1804 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 165:
-/* rule 165 can match eol */
+case 167:
+/* rule 167 can match eol */
 YY_RULE_SETUP
-#line 1789 "dhcp4_lexer.ll"
+#line 1809 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 166:
+case 168:
 YY_RULE_SETUP
-#line 1794 "dhcp4_lexer.ll"
+#line 1814 "dhcp4_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1799 "dhcp4_lexer.ll"
+#line 1819 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1800 "dhcp4_lexer.ll"
+#line 1820 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1801 "dhcp4_lexer.ll"
+#line 1821 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1802 "dhcp4_lexer.ll"
+#line 1822 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1803 "dhcp4_lexer.ll"
+#line 1823 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1804 "dhcp4_lexer.ll"
+#line 1824 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1806 "dhcp4_lexer.ll"
+#line 1826 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4444,9 +4490,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1824 "dhcp4_lexer.ll"
+#line 1844 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4460,43 +4506,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1837 "dhcp4_lexer.ll"
+#line 1857 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1842 "dhcp4_lexer.ll"
+#line 1862 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1846 "dhcp4_lexer.ll"
+#line 1866 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1848 "dhcp4_lexer.ll"
+#line 1868 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 179:
+case 181:
 YY_RULE_SETUP
-#line 1850 "dhcp4_lexer.ll"
+#line 1870 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 180:
+case 182:
 YY_RULE_SETUP
-#line 1852 "dhcp4_lexer.ll"
+#line 1872 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1854 "dhcp4_lexer.ll"
+#line 1874 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4520,12 +4566,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 181:
+case 183:
 YY_RULE_SETUP
-#line 1877 "dhcp4_lexer.ll"
+#line 1897 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4528 "dhcp4_lexer.cc"
+#line 4574 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4844,7 +4890,7 @@ static int yy_get_next_buffer (void)
                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 >= 1548 )
+                       if ( yy_current_state >= 1581 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4877,11 +4923,11 @@ static int yy_get_next_buffer (void)
        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 >= 1548 )
+               if ( yy_current_state >= 1581 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1547);
+       yy_is_jam = (yy_current_state == 1580);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5630,7 +5676,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1877 "dhcp4_lexer.ll"
+#line 1897 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index 813e14d0354268ab892472e10cc4587a6bf7d256..3ae6b4415911ce3cff7613c53b5a3118372529ad 100644 (file)
@@ -251,30 +251,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -293,30 +293,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -335,30 +335,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -401,74 +401,74 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 171: // "constant string"
-#line 253 "dhcp4_parser.yy"
+      case 173: // "constant string"
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < std::string > (); }
 #line 408 "dhcp4_parser.cc"
         break;
 
-      case 172: // "integer"
-#line 253 "dhcp4_parser.yy"
+      case 174: // "integer"
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < int64_t > (); }
 #line 414 "dhcp4_parser.cc"
         break;
 
-      case 173: // "floating point"
-#line 253 "dhcp4_parser.yy"
+      case 175: // "floating point"
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < double > (); }
 #line 420 "dhcp4_parser.cc"
         break;
 
-      case 174: // "boolean"
-#line 253 "dhcp4_parser.yy"
+      case 176: // "boolean"
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < bool > (); }
 #line 426 "dhcp4_parser.cc"
         break;
 
-      case 191: // value
-#line 253 "dhcp4_parser.yy"
+      case 193: // value
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 432 "dhcp4_parser.cc"
         break;
 
-      case 195: // map_value
-#line 253 "dhcp4_parser.yy"
+      case 197: // map_value
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 438 "dhcp4_parser.cc"
         break;
 
-      case 239: // socket_type
-#line 253 "dhcp4_parser.yy"
+      case 243: // socket_type
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 444 "dhcp4_parser.cc"
         break;
 
-      case 242: // outbound_interface_value
-#line 253 "dhcp4_parser.yy"
+      case 246: // outbound_interface_value
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 450 "dhcp4_parser.cc"
         break;
 
-      case 264: // db_type
-#line 253 "dhcp4_parser.yy"
+      case 268: // db_type
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 456 "dhcp4_parser.cc"
         break;
 
-      case 350: // hr_mode
-#line 253 "dhcp4_parser.yy"
+      case 354: // hr_mode
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 462 "dhcp4_parser.cc"
         break;
 
-      case 499: // ncr_protocol_value
-#line 253 "dhcp4_parser.yy"
+      case 503: // ncr_protocol_value
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 468 "dhcp4_parser.cc"
         break;
 
-      case 506: // replace_client_name_value
-#line 253 "dhcp4_parser.yy"
+      case 510: // replace_client_name_value
+#line 255 "dhcp4_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 474 "dhcp4_parser.cc"
         break;
@@ -687,30 +687,30 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -735,133 +735,133 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 262 "dhcp4_parser.yy"
+#line 264 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 741 "dhcp4_parser.cc"
     break;
 
   case 4:
-#line 263 "dhcp4_parser.yy"
+#line 265 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.CONFIG; }
 #line 747 "dhcp4_parser.cc"
     break;
 
   case 6:
-#line 264 "dhcp4_parser.yy"
+#line 266 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.DHCP4; }
 #line 753 "dhcp4_parser.cc"
     break;
 
   case 8:
-#line 265 "dhcp4_parser.yy"
+#line 267 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 759 "dhcp4_parser.cc"
     break;
 
   case 10:
-#line 266 "dhcp4_parser.yy"
+#line 268 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.SUBNET4; }
 #line 765 "dhcp4_parser.cc"
     break;
 
   case 12:
-#line 267 "dhcp4_parser.yy"
+#line 269 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.POOLS; }
 #line 771 "dhcp4_parser.cc"
     break;
 
   case 14:
-#line 268 "dhcp4_parser.yy"
+#line 270 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 777 "dhcp4_parser.cc"
     break;
 
   case 16:
-#line 269 "dhcp4_parser.yy"
+#line 271 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.DHCP4; }
 #line 783 "dhcp4_parser.cc"
     break;
 
   case 18:
-#line 270 "dhcp4_parser.yy"
+#line 272 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 789 "dhcp4_parser.cc"
     break;
 
   case 20:
-#line 271 "dhcp4_parser.yy"
+#line 273 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 795 "dhcp4_parser.cc"
     break;
 
   case 22:
-#line 272 "dhcp4_parser.yy"
+#line 274 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 801 "dhcp4_parser.cc"
     break;
 
   case 24:
-#line 273 "dhcp4_parser.yy"
+#line 275 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 807 "dhcp4_parser.cc"
     break;
 
   case 26:
-#line 274 "dhcp4_parser.yy"
+#line 276 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.LOGGING; }
 #line 813 "dhcp4_parser.cc"
     break;
 
   case 28:
-#line 275 "dhcp4_parser.yy"
+#line 277 "dhcp4_parser.yy"
     { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 819 "dhcp4_parser.cc"
     break;
 
   case 30:
-#line 283 "dhcp4_parser.yy"
+#line 285 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 825 "dhcp4_parser.cc"
     break;
 
   case 31:
-#line 284 "dhcp4_parser.yy"
+#line 286 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 831 "dhcp4_parser.cc"
     break;
 
   case 32:
-#line 285 "dhcp4_parser.yy"
+#line 287 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 837 "dhcp4_parser.cc"
     break;
 
   case 33:
-#line 286 "dhcp4_parser.yy"
+#line 288 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 843 "dhcp4_parser.cc"
     break;
 
   case 34:
-#line 287 "dhcp4_parser.yy"
+#line 289 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 849 "dhcp4_parser.cc"
     break;
 
   case 35:
-#line 288 "dhcp4_parser.yy"
+#line 290 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 855 "dhcp4_parser.cc"
     break;
 
   case 36:
-#line 289 "dhcp4_parser.yy"
+#line 291 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 861 "dhcp4_parser.cc"
     break;
 
   case 37:
-#line 292 "dhcp4_parser.yy"
+#line 294 "dhcp4_parser.yy"
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -870,7 +870,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 38:
-#line 297 "dhcp4_parser.yy"
+#line 299 "dhcp4_parser.yy"
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -881,7 +881,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 39:
-#line 302 "dhcp4_parser.yy"
+#line 304 "dhcp4_parser.yy"
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -891,13 +891,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 308 "dhcp4_parser.yy"
+#line 310 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 897 "dhcp4_parser.cc"
     break;
 
   case 43:
-#line 315 "dhcp4_parser.yy"
+#line 317 "dhcp4_parser.yy"
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -906,7 +906,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 44:
-#line 319 "dhcp4_parser.yy"
+#line 321 "dhcp4_parser.yy"
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -916,7 +916,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 45:
-#line 326 "dhcp4_parser.yy"
+#line 328 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -925,7 +925,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 329 "dhcp4_parser.yy"
+#line 331 "dhcp4_parser.yy"
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -933,7 +933,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 49:
-#line 337 "dhcp4_parser.yy"
+#line 339 "dhcp4_parser.yy"
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -942,7 +942,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 50:
-#line 341 "dhcp4_parser.yy"
+#line 343 "dhcp4_parser.yy"
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -951,7 +951,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 348 "dhcp4_parser.yy"
+#line 350 "dhcp4_parser.yy"
     {
     // List parsing about to start
 }
@@ -959,7 +959,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 350 "dhcp4_parser.yy"
+#line 352 "dhcp4_parser.yy"
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -968,7 +968,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 55:
-#line 359 "dhcp4_parser.yy"
+#line 361 "dhcp4_parser.yy"
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -977,7 +977,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 56:
-#line 363 "dhcp4_parser.yy"
+#line 365 "dhcp4_parser.yy"
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -986,7 +986,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 374 "dhcp4_parser.yy"
+#line 376 "dhcp4_parser.yy"
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -997,7 +997,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 384 "dhcp4_parser.yy"
+#line 386 "dhcp4_parser.yy"
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1008,7 +1008,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 389 "dhcp4_parser.yy"
+#line 391 "dhcp4_parser.yy"
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1021,7 +1021,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 68:
-#line 413 "dhcp4_parser.yy"
+#line 415 "dhcp4_parser.yy"
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1034,7 +1034,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 69:
-#line 420 "dhcp4_parser.yy"
+#line 422 "dhcp4_parser.yy"
     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1044,7 +1044,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 70:
-#line 428 "dhcp4_parser.yy"
+#line 430 "dhcp4_parser.yy"
     {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1054,7 +1054,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71:
-#line 432 "dhcp4_parser.yy"
+#line 434 "dhcp4_parser.yy"
     {
     // No global parameter is required
     // parsing completed
@@ -1063,7 +1063,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 114:
-#line 485 "dhcp4_parser.yy"
+#line 487 "dhcp4_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("valid-lifetime", prf);
@@ -1072,287 +1072,305 @@ namespace isc { namespace dhcp {
     break;
 
   case 115:
-#line 490 "dhcp4_parser.yy"
+#line 492 "dhcp4_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("renew-timer", prf);
+    ctx.stack_.back()->set("min-valid-lifetime", prf);
 }
 #line 1081 "dhcp4_parser.cc"
     break;
 
   case 116:
-#line 495 "dhcp4_parser.yy"
+#line 497 "dhcp4_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("rebind-timer", prf);
+    ctx.stack_.back()->set("max-valid-lifetime", prf);
 }
 #line 1090 "dhcp4_parser.cc"
     break;
 
   case 117:
-#line 500 "dhcp4_parser.yy"
+#line 502 "dhcp4_parser.yy"
     {
-    ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("calculate-tee-times", ctt);
+    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("renew-timer", prf);
 }
 #line 1099 "dhcp4_parser.cc"
     break;
 
   case 118:
-#line 505 "dhcp4_parser.yy"
+#line 507 "dhcp4_parser.yy"
     {
-    ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("t1-percent", t1);
+    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("rebind-timer", prf);
 }
 #line 1108 "dhcp4_parser.cc"
     break;
 
   case 119:
-#line 510 "dhcp4_parser.yy"
+#line 512 "dhcp4_parser.yy"
     {
-    ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("t2-percent", t2);
+    ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("calculate-tee-times", ctt);
 }
 #line 1117 "dhcp4_parser.cc"
     break;
 
   case 120:
-#line 515 "dhcp4_parser.yy"
+#line 517 "dhcp4_parser.yy"
     {
-    ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("decline-probation-period", dpp);
+    ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("t1-percent", t1);
 }
 #line 1126 "dhcp4_parser.cc"
     break;
 
   case 121:
-#line 520 "dhcp4_parser.yy"
+#line 522 "dhcp4_parser.yy"
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("t2-percent", t2);
 }
-#line 1134 "dhcp4_parser.cc"
+#line 1135 "dhcp4_parser.cc"
     break;
 
   case 122:
-#line 522 "dhcp4_parser.yy"
+#line 527 "dhcp4_parser.yy"
+    {
+    ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("decline-probation-period", dpp);
+}
+#line 1144 "dhcp4_parser.cc"
+    break;
+
+  case 123:
+#line 532 "dhcp4_parser.yy"
+    {
+    ctx.enter(ctx.NO_KEYWORD);
+}
+#line 1152 "dhcp4_parser.cc"
+    break;
+
+  case 124:
+#line 534 "dhcp4_parser.yy"
     {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1144 "dhcp4_parser.cc"
+#line 1162 "dhcp4_parser.cc"
     break;
 
-  case 123:
-#line 528 "dhcp4_parser.yy"
+  case 125:
+#line 540 "dhcp4_parser.yy"
     {
     ElementPtr echo(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("echo-client-id", echo);
 }
-#line 1153 "dhcp4_parser.cc"
+#line 1171 "dhcp4_parser.cc"
     break;
 
-  case 124:
-#line 533 "dhcp4_parser.yy"
+  case 126:
+#line 545 "dhcp4_parser.yy"
     {
     ElementPtr match(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("match-client-id", match);
 }
-#line 1162 "dhcp4_parser.cc"
+#line 1180 "dhcp4_parser.cc"
     break;
 
-  case 125:
-#line 538 "dhcp4_parser.yy"
+  case 127:
+#line 550 "dhcp4_parser.yy"
     {
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("authoritative", prf);
 }
-#line 1171 "dhcp4_parser.cc"
+#line 1189 "dhcp4_parser.cc"
     break;
 
-  case 126:
-#line 544 "dhcp4_parser.yy"
+  case 128:
+#line 556 "dhcp4_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1182 "dhcp4_parser.cc"
+#line 1200 "dhcp4_parser.cc"
     break;
 
-  case 127:
-#line 549 "dhcp4_parser.yy"
+  case 129:
+#line 561 "dhcp4_parser.yy"
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1192 "dhcp4_parser.cc"
+#line 1210 "dhcp4_parser.cc"
     break;
 
-  case 137:
-#line 568 "dhcp4_parser.yy"
+  case 139:
+#line 580 "dhcp4_parser.yy"
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1202 "dhcp4_parser.cc"
+#line 1220 "dhcp4_parser.cc"
     break;
 
-  case 138:
-#line 572 "dhcp4_parser.yy"
+  case 140:
+#line 584 "dhcp4_parser.yy"
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1211 "dhcp4_parser.cc"
+#line 1229 "dhcp4_parser.cc"
     break;
 
-  case 139:
-#line 577 "dhcp4_parser.yy"
+  case 141:
+#line 589 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1222 "dhcp4_parser.cc"
+#line 1240 "dhcp4_parser.cc"
     break;
 
-  case 140:
-#line 582 "dhcp4_parser.yy"
+  case 142:
+#line 594 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1231 "dhcp4_parser.cc"
+#line 1249 "dhcp4_parser.cc"
     break;
 
-  case 141:
-#line 587 "dhcp4_parser.yy"
+  case 143:
+#line 599 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1239 "dhcp4_parser.cc"
+#line 1257 "dhcp4_parser.cc"
     break;
 
-  case 142:
-#line 589 "dhcp4_parser.yy"
+  case 144:
+#line 601 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1248 "dhcp4_parser.cc"
+#line 1266 "dhcp4_parser.cc"
     break;
 
-  case 143:
-#line 594 "dhcp4_parser.yy"
+  case 145:
+#line 606 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1254 "dhcp4_parser.cc"
+#line 1272 "dhcp4_parser.cc"
     break;
 
-  case 144:
-#line 595 "dhcp4_parser.yy"
+  case 146:
+#line 607 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1260 "dhcp4_parser.cc"
+#line 1278 "dhcp4_parser.cc"
     break;
 
-  case 145:
-#line 598 "dhcp4_parser.yy"
+  case 147:
+#line 610 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
-#line 1268 "dhcp4_parser.cc"
+#line 1286 "dhcp4_parser.cc"
     break;
 
-  case 146:
-#line 600 "dhcp4_parser.yy"
+  case 148:
+#line 612 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1277 "dhcp4_parser.cc"
+#line 1295 "dhcp4_parser.cc"
     break;
 
-  case 147:
-#line 605 "dhcp4_parser.yy"
+  case 149:
+#line 617 "dhcp4_parser.yy"
     {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
-#line 1285 "dhcp4_parser.cc"
+#line 1303 "dhcp4_parser.cc"
     break;
 
-  case 148:
-#line 607 "dhcp4_parser.yy"
+  case 150:
+#line 619 "dhcp4_parser.yy"
     {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
-#line 1293 "dhcp4_parser.cc"
+#line 1311 "dhcp4_parser.cc"
     break;
 
-  case 149:
-#line 611 "dhcp4_parser.yy"
+  case 151:
+#line 623 "dhcp4_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1302 "dhcp4_parser.cc"
+#line 1320 "dhcp4_parser.cc"
     break;
 
-  case 150:
-#line 617 "dhcp4_parser.yy"
+  case 152:
+#line 629 "dhcp4_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1313 "dhcp4_parser.cc"
+#line 1331 "dhcp4_parser.cc"
     break;
 
-  case 151:
-#line 622 "dhcp4_parser.yy"
+  case 153:
+#line 634 "dhcp4_parser.yy"
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1324 "dhcp4_parser.cc"
+#line 1342 "dhcp4_parser.cc"
     break;
 
-  case 152:
-#line 629 "dhcp4_parser.yy"
+  case 154:
+#line 641 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1335 "dhcp4_parser.cc"
+#line 1353 "dhcp4_parser.cc"
     break;
 
-  case 153:
-#line 634 "dhcp4_parser.yy"
+  case 155:
+#line 646 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1344 "dhcp4_parser.cc"
+#line 1362 "dhcp4_parser.cc"
     break;
 
-  case 157:
-#line 644 "dhcp4_parser.yy"
+  case 159:
+#line 656 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1352 "dhcp4_parser.cc"
+#line 1370 "dhcp4_parser.cc"
     break;
 
-  case 158:
-#line 646 "dhcp4_parser.yy"
+  case 160:
+#line 658 "dhcp4_parser.yy"
     {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1368,132 +1386,114 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1372 "dhcp4_parser.cc"
+#line 1390 "dhcp4_parser.cc"
     break;
 
-  case 159:
-#line 662 "dhcp4_parser.yy"
+  case 161:
+#line 674 "dhcp4_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1383 "dhcp4_parser.cc"
+#line 1401 "dhcp4_parser.cc"
     break;
 
-  case 160:
-#line 667 "dhcp4_parser.yy"
+  case 162:
+#line 679 "dhcp4_parser.yy"
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1394 "dhcp4_parser.cc"
+#line 1412 "dhcp4_parser.cc"
     break;
 
-  case 161:
-#line 674 "dhcp4_parser.yy"
+  case 163:
+#line 686 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1405 "dhcp4_parser.cc"
+#line 1423 "dhcp4_parser.cc"
     break;
 
-  case 162:
-#line 679 "dhcp4_parser.yy"
+  case 164:
+#line 691 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1414 "dhcp4_parser.cc"
+#line 1432 "dhcp4_parser.cc"
     break;
 
-  case 167:
-#line 692 "dhcp4_parser.yy"
+  case 169:
+#line 704 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1424 "dhcp4_parser.cc"
+#line 1442 "dhcp4_parser.cc"
     break;
 
-  case 168:
-#line 696 "dhcp4_parser.yy"
+  case 170:
+#line 708 "dhcp4_parser.yy"
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1434 "dhcp4_parser.cc"
+#line 1452 "dhcp4_parser.cc"
     break;
 
-  case 191:
-#line 728 "dhcp4_parser.yy"
+  case 193:
+#line 740 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1442 "dhcp4_parser.cc"
+#line 1460 "dhcp4_parser.cc"
     break;
 
-  case 192:
-#line 730 "dhcp4_parser.yy"
+  case 194:
+#line 742 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1451 "dhcp4_parser.cc"
-    break;
-
-  case 193:
-#line 735 "dhcp4_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1457 "dhcp4_parser.cc"
-    break;
-
-  case 194:
-#line 736 "dhcp4_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1463 "dhcp4_parser.cc"
+#line 1469 "dhcp4_parser.cc"
     break;
 
   case 195:
-#line 737 "dhcp4_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1469 "dhcp4_parser.cc"
+#line 747 "dhcp4_parser.yy"
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
+#line 1475 "dhcp4_parser.cc"
     break;
 
   case 196:
-#line 738 "dhcp4_parser.yy"
-    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1475 "dhcp4_parser.cc"
+#line 748 "dhcp4_parser.yy"
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
+#line 1481 "dhcp4_parser.cc"
     break;
 
   case 197:
-#line 741 "dhcp4_parser.yy"
-    {
-    ctx.enter(ctx.NO_KEYWORD);
-}
-#line 1483 "dhcp4_parser.cc"
+#line 749 "dhcp4_parser.yy"
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
+#line 1487 "dhcp4_parser.cc"
     break;
 
   case 198:
-#line 743 "dhcp4_parser.yy"
-    {
-    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("user", user);
-    ctx.leave();
-}
+#line 750 "dhcp4_parser.yy"
+    { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
 #line 1493 "dhcp4_parser.cc"
     break;
 
   case 199:
-#line 749 "dhcp4_parser.yy"
+#line 753 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1501,17 +1501,17 @@ namespace isc { namespace dhcp {
     break;
 
   case 200:
-#line 751 "dhcp4_parser.yy"
+#line 755 "dhcp4_parser.yy"
     {
-    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("password", pwd);
+    ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
 #line 1511 "dhcp4_parser.cc"
     break;
 
   case 201:
-#line 757 "dhcp4_parser.yy"
+#line 761 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1519,125 +1519,125 @@ namespace isc { namespace dhcp {
     break;
 
   case 202:
-#line 759 "dhcp4_parser.yy"
+#line 763 "dhcp4_parser.yy"
     {
-    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("host", h);
+    ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
 #line 1529 "dhcp4_parser.cc"
     break;
 
   case 203:
-#line 765 "dhcp4_parser.yy"
+#line 769 "dhcp4_parser.yy"
     {
-    ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("port", p);
+    ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1538 "dhcp4_parser.cc"
+#line 1537 "dhcp4_parser.cc"
     break;
 
   case 204:
-#line 770 "dhcp4_parser.yy"
+#line 771 "dhcp4_parser.yy"
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("host", h);
+    ctx.leave();
 }
-#line 1546 "dhcp4_parser.cc"
+#line 1547 "dhcp4_parser.cc"
     break;
 
   case 205:
-#line 772 "dhcp4_parser.yy"
+#line 777 "dhcp4_parser.yy"
     {
-    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("name", name);
-    ctx.leave();
+    ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("port", p);
 }
 #line 1556 "dhcp4_parser.cc"
     break;
 
   case 206:
-#line 778 "dhcp4_parser.yy"
+#line 782 "dhcp4_parser.yy"
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("persist", n);
+    ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1565 "dhcp4_parser.cc"
+#line 1564 "dhcp4_parser.cc"
     break;
 
   case 207:
-#line 783 "dhcp4_parser.yy"
+#line 784 "dhcp4_parser.yy"
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("lfc-interval", n);
+    ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("name", name);
+    ctx.leave();
 }
 #line 1574 "dhcp4_parser.cc"
     break;
 
   case 208:
-#line 788 "dhcp4_parser.yy"
+#line 790 "dhcp4_parser.yy"
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("readonly", n);
+    ctx.stack_.back()->set("persist", n);
 }
 #line 1583 "dhcp4_parser.cc"
     break;
 
   case 209:
-#line 793 "dhcp4_parser.yy"
+#line 795 "dhcp4_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("connect-timeout", n);
+    ctx.stack_.back()->set("lfc-interval", n);
 }
 #line 1592 "dhcp4_parser.cc"
     break;
 
   case 210:
-#line 798 "dhcp4_parser.yy"
+#line 800 "dhcp4_parser.yy"
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("request-timeout", n);
+    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("readonly", n);
 }
 #line 1601 "dhcp4_parser.cc"
     break;
 
   case 211:
-#line 803 "dhcp4_parser.yy"
+#line 805 "dhcp4_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("tcp-keepalive", n);
+    ctx.stack_.back()->set("connect-timeout", n);
 }
 #line 1610 "dhcp4_parser.cc"
     break;
 
   case 212:
-#line 808 "dhcp4_parser.yy"
+#line 810 "dhcp4_parser.yy"
     {
-    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("tcp-nodelay", n);
+    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("request-timeout", n);
 }
 #line 1619 "dhcp4_parser.cc"
     break;
 
   case 213:
-#line 813 "dhcp4_parser.yy"
+#line 815 "dhcp4_parser.yy"
     {
-    ctx.enter(ctx.NO_KEYWORD);
+    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1627 "dhcp4_parser.cc"
+#line 1628 "dhcp4_parser.cc"
     break;
 
   case 214:
-#line 815 "dhcp4_parser.yy"
+#line 820 "dhcp4_parser.yy"
     {
-    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("contact-points", cp);
-    ctx.leave();
+    ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("tcp-nodelay", n);
 }
 #line 1637 "dhcp4_parser.cc"
     break;
 
   case 215:
-#line 821 "dhcp4_parser.yy"
+#line 825 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1645,17 +1645,17 @@ namespace isc { namespace dhcp {
     break;
 
   case 216:
-#line 823 "dhcp4_parser.yy"
+#line 827 "dhcp4_parser.yy"
     {
-    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("keyspace", ks);
+    ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
 #line 1655 "dhcp4_parser.cc"
     break;
 
   case 217:
-#line 829 "dhcp4_parser.yy"
+#line 833 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1663,17 +1663,17 @@ namespace isc { namespace dhcp {
     break;
 
   case 218:
-#line 831 "dhcp4_parser.yy"
+#line 835 "dhcp4_parser.yy"
     {
-    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("consistency", c);
+    ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
 #line 1673 "dhcp4_parser.cc"
     break;
 
   case 219:
-#line 837 "dhcp4_parser.yy"
+#line 841 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
@@ -1681,300 +1681,318 @@ namespace isc { namespace dhcp {
     break;
 
   case 220:
-#line 839 "dhcp4_parser.yy"
+#line 843 "dhcp4_parser.yy"
     {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("serial-consistency", c);
+    ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
 #line 1691 "dhcp4_parser.cc"
     break;
 
   case 221:
-#line 845 "dhcp4_parser.yy"
+#line 849 "dhcp4_parser.yy"
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("max-reconnect-tries", n);
+    ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1700 "dhcp4_parser.cc"
+#line 1699 "dhcp4_parser.cc"
     break;
 
   case 222:
-#line 850 "dhcp4_parser.yy"
+#line 851 "dhcp4_parser.yy"
     {
-    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("reconnect-wait-time", n);
+    ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("serial-consistency", c);
+    ctx.leave();
 }
 #line 1709 "dhcp4_parser.cc"
     break;
 
   case 223:
-#line 855 "dhcp4_parser.yy"
+#line 857 "dhcp4_parser.yy"
     {
-    ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("host-reservation-identifiers", l);
-    ctx.stack_.push_back(l);
-    ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
+    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1720 "dhcp4_parser.cc"
+#line 1718 "dhcp4_parser.cc"
     break;
 
   case 224:
-#line 860 "dhcp4_parser.yy"
+#line 862 "dhcp4_parser.yy"
     {
-    ctx.stack_.pop_back();
-    ctx.leave();
+    ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1729 "dhcp4_parser.cc"
+#line 1727 "dhcp4_parser.cc"
     break;
 
-  case 232:
-#line 876 "dhcp4_parser.yy"
+  case 225:
+#line 867 "dhcp4_parser.yy"
     {
-    ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->add(duid);
+    ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("host-reservation-identifiers", l);
+    ctx.stack_.push_back(l);
+    ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
 #line 1738 "dhcp4_parser.cc"
     break;
 
-  case 233:
-#line 881 "dhcp4_parser.yy"
+  case 226:
+#line 872 "dhcp4_parser.yy"
     {
-    ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->add(hwaddr);
+    ctx.stack_.pop_back();
+    ctx.leave();
 }
 #line 1747 "dhcp4_parser.cc"
     break;
 
   case 234:
-#line 886 "dhcp4_parser.yy"
+#line 888 "dhcp4_parser.yy"
     {
-    ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->add(circuit);
+    ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->add(duid);
 }
 #line 1756 "dhcp4_parser.cc"
     break;
 
   case 235:
-#line 891 "dhcp4_parser.yy"
+#line 893 "dhcp4_parser.yy"
     {
-    ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->add(client);
+    ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->add(hwaddr);
 }
 #line 1765 "dhcp4_parser.cc"
     break;
 
   case 236:
-#line 896 "dhcp4_parser.yy"
+#line 898 "dhcp4_parser.yy"
     {
-    ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->add(flex_id);
+    ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->add(circuit);
 }
 #line 1774 "dhcp4_parser.cc"
     break;
 
   case 237:
-#line 901 "dhcp4_parser.yy"
+#line 903 "dhcp4_parser.yy"
+    {
+    ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->add(client);
+}
+#line 1783 "dhcp4_parser.cc"
+    break;
+
+  case 238:
+#line 908 "dhcp4_parser.yy"
+    {
+    ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->add(flex_id);
+}
+#line 1792 "dhcp4_parser.cc"
+    break;
+
+  case 239:
+#line 913 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1785 "dhcp4_parser.cc"
+#line 1803 "dhcp4_parser.cc"
     break;
 
-  case 238:
-#line 906 "dhcp4_parser.yy"
+  case 240:
+#line 918 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1794 "dhcp4_parser.cc"
+#line 1812 "dhcp4_parser.cc"
     break;
 
-  case 243:
-#line 919 "dhcp4_parser.yy"
+  case 245:
+#line 931 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1804 "dhcp4_parser.cc"
+#line 1822 "dhcp4_parser.cc"
     break;
 
-  case 244:
-#line 923 "dhcp4_parser.yy"
+  case 246:
+#line 935 "dhcp4_parser.yy"
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1814 "dhcp4_parser.cc"
+#line 1832 "dhcp4_parser.cc"
     break;
 
-  case 245:
-#line 929 "dhcp4_parser.yy"
+  case 247:
+#line 941 "dhcp4_parser.yy"
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1824 "dhcp4_parser.cc"
+#line 1842 "dhcp4_parser.cc"
     break;
 
-  case 246:
-#line 933 "dhcp4_parser.yy"
+  case 248:
+#line 945 "dhcp4_parser.yy"
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1834 "dhcp4_parser.cc"
+#line 1852 "dhcp4_parser.cc"
     break;
 
-  case 252:
-#line 948 "dhcp4_parser.yy"
+  case 254:
+#line 960 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1842 "dhcp4_parser.cc"
+#line 1860 "dhcp4_parser.cc"
     break;
 
-  case 253:
-#line 950 "dhcp4_parser.yy"
+  case 255:
+#line 962 "dhcp4_parser.yy"
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1852 "dhcp4_parser.cc"
+#line 1870 "dhcp4_parser.cc"
     break;
 
-  case 254:
-#line 956 "dhcp4_parser.yy"
+  case 256:
+#line 968 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1860 "dhcp4_parser.cc"
+#line 1878 "dhcp4_parser.cc"
     break;
 
-  case 255:
-#line 958 "dhcp4_parser.yy"
+  case 257:
+#line 970 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1869 "dhcp4_parser.cc"
+#line 1887 "dhcp4_parser.cc"
     break;
 
-  case 256:
-#line 964 "dhcp4_parser.yy"
+  case 258:
+#line 976 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1880 "dhcp4_parser.cc"
+#line 1898 "dhcp4_parser.cc"
     break;
 
-  case 257:
-#line 969 "dhcp4_parser.yy"
+  case 259:
+#line 981 "dhcp4_parser.yy"
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1890 "dhcp4_parser.cc"
+#line 1908 "dhcp4_parser.cc"
     break;
 
-  case 266:
-#line 987 "dhcp4_parser.yy"
+  case 268:
+#line 999 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1899 "dhcp4_parser.cc"
+#line 1917 "dhcp4_parser.cc"
     break;
 
-  case 267:
-#line 992 "dhcp4_parser.yy"
+  case 269:
+#line 1004 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 1908 "dhcp4_parser.cc"
+#line 1926 "dhcp4_parser.cc"
     break;
 
-  case 268:
-#line 997 "dhcp4_parser.yy"
+  case 270:
+#line 1009 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1917 "dhcp4_parser.cc"
+#line 1935 "dhcp4_parser.cc"
     break;
 
-  case 269:
-#line 1002 "dhcp4_parser.yy"
+  case 271:
+#line 1014 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1926 "dhcp4_parser.cc"
+#line 1944 "dhcp4_parser.cc"
     break;
 
-  case 270:
-#line 1007 "dhcp4_parser.yy"
+  case 272:
+#line 1019 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1935 "dhcp4_parser.cc"
+#line 1953 "dhcp4_parser.cc"
     break;
 
-  case 271:
-#line 1012 "dhcp4_parser.yy"
+  case 273:
+#line 1024 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1944 "dhcp4_parser.cc"
+#line 1962 "dhcp4_parser.cc"
     break;
 
-  case 272:
-#line 1020 "dhcp4_parser.yy"
+  case 274:
+#line 1032 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet4", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET4);
 }
-#line 1955 "dhcp4_parser.cc"
+#line 1973 "dhcp4_parser.cc"
     break;
 
-  case 273:
-#line 1025 "dhcp4_parser.yy"
+  case 275:
+#line 1037 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1964 "dhcp4_parser.cc"
+#line 1982 "dhcp4_parser.cc"
     break;
 
-  case 278:
-#line 1045 "dhcp4_parser.yy"
+  case 280:
+#line 1057 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1974 "dhcp4_parser.cc"
+#line 1992 "dhcp4_parser.cc"
     break;
 
-  case 279:
-#line 1049 "dhcp4_parser.yy"
+  case 281:
+#line 1061 "dhcp4_parser.yy"
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1996,294 +2014,294 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2000 "dhcp4_parser.cc"
+#line 2018 "dhcp4_parser.cc"
     break;
 
-  case 280:
-#line 1071 "dhcp4_parser.yy"
+  case 282:
+#line 1083 "dhcp4_parser.yy"
     {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2010 "dhcp4_parser.cc"
+#line 2028 "dhcp4_parser.cc"
     break;
 
-  case 281:
-#line 1075 "dhcp4_parser.yy"
+  case 283:
+#line 1087 "dhcp4_parser.yy"
     {
     // The subnet subnet4 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2020 "dhcp4_parser.cc"
+#line 2038 "dhcp4_parser.cc"
     break;
 
-  case 311:
-#line 1116 "dhcp4_parser.yy"
+  case 315:
+#line 1130 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2028 "dhcp4_parser.cc"
+#line 2046 "dhcp4_parser.cc"
     break;
 
-  case 312:
-#line 1118 "dhcp4_parser.yy"
+  case 316:
+#line 1132 "dhcp4_parser.yy"
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2038 "dhcp4_parser.cc"
+#line 2056 "dhcp4_parser.cc"
     break;
 
-  case 313:
-#line 1124 "dhcp4_parser.yy"
+  case 317:
+#line 1138 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2046 "dhcp4_parser.cc"
+#line 2064 "dhcp4_parser.cc"
     break;
 
-  case 314:
-#line 1126 "dhcp4_parser.yy"
+  case 318:
+#line 1140 "dhcp4_parser.yy"
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface", iface);
     ctx.leave();
 }
-#line 2056 "dhcp4_parser.cc"
+#line 2074 "dhcp4_parser.cc"
     break;
 
-  case 315:
-#line 1132 "dhcp4_parser.yy"
+  case 319:
+#line 1146 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2064 "dhcp4_parser.cc"
+#line 2082 "dhcp4_parser.cc"
     break;
 
-  case 316:
-#line 1134 "dhcp4_parser.yy"
+  case 320:
+#line 1148 "dhcp4_parser.yy"
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-interface-id", iface);
     ctx.leave();
 }
-#line 2074 "dhcp4_parser.cc"
+#line 2092 "dhcp4_parser.cc"
     break;
 
-  case 317:
-#line 1140 "dhcp4_parser.yy"
+  case 321:
+#line 1154 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2082 "dhcp4_parser.cc"
+#line 2100 "dhcp4_parser.cc"
     break;
 
-  case 318:
-#line 1142 "dhcp4_parser.yy"
+  case 322:
+#line 1156 "dhcp4_parser.yy"
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("4o6-subnet", iface);
     ctx.leave();
 }
-#line 2092 "dhcp4_parser.cc"
+#line 2110 "dhcp4_parser.cc"
     break;
 
-  case 319:
-#line 1148 "dhcp4_parser.yy"
+  case 323:
+#line 1162 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2100 "dhcp4_parser.cc"
+#line 2118 "dhcp4_parser.cc"
     break;
 
-  case 320:
-#line 1150 "dhcp4_parser.yy"
+  case 324:
+#line 1164 "dhcp4_parser.yy"
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2110 "dhcp4_parser.cc"
+#line 2128 "dhcp4_parser.cc"
     break;
 
-  case 321:
-#line 1156 "dhcp4_parser.yy"
+  case 325:
+#line 1170 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2118 "dhcp4_parser.cc"
+#line 2136 "dhcp4_parser.cc"
     break;
 
-  case 322:
-#line 1158 "dhcp4_parser.yy"
+  case 326:
+#line 1172 "dhcp4_parser.yy"
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2128 "dhcp4_parser.cc"
+#line 2146 "dhcp4_parser.cc"
     break;
 
-  case 323:
-#line 1164 "dhcp4_parser.yy"
+  case 327:
+#line 1178 "dhcp4_parser.yy"
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2139 "dhcp4_parser.cc"
+#line 2157 "dhcp4_parser.cc"
     break;
 
-  case 324:
-#line 1169 "dhcp4_parser.yy"
+  case 328:
+#line 1183 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2148 "dhcp4_parser.cc"
+#line 2166 "dhcp4_parser.cc"
     break;
 
-  case 325:
-#line 1174 "dhcp4_parser.yy"
+  case 329:
+#line 1188 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2156 "dhcp4_parser.cc"
+#line 2174 "dhcp4_parser.cc"
     break;
 
-  case 326:
-#line 1176 "dhcp4_parser.yy"
+  case 330:
+#line 1190 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2165 "dhcp4_parser.cc"
+#line 2183 "dhcp4_parser.cc"
     break;
 
-  case 327:
-#line 1181 "dhcp4_parser.yy"
+  case 331:
+#line 1195 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2171 "dhcp4_parser.cc"
+#line 2189 "dhcp4_parser.cc"
     break;
 
-  case 328:
-#line 1182 "dhcp4_parser.yy"
+  case 332:
+#line 1196 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2177 "dhcp4_parser.cc"
+#line 2195 "dhcp4_parser.cc"
     break;
 
-  case 329:
-#line 1183 "dhcp4_parser.yy"
+  case 333:
+#line 1197 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2183 "dhcp4_parser.cc"
+#line 2201 "dhcp4_parser.cc"
     break;
 
-  case 330:
-#line 1184 "dhcp4_parser.yy"
+  case 334:
+#line 1198 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2189 "dhcp4_parser.cc"
+#line 2207 "dhcp4_parser.cc"
     break;
 
-  case 331:
-#line 1187 "dhcp4_parser.yy"
+  case 335:
+#line 1201 "dhcp4_parser.yy"
     {
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2198 "dhcp4_parser.cc"
+#line 2216 "dhcp4_parser.cc"
     break;
 
-  case 332:
-#line 1194 "dhcp4_parser.yy"
+  case 336:
+#line 1208 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2209 "dhcp4_parser.cc"
+#line 2227 "dhcp4_parser.cc"
     break;
 
-  case 333:
-#line 1199 "dhcp4_parser.yy"
+  case 337:
+#line 1213 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2218 "dhcp4_parser.cc"
+#line 2236 "dhcp4_parser.cc"
     break;
 
-  case 338:
-#line 1214 "dhcp4_parser.yy"
+  case 342:
+#line 1228 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2228 "dhcp4_parser.cc"
+#line 2246 "dhcp4_parser.cc"
     break;
 
-  case 339:
-#line 1218 "dhcp4_parser.yy"
+  case 343:
+#line 1232 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
 }
-#line 2236 "dhcp4_parser.cc"
+#line 2254 "dhcp4_parser.cc"
     break;
 
-  case 364:
-#line 1254 "dhcp4_parser.yy"
+  case 370:
+#line 1270 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2247 "dhcp4_parser.cc"
+#line 2265 "dhcp4_parser.cc"
     break;
 
-  case 365:
-#line 1259 "dhcp4_parser.yy"
+  case 371:
+#line 1275 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2256 "dhcp4_parser.cc"
+#line 2274 "dhcp4_parser.cc"
     break;
 
-  case 366:
-#line 1267 "dhcp4_parser.yy"
+  case 372:
+#line 1283 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2265 "dhcp4_parser.cc"
+#line 2283 "dhcp4_parser.cc"
     break;
 
-  case 367:
-#line 1270 "dhcp4_parser.yy"
+  case 373:
+#line 1286 "dhcp4_parser.yy"
     {
     // parsing completed
 }
-#line 2273 "dhcp4_parser.cc"
+#line 2291 "dhcp4_parser.cc"
     break;
 
-  case 372:
-#line 1286 "dhcp4_parser.yy"
+  case 378:
+#line 1302 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2283 "dhcp4_parser.cc"
+#line 2301 "dhcp4_parser.cc"
     break;
 
-  case 373:
-#line 1290 "dhcp4_parser.yy"
+  case 379:
+#line 1306 "dhcp4_parser.yy"
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2291,21 +2309,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2295 "dhcp4_parser.cc"
+#line 2313 "dhcp4_parser.cc"
     break;
 
-  case 374:
-#line 1301 "dhcp4_parser.yy"
+  case 380:
+#line 1317 "dhcp4_parser.yy"
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2305 "dhcp4_parser.cc"
+#line 2323 "dhcp4_parser.cc"
     break;
 
-  case 375:
-#line 1305 "dhcp4_parser.yy"
+  case 381:
+#line 1321 "dhcp4_parser.yy"
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2313,281 +2331,281 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2317 "dhcp4_parser.cc"
+#line 2335 "dhcp4_parser.cc"
     break;
 
-  case 391:
-#line 1337 "dhcp4_parser.yy"
+  case 397:
+#line 1353 "dhcp4_parser.yy"
     {
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2326 "dhcp4_parser.cc"
+#line 2344 "dhcp4_parser.cc"
     break;
 
-  case 393:
-#line 1344 "dhcp4_parser.yy"
+  case 399:
+#line 1360 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2334 "dhcp4_parser.cc"
+#line 2352 "dhcp4_parser.cc"
     break;
 
-  case 394:
-#line 1346 "dhcp4_parser.yy"
+  case 400:
+#line 1362 "dhcp4_parser.yy"
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2344 "dhcp4_parser.cc"
+#line 2362 "dhcp4_parser.cc"
     break;
 
-  case 395:
-#line 1352 "dhcp4_parser.yy"
+  case 401:
+#line 1368 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2352 "dhcp4_parser.cc"
+#line 2370 "dhcp4_parser.cc"
     break;
 
-  case 396:
-#line 1354 "dhcp4_parser.yy"
+  case 402:
+#line 1370 "dhcp4_parser.yy"
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2362 "dhcp4_parser.cc"
+#line 2380 "dhcp4_parser.cc"
     break;
 
-  case 397:
-#line 1360 "dhcp4_parser.yy"
+  case 403:
+#line 1376 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2370 "dhcp4_parser.cc"
+#line 2388 "dhcp4_parser.cc"
     break;
 
-  case 398:
-#line 1362 "dhcp4_parser.yy"
+  case 404:
+#line 1378 "dhcp4_parser.yy"
     {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2380 "dhcp4_parser.cc"
+#line 2398 "dhcp4_parser.cc"
     break;
 
-  case 400:
-#line 1370 "dhcp4_parser.yy"
+  case 406:
+#line 1386 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2388 "dhcp4_parser.cc"
+#line 2406 "dhcp4_parser.cc"
     break;
 
-  case 401:
-#line 1372 "dhcp4_parser.yy"
+  case 407:
+#line 1388 "dhcp4_parser.yy"
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2398 "dhcp4_parser.cc"
+#line 2416 "dhcp4_parser.cc"
     break;
 
-  case 402:
-#line 1378 "dhcp4_parser.yy"
+  case 408:
+#line 1394 "dhcp4_parser.yy"
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2407 "dhcp4_parser.cc"
+#line 2425 "dhcp4_parser.cc"
     break;
 
-  case 403:
-#line 1387 "dhcp4_parser.yy"
+  case 409:
+#line 1403 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2418 "dhcp4_parser.cc"
+#line 2436 "dhcp4_parser.cc"
     break;
 
-  case 404:
-#line 1392 "dhcp4_parser.yy"
+  case 410:
+#line 1408 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2427 "dhcp4_parser.cc"
+#line 2445 "dhcp4_parser.cc"
     break;
 
-  case 409:
-#line 1411 "dhcp4_parser.yy"
+  case 415:
+#line 1427 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2437 "dhcp4_parser.cc"
+#line 2455 "dhcp4_parser.cc"
     break;
 
-  case 410:
-#line 1415 "dhcp4_parser.yy"
+  case 416:
+#line 1431 "dhcp4_parser.yy"
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2446 "dhcp4_parser.cc"
+#line 2464 "dhcp4_parser.cc"
     break;
 
-  case 411:
-#line 1423 "dhcp4_parser.yy"
+  case 417:
+#line 1439 "dhcp4_parser.yy"
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2456 "dhcp4_parser.cc"
+#line 2474 "dhcp4_parser.cc"
     break;
 
-  case 412:
-#line 1427 "dhcp4_parser.yy"
+  case 418:
+#line 1443 "dhcp4_parser.yy"
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2465 "dhcp4_parser.cc"
+#line 2483 "dhcp4_parser.cc"
     break;
 
-  case 427:
-#line 1460 "dhcp4_parser.yy"
+  case 433:
+#line 1476 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2473 "dhcp4_parser.cc"
+#line 2491 "dhcp4_parser.cc"
     break;
 
-  case 428:
-#line 1462 "dhcp4_parser.yy"
+  case 434:
+#line 1478 "dhcp4_parser.yy"
     {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2483 "dhcp4_parser.cc"
+#line 2501 "dhcp4_parser.cc"
     break;
 
-  case 431:
-#line 1472 "dhcp4_parser.yy"
+  case 437:
+#line 1488 "dhcp4_parser.yy"
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2492 "dhcp4_parser.cc"
+#line 2510 "dhcp4_parser.cc"
     break;
 
-  case 432:
-#line 1477 "dhcp4_parser.yy"
+  case 438:
+#line 1493 "dhcp4_parser.yy"
     {
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2501 "dhcp4_parser.cc"
+#line 2519 "dhcp4_parser.cc"
     break;
 
-  case 433:
-#line 1485 "dhcp4_parser.yy"
+  case 439:
+#line 1501 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2512 "dhcp4_parser.cc"
+#line 2530 "dhcp4_parser.cc"
     break;
 
-  case 434:
-#line 1490 "dhcp4_parser.yy"
+  case 440:
+#line 1506 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2521 "dhcp4_parser.cc"
+#line 2539 "dhcp4_parser.cc"
     break;
 
-  case 439:
-#line 1505 "dhcp4_parser.yy"
+  case 445:
+#line 1521 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2531 "dhcp4_parser.cc"
+#line 2549 "dhcp4_parser.cc"
     break;
 
-  case 440:
-#line 1509 "dhcp4_parser.yy"
+  case 446:
+#line 1525 "dhcp4_parser.yy"
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2541 "dhcp4_parser.cc"
+#line 2559 "dhcp4_parser.cc"
     break;
 
-  case 441:
-#line 1515 "dhcp4_parser.yy"
+  case 447:
+#line 1531 "dhcp4_parser.yy"
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2551 "dhcp4_parser.cc"
+#line 2569 "dhcp4_parser.cc"
     break;
 
-  case 442:
-#line 1519 "dhcp4_parser.yy"
+  case 448:
+#line 1535 "dhcp4_parser.yy"
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2561 "dhcp4_parser.cc"
+#line 2579 "dhcp4_parser.cc"
     break;
 
-  case 452:
-#line 1538 "dhcp4_parser.yy"
+  case 458:
+#line 1554 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2569 "dhcp4_parser.cc"
+#line 2587 "dhcp4_parser.cc"
     break;
 
-  case 453:
-#line 1540 "dhcp4_parser.yy"
+  case 459:
+#line 1556 "dhcp4_parser.yy"
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2579 "dhcp4_parser.cc"
+#line 2597 "dhcp4_parser.cc"
     break;
 
-  case 454:
-#line 1546 "dhcp4_parser.yy"
+  case 460:
+#line 1562 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2587 "dhcp4_parser.cc"
+#line 2605 "dhcp4_parser.cc"
     break;
 
-  case 455:
-#line 1548 "dhcp4_parser.yy"
+  case 461:
+#line 1564 "dhcp4_parser.yy"
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2610,19 +2628,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2614 "dhcp4_parser.cc"
+#line 2632 "dhcp4_parser.cc"
     break;
 
-  case 456:
-#line 1571 "dhcp4_parser.yy"
+  case 462:
+#line 1587 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2622 "dhcp4_parser.cc"
+#line 2640 "dhcp4_parser.cc"
     break;
 
-  case 457:
-#line 1573 "dhcp4_parser.yy"
+  case 463:
+#line 1589 "dhcp4_parser.yy"
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2647,449 +2665,449 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2651 "dhcp4_parser.cc"
+#line 2669 "dhcp4_parser.cc"
     break;
 
-  case 458:
-#line 1601 "dhcp4_parser.yy"
+  case 464:
+#line 1617 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2662 "dhcp4_parser.cc"
+#line 2680 "dhcp4_parser.cc"
     break;
 
-  case 459:
-#line 1606 "dhcp4_parser.yy"
+  case 465:
+#line 1622 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2671 "dhcp4_parser.cc"
+#line 2689 "dhcp4_parser.cc"
     break;
 
-  case 464:
-#line 1619 "dhcp4_parser.yy"
+  case 470:
+#line 1635 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2681 "dhcp4_parser.cc"
+#line 2699 "dhcp4_parser.cc"
     break;
 
-  case 465:
-#line 1623 "dhcp4_parser.yy"
+  case 471:
+#line 1639 "dhcp4_parser.yy"
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2690 "dhcp4_parser.cc"
+#line 2708 "dhcp4_parser.cc"
     break;
 
-  case 466:
-#line 1628 "dhcp4_parser.yy"
+  case 472:
+#line 1644 "dhcp4_parser.yy"
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2700 "dhcp4_parser.cc"
+#line 2718 "dhcp4_parser.cc"
     break;
 
-  case 467:
-#line 1632 "dhcp4_parser.yy"
+  case 473:
+#line 1648 "dhcp4_parser.yy"
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2709 "dhcp4_parser.cc"
+#line 2727 "dhcp4_parser.cc"
     break;
 
-  case 487:
-#line 1663 "dhcp4_parser.yy"
+  case 493:
+#line 1679 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2717 "dhcp4_parser.cc"
+#line 2735 "dhcp4_parser.cc"
     break;
 
-  case 488:
-#line 1665 "dhcp4_parser.yy"
+  case 494:
+#line 1681 "dhcp4_parser.yy"
     {
     ElementPtr next_server(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("next-server", next_server);
     ctx.leave();
 }
-#line 2727 "dhcp4_parser.cc"
+#line 2745 "dhcp4_parser.cc"
     break;
 
-  case 489:
-#line 1671 "dhcp4_parser.yy"
+  case 495:
+#line 1687 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2735 "dhcp4_parser.cc"
+#line 2753 "dhcp4_parser.cc"
     break;
 
-  case 490:
-#line 1673 "dhcp4_parser.yy"
+  case 496:
+#line 1689 "dhcp4_parser.yy"
     {
     ElementPtr srv(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-hostname", srv);
     ctx.leave();
 }
-#line 2745 "dhcp4_parser.cc"
+#line 2763 "dhcp4_parser.cc"
     break;
 
-  case 491:
-#line 1679 "dhcp4_parser.yy"
+  case 497:
+#line 1695 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2753 "dhcp4_parser.cc"
+#line 2771 "dhcp4_parser.cc"
     break;
 
-  case 492:
-#line 1681 "dhcp4_parser.yy"
+  case 498:
+#line 1697 "dhcp4_parser.yy"
     {
     ElementPtr bootfile(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("boot-file-name", bootfile);
     ctx.leave();
 }
-#line 2763 "dhcp4_parser.cc"
+#line 2781 "dhcp4_parser.cc"
     break;
 
-  case 493:
-#line 1687 "dhcp4_parser.yy"
+  case 499:
+#line 1703 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2771 "dhcp4_parser.cc"
+#line 2789 "dhcp4_parser.cc"
     break;
 
-  case 494:
-#line 1689 "dhcp4_parser.yy"
+  case 500:
+#line 1705 "dhcp4_parser.yy"
     {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2781 "dhcp4_parser.cc"
+#line 2799 "dhcp4_parser.cc"
     break;
 
-  case 495:
-#line 1695 "dhcp4_parser.yy"
+  case 501:
+#line 1711 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2792 "dhcp4_parser.cc"
+#line 2810 "dhcp4_parser.cc"
     break;
 
-  case 496:
-#line 1700 "dhcp4_parser.yy"
+  case 502:
+#line 1716 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2801 "dhcp4_parser.cc"
+#line 2819 "dhcp4_parser.cc"
     break;
 
-  case 497:
-#line 1705 "dhcp4_parser.yy"
+  case 503:
+#line 1721 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2809 "dhcp4_parser.cc"
+#line 2827 "dhcp4_parser.cc"
     break;
 
-  case 498:
-#line 1707 "dhcp4_parser.yy"
+  case 504:
+#line 1723 "dhcp4_parser.yy"
     {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2819 "dhcp4_parser.cc"
+#line 2837 "dhcp4_parser.cc"
     break;
 
-  case 499:
-#line 1713 "dhcp4_parser.yy"
+  case 505:
+#line 1729 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2827 "dhcp4_parser.cc"
+#line 2845 "dhcp4_parser.cc"
     break;
 
-  case 500:
-#line 1715 "dhcp4_parser.yy"
+  case 506:
+#line 1731 "dhcp4_parser.yy"
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2837 "dhcp4_parser.cc"
+#line 2855 "dhcp4_parser.cc"
     break;
 
-  case 501:
-#line 1721 "dhcp4_parser.yy"
+  case 507:
+#line 1737 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2845 "dhcp4_parser.cc"
+#line 2863 "dhcp4_parser.cc"
     break;
 
-  case 502:
-#line 1723 "dhcp4_parser.yy"
+  case 508:
+#line 1739 "dhcp4_parser.yy"
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-id", hw);
     ctx.leave();
 }
-#line 2855 "dhcp4_parser.cc"
+#line 2873 "dhcp4_parser.cc"
     break;
 
-  case 503:
-#line 1729 "dhcp4_parser.yy"
+  case 509:
+#line 1745 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2863 "dhcp4_parser.cc"
+#line 2881 "dhcp4_parser.cc"
     break;
 
-  case 504:
-#line 1731 "dhcp4_parser.yy"
+  case 510:
+#line 1747 "dhcp4_parser.yy"
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("circuit-id", hw);
     ctx.leave();
 }
-#line 2873 "dhcp4_parser.cc"
+#line 2891 "dhcp4_parser.cc"
     break;
 
-  case 505:
-#line 1737 "dhcp4_parser.yy"
+  case 511:
+#line 1753 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2881 "dhcp4_parser.cc"
+#line 2899 "dhcp4_parser.cc"
     break;
 
-  case 506:
-#line 1739 "dhcp4_parser.yy"
+  case 512:
+#line 1755 "dhcp4_parser.yy"
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 2891 "dhcp4_parser.cc"
+#line 2909 "dhcp4_parser.cc"
     break;
 
-  case 507:
-#line 1745 "dhcp4_parser.yy"
+  case 513:
+#line 1761 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2899 "dhcp4_parser.cc"
+#line 2917 "dhcp4_parser.cc"
     break;
 
-  case 508:
-#line 1747 "dhcp4_parser.yy"
+  case 514:
+#line 1763 "dhcp4_parser.yy"
     {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2909 "dhcp4_parser.cc"
+#line 2927 "dhcp4_parser.cc"
     break;
 
-  case 509:
-#line 1753 "dhcp4_parser.yy"
+  case 515:
+#line 1769 "dhcp4_parser.yy"
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2920 "dhcp4_parser.cc"
+#line 2938 "dhcp4_parser.cc"
     break;
 
-  case 510:
-#line 1758 "dhcp4_parser.yy"
+  case 516:
+#line 1774 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2929 "dhcp4_parser.cc"
+#line 2947 "dhcp4_parser.cc"
     break;
 
-  case 511:
-#line 1766 "dhcp4_parser.yy"
+  case 517:
+#line 1782 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2940 "dhcp4_parser.cc"
+#line 2958 "dhcp4_parser.cc"
     break;
 
-  case 512:
-#line 1771 "dhcp4_parser.yy"
+  case 518:
+#line 1787 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2949 "dhcp4_parser.cc"
+#line 2967 "dhcp4_parser.cc"
     break;
 
-  case 515:
-#line 1783 "dhcp4_parser.yy"
+  case 521:
+#line 1799 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2960 "dhcp4_parser.cc"
+#line 2978 "dhcp4_parser.cc"
     break;
 
-  case 516:
-#line 1788 "dhcp4_parser.yy"
+  case 522:
+#line 1804 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2969 "dhcp4_parser.cc"
+#line 2987 "dhcp4_parser.cc"
     break;
 
-  case 519:
-#line 1797 "dhcp4_parser.yy"
+  case 525:
+#line 1813 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2979 "dhcp4_parser.cc"
+#line 2997 "dhcp4_parser.cc"
     break;
 
-  case 520:
-#line 1801 "dhcp4_parser.yy"
+  case 526:
+#line 1817 "dhcp4_parser.yy"
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2989 "dhcp4_parser.cc"
+#line 3007 "dhcp4_parser.cc"
     break;
 
-  case 537:
-#line 1830 "dhcp4_parser.yy"
+  case 543:
+#line 1846 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2997 "dhcp4_parser.cc"
+#line 3015 "dhcp4_parser.cc"
     break;
 
-  case 538:
-#line 1832 "dhcp4_parser.yy"
+  case 544:
+#line 1848 "dhcp4_parser.yy"
     {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3007 "dhcp4_parser.cc"
+#line 3025 "dhcp4_parser.cc"
     break;
 
-  case 539:
-#line 1838 "dhcp4_parser.yy"
+  case 545:
+#line 1854 "dhcp4_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3016 "dhcp4_parser.cc"
+#line 3034 "dhcp4_parser.cc"
     break;
 
-  case 540:
-#line 1847 "dhcp4_parser.yy"
+  case 546:
+#line 1863 "dhcp4_parser.yy"
     {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3025 "dhcp4_parser.cc"
+#line 3043 "dhcp4_parser.cc"
     break;
 
-  case 541:
-#line 1854 "dhcp4_parser.yy"
+  case 547:
+#line 1870 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3036 "dhcp4_parser.cc"
+#line 3054 "dhcp4_parser.cc"
     break;
 
-  case 542:
-#line 1859 "dhcp4_parser.yy"
+  case 548:
+#line 1875 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3045 "dhcp4_parser.cc"
+#line 3063 "dhcp4_parser.cc"
     break;
 
-  case 550:
-#line 1875 "dhcp4_parser.yy"
+  case 556:
+#line 1891 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3053 "dhcp4_parser.cc"
+#line 3071 "dhcp4_parser.cc"
     break;
 
-  case 551:
-#line 1877 "dhcp4_parser.yy"
+  case 557:
+#line 1893 "dhcp4_parser.yy"
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3063 "dhcp4_parser.cc"
+#line 3081 "dhcp4_parser.cc"
     break;
 
-  case 552:
-#line 1883 "dhcp4_parser.yy"
+  case 558:
+#line 1899 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3071 "dhcp4_parser.cc"
+#line 3089 "dhcp4_parser.cc"
     break;
 
-  case 553:
-#line 1885 "dhcp4_parser.yy"
+  case 559:
+#line 1901 "dhcp4_parser.yy"
     {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3081 "dhcp4_parser.cc"
+#line 3099 "dhcp4_parser.cc"
     break;
 
-  case 554:
-#line 1894 "dhcp4_parser.yy"
+  case 560:
+#line 1910 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3089 "dhcp4_parser.cc"
+#line 3107 "dhcp4_parser.cc"
     break;
 
-  case 555:
-#line 1896 "dhcp4_parser.yy"
+  case 561:
+#line 1912 "dhcp4_parser.yy"
     {
     ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
     ctx.stack_.back()->set("dhcp-queue-control", qc);
@@ -3123,626 +3141,626 @@ namespace isc { namespace dhcp {
 
     ctx.leave();
 }
-#line 3127 "dhcp4_parser.cc"
+#line 3145 "dhcp4_parser.cc"
     break;
 
-  case 556:
-#line 1932 "dhcp4_parser.yy"
+  case 562:
+#line 1948 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3138 "dhcp4_parser.cc"
+#line 3156 "dhcp4_parser.cc"
     break;
 
-  case 557:
-#line 1937 "dhcp4_parser.yy"
+  case 563:
+#line 1953 "dhcp4_parser.yy"
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3149 "dhcp4_parser.cc"
+#line 3167 "dhcp4_parser.cc"
     break;
 
-  case 558:
-#line 1944 "dhcp4_parser.yy"
+  case 564:
+#line 1960 "dhcp4_parser.yy"
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3159 "dhcp4_parser.cc"
+#line 3177 "dhcp4_parser.cc"
     break;
 
-  case 559:
-#line 1948 "dhcp4_parser.yy"
+  case 565:
+#line 1964 "dhcp4_parser.yy"
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3169 "dhcp4_parser.cc"
+#line 3187 "dhcp4_parser.cc"
     break;
 
-  case 580:
-#line 1978 "dhcp4_parser.yy"
+  case 586:
+#line 1994 "dhcp4_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3178 "dhcp4_parser.cc"
+#line 3196 "dhcp4_parser.cc"
     break;
 
-  case 581:
-#line 1983 "dhcp4_parser.yy"
+  case 587:
+#line 1999 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3186 "dhcp4_parser.cc"
+#line 3204 "dhcp4_parser.cc"
     break;
 
-  case 582:
-#line 1985 "dhcp4_parser.yy"
+  case 588:
+#line 2001 "dhcp4_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3196 "dhcp4_parser.cc"
+#line 3214 "dhcp4_parser.cc"
     break;
 
-  case 583:
-#line 1991 "dhcp4_parser.yy"
+  case 589:
+#line 2007 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3204 "dhcp4_parser.cc"
+#line 3222 "dhcp4_parser.cc"
     break;
 
-  case 584:
-#line 1993 "dhcp4_parser.yy"
+  case 590:
+#line 2009 "dhcp4_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3214 "dhcp4_parser.cc"
+#line 3232 "dhcp4_parser.cc"
     break;
 
-  case 585:
-#line 1999 "dhcp4_parser.yy"
+  case 591:
+#line 2015 "dhcp4_parser.yy"
     {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3223 "dhcp4_parser.cc"
+#line 3241 "dhcp4_parser.cc"
     break;
 
-  case 586:
-#line 2004 "dhcp4_parser.yy"
+  case 592:
+#line 2020 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3231 "dhcp4_parser.cc"
+#line 3249 "dhcp4_parser.cc"
     break;
 
-  case 587:
-#line 2006 "dhcp4_parser.yy"
+  case 593:
+#line 2022 "dhcp4_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3241 "dhcp4_parser.cc"
+#line 3259 "dhcp4_parser.cc"
     break;
 
-  case 588:
-#line 2012 "dhcp4_parser.yy"
+  case 594:
+#line 2028 "dhcp4_parser.yy"
     {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3250 "dhcp4_parser.cc"
+#line 3268 "dhcp4_parser.cc"
     break;
 
-  case 589:
-#line 2017 "dhcp4_parser.yy"
+  case 595:
+#line 2033 "dhcp4_parser.yy"
     {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3259 "dhcp4_parser.cc"
+#line 3277 "dhcp4_parser.cc"
     break;
 
-  case 590:
-#line 2022 "dhcp4_parser.yy"
+  case 596:
+#line 2038 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3267 "dhcp4_parser.cc"
+#line 3285 "dhcp4_parser.cc"
     break;
 
-  case 591:
-#line 2024 "dhcp4_parser.yy"
+  case 597:
+#line 2040 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3276 "dhcp4_parser.cc"
+#line 3294 "dhcp4_parser.cc"
     break;
 
-  case 592:
-#line 2030 "dhcp4_parser.yy"
+  case 598:
+#line 2046 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3282 "dhcp4_parser.cc"
+#line 3300 "dhcp4_parser.cc"
     break;
 
-  case 593:
-#line 2031 "dhcp4_parser.yy"
+  case 599:
+#line 2047 "dhcp4_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3288 "dhcp4_parser.cc"
+#line 3306 "dhcp4_parser.cc"
     break;
 
-  case 594:
-#line 2034 "dhcp4_parser.yy"
+  case 600:
+#line 2050 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3296 "dhcp4_parser.cc"
+#line 3314 "dhcp4_parser.cc"
     break;
 
-  case 595:
-#line 2036 "dhcp4_parser.yy"
+  case 601:
+#line 2052 "dhcp4_parser.yy"
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3306 "dhcp4_parser.cc"
+#line 3324 "dhcp4_parser.cc"
     break;
 
-  case 596:
-#line 2042 "dhcp4_parser.yy"
+  case 602:
+#line 2058 "dhcp4_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3315 "dhcp4_parser.cc"
+#line 3333 "dhcp4_parser.cc"
     break;
 
-  case 597:
-#line 2047 "dhcp4_parser.yy"
+  case 603:
+#line 2063 "dhcp4_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3324 "dhcp4_parser.cc"
+#line 3342 "dhcp4_parser.cc"
     break;
 
-  case 598:
-#line 2052 "dhcp4_parser.yy"
+  case 604:
+#line 2068 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3332 "dhcp4_parser.cc"
+#line 3350 "dhcp4_parser.cc"
     break;
 
-  case 599:
-#line 2054 "dhcp4_parser.yy"
+  case 605:
+#line 2070 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3341 "dhcp4_parser.cc"
+#line 3359 "dhcp4_parser.cc"
     break;
 
-  case 600:
-#line 2060 "dhcp4_parser.yy"
+  case 606:
+#line 2076 "dhcp4_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3349 "dhcp4_parser.cc"
+#line 3367 "dhcp4_parser.cc"
     break;
 
-  case 601:
-#line 2063 "dhcp4_parser.yy"
+  case 607:
+#line 2079 "dhcp4_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3357 "dhcp4_parser.cc"
+#line 3375 "dhcp4_parser.cc"
     break;
 
-  case 602:
-#line 2066 "dhcp4_parser.yy"
+  case 608:
+#line 2082 "dhcp4_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3365 "dhcp4_parser.cc"
+#line 3383 "dhcp4_parser.cc"
     break;
 
-  case 603:
-#line 2069 "dhcp4_parser.yy"
+  case 609:
+#line 2085 "dhcp4_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3373 "dhcp4_parser.cc"
+#line 3391 "dhcp4_parser.cc"
     break;
 
-  case 604:
-#line 2072 "dhcp4_parser.yy"
+  case 610:
+#line 2088 "dhcp4_parser.yy"
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3382 "dhcp4_parser.cc"
+#line 3400 "dhcp4_parser.cc"
     break;
 
-  case 605:
-#line 2078 "dhcp4_parser.yy"
+  case 611:
+#line 2094 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3390 "dhcp4_parser.cc"
+#line 3408 "dhcp4_parser.cc"
     break;
 
-  case 606:
-#line 2080 "dhcp4_parser.yy"
+  case 612:
+#line 2096 "dhcp4_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3400 "dhcp4_parser.cc"
+#line 3418 "dhcp4_parser.cc"
     break;
 
-  case 607:
-#line 2086 "dhcp4_parser.yy"
+  case 613:
+#line 2102 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3408 "dhcp4_parser.cc"
+#line 3426 "dhcp4_parser.cc"
     break;
 
-  case 608:
-#line 2088 "dhcp4_parser.yy"
+  case 614:
+#line 2104 "dhcp4_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3418 "dhcp4_parser.cc"
+#line 3436 "dhcp4_parser.cc"
     break;
 
-  case 609:
-#line 2094 "dhcp4_parser.yy"
+  case 615:
+#line 2110 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3426 "dhcp4_parser.cc"
+#line 3444 "dhcp4_parser.cc"
     break;
 
-  case 610:
-#line 2096 "dhcp4_parser.yy"
+  case 616:
+#line 2112 "dhcp4_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3436 "dhcp4_parser.cc"
+#line 3454 "dhcp4_parser.cc"
     break;
 
-  case 611:
-#line 2105 "dhcp4_parser.yy"
+  case 617:
+#line 2121 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3444 "dhcp4_parser.cc"
+#line 3462 "dhcp4_parser.cc"
     break;
 
-  case 612:
-#line 2107 "dhcp4_parser.yy"
+  case 618:
+#line 2123 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("Dhcp6", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3453 "dhcp4_parser.cc"
+#line 3471 "dhcp4_parser.cc"
     break;
 
-  case 613:
-#line 2112 "dhcp4_parser.yy"
+  case 619:
+#line 2128 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3461 "dhcp4_parser.cc"
+#line 3479 "dhcp4_parser.cc"
     break;
 
-  case 614:
-#line 2114 "dhcp4_parser.yy"
+  case 620:
+#line 2130 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3470 "dhcp4_parser.cc"
+#line 3488 "dhcp4_parser.cc"
     break;
 
-  case 615:
-#line 2119 "dhcp4_parser.yy"
+  case 621:
+#line 2135 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3478 "dhcp4_parser.cc"
+#line 3496 "dhcp4_parser.cc"
     break;
 
-  case 616:
-#line 2121 "dhcp4_parser.yy"
+  case 622:
+#line 2137 "dhcp4_parser.yy"
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3487 "dhcp4_parser.cc"
+#line 3505 "dhcp4_parser.cc"
     break;
 
-  case 617:
-#line 2126 "dhcp4_parser.yy"
+  case 623:
+#line 2142 "dhcp4_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3498 "dhcp4_parser.cc"
+#line 3516 "dhcp4_parser.cc"
     break;
 
-  case 618:
-#line 2131 "dhcp4_parser.yy"
+  case 624:
+#line 2147 "dhcp4_parser.yy"
     {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3508 "dhcp4_parser.cc"
+#line 3526 "dhcp4_parser.cc"
     break;
 
-  case 619:
-#line 2137 "dhcp4_parser.yy"
+  case 625:
+#line 2153 "dhcp4_parser.yy"
     {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3518 "dhcp4_parser.cc"
+#line 3536 "dhcp4_parser.cc"
     break;
 
-  case 620:
-#line 2141 "dhcp4_parser.yy"
+  case 626:
+#line 2157 "dhcp4_parser.yy"
     {
     // No config_control params are required
     // parsing completed
 }
-#line 3527 "dhcp4_parser.cc"
+#line 3545 "dhcp4_parser.cc"
     break;
 
-  case 625:
-#line 2156 "dhcp4_parser.yy"
+  case 631:
+#line 2172 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3538 "dhcp4_parser.cc"
+#line 3556 "dhcp4_parser.cc"
     break;
 
-  case 626:
-#line 2161 "dhcp4_parser.yy"
+  case 632:
+#line 2177 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3547 "dhcp4_parser.cc"
+#line 3565 "dhcp4_parser.cc"
     break;
 
-  case 627:
-#line 2166 "dhcp4_parser.yy"
+  case 633:
+#line 2182 "dhcp4_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 3556 "dhcp4_parser.cc"
+#line 3574 "dhcp4_parser.cc"
     break;
 
-  case 628:
-#line 2176 "dhcp4_parser.yy"
+  case 634:
+#line 2192 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3567 "dhcp4_parser.cc"
+#line 3585 "dhcp4_parser.cc"
     break;
 
-  case 629:
-#line 2181 "dhcp4_parser.yy"
+  case 635:
+#line 2197 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3576 "dhcp4_parser.cc"
+#line 3594 "dhcp4_parser.cc"
     break;
 
-  case 630:
-#line 2186 "dhcp4_parser.yy"
+  case 636:
+#line 2202 "dhcp4_parser.yy"
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3586 "dhcp4_parser.cc"
+#line 3604 "dhcp4_parser.cc"
     break;
 
-  case 631:
-#line 2190 "dhcp4_parser.yy"
+  case 637:
+#line 2206 "dhcp4_parser.yy"
     {
     // parsing completed
 }
-#line 3594 "dhcp4_parser.cc"
+#line 3612 "dhcp4_parser.cc"
     break;
 
-  case 635:
-#line 2206 "dhcp4_parser.yy"
+  case 641:
+#line 2222 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3605 "dhcp4_parser.cc"
+#line 3623 "dhcp4_parser.cc"
     break;
 
-  case 636:
-#line 2211 "dhcp4_parser.yy"
+  case 642:
+#line 2227 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3614 "dhcp4_parser.cc"
+#line 3632 "dhcp4_parser.cc"
     break;
 
-  case 639:
-#line 2223 "dhcp4_parser.yy"
+  case 645:
+#line 2239 "dhcp4_parser.yy"
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3624 "dhcp4_parser.cc"
+#line 3642 "dhcp4_parser.cc"
     break;
 
-  case 640:
-#line 2227 "dhcp4_parser.yy"
+  case 646:
+#line 2243 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
 }
-#line 3632 "dhcp4_parser.cc"
+#line 3650 "dhcp4_parser.cc"
     break;
 
-  case 650:
-#line 2244 "dhcp4_parser.yy"
+  case 656:
+#line 2260 "dhcp4_parser.yy"
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3641 "dhcp4_parser.cc"
+#line 3659 "dhcp4_parser.cc"
     break;
 
-  case 651:
-#line 2249 "dhcp4_parser.yy"
+  case 657:
+#line 2265 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3649 "dhcp4_parser.cc"
+#line 3667 "dhcp4_parser.cc"
     break;
 
-  case 652:
-#line 2251 "dhcp4_parser.yy"
+  case 658:
+#line 2267 "dhcp4_parser.yy"
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3659 "dhcp4_parser.cc"
+#line 3677 "dhcp4_parser.cc"
     break;
 
-  case 653:
-#line 2257 "dhcp4_parser.yy"
+  case 659:
+#line 2273 "dhcp4_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3670 "dhcp4_parser.cc"
+#line 3688 "dhcp4_parser.cc"
     break;
 
-  case 654:
-#line 2262 "dhcp4_parser.yy"
+  case 660:
+#line 2278 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3679 "dhcp4_parser.cc"
+#line 3697 "dhcp4_parser.cc"
     break;
 
-  case 657:
-#line 2271 "dhcp4_parser.yy"
+  case 663:
+#line 2287 "dhcp4_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3689 "dhcp4_parser.cc"
+#line 3707 "dhcp4_parser.cc"
     break;
 
-  case 658:
-#line 2275 "dhcp4_parser.yy"
+  case 664:
+#line 2291 "dhcp4_parser.yy"
     {
     ctx.stack_.pop_back();
 }
-#line 3697 "dhcp4_parser.cc"
+#line 3715 "dhcp4_parser.cc"
     break;
 
-  case 665:
-#line 2289 "dhcp4_parser.yy"
+  case 671:
+#line 2305 "dhcp4_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3705 "dhcp4_parser.cc"
+#line 3723 "dhcp4_parser.cc"
     break;
 
-  case 666:
-#line 2291 "dhcp4_parser.yy"
+  case 672:
+#line 2307 "dhcp4_parser.yy"
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3715 "dhcp4_parser.cc"
+#line 3733 "dhcp4_parser.cc"
     break;
 
-  case 667:
-#line 2297 "dhcp4_parser.yy"
+  case 673:
+#line 2313 "dhcp4_parser.yy"
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3724 "dhcp4_parser.cc"
+#line 3742 "dhcp4_parser.cc"
     break;
 
-  case 668:
-#line 2302 "dhcp4_parser.yy"
+  case 674:
+#line 2318 "dhcp4_parser.yy"
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3733 "dhcp4_parser.cc"
+#line 3751 "dhcp4_parser.cc"
     break;
 
-  case 669:
-#line 2307 "dhcp4_parser.yy"
+  case 675:
+#line 2323 "dhcp4_parser.yy"
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3742 "dhcp4_parser.cc"
+#line 3760 "dhcp4_parser.cc"
     break;
 
 
-#line 3746 "dhcp4_parser.cc"
+#line 3764 "dhcp4_parser.cc"
 
             default:
               break;
@@ -4013,121 +4031,122 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -827;
+  const short Dhcp4Parser::yypact_ninf_ = -847;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     356,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,    48,    21,    37,    64,    80,
-      86,    88,   100,   125,   134,   136,   150,   163,   167,   169,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,    21,    16,
-      17,   152,    54,    62,    71,   228,   128,    26,   217,   -47,
-     504,    60,    93,  -827,   234,   244,   245,   240,   252,  -827,
-    -827,  -827,  -827,  -827,   257,  -827,    42,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   258,   261,   272,  -827,
-    -827,  -827,  -827,  -827,  -827,   275,   279,   297,   301,   305,
-     312,   318,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,   320,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,    44,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   342,  -827,    75,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,   345,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,    78,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,   147,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   353,   266,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,   354,  -827,  -827,   346,  -827,  -827,  -827,   360,
-    -827,  -827,   357,   323,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   363,   364,  -827,
-    -827,  -827,  -827,   362,   368,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   161,  -827,  -827,
-    -827,   369,  -827,  -827,   372,  -827,   376,   379,  -827,  -827,
-     380,   381,  -827,  -827,  -827,  -827,  -827,   183,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,   196,  -827,  -827,  -827,   382,   199,
-    -827,  -827,  -827,  -827,    21,    21,  -827,   201,   387,   389,
-     394,   396,   397,  -827,    17,  -827,   399,   400,   401,   237,
-     238,   241,   403,   417,   426,   427,   446,   447,   280,   281,
-     282,   283,   285,   286,   284,   451,   456,   458,   465,   466,
-     468,   469,   471,   474,   475,   476,   477,   478,   311,   480,
-     481,   482,   483,   484,   487,   152,  -827,   489,   491,   492,
-     324,    54,  -827,   493,   495,   496,   498,   499,   501,   335,
-     502,   505,   506,    62,  -827,   507,    71,  -827,   523,   525,
-     526,   528,   529,   531,   532,   533,  -827,   228,  -827,   534,
-     535,   371,   536,   537,   540,   373,  -827,    26,   541,   374,
-     375,  -827,   217,   542,   546,     7,  -827,   378,   549,   550,
-     383,   552,   385,   386,   557,   559,   390,   392,   563,   565,
-     504,  -827,    60,  -827,   566,   402,    93,  -827,  -827,  -827,
-     567,   568,   569,    21,    21,    21,  -827,   570,   572,   573,
-    -827,  -827,  -827,   337,   388,   410,   575,   576,   579,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   419,   583,   587,   607,
-     609,   608,   445,   265,   612,   613,   614,   615,   616,  -827,
-     617,   608,   619,   450,   470,   622,  -827,   637,   108,   202,
-    -827,  -827,   472,   473,   479,   640,   485,   486,  -827,   637,
-     488,   639,  -827,   490,  -827,   637,   494,   497,   500,   503,
-     508,   509,   510,  -827,   511,   512,  -827,   513,   514,   515,
-    -827,  -827,   516,  -827,  -827,  -827,   517,    21,  -827,  -827,
-     518,   519,  -827,   520,  -827,  -827,    14,   435,  -827,  -827,
-     112,   521,  -827,  -827,   644,  -827,  -827,    21,   152,    60,
-    -827,  -827,  -827,    93,    54,   598,  -827,  -827,  -827,   555,
-     555,   645,  -827,   646,   647,   648,   651,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,   213,   653,   655,   656,    -2,
-      18,  -827,   504,  -827,  -827,   657,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   659,  -827,  -827,
-    -827,  -827,   123,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,   645,  -827,   216,   229,   233,   235,
-    -827,   256,  -827,  -827,  -827,  -827,  -827,  -827,   663,   665,
-     666,   668,   669,  -827,  -827,  -827,  -827,   672,   673,   674,
-     689,   690,  -827,   269,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,   270,  -827,   691,   692,  -827,  -827,
-     693,   695,  -827,  -827,   694,   698,  -827,  -827,   696,   700,
-    -827,  -827,   699,   701,  -827,  -827,  -827,  -827,  -827,  -827,
-      74,  -827,  -827,  -827,  -827,  -827,  -827,  -827,    91,  -827,
-    -827,   702,   703,  -827,  -827,   704,   706,  -827,   707,   708,
-     709,   710,   711,   712,   299,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   300,  -827,  -827,
-    -827,   317,  -827,   155,  -827,   547,  -827,   713,   714,  -827,
-    -827,  -827,  -827,   643,   715,  -827,  -827,  -827,  -827,   716,
-     598,  -827,   718,   719,   720,   721,   524,   553,   556,   558,
-     561,   725,   726,   727,   730,   564,   571,   574,   577,   578,
-     555,  -827,  -827,   555,  -827,   645,    62,  -827,   646,    26,
-    -827,   647,   217,  -827,   648,   407,  -827,   651,   213,  -827,
-     198,   653,  -827,   228,  -827,   655,   -47,  -827,   656,   581,
-     582,   584,   585,   586,   588,    -2,  -827,   731,   733,    18,
-    -827,  -827,   135,   657,  -827,  -827,   732,   736,    71,  -827,
-     659,   737,  -827,  -827,   580,  -827,   322,   590,   591,   592,
-    -827,  -827,  -827,  -827,  -827,   593,   594,   595,   596,  -827,
-    -827,  -827,  -827,  -827,  -827,   330,  -827,   332,  -827,   734,
-    -827,   739,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   333,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-     740,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-     742,   745,  -827,  -827,  -827,  -827,  -827,   747,  -827,   334,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   597,   599,
-    -827,  -827,   741,  -827,  -827,  -827,  -827,  -827,   336,  -827,
-    -827,  -827,  -827,  -827,  -827,   600,   340,  -827,   637,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   407,  -827,   755,   601,
-    -827,   198,  -827,  -827,  -827,  -827,   765,   602,   768,   135,
-    -827,  -827,  -827,  -827,  -827,   606,  -827,  -827,   735,  -827,
-     610,  -827,  -827,   766,  -827,  -827,   197,  -827,   -18,   766,
-    -827,  -827,   774,   779,   780,   344,  -827,  -827,  -827,  -827,
-    -827,  -827,   785,   624,   627,   632,   -18,  -827,   635,  -827,
-    -827,  -827,  -827,  -827
+     325,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,    32,    22,    33,    40,    44,
+      73,    95,   104,   108,   115,   121,   125,   135,   151,   158,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,    22,  -103,
+       6,   145,    59,   272,    41,    15,    79,   237,   177,   -35,
+     468,    51,    26,  -847,   206,   210,   221,   219,   228,  -847,
+    -847,  -847,  -847,  -847,   231,  -847,    56,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,   252,   285,   286,  -847,
+    -847,  -847,  -847,  -847,  -847,   299,   300,   302,   303,   306,
+     309,   316,   319,   322,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,   323,  -847,  -847,
+    -847,  -847,  -847,    58,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,   332,  -847,   105,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,   340,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   106,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,   128,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+     330,   342,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,   354,  -847,  -847,   359,  -847,  -847,
+    -847,   362,  -847,  -847,   357,   371,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   374,
+     382,  -847,  -847,  -847,  -847,   368,   389,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   138,
+    -847,  -847,  -847,   394,  -847,  -847,   397,  -847,   399,   400,
+    -847,  -847,   403,   404,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,   142,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   149,  -847,
+    -847,  -847,   408,   186,  -847,  -847,  -847,  -847,    22,    22,
+    -847,   242,   414,   422,   423,   424,   438,  -847,     6,  -847,
+     440,   446,   448,   217,   277,   283,   456,   460,   463,   464,
+     471,   472,   304,   305,   307,   308,   324,   301,   333,   336,
+     335,   476,   495,   508,   509,   510,   513,   514,   515,   516,
+     517,   518,   519,   520,   351,   522,   523,   526,   528,   145,
+    -847,   530,   531,   533,   365,    59,  -847,   540,   541,   542,
+     543,   544,   545,   376,   550,   551,   552,   272,  -847,   553,
+      41,  -847,   554,   555,   558,   559,   560,   561,   562,   563,
+    -847,    15,  -847,   565,   567,   398,   569,   570,   571,   401,
+    -847,   237,   572,   405,   406,  -847,   177,   574,   575,   -23,
+    -847,   407,   576,   580,   411,   583,   415,   416,   587,   589,
+     431,   432,   605,   606,   607,   608,   468,  -847,    51,  -847,
+     611,   442,    26,  -847,  -847,  -847,   615,   614,   616,    22,
+      22,    22,  -847,   617,   618,   619,  -847,  -847,  -847,   449,
+     454,   455,   622,   623,   626,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,   459,   628,   629,   630,   631,   632,
+     465,   331,   635,   637,   638,   639,   640,  -847,   641,   632,
+     642,   645,  -847,   646,    78,   146,  -847,  -847,   473,   479,
+     480,   649,   482,   483,  -847,   646,   484,   651,  -847,   486,
+    -847,   646,   487,   488,   489,   490,   491,   492,   493,  -847,
+     494,   496,  -847,   497,   498,   499,  -847,  -847,   500,  -847,
+    -847,  -847,   501,    22,  -847,  -847,   502,   503,  -847,   504,
+    -847,  -847,    30,   505,  -847,  -847,   -37,   506,   507,   511,
+    -847,  -847,   663,  -847,  -847,    22,   145,    51,  -847,  -847,
+    -847,    26,    59,   613,  -847,  -847,  -847,   233,   233,   671,
+    -847,   674,   675,   676,   678,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,   116,   679,   680,   681,    68,    70,  -847,
+     468,   682,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,   683,  -847,  -847,  -847,  -847,    82,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,   671,  -847,   220,   230,   234,   238,  -847,   256,
+    -847,  -847,  -847,  -847,  -847,  -847,   687,   688,   689,   690,
+     691,  -847,  -847,  -847,  -847,   692,   693,   694,   695,   696,
+    -847,   260,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,   289,  -847,   697,   698,  -847,  -847,   699,   701,
+    -847,  -847,   700,   704,  -847,  -847,   702,   706,  -847,  -847,
+     705,   707,  -847,  -847,  -847,  -847,  -847,  -847,    76,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,   218,  -847,  -847,   708,
+     709,  -847,  -847,   710,   712,  -847,   713,   714,   715,   716,
+     717,   718,   311,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,   334,  -847,  -847,  -847,   343,
+    -847,   241,  -847,   529,  -847,   719,   720,  -847,  -847,  -847,
+    -847,   721,   722,  -847,  -847,  -847,  -847,   723,   613,  -847,
+     726,   727,   728,   729,   539,   548,   564,   566,   573,   730,
+     731,   732,   733,   577,   578,   579,   581,   568,   233,  -847,
+    -847,   233,  -847,   671,   272,  -847,   674,   237,  -847,   675,
+     177,  -847,   676,   444,  -847,   678,   116,  -847,    63,   679,
+    -847,    15,  -847,   680,   -35,  -847,   681,   582,   584,   585,
+     586,   588,   590,    68,  -847,   735,   736,    70,  -847,  -847,
+     -22,   682,  -847,  -847,   737,   738,    41,  -847,   683,   741,
+    -847,  -847,   592,  -847,   402,   593,   594,   595,  -847,  -847,
+    -847,  -847,  -847,   596,   597,   598,   599,  -847,  -847,  -847,
+    -847,  -847,  -847,   344,  -847,   345,  -847,   740,  -847,   742,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   361,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+     745,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+     746,   743,  -847,  -847,  -847,  -847,  -847,   749,  -847,   372,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   600,   601,
+    -847,  -847,   757,  -847,  -847,  -847,  -847,  -847,   379,  -847,
+    -847,  -847,  -847,  -847,  -847,   602,   381,  -847,   646,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,   444,  -847,   759,   603,
+    -847,    63,  -847,  -847,  -847,  -847,   772,   604,   773,   -22,
+    -847,  -847,  -847,  -847,  -847,   609,  -847,  -847,   775,  -847,
+     610,  -847,  -847,   774,  -847,  -847,   254,  -847,   141,   774,
+    -847,  -847,   781,   782,   785,   387,  -847,  -847,  -847,  -847,
+    -847,  -847,   787,   621,   625,   633,   141,  -847,   652,  -847,
+    -847,  -847,  -847,  -847
   };
 
   const unsigned short
@@ -4137,154 +4156,155 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,    28,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        1,    45,    38,    34,    33,    30,    31,    32,    37,     3,
-      35,    36,    58,     5,    70,     7,   137,     9,   280,    11,
-     441,    13,   466,    15,   366,    17,   374,    19,   411,    21,
-     245,    23,   558,    25,   630,    27,   619,    29,    47,    41,
-       0,     0,     0,     0,     0,   468,     0,   376,   413,     0,
+      35,    36,    58,     5,    70,     7,   139,     9,   282,    11,
+     447,    13,   472,    15,   372,    17,   380,    19,   417,    21,
+     247,    23,   564,    25,   636,    27,   625,    29,    47,    41,
+       0,     0,     0,     0,     0,   474,     0,   382,   419,     0,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    68,
-     628,   611,   613,   615,     0,    67,     0,    60,    62,    64,
-      65,    66,    63,   617,   126,   152,     0,     0,     0,   487,
-     489,   491,   150,   159,   161,     0,     0,     0,     0,     0,
-       0,     0,   121,   272,   364,   403,   332,   454,   456,   325,
-     223,   515,   458,   237,   256,     0,   541,   554,   556,   607,
-     609,   635,   113,     0,    72,    74,    75,    76,   107,   108,
-     109,    77,   105,    94,    95,    96,    80,    81,   102,    82,
-      83,    84,    88,    89,    78,   106,    79,    86,    87,   100,
-     101,   103,    97,    98,    99,    85,    90,    91,    92,    93,
-     111,   112,   104,   110,   139,   141,   145,     0,   136,     0,
-     128,   130,   131,   132,   133,   134,   135,   313,   315,   317,
-     433,   311,   319,     0,   323,   321,   511,   310,   284,   285,
-     286,   307,   308,   309,   297,   298,     0,   282,   289,   302,
-     303,   304,   290,   292,   293,   295,   291,   287,   288,   305,
-     306,   294,   299,   300,   301,   296,   452,   451,   447,   448,
-     446,     0,   443,   445,   449,   450,   509,   497,   499,   503,
-     501,   507,   505,   493,   486,   480,   484,   485,     0,   469,
-     470,   481,   482,   483,   477,   472,   478,   474,   475,   476,
-     479,   473,     0,   393,   204,     0,   397,   395,   400,     0,
-     389,   390,     0,   377,   378,   380,   392,   381,   382,   383,
-     399,   384,   385,   386,   387,   388,   427,     0,     0,   425,
-     426,   429,   430,     0,   414,   415,   417,   418,   419,   420,
-     421,   422,   423,   424,   252,   254,   249,     0,   247,   250,
-     251,     0,   581,   583,     0,   586,     0,     0,   590,   594,
-       0,     0,   598,   605,   579,   577,   578,     0,   560,   562,
-     563,   564,   565,   566,   567,   568,   569,   570,   571,   572,
-     573,   574,   575,   576,     0,   632,   634,   625,     0,     0,
-     621,   623,   624,    46,     0,     0,    39,     0,     0,     0,
-       0,     0,     0,    57,     0,    59,     0,     0,     0,     0,
+     634,   617,   619,   621,     0,    67,     0,    60,    62,    64,
+      65,    66,    63,   623,   128,   154,     0,     0,     0,   493,
+     495,   497,   152,   161,   163,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   123,   274,   370,   409,   336,   460,
+     462,   329,   225,   521,   464,   239,   258,     0,   547,   560,
+     562,   641,   113,     0,    72,    74,    75,    76,    77,    78,
+     109,   110,   111,    79,   107,    96,    97,    98,    82,    83,
+     104,    84,    85,    86,    90,    91,    80,   108,    81,    88,
+      89,   102,   103,   105,    99,   100,   101,    87,    92,    93,
+      94,    95,   106,   112,   141,   143,   147,     0,   138,     0,
+     130,   132,   133,   134,   135,   136,   137,   317,   319,   321,
+     439,   315,   323,     0,   327,   325,   517,   314,   286,   287,
+     288,   289,   290,   311,   312,   313,   301,   302,     0,   284,
+     293,   306,   307,   308,   294,   296,   297,   299,   295,   291,
+     292,   309,   310,   298,   303,   304,   305,   300,   458,   457,
+     453,   454,   452,     0,   449,   451,   455,   456,   515,   503,
+     505,   509,   507,   513,   511,   499,   492,   486,   490,   491,
+       0,   475,   476,   487,   488,   489,   483,   478,   484,   480,
+     481,   482,   485,   479,     0,   399,   206,     0,   403,   401,
+     406,     0,   395,   396,     0,   383,   384,   386,   398,   387,
+     388,   389,   405,   390,   391,   392,   393,   394,   433,     0,
+       0,   431,   432,   435,   436,     0,   420,   421,   423,   424,
+     425,   426,   427,   428,   429,   430,   254,   256,   251,     0,
+     249,   252,   253,     0,   587,   589,     0,   592,     0,     0,
+     596,   600,     0,     0,   604,   611,   613,   615,   585,   583,
+     584,     0,   566,   568,   569,   570,   571,   572,   573,   574,
+     575,   576,   577,   578,   579,   580,   581,   582,     0,   638,
+     640,   631,     0,     0,   627,   629,   630,    46,     0,     0,
+      39,     0,     0,     0,     0,     0,     0,    57,     0,    59,
        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,    71,     0,     0,     0,
-       0,     0,   138,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   281,     0,     0,   442,     0,     0,
-       0,     0,     0,     0,     0,     0,   467,     0,   367,     0,
-       0,     0,     0,     0,     0,     0,   375,     0,     0,     0,
-       0,   412,     0,     0,     0,     0,   246,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   559,     0,   631,     0,     0,     0,   620,    50,    43,
-       0,     0,     0,     0,     0,     0,    61,     0,     0,     0,
-     123,   124,   125,     0,     0,     0,     0,     0,     0,   114,
-     115,   116,   117,   118,   119,   120,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   540,
-       0,     0,     0,     0,     0,     0,    73,     0,     0,     0,
-     149,   129,     0,     0,     0,     0,     0,     0,   331,     0,
-       0,     0,   283,     0,   444,     0,     0,     0,     0,     0,
-       0,     0,     0,   471,     0,     0,   391,     0,     0,     0,
-     402,   379,     0,   431,   432,   416,     0,     0,   248,   580,
-       0,     0,   585,     0,   588,   589,     0,     0,   596,   597,
-       0,     0,   561,   633,     0,   627,   622,     0,     0,     0,
-     612,   614,   616,     0,     0,     0,   488,   490,   492,     0,
-       0,   163,   122,   274,   368,   405,   334,    40,   455,   457,
-     327,   328,   329,   330,   326,     0,     0,   460,   239,     0,
-       0,   555,     0,   608,   610,     0,    51,   140,   143,   144,
-     142,   147,   148,   146,   314,   316,   318,   435,   312,   320,
-     324,   322,     0,   453,   510,   498,   500,   504,   502,   508,
-     506,   494,   394,   205,   398,   396,   401,   428,   253,   255,
-     582,   584,   587,   592,   593,   591,   595,   600,   601,   602,
-     603,   604,   599,   606,   163,    44,     0,     0,     0,     0,
-     157,     0,   154,   156,   191,   197,   199,   201,     0,     0,
-       0,     0,     0,   213,   215,   217,   219,     0,     0,     0,
-       0,     0,   190,     0,   169,   171,   172,   173,   174,   175,
-     176,   177,   178,   179,   180,   184,   185,   186,   181,   187,
-     188,   189,   182,   183,     0,   167,     0,   164,   165,   278,
-       0,   275,   276,   372,     0,   369,   370,   409,     0,   406,
-     407,   338,     0,   335,   336,   232,   233,   234,   235,   236,
-       0,   225,   227,   228,   229,   230,   231,   519,     0,   517,
-     464,     0,   461,   462,   243,     0,   240,   241,     0,     0,
-       0,     0,     0,     0,     0,   258,   260,   261,   262,   263,
-     264,   265,   550,   552,   549,   547,   548,     0,   543,   545,
-     546,     0,   639,     0,   637,    53,   439,     0,   436,   437,
-     495,   513,   514,     0,     0,    69,   629,   618,   127,     0,
-       0,   153,     0,     0,     0,     0,     0,     0,     0,     0,
+      71,     0,     0,     0,     0,     0,   140,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   283,     0,
+       0,   448,     0,     0,     0,     0,     0,     0,     0,     0,
+     473,     0,   373,     0,     0,     0,     0,     0,     0,     0,
+     381,     0,     0,     0,     0,   418,     0,     0,     0,     0,
+     248,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   565,     0,   637,
+       0,     0,     0,   626,    50,    43,     0,     0,     0,     0,
+       0,     0,    61,     0,     0,     0,   125,   126,   127,     0,
+       0,     0,     0,     0,     0,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   546,     0,     0,
+       0,     0,    73,     0,     0,     0,   151,   131,     0,     0,
+       0,     0,     0,     0,   335,     0,     0,     0,   285,     0,
+     450,     0,     0,     0,     0,     0,     0,     0,     0,   477,
+       0,     0,   397,     0,     0,     0,   408,   385,     0,   437,
+     438,   422,     0,     0,   250,   586,     0,     0,   591,     0,
+     594,   595,     0,     0,   602,   603,     0,     0,     0,     0,
+     567,   639,     0,   633,   628,     0,     0,     0,   618,   620,
+     622,     0,     0,     0,   494,   496,   498,     0,     0,   165,
+     124,   276,   374,   411,   338,    40,   461,   463,   331,   332,
+     333,   334,   330,     0,     0,   466,   241,     0,     0,   561,
+       0,     0,    51,   142,   145,   146,   144,   149,   150,   148,
+     318,   320,   322,   441,   316,   324,   328,   326,     0,   459,
+     516,   504,   506,   510,   508,   514,   512,   500,   400,   207,
+     404,   402,   407,   434,   255,   257,   588,   590,   593,   598,
+     599,   597,   601,   606,   607,   608,   609,   610,   605,   612,
+     614,   616,   165,    44,     0,     0,     0,     0,   159,     0,
+     156,   158,   193,   199,   201,   203,     0,     0,     0,     0,
+       0,   215,   217,   219,   221,     0,     0,     0,     0,     0,
+     192,     0,   171,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   186,   187,   188,   183,   189,   190,   191,
+     184,   185,     0,   169,     0,   166,   167,   280,     0,   277,
+     278,   378,     0,   375,   376,   415,     0,   412,   413,   342,
+       0,   339,   340,   234,   235,   236,   237,   238,     0,   227,
+     229,   230,   231,   232,   233,   525,     0,   523,   470,     0,
+     467,   468,   245,     0,   242,   243,     0,     0,     0,     0,
+       0,     0,     0,   260,   262,   263,   264,   265,   266,   267,
+     556,   558,   555,   553,   554,     0,   549,   551,   552,     0,
+     645,     0,   643,    53,   445,     0,   442,   443,   501,   519,
+     520,     0,     0,    69,   635,   624,   129,     0,     0,   155,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   151,   160,     0,   162,     0,     0,   273,     0,   376,
-     365,     0,   413,   404,     0,     0,   333,     0,     0,   224,
-     521,     0,   516,   468,   459,     0,     0,   238,     0,     0,
-       0,     0,     0,     0,     0,     0,   257,     0,     0,     0,
-     542,   557,     0,     0,   636,    55,     0,    54,     0,   434,
-       0,     0,   512,   626,     0,   155,     0,     0,     0,     0,
-     203,   206,   207,   208,   209,     0,     0,     0,     0,   221,
-     222,   210,   211,   212,   170,     0,   166,     0,   277,     0,
-     371,     0,   408,   363,   357,   345,   346,   360,   361,   362,
-     348,   349,   342,   343,   344,   355,   356,   354,     0,   340,
-     347,   358,   359,   350,   351,   352,   353,   337,   226,   537,
-       0,   535,   536,   528,   529,   533,   534,   530,   531,   532,
-       0,   522,   523,   525,   526,   527,   518,     0,   463,     0,
-     242,   266,   267,   268,   269,   270,   271,   259,     0,     0,
-     544,   653,     0,   651,   649,   643,   647,   648,     0,   641,
-     645,   646,   644,   638,    52,     0,     0,   438,     0,   158,
-     193,   194,   195,   196,   192,   198,   200,   202,   214,   216,
-     218,   220,   168,   279,   373,   410,     0,   339,     0,     0,
-     520,     0,   465,   244,   551,   553,     0,     0,     0,     0,
-     640,    56,   440,   496,   341,     0,   539,   524,     0,   650,
-       0,   642,   538,     0,   652,   657,     0,   655,     0,     0,
-     654,   665,     0,     0,     0,     0,   659,   661,   662,   663,
-     664,   656,     0,     0,     0,     0,     0,   658,     0,   667,
-     668,   669,   660,   666
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   153,
+     162,     0,   164,     0,     0,   275,     0,   382,   371,     0,
+     419,   410,     0,     0,   337,     0,     0,   226,   527,     0,
+     522,   474,   465,     0,     0,   240,     0,     0,     0,     0,
+       0,     0,     0,     0,   259,     0,     0,     0,   548,   563,
+       0,     0,   642,    55,     0,    54,     0,   440,     0,     0,
+     518,   632,     0,   157,     0,     0,     0,     0,   205,   208,
+     209,   210,   211,     0,     0,     0,     0,   223,   224,   212,
+     213,   214,   172,     0,   168,     0,   279,     0,   377,     0,
+     414,   369,   361,   362,   363,   349,   350,   366,   367,   368,
+     352,   353,   346,   347,   348,   359,   360,   358,     0,   344,
+     351,   364,   365,   354,   355,   356,   357,   341,   228,   543,
+       0,   541,   542,   534,   535,   539,   540,   536,   537,   538,
+       0,   528,   529,   531,   532,   533,   524,     0,   469,     0,
+     244,   268,   269,   270,   271,   272,   273,   261,     0,     0,
+     550,   659,     0,   657,   655,   649,   653,   654,     0,   647,
+     651,   652,   650,   644,    52,     0,     0,   444,     0,   160,
+     195,   196,   197,   198,   194,   200,   202,   204,   216,   218,
+     220,   222,   170,   281,   379,   416,     0,   343,     0,     0,
+     526,     0,   471,   246,   557,   559,     0,     0,     0,     0,
+     646,    56,   446,   502,   345,     0,   545,   530,     0,   656,
+       0,   648,   544,     0,   658,   663,     0,   661,     0,     0,
+     660,   671,     0,     0,     0,     0,   665,   667,   668,   669,
+     670,   662,     0,     0,     0,     0,     0,   664,     0,   673,
+     674,   675,   666,   672
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,   -46,  -827,  -456,  -827,
-     176,  -827,  -827,  -827,  -827,  -827,  -827,  -524,  -827,  -827,
-    -827,   -70,  -827,  -827,  -827,   441,  -827,  -827,  -827,  -827,
-     225,   411,   -55,   -54,   -27,   -24,    -9,     6,  -827,  -827,
-    -827,  -827,     9,    11,  -827,  -827,   230,   408,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,    15,  -827,  -827,  -827,  -827,  -827,
-    -827,   158,  -827,     5,  -827,  -597,    28,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   -35,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,    19,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,     2,
-    -827,  -827,  -827,   -15,   409,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,    -3,  -827,  -827,  -827,  -827,  -827,  -827,  -826,
-    -827,  -827,  -827,    25,  -827,  -827,  -827,    29,   443,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -818,  -827,   -23,
-    -827,   -17,  -827,    12,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,    22,  -827,  -827,  -138,   -65,  -827,  -827,  -827,  -827,
-    -827,    31,  -827,  -827,  -827,    34,  -827,   423,  -827,   -72,
-    -827,  -827,  -827,  -827,  -827,   -66,  -827,  -827,  -827,  -827,
-    -827,    -7,  -827,  -827,  -827,    30,  -827,  -827,  -827,    33,
-    -827,   424,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,     0,  -827,  -827,  -827,     1,   452,  -827,
-    -827,   -39,  -827,   -19,  -827,   -59,  -827,  -827,  -827,    27,
-    -827,  -827,  -827,    24,  -827,   444,   -58,  -827,   -52,  -827,
-      -1,  -827,   242,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -815,  -827,  -827,  -827,  -827,  -827,    32,  -827,  -827,  -827,
-    -126,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,    20,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-     264,   418,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,   -64,  -827,   -60,  -827,  -827,  -827,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,  -827,   294,   414,
-    -827,  -827,  -827,  -827,  -827,  -827,  -827,   302,   420,   -57,
-    -827,  -827,    23,  -827,  -827,  -125,  -827,  -827,  -827,  -827,
-    -827,  -827,  -146,  -827,  -827,  -161,  -827,  -827,  -827,  -827,
-    -827
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,   -44,  -847,  -483,  -847,
+     187,  -847,  -847,  -847,  -847,  -847,  -847,  -525,  -847,  -847,
+    -847,   -70,  -847,  -847,  -847,   417,  -847,  -847,  -847,  -847,
+     200,   373,   -54,   -24,    -5,    -4,    -1,    11,    14,    17,
+    -847,  -847,  -847,  -847,    21,    25,  -847,  -847,   198,   388,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,   -16,  -847,  -847,  -847,
+    -847,  -847,  -847,   123,  -847,   -31,  -847,  -603,   -30,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   -36,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,   -33,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,   -47,  -847,  -847,  -847,   -38,   378,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,   -42,  -847,  -847,  -847,  -847,  -847,
+    -847,  -846,  -847,  -847,  -847,   -14,  -847,  -847,  -847,    -9,
+     420,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -845,
+    -847,    23,  -847,    29,  -847,    28,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,     7,  -847,  -847,  -143,   -65,  -847,  -847,
+    -847,  -847,  -847,    31,  -847,  -847,  -847,    36,  -847,   426,
+    -847,   -72,  -847,  -847,  -847,  -847,  -847,   -64,  -847,  -847,
+    -847,  -847,  -847,   -40,  -847,  -847,  -847,    27,  -847,  -847,
+    -847,    34,  -847,   419,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,    -3,  -847,  -847,  -847,     0,
+     457,  -847,  -847,   -52,  -847,   -20,  -847,   -60,  -847,  -847,
+    -847,    35,  -847,  -847,  -847,    38,  -847,   447,    -8,  -847,
+      -2,  -847,    10,  -847,   243,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -826,  -847,  -847,  -847,  -847,  -847,    37,  -847,
+    -847,  -847,  -132,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,    13,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,   262,   418,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+    -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,  -847,
+     292,   413,  -847,  -847,  -847,  -847,  -847,  -847,  -847,   310,
+     425,   -69,  -847,  -847,    16,  -847,  -847,  -129,  -847,  -847,
+    -847,  -847,  -847,  -847,  -148,  -847,  -847,  -164,  -847,  -847,
+    -847,  -847,  -847
   };
 
   const short
@@ -4292,444 +4312,452 @@ namespace isc { namespace dhcp {
   {
       -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    38,    39,    40,    69,
-     618,    87,    88,    41,    68,    84,    85,   637,   805,   886,
-     887,   712,    43,    70,    96,    97,    98,   368,    45,    71,
+     626,    87,    88,    41,    68,    84,    85,   643,   813,   894,
+     895,   720,    43,    70,    96,    97,    98,   372,    45,    71,
      143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
-     395,   153,   154,   155,   156,   377,   189,   190,    47,    72,
-     191,   417,   192,   418,   640,   193,   419,   643,   194,   157,
-     385,   158,   378,   691,   692,   693,   819,   159,   386,   160,
-     387,   736,   737,   738,   843,   713,   714,   715,   822,  1004,
-     716,   823,   717,   824,   718,   825,   719,   720,   450,   721,
-     722,   723,   724,   725,   726,   727,   728,   831,   729,   832,
-     730,   833,   731,   834,   732,   733,   161,   403,   760,   761,
-     762,   763,   764,   765,   766,   162,   406,   775,   776,   777,
-     866,    61,    79,   317,   318,   319,   463,   320,   464,   163,
-     407,   784,   785,   786,   787,   788,   789,   790,   791,   164,
-     396,   740,   741,   742,   846,    49,    73,   216,   217,   218,
-     427,   219,   423,   220,   424,   221,   425,   222,   428,   223,
-     431,   224,   430,   165,   402,   624,   226,   166,   399,   752,
-     753,   754,   855,   938,   939,   167,   397,    55,    76,   744,
-     745,   746,   849,    57,    77,   282,   283,   284,   285,   286,
-     287,   288,   449,   289,   453,   290,   452,   291,   292,   454,
-     293,   168,   398,   748,   749,   750,   852,    59,    78,   303,
-     304,   305,   306,   307,   458,   308,   309,   310,   311,   228,
-     426,   807,   808,   809,   888,    51,    74,   241,   242,   243,
-     435,   169,   400,   170,   401,   171,   405,   771,   772,   773,
-     863,    53,    75,   258,   259,   260,   172,   382,   173,   383,
-     174,   384,   264,   445,   812,   891,   265,   439,   266,   440,
-     267,   442,   268,   441,   269,   444,   270,   443,   271,   438,
-     235,   432,   813,   175,   404,   768,   769,   860,   960,   961,
-     962,   963,   964,  1018,   965,   176,   177,   409,   797,   798,
-     799,   877,   800,   878,   178,   410,   179,   411,    63,    80,
-     337,   338,   339,   340,   468,   341,   469,   342,   343,   471,
-     344,   345,   346,   474,   675,   347,   475,   348,   349,   350,
-     478,   682,   351,   479,   180,   412,   181,   413,    99,   370,
-     100,   371,   101,   372,   182,   376,    67,    82,   359,   360,
-     361,   484,   362,   102,   369,    65,    81,   354,   355,   183,
-     414,   803,   804,   882,   988,   989,   990,   991,  1028,   992,
-    1026,  1046,  1047,  1048,  1055,  1056,  1057,  1062,  1058,  1059,
-    1060
+     153,   154,   401,   155,   156,   157,   158,   381,   189,   190,
+      47,    72,   191,   421,   192,   422,   646,   193,   423,   649,
+     194,   159,   389,   160,   382,   699,   700,   701,   827,   161,
+     390,   162,   391,   744,   745,   746,   851,   721,   722,   723,
+     830,  1014,   724,   831,   725,   832,   726,   833,   727,   728,
+     454,   729,   730,   731,   732,   733,   734,   735,   736,   839,
+     737,   840,   738,   841,   739,   842,   740,   741,   163,   409,
+     768,   769,   770,   771,   772,   773,   774,   164,   412,   783,
+     784,   785,   874,    61,    79,   319,   320,   321,   467,   322,
+     468,   165,   413,   792,   793,   794,   795,   796,   797,   798,
+     799,   166,   402,   748,   749,   750,   854,    49,    73,   218,
+     219,   220,   431,   221,   427,   222,   428,   223,   429,   224,
+     432,   225,   435,   226,   434,   167,   408,   632,   228,   168,
+     405,   760,   761,   762,   863,   948,   949,   169,   403,    55,
+      76,   752,   753,   754,   857,    57,    77,   284,   285,   286,
+     287,   288,   289,   290,   453,   291,   457,   292,   456,   293,
+     294,   458,   295,   170,   404,   756,   757,   758,   860,    59,
+      78,   305,   306,   307,   308,   309,   462,   310,   311,   312,
+     313,   230,   430,   815,   816,   817,   896,    51,    74,   243,
+     244,   245,   439,   171,   406,   172,   407,   173,   411,   779,
+     780,   781,   871,    53,    75,   260,   261,   262,   174,   386,
+     175,   387,   176,   388,   266,   449,   820,   899,   267,   443,
+     268,   444,   269,   446,   270,   445,   271,   448,   272,   447,
+     273,   442,   237,   436,   821,   177,   410,   776,   777,   868,
+     970,   971,   972,   973,   974,  1028,   975,   178,   179,   415,
+     805,   806,   807,   885,   808,   886,   180,   416,   181,   417,
+      63,    80,   341,   342,   343,   344,   472,   345,   473,   346,
+     347,   475,   348,   349,   350,   478,   681,   351,   479,   352,
+     353,   354,   482,   688,   355,   483,   356,   484,   357,   485,
+      99,   374,   100,   375,   101,   376,   182,   380,    67,    82,
+     363,   364,   365,   490,   366,   102,   373,    65,    81,   358,
+     359,   183,   418,   811,   812,   890,   998,   999,  1000,  1001,
+    1038,  1002,  1036,  1056,  1057,  1058,  1065,  1066,  1067,  1072,
+    1068,  1069,  1070
   };
 
   const unsigned short
   Dhcp4Parser::yytable_[] =
   {
-      95,   142,   188,   207,   237,   254,   301,   280,   299,   316,
-     334,   272,   302,   734,   231,   232,   352,   261,   208,   209,
-     353,   233,    83,   262,   356,   650,    31,    89,    32,   933,
-      33,   654,   673,   195,   229,   244,   256,   934,   294,   312,
-     946,   335,   281,   300,    42,   374,   210,   415,    30,   211,
-     375,   238,   416,   196,   230,   245,   257,   239,   295,   313,
-     273,   336,   314,   315,   212,   617,   227,   240,   255,   184,
-     185,    44,   234,   186,   263,   617,   187,   858,   421,   213,
-     859,   433,   214,   422,   215,   225,   434,    46,   107,   108,
-     109,   110,   111,    48,   861,    50,   274,   862,   275,   276,
-     127,   128,   277,   278,   279,   357,   358,    52,   127,   128,
-     778,   779,   780,   781,   782,   783,   314,   315,   115,   116,
-     117,   118,   119,   120,    94,   638,   639,   197,   198,   199,
-    1051,   125,    54,  1052,  1053,  1054,   127,   128,   792,   793,
-     125,    56,   200,    58,   127,   128,   201,   202,   203,   129,
-     436,   674,   236,   127,   128,   437,   204,    60,   883,   205,
-     132,   884,    90,   103,   465,   204,   104,   206,   205,   466,
-      62,    91,    92,    93,    64,   105,    66,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   480,    86,    94,    94,
-     933,   481,    34,    35,    36,    37,   124,    94,   934,   482,
-    1049,   946,   486,  1050,   483,   274,   141,   487,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   127,   128,   415,
-     124,   125,   641,   642,   815,    94,   109,   110,   111,   253,
-     810,   126,   482,    94,   127,   128,   486,   816,   421,   129,
-     363,   817,    94,   818,   130,   131,   915,   364,   366,   365,
-     132,   677,   678,   679,   680,   367,   109,   110,   111,   820,
-     133,   373,   379,   134,   821,   380,   124,   125,   274,   447,
-     135,   136,   840,   840,   137,   138,   381,   841,   842,   388,
-     127,   128,   981,   389,   982,   983,   681,   274,   296,   275,
-     276,   297,   298,   949,   950,   139,   140,   125,   141,   127,
-     128,   390,   875,   879,    95,   391,    94,   876,   880,   392,
-     127,   128,   755,   756,   757,   758,   393,   759,   488,   489,
-     480,   246,   394,    94,   408,   881,   457,   247,   248,   249,
-     250,   251,   252,   840,   253,   433,  1016,   465,  1012,  1029,
-    1013,  1017,  1023,   436,  1030,   142,   420,  1066,  1032,   429,
-     451,   188,  1067,   620,   621,   622,   623,  1000,  1001,  1002,
-    1003,   446,   448,   207,   455,   456,   237,   459,   460,    94,
-     461,   462,   490,   467,   231,   232,   470,   254,   208,   209,
-     472,   233,   195,   473,   476,   477,   485,   280,    94,   261,
-     301,   491,   299,   492,   229,   262,   302,   244,   493,    94,
-     494,   495,   196,   497,   498,   499,   210,   503,   256,   211,
-     334,   500,   501,   238,   230,   502,   352,   245,   294,   239,
-     353,   504,   281,   312,   212,   356,   227,   300,   257,   240,
-     505,   506,   234,   107,   108,   109,   110,   111,   295,   213,
-     255,   335,   214,   313,   215,   225,   263,   600,   601,   602,
-     507,   508,   509,   510,   511,   516,   515,   512,   513,   514,
-     517,   336,   518,   115,   116,   117,   118,   119,   120,   519,
-     520,   123,   521,   522,  1033,   523,   125,   274,   524,   525,
-     526,   527,   528,   529,   530,   531,   532,   533,   534,   127,
-     128,   535,   202,   537,   129,   538,   539,   542,   540,   543,
-     544,   204,   545,   546,   205,   547,   549,   548,   606,   550,
-     551,   553,   206,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,    14,   555,   142,   556,
-     557,   669,   558,   559,   188,   560,   561,   562,   564,   565,
-     567,   568,   356,   566,   569,   572,   576,   570,   573,   574,
-     577,   685,   579,   580,   581,   582,   583,   584,   585,   607,
-     794,   586,   334,   587,   588,   195,   589,   590,   352,   591,
-     594,   597,   353,   676,   595,   598,   599,   603,    94,   604,
-     605,   608,   609,   610,   611,   196,   127,   128,   613,   694,
-     612,   795,   614,   335,   695,   696,   697,   698,   699,   700,
-     701,   702,   703,   704,   705,   706,   707,   708,   709,   710,
-     711,   796,   615,   336,   616,    32,   619,   625,   626,   627,
-     628,   633,   690,   629,   630,   274,   632,   635,   321,   322,
-     323,   324,   325,   326,   327,   328,   329,   330,   331,   332,
-     333,   634,   636,   644,   645,   647,   652,   139,   140,   684,
-     646,   892,   735,   739,   743,   747,   648,   649,   751,   651,
-     767,   653,   770,   774,   802,   655,   806,   826,   656,   827,
-     828,   657,   829,   830,   658,    94,   835,   836,   837,   659,
-     660,   661,   662,   663,   664,   665,   666,   667,   668,   670,
-     671,   672,   683,   838,   839,   845,   900,   844,   848,   847,
-     850,   851,   853,   854,   857,   856,   865,   631,   864,   868,
-     867,   869,   870,   871,   872,   873,   874,   890,   885,   889,
-     894,   893,   896,   897,   898,   899,    94,   901,   902,   905,
-     906,   907,   903,   904,   908,   978,   909,   979,   994,   995,
-    1043,   998,  1014,   910,  1019,  1027,   911,  1015,  1021,   912,
-    1020,   999,   913,   971,   972,  1022,   973,   974,   975,  1035,
-     976,  1005,  1006,  1007,  1008,  1009,  1010,  1011,  1024,  1038,
-    1025,  1031,  1040,  1045,  1039,  1036,   207,  1042,  1063,   280,
-     301,  1044,   299,  1064,  1065,   923,   302,   231,   232,  1068,
-     951,   208,   209,   254,   233,   953,   316,   943,  1069,  1070,
-     924,   925,   957,   944,  1071,   261,  1073,   229,   958,   794,
-     294,   262,   984,   312,   281,   496,   941,   300,   237,   210,
-     932,   955,   211,   686,   256,   952,   536,   230,   926,   541,
-     295,   927,   935,   313,   689,   895,   942,   212,   936,   227,
-     795,   956,   814,   986,   257,   234,   928,   985,   940,   244,
-     916,   969,   213,   954,   945,   214,   255,   215,   225,   959,
-     796,   929,   263,   987,   930,   238,   931,   937,   914,   245,
-     970,   239,   977,   918,   578,   917,   552,   948,  1034,   947,
-     571,   240,   920,   919,   922,   921,   575,   967,   554,   996,
-     997,   563,   968,   966,   811,  1037,   801,   688,   592,   980,
-     596,   687,   593,  1061,  1041,  1072,   993,     0,     0,     0,
+      95,   142,   188,   207,   239,   256,   303,   282,   301,   318,
+     338,   274,   360,   233,   304,   742,    89,   943,   944,   208,
+     195,   231,   246,   258,    83,   296,   314,    31,   339,    32,
+     656,    33,    30,   229,   242,   257,   660,   956,   361,   362,
+      42,   283,   302,   109,   110,   111,   625,    44,   679,   209,
+     276,    46,   196,   232,   247,   259,   625,   297,   315,   378,
+     340,   419,   129,   130,   379,   234,   420,   263,   210,   211,
+      86,   235,   212,   264,   184,   185,   316,   317,   186,   866,
+      48,   187,   867,   236,   213,   265,   127,   214,   316,   317,
+     215,   109,   110,   111,   216,   644,   645,   240,   217,   129,
+     130,   227,    50,   241,   683,   684,   685,   686,   425,   437,
+     248,    52,   127,   426,   438,    54,   249,   250,   251,   252,
+     253,   254,    56,   255,   238,   129,   130,   991,    58,   992,
+     993,   440,    60,   126,   127,   276,   441,   204,    94,   687,
+     205,   469,    62,   129,   130,   486,   470,   129,   130,   126,
+     487,    94,   488,    90,   129,   130,   103,   489,    64,   104,
+     959,   960,    91,    92,    93,    66,   647,   648,   105,   680,
+     106,   107,   108,   109,   110,   111,   112,   113,   114,    94,
+     943,   944,   786,   787,   788,   789,   790,   791,    94,   492,
+     255,   818,   800,   801,   493,    34,    35,    36,    37,   141,
+     956,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   367,   368,    94,   126,   127,   763,   764,   765,
+     766,   869,   767,   419,   870,   369,   128,   370,   823,   129,
+     130,   371,    94,   488,   131,   377,    94,   492,   824,   132,
+     133,   425,   825,    94,   891,   134,   826,   892,   923,   276,
+     298,   277,   278,   299,   300,   135,   383,  1059,   136,   828,
+    1060,   129,   130,   848,   829,   137,   138,   702,   849,   139,
+     140,   275,   703,   704,   705,   706,   707,   708,   709,   710,
+     711,   712,   713,   714,   715,   716,   717,   718,   719,   384,
+     385,  1061,   848,   141,  1062,  1063,  1064,   850,   107,   108,
+     109,   110,   111,   392,   393,   276,   394,   395,    95,   276,
+     396,   277,   278,   397,   883,   279,   280,   281,    94,   884,
+     398,   129,   130,   399,   494,   495,   400,   414,   115,   116,
+     117,   118,   119,   120,   121,   122,   424,   887,   450,   197,
+     198,   199,   888,   127,   433,   451,   486,   848,   437,   142,
+      94,   889,  1022,  1023,   200,   188,   129,   130,   201,   202,
+     203,   131,   452,   455,  1026,   460,   459,   207,   204,  1027,
+     239,   205,   134,   195,   461,   469,   465,   233,   463,   206,
+    1033,   256,  1039,   208,   440,   231,   464,  1040,   246,  1042,
+    1076,   282,   466,   506,   303,  1077,   301,   229,   471,   258,
+     242,   474,   304,   476,   477,   196,    94,   480,   481,   296,
+      94,   257,   491,   209,   314,   496,   338,   232,   497,   360,
+     247,   628,   629,   630,   631,   283,   498,   499,   500,   234,
+     302,   259,   210,   211,   339,   235,   212,  1010,  1011,  1012,
+    1013,   297,   501,   263,   503,    94,   315,   236,   213,   264,
+     504,   214,   505,   507,   215,   608,   609,   610,   216,   508,
+     509,   265,   217,   240,   510,   227,   340,   511,   512,   241,
+     107,   108,   109,   110,   111,   513,   514,   520,   515,   516,
+     524,   517,   518,  1043,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,   519,   525,
+     115,   116,   117,   118,   119,   120,   121,   122,   521,   523,
+     125,   522,   526,   527,   528,   127,   276,   529,   530,   531,
+     532,   533,   534,   535,   536,   537,   538,   539,   129,   130,
+     540,   202,   541,   131,   543,   544,   142,   545,   360,   675,
+     204,   546,   188,   205,   548,   549,   550,   551,   552,   553,
+     554,   206,   129,   130,   555,   556,   557,   559,   561,   562,
+     195,   693,   563,   564,   565,   566,   567,   568,   802,   570,
+     338,   571,   572,   573,   574,   575,   578,   576,   582,   583,
+     586,   579,   580,   585,   587,   588,   803,   589,   339,   590,
+     591,   592,   196,   593,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   594,   595,   596,
+     597,   598,   599,   336,   337,   602,   603,    94,   804,   605,
+     340,   606,   614,   607,   611,   612,   613,   615,   616,   617,
+     618,   619,   620,   621,   622,   623,   624,   698,   627,    32,
+     633,    94,   634,   635,   636,   682,   650,   637,   638,   640,
+     641,   642,   651,   652,   653,   654,   655,   657,   658,   659,
+     661,   662,   663,   664,   665,   666,   667,   668,   692,   669,
+     670,   671,   672,   673,   674,   676,   677,   678,   743,   689,
+     690,   747,   751,   755,   691,   759,   775,   778,   782,   810,
+     814,   834,   835,   836,   837,   838,   843,   844,   845,   846,
+     847,   853,   893,   852,   856,   855,   858,   859,   861,   862,
+     865,   864,   873,   908,   872,   876,   875,   877,   878,   879,
+     880,   881,   882,   898,   909,   897,   639,   902,   901,   900,
+     904,   905,   906,   907,   913,   914,   915,   916,   910,   988,
+     989,  1005,   911,  1004,   921,  1008,  1031,   912,  1024,  1029,
+    1025,   917,   918,   919,  1030,   920,   981,  1032,   982,   983,
+     984,  1037,   985,  1045,   986,  1009,  1015,  1016,  1017,  1018,
+    1019,  1020,  1021,  1034,  1035,  1041,  1048,  1050,  1049,  1046,
+    1053,  1055,  1052,  1054,   207,  1073,  1074,   282,   303,  1075,
+     301,  1078,   542,   931,   233,   502,   304,  1079,   961,  1080,
+     208,   256,   231,   963,   318,   296,   694,  1081,   314,   932,
+     697,   951,   903,   547,   229,   822,   965,   802,   922,   258,
+     994,   283,   924,   950,   302,  1083,   239,   942,   964,   980,
+     209,   257,   962,   958,   232,   803,   979,   297,   996,   933,
+     315,   987,   926,   952,   246,   925,   234,   584,   966,   210,
+     211,   259,   235,   212,   995,   953,   242,   558,   934,   935,
+     967,   954,   936,   263,   236,   213,   968,   804,   214,   264,
+     997,   215,   957,   955,   937,   216,   247,   938,   969,   217,
+     939,   265,   227,  1044,   940,   581,   945,   577,   941,   930,
+     928,   947,   946,   927,   929,  1007,  1006,   560,   569,  1047,
+     990,   819,   809,   696,   600,   604,   976,  1003,   978,   977,
+    1051,  1071,  1082,   601,     0,     0,     0,   695,     0,   240,
+       0,     0,     0,     0,     0,   241,     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,   923,     0,     0,     0,
-       0,   951,     0,     0,     0,     0,   953,     0,   943,   984,
-       0,   924,   925,   957,   944,     0,     0,     0,     0,   958,
-       0,     0,     0,     0,     0,     0,     0,   941,     0,     0,
-       0,   932,   955,     0,     0,     0,   952,     0,     0,   926,
-     986,     0,   927,   935,   985,     0,     0,   942,     0,   936,
-       0,     0,   956,     0,     0,     0,     0,   928,     0,   940,
-     987,     0,     0,     0,   954,   945,     0,     0,     0,     0,
-     959,     0,   929,     0,     0,   930,     0,   931,   937
+       0,     0,     0,     0,     0,     0,   931,     0,     0,     0,
+       0,   961,     0,     0,     0,     0,   963,     0,     0,   994,
+       0,     0,   932,     0,   951,     0,     0,     0,     0,   965,
+       0,     0,     0,     0,     0,     0,   950,   996,     0,     0,
+     942,   964,     0,     0,     0,   962,     0,     0,     0,     0,
+       0,     0,   933,   995,     0,     0,   952,     0,     0,     0,
+       0,   966,     0,     0,     0,     0,     0,     0,   953,   997,
+       0,   934,   935,   967,   954,   936,     0,     0,     0,   968,
+       0,     0,     0,     0,     0,     0,   955,   937,     0,     0,
+     938,   969,     0,   939,     0,     0,     0,   940,     0,   945,
+       0,   941,     0,     0,   947,   946
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
       70,    71,    72,    73,    74,    75,    78,    77,    78,    79,
-      80,    76,    78,   610,    73,    73,    80,    75,    73,    73,
-      80,    73,    68,    75,    81,   549,     5,    10,     7,   855,
-       9,   555,    18,    72,    73,    74,    75,   855,    77,    78,
-     855,    80,    77,    78,     7,     3,    73,     3,     0,    73,
-       8,    74,     8,    72,    73,    74,    75,    74,    77,    78,
-      34,    80,   109,   110,    73,   521,    73,    74,    75,    15,
-      16,     7,    73,    19,    75,   531,    22,     3,     3,    73,
-       6,     3,    73,     8,    73,    73,     8,     7,    26,    27,
-      28,    29,    30,     7,     3,     7,    70,     6,    72,    73,
-      82,    83,    76,    77,    78,    12,    13,     7,    82,    83,
-     112,   113,   114,   115,   116,   117,   109,   110,    56,    57,
-      58,    59,    60,    61,   171,    17,    18,    65,    66,    67,
-     148,    69,     7,   151,   152,   153,    82,    83,   120,   121,
-      69,     7,    80,     7,    82,    83,    84,    85,    86,    87,
-       3,   137,    81,    82,    83,     8,    94,     7,     3,    97,
-      98,     6,   145,    11,     3,    94,    14,   105,    97,     8,
-       7,   154,   155,   156,     7,    23,     7,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,     3,   171,   171,   171,
-    1016,     8,   171,   172,   173,   174,    68,   171,  1016,     3,
-       3,  1016,     3,     6,     8,    70,   146,     8,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    82,    83,     3,
-      68,    69,    20,    21,     8,   171,    28,    29,    30,   106,
-     107,    79,     3,   171,    82,    83,     3,     8,     3,    87,
-       6,     8,   171,     8,    92,    93,   843,     3,     8,     4,
-      98,   139,   140,   141,   142,     3,    28,    29,    30,     3,
-     108,     4,     4,   111,     8,     4,    68,    69,    70,     3,
-     118,   119,     3,     3,   122,   123,     4,     8,     8,     4,
-      82,    83,   147,     4,   149,   150,   174,    70,    71,    72,
-      73,    74,    75,    95,    96,   143,   144,    69,   146,    82,
-      83,     4,     3,     3,   374,     4,   171,     8,     8,     4,
-      82,    83,    99,   100,   101,   102,     4,   104,   364,   365,
-       3,    93,     4,   171,     4,     8,     3,    99,   100,   101,
-     102,   103,   104,     3,   106,     3,     3,     3,     8,     3,
-       8,     8,     8,     3,     8,   415,     4,     3,     8,     4,
-       4,   421,     8,    88,    89,    90,    91,    35,    36,    37,
-      38,     8,     8,   433,     4,     8,   436,     4,     4,   171,
-       8,     3,   171,     4,   433,   433,     4,   447,   433,   433,
-       4,   433,   421,     4,     4,     4,     4,   457,   171,   447,
-     462,     4,   462,     4,   433,   447,   462,   436,     4,   171,
-       4,     4,   421,     4,     4,     4,   433,     4,   447,   433,
-     480,   174,   174,   436,   433,   174,   480,   436,   457,   436,
-     480,     4,   457,   462,   433,   482,   433,   462,   447,   436,
-       4,     4,   433,    26,    27,    28,    29,    30,   457,   433,
-     447,   480,   433,   462,   433,   433,   447,   493,   494,   495,
-       4,     4,   172,   172,   172,     4,   172,   174,   173,   173,
-       4,   480,     4,    56,    57,    58,    59,    60,    61,     4,
-       4,    64,     4,     4,   998,     4,    69,    70,     4,     4,
-       4,     4,     4,   172,     4,     4,     4,     4,     4,    82,
-      83,     4,    85,     4,    87,     4,     4,     4,   174,     4,
-       4,    94,     4,     4,    97,     4,     4,   172,   171,     4,
-       4,     4,   105,   157,   158,   159,   160,   161,   162,   163,
-     164,   165,   166,   167,   168,   169,   170,     4,   598,     4,
-       4,   577,     4,     4,   604,     4,     4,     4,     4,     4,
-       4,     4,   599,   172,     4,     4,     4,   174,   174,   174,
-       4,   597,   174,     4,     4,   172,     4,   172,   172,   171,
-     630,     4,   632,     4,   174,   604,   174,     4,   632,     4,
-       4,     4,   632,   138,   172,     7,     7,     7,   171,     7,
-       7,   171,     7,     7,     5,   604,    82,    83,     5,    34,
-     171,   630,     5,   632,    39,    40,    41,    42,    43,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,   630,     5,   632,     5,     7,   171,     5,     5,     5,
-       5,   171,    24,     7,     7,    70,     7,     5,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   171,     5,   171,   171,     5,     7,   143,   144,     5,
-     171,     8,     7,     7,     7,     7,   171,   171,     7,   171,
-       7,   171,     7,     7,     7,   171,     7,     4,   171,     4,
-       4,   171,     4,     4,   171,   171,     4,     4,     4,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   171,
-     171,   171,   171,     4,     4,     3,   172,     6,     3,     6,
-       6,     3,     6,     3,     3,     6,     3,   531,     6,     3,
-       6,     4,     4,     4,     4,     4,     4,     3,   171,     6,
-       4,     6,     4,     4,     4,     4,   171,   174,   172,     4,
-       4,     4,   174,   172,     4,     4,   172,     4,     6,     3,
-       5,     4,     8,   172,     4,     4,   172,     8,     3,   172,
-       8,   171,   174,   172,   172,     8,   172,   172,   172,     4,
-     172,   171,   171,   171,   171,   171,   171,   171,   171,     4,
-     171,   171,     4,     7,   172,   174,   846,   171,     4,   849,
-     852,   171,   852,     4,     4,   855,   852,   846,   846,     4,
-     860,   846,   846,   863,   846,   860,   866,   855,   174,   172,
-     855,   855,   860,   855,   172,   863,   171,   846,   860,   879,
-     849,   863,   882,   852,   849,   374,   855,   852,   888,   846,
-     855,   860,   846,   598,   863,   860,   415,   846,   855,   421,
-     849,   855,   855,   852,   604,   820,   855,   846,   855,   846,
-     879,   860,   684,   882,   863,   846,   855,   882,   855,   888,
-     845,   866,   846,   860,   855,   846,   863,   846,   846,   860,
-     879,   855,   863,   882,   855,   888,   855,   855,   840,   888,
-     868,   888,   875,   848,   465,   846,   433,   858,  1016,   857,
-     457,   888,   851,   849,   854,   852,   462,   863,   436,   888,
-     890,   447,   865,   861,   652,  1021,   632,   603,   480,   879,
-     486,   599,   482,  1049,  1029,  1066,   883,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      80,    76,    81,    73,    78,   618,    10,   863,   863,    73,
+      72,    73,    74,    75,    68,    77,    78,     5,    80,     7,
+     555,     9,     0,    73,    74,    75,   561,   863,    12,    13,
+       7,    77,    78,    28,    29,    30,   529,     7,    18,    73,
+      72,     7,    72,    73,    74,    75,   539,    77,    78,     3,
+      80,     3,    84,    85,     8,    73,     8,    75,    73,    73,
+     173,    73,    73,    75,    15,    16,   111,   112,    19,     3,
+       7,    22,     6,    73,    73,    75,    71,    73,   111,   112,
+      73,    28,    29,    30,    73,    17,    18,    74,    73,    84,
+      85,    73,     7,    74,   141,   142,   143,   144,     3,     3,
+      95,     7,    71,     8,     8,     7,   101,   102,   103,   104,
+     105,   106,     7,   108,    83,    84,    85,   149,     7,   151,
+     152,     3,     7,    70,    71,    72,     8,    96,   173,   176,
+      99,     3,     7,    84,    85,     3,     8,    84,    85,    70,
+       8,   173,     3,   147,    84,    85,    11,     8,     7,    14,
+      97,    98,   156,   157,   158,     7,    20,    21,    23,   139,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,   173,
+    1026,  1026,   114,   115,   116,   117,   118,   119,   173,     3,
+     108,   109,   122,   123,     8,   173,   174,   175,   176,   148,
+    1026,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,     6,     3,   173,    70,    71,   101,   102,   103,
+     104,     3,   106,     3,     6,     4,    81,     8,     8,    84,
+      85,     3,   173,     3,    89,     4,   173,     3,     8,    94,
+      95,     3,     8,   173,     3,   100,     8,     6,   851,    72,
+      73,    74,    75,    76,    77,   110,     4,     3,   113,     3,
+       6,    84,    85,     3,     8,   120,   121,    34,     8,   124,
+     125,    34,    39,    40,    41,    42,    43,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    55,     4,
+       4,   150,     3,   148,   153,   154,   155,     8,    26,    27,
+      28,    29,    30,     4,     4,    72,     4,     4,   378,    72,
+       4,    74,    75,     4,     3,    78,    79,    80,   173,     8,
+       4,    84,    85,     4,   368,   369,     4,     4,    56,    57,
+      58,    59,    60,    61,    62,    63,     4,     3,     8,    67,
+      68,    69,     8,    71,     4,     3,     3,     3,     3,   419,
+     173,     8,     8,     8,    82,   425,    84,    85,    86,    87,
+      88,    89,     8,     4,     3,     8,     4,   437,    96,     8,
+     440,    99,   100,   425,     3,     3,     8,   437,     4,   107,
+       8,   451,     3,   437,     3,   437,     4,     8,   440,     8,
+       3,   461,     3,   176,   466,     8,   466,   437,     4,   451,
+     440,     4,   466,     4,     4,   425,   173,     4,     4,   461,
+     173,   451,     4,   437,   466,   173,   486,   437,     4,   488,
+     440,    90,    91,    92,    93,   461,     4,     4,     4,   437,
+     466,   451,   437,   437,   486,   437,   437,    35,    36,    37,
+      38,   461,     4,   451,     4,   173,   466,   437,   437,   451,
+       4,   437,     4,   176,   437,   499,   500,   501,   437,   176,
+       4,   451,   437,   440,     4,   437,   486,     4,     4,   440,
+      26,    27,    28,    29,    30,     4,     4,   176,   174,   174,
+       4,   174,   174,  1008,   159,   160,   161,   162,   163,   164,
+     165,   166,   167,   168,   169,   170,   171,   172,   174,     4,
+      56,    57,    58,    59,    60,    61,    62,    63,   175,   174,
+      66,   175,     4,     4,     4,    71,    72,     4,     4,     4,
+       4,     4,     4,     4,     4,   174,     4,     4,    84,    85,
+       4,    87,     4,    89,     4,     4,   606,     4,   607,   583,
+      96,   176,   612,    99,     4,     4,     4,     4,     4,     4,
+     174,   107,    84,    85,     4,     4,     4,     4,     4,     4,
+     612,   605,     4,     4,     4,     4,     4,     4,   638,     4,
+     640,     4,   174,     4,     4,     4,     4,   176,     4,     4,
+       4,   176,   176,   176,     4,   174,   638,     4,   640,   174,
+     174,     4,   612,     4,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,   138,   176,   176,     4,
+       4,     4,     4,   145,   146,     4,   174,   173,   638,     4,
+     640,     7,   173,     7,     7,     7,     7,   173,   173,     7,
+       7,     5,   173,     5,     5,     5,     5,    24,   173,     7,
+       5,   173,     5,     5,     5,   140,   173,     7,     7,     7,
+       5,     5,   173,   173,     5,   173,   173,   173,     7,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,     5,   173,
+     173,   173,   173,   173,   173,   173,   173,   173,     7,   173,
+     173,     7,     7,     7,   173,     7,     7,     7,     7,     7,
+       7,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     3,   173,     6,     3,     6,     6,     3,     6,     3,
+       3,     6,     3,   174,     6,     3,     6,     4,     4,     4,
+       4,     4,     4,     3,   176,     6,   539,     4,     6,     8,
+       4,     4,     4,     4,     4,     4,     4,     4,   174,     4,
+       4,     3,   176,     6,   176,     4,     3,   174,     8,     4,
+       8,   174,   174,   174,     8,   174,   174,     8,   174,   174,
+     174,     4,   174,     4,   174,   173,   173,   173,   173,   173,
+     173,   173,   173,   173,   173,   173,     4,     4,   174,   176,
+       5,     7,   173,   173,   854,     4,     4,   857,   860,     4,
+     860,     4,   419,   863,   854,   378,   860,   176,   868,   174,
+     854,   871,   854,   868,   874,   857,   606,   174,   860,   863,
+     612,   863,   828,   425,   854,   692,   868,   887,   848,   871,
+     890,   857,   853,   863,   860,   173,   896,   863,   868,   876,
+     854,   871,   868,   866,   854,   887,   874,   857,   890,   863,
+     860,   883,   856,   863,   896,   854,   854,   469,   868,   854,
+     854,   871,   854,   854,   890,   863,   896,   437,   863,   863,
+     868,   863,   863,   871,   854,   854,   868,   887,   854,   871,
+     890,   854,   865,   863,   863,   854,   896,   863,   868,   854,
+     863,   871,   854,  1026,   863,   466,   863,   461,   863,   862,
+     859,   863,   863,   857,   860,   898,   896,   440,   451,  1031,
+     887,   658,   640,   611,   486,   492,   869,   891,   873,   871,
+    1039,  1059,  1076,   488,    -1,    -1,    -1,   607,    -1,   896,
+      -1,    -1,    -1,    -1,    -1,   896,    -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,  1016,    -1,    -1,    -1,
-      -1,  1021,    -1,    -1,    -1,    -1,  1021,    -1,  1016,  1029,
-      -1,  1016,  1016,  1021,  1016,    -1,    -1,    -1,    -1,  1021,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1016,    -1,    -1,
-      -1,  1016,  1021,    -1,    -1,    -1,  1021,    -1,    -1,  1016,
-    1029,    -1,  1016,  1016,  1029,    -1,    -1,  1016,    -1,  1016,
-      -1,    -1,  1021,    -1,    -1,    -1,    -1,  1016,    -1,  1016,
-    1029,    -1,    -1,    -1,  1021,  1016,    -1,    -1,    -1,    -1,
-    1021,    -1,  1016,    -1,    -1,  1016,    -1,  1016,  1016
+      -1,    -1,    -1,    -1,    -1,    -1,  1026,    -1,    -1,    -1,
+      -1,  1031,    -1,    -1,    -1,    -1,  1031,    -1,    -1,  1039,
+      -1,    -1,  1026,    -1,  1026,    -1,    -1,    -1,    -1,  1031,
+      -1,    -1,    -1,    -1,    -1,    -1,  1026,  1039,    -1,    -1,
+    1026,  1031,    -1,    -1,    -1,  1031,    -1,    -1,    -1,    -1,
+      -1,    -1,  1026,  1039,    -1,    -1,  1026,    -1,    -1,    -1,
+      -1,  1031,    -1,    -1,    -1,    -1,    -1,    -1,  1026,  1039,
+      -1,  1026,  1026,  1031,  1026,  1026,    -1,    -1,    -1,  1031,
+      -1,    -1,    -1,    -1,    -1,    -1,  1026,  1026,    -1,    -1,
+    1026,  1031,    -1,  1026,    -1,    -1,    -1,  1026,    -1,  1026,
+      -1,  1026,    -1,    -1,  1026,  1026
   };
 
   const unsigned short
   Dhcp4Parser::yystos_[] =
   {
-       0,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     166,   167,   168,   169,   170,   176,   177,   178,   179,   180,
-     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
-       0,     5,     7,     9,   171,   172,   173,   174,   191,   192,
-     193,   198,     7,   207,     7,   213,     7,   233,     7,   330,
-       7,   410,     7,   426,     7,   362,     7,   368,     7,   392,
-       7,   306,     7,   483,     7,   530,     7,   521,   199,   194,
-     208,   214,   234,   331,   411,   427,   363,   369,   393,   307,
-     484,   531,   522,   191,   200,   201,   171,   196,   197,    10,
-     145,   154,   155,   156,   171,   206,   209,   210,   211,   513,
-     515,   517,   528,    11,    14,    23,    25,    26,    27,    28,
+       0,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   178,   179,   180,   181,   182,
+     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
+       0,     5,     7,     9,   173,   174,   175,   176,   193,   194,
+     195,   200,     7,   209,     7,   215,     7,   237,     7,   334,
+       7,   414,     7,   430,     7,   366,     7,   372,     7,   396,
+       7,   310,     7,   487,     7,   534,     7,   525,   201,   196,
+     210,   216,   238,   335,   415,   431,   367,   373,   397,   311,
+     488,   535,   526,   193,   202,   203,   173,   198,   199,    10,
+     147,   156,   157,   158,   173,   208,   211,   212,   213,   517,
+     519,   521,   532,    11,    14,    23,    25,    26,    27,    28,
       29,    30,    31,    32,    33,    56,    57,    58,    59,    60,
-      61,    62,    63,    64,    68,    69,    79,    82,    83,    87,
-      92,    93,    98,   108,   111,   118,   119,   122,   123,   143,
-     144,   146,   206,   215,   216,   217,   218,   219,   220,   221,
-     222,   223,   224,   226,   227,   228,   229,   244,   246,   252,
-     254,   291,   300,   314,   324,   348,   352,   360,   386,   416,
-     418,   420,   431,   433,   435,   458,   470,   471,   479,   481,
-     509,   511,   519,   534,    15,    16,    19,    22,   206,   231,
-     232,   235,   237,   240,   243,   416,   418,    65,    66,    67,
-      80,    84,    85,    86,    94,    97,   105,   206,   217,   218,
-     219,   220,   221,   222,   227,   228,   332,   333,   334,   336,
-     338,   340,   342,   344,   346,   348,   351,   386,   404,   416,
-     418,   420,   431,   433,   435,   455,    81,   206,   344,   346,
-     386,   412,   413,   414,   416,   418,    93,    99,   100,   101,
-     102,   103,   104,   106,   206,   386,   416,   418,   428,   429,
-     430,   431,   433,   435,   437,   441,   443,   445,   447,   449,
-     451,   453,   360,    34,    70,    72,    73,    76,    77,    78,
-     206,   272,   370,   371,   372,   373,   374,   375,   376,   378,
-     380,   382,   383,   385,   416,   418,    71,    74,    75,   206,
-     272,   374,   380,   394,   395,   396,   397,   398,   400,   401,
-     402,   403,   416,   418,   109,   110,   206,   308,   309,   310,
-     312,   124,   125,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   135,   136,   206,   416,   418,   485,   486,   487,
-     488,   490,   492,   493,   495,   496,   497,   500,   502,   503,
-     504,   507,   509,   511,   532,   533,   534,    12,    13,   523,
-     524,   525,   527,     6,     3,     4,     8,     3,   212,   529,
-     514,   516,   518,     4,     3,     8,   520,   230,   247,     4,
-       4,     4,   432,   434,   436,   245,   253,   255,     4,     4,
-       4,     4,     4,     4,     4,   225,   325,   361,   387,   353,
-     417,   419,   349,   292,   459,   421,   301,   315,     4,   472,
-     480,   482,   510,   512,   535,     3,     8,   236,   238,   241,
-       4,     3,     8,   337,   339,   341,   405,   335,   343,     4,
-     347,   345,   456,     3,     8,   415,     3,     8,   454,   442,
-     444,   448,   446,   452,   450,   438,     8,     3,     8,   377,
-     273,     4,   381,   379,   384,     4,     8,     3,   399,     4,
-       4,     8,     3,   311,   313,     3,     8,     4,   489,   491,
-       4,   494,     4,     4,   498,   501,     4,     4,   505,   508,
-       3,     8,     3,     8,   526,     4,     3,     8,   191,   191,
-     171,     4,     4,     4,     4,     4,   210,     4,     4,     4,
-     174,   174,   174,     4,     4,     4,     4,     4,     4,   172,
-     172,   172,   174,   173,   173,   172,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   172,
-       4,     4,     4,     4,     4,     4,   216,     4,     4,     4,
-     174,   232,     4,     4,     4,     4,     4,     4,   172,     4,
-       4,     4,   333,     4,   413,     4,     4,     4,     4,     4,
-       4,     4,     4,   430,     4,     4,   172,     4,     4,     4,
-     174,   372,     4,   174,   174,   396,     4,     4,   309,   174,
-       4,     4,   172,     4,   172,   172,     4,     4,   174,   174,
-       4,     4,   486,   533,     4,   172,   524,     4,     7,     7,
-     191,   191,   191,     7,     7,     7,   171,   171,   171,     7,
-       7,     5,   171,     5,     5,     5,     5,   193,   195,   171,
-      88,    89,    90,    91,   350,     5,     5,     5,     5,     7,
-       7,   195,     7,   171,   171,     5,     5,   202,    17,    18,
-     239,    20,    21,   242,   171,   171,   171,     5,   171,   171,
-     202,   171,     7,   171,   202,   171,   171,   171,   171,   171,
-     171,   171,   171,   171,   171,   171,   171,   171,   171,   191,
-     171,   171,   171,    18,   137,   499,   138,   139,   140,   141,
-     142,   174,   506,   171,     5,   191,   215,   532,   523,   231,
-      24,   248,   249,   250,    34,    39,    40,    41,    42,    43,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,   206,   260,   261,   262,   265,   267,   269,   271,
-     272,   274,   275,   276,   277,   278,   279,   280,   281,   283,
-     285,   287,   289,   290,   260,     7,   256,   257,   258,     7,
-     326,   327,   328,     7,   364,   365,   366,     7,   388,   389,
-     390,     7,   354,   355,   356,    99,   100,   101,   102,   104,
-     293,   294,   295,   296,   297,   298,   299,     7,   460,   461,
-       7,   422,   423,   424,     7,   302,   303,   304,   112,   113,
-     114,   115,   116,   117,   316,   317,   318,   319,   320,   321,
-     322,   323,   120,   121,   206,   416,   418,   473,   474,   475,
-     477,   485,     7,   536,   537,   203,     7,   406,   407,   408,
-     107,   437,   439,   457,   256,     8,     8,     8,     8,   251,
-       3,     8,   263,   266,   268,   270,     4,     4,     4,     4,
-       4,   282,   284,   286,   288,     4,     4,     4,     4,     4,
-       3,     8,     8,   259,     6,     3,   329,     6,     3,   367,
-       6,     3,   391,     6,     3,   357,     6,     3,     3,     6,
-     462,     3,     6,   425,     6,     3,   305,     6,     3,     4,
-       4,     4,     4,     4,     4,     3,     8,   476,   478,     3,
-       8,     8,   538,     3,     6,   171,   204,   205,   409,     6,
-       3,   440,     8,     6,     4,   249,     4,     4,     4,     4,
-     172,   174,   172,   174,   172,     4,     4,     4,     4,   172,
-     172,   172,   172,   174,   261,   260,   258,   332,   328,   370,
-     366,   394,   390,   206,   217,   218,   219,   220,   221,   222,
-     227,   228,   272,   324,   342,   344,   346,   348,   358,   359,
-     386,   416,   418,   431,   433,   435,   455,   356,   294,    95,
-      96,   206,   272,   360,   386,   416,   418,   431,   433,   435,
-     463,   464,   465,   466,   467,   469,   461,   428,   424,   308,
-     304,   172,   172,   172,   172,   172,   172,   317,     4,     4,
-     474,   147,   149,   150,   206,   272,   416,   418,   539,   540,
-     541,   542,   544,   537,     6,     3,   412,   408,     4,   171,
-      35,    36,    37,    38,   264,   171,   171,   171,   171,   171,
-     171,   171,     8,     8,     8,     8,     3,     8,   468,     4,
-       8,     3,     8,     8,   171,   171,   545,     4,   543,     3,
-       8,   171,     8,   202,   359,     4,   174,   465,     4,   172,
-       4,   540,   171,     5,   171,     7,   546,   547,   548,     3,
-       6,   148,   151,   152,   153,   549,   550,   551,   553,   554,
-     555,   547,   552,     4,     4,     4,     3,     8,     4,   174,
-     172,   172,   550,   171
+      61,    62,    63,    64,    65,    66,    70,    71,    81,    84,
+      85,    89,    94,    95,   100,   110,   113,   120,   121,   124,
+     125,   148,   208,   217,   218,   219,   220,   221,   222,   223,
+     224,   225,   226,   227,   228,   230,   231,   232,   233,   248,
+     250,   256,   258,   295,   304,   318,   328,   352,   356,   364,
+     390,   420,   422,   424,   435,   437,   439,   462,   474,   475,
+     483,   485,   523,   538,    15,    16,    19,    22,   208,   235,
+     236,   239,   241,   244,   247,   420,   422,    67,    68,    69,
+      82,    86,    87,    88,    96,    99,   107,   208,   219,   220,
+     221,   222,   223,   224,   225,   226,   231,   232,   336,   337,
+     338,   340,   342,   344,   346,   348,   350,   352,   355,   390,
+     408,   420,   422,   424,   435,   437,   439,   459,    83,   208,
+     348,   350,   390,   416,   417,   418,   420,   422,    95,   101,
+     102,   103,   104,   105,   106,   108,   208,   390,   420,   422,
+     432,   433,   434,   435,   437,   439,   441,   445,   447,   449,
+     451,   453,   455,   457,   364,    34,    72,    74,    75,    78,
+      79,    80,   208,   276,   374,   375,   376,   377,   378,   379,
+     380,   382,   384,   386,   387,   389,   420,   422,    73,    76,
+      77,   208,   276,   378,   384,   398,   399,   400,   401,   402,
+     404,   405,   406,   407,   420,   422,   111,   112,   208,   312,
+     313,   314,   316,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   136,   137,   138,   145,   146,   208,   420,
+     422,   489,   490,   491,   492,   494,   496,   497,   499,   500,
+     501,   504,   506,   507,   508,   511,   513,   515,   536,   537,
+     538,    12,    13,   527,   528,   529,   531,     6,     3,     4,
+       8,     3,   214,   533,   518,   520,   522,     4,     3,     8,
+     524,   234,   251,     4,     4,     4,   436,   438,   440,   249,
+     257,   259,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,   229,   329,   365,   391,   357,   421,   423,   353,   296,
+     463,   425,   305,   319,     4,   476,   484,   486,   539,     3,
+       8,   240,   242,   245,     4,     3,     8,   341,   343,   345,
+     409,   339,   347,     4,   351,   349,   460,     3,     8,   419,
+       3,     8,   458,   446,   448,   452,   450,   456,   454,   442,
+       8,     3,     8,   381,   277,     4,   385,   383,   388,     4,
+       8,     3,   403,     4,     4,     8,     3,   315,   317,     3,
+       8,     4,   493,   495,     4,   498,     4,     4,   502,   505,
+       4,     4,   509,   512,   514,   516,     3,     8,     3,     8,
+     530,     4,     3,     8,   193,   193,   173,     4,     4,     4,
+       4,     4,   212,     4,     4,     4,   176,   176,   176,     4,
+       4,     4,     4,     4,     4,   174,   174,   174,   174,   174,
+     176,   175,   175,   174,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   174,     4,     4,
+       4,     4,   218,     4,     4,     4,   176,   236,     4,     4,
+       4,     4,     4,     4,   174,     4,     4,     4,   337,     4,
+     417,     4,     4,     4,     4,     4,     4,     4,     4,   434,
+       4,     4,   174,     4,     4,     4,   176,   376,     4,   176,
+     176,   400,     4,     4,   313,   176,     4,     4,   174,     4,
+     174,   174,     4,     4,   176,   176,     4,     4,     4,     4,
+     490,   537,     4,   174,   528,     4,     7,     7,   193,   193,
+     193,     7,     7,     7,   173,   173,   173,     7,     7,     5,
+     173,     5,     5,     5,     5,   195,   197,   173,    90,    91,
+      92,    93,   354,     5,     5,     5,     5,     7,     7,   197,
+       7,     5,     5,   204,    17,    18,   243,    20,    21,   246,
+     173,   173,   173,     5,   173,   173,   204,   173,     7,   173,
+     204,   173,   173,   173,   173,   173,   173,   173,   173,   173,
+     173,   173,   173,   173,   173,   193,   173,   173,   173,    18,
+     139,   503,   140,   141,   142,   143,   144,   176,   510,   173,
+     173,   173,     5,   193,   217,   536,   527,   235,    24,   252,
+     253,   254,    34,    39,    40,    41,    42,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
+     208,   264,   265,   266,   269,   271,   273,   275,   276,   278,
+     279,   280,   281,   282,   283,   284,   285,   287,   289,   291,
+     293,   294,   264,     7,   260,   261,   262,     7,   330,   331,
+     332,     7,   368,   369,   370,     7,   392,   393,   394,     7,
+     358,   359,   360,   101,   102,   103,   104,   106,   297,   298,
+     299,   300,   301,   302,   303,     7,   464,   465,     7,   426,
+     427,   428,     7,   306,   307,   308,   114,   115,   116,   117,
+     118,   119,   320,   321,   322,   323,   324,   325,   326,   327,
+     122,   123,   208,   420,   422,   477,   478,   479,   481,   489,
+       7,   540,   541,   205,     7,   410,   411,   412,   109,   441,
+     443,   461,   260,     8,     8,     8,     8,   255,     3,     8,
+     267,   270,   272,   274,     4,     4,     4,     4,     4,   286,
+     288,   290,   292,     4,     4,     4,     4,     4,     3,     8,
+       8,   263,     6,     3,   333,     6,     3,   371,     6,     3,
+     395,     6,     3,   361,     6,     3,     3,     6,   466,     3,
+       6,   429,     6,     3,   309,     6,     3,     4,     4,     4,
+       4,     4,     4,     3,     8,   480,   482,     3,     8,     8,
+     542,     3,     6,   173,   206,   207,   413,     6,     3,   444,
+       8,     6,     4,   253,     4,     4,     4,     4,   174,   176,
+     174,   176,   174,     4,     4,     4,     4,   174,   174,   174,
+     174,   176,   265,   264,   262,   336,   332,   374,   370,   398,
+     394,   208,   219,   220,   221,   222,   223,   224,   225,   226,
+     231,   232,   276,   328,   346,   348,   350,   352,   362,   363,
+     390,   420,   422,   435,   437,   439,   459,   360,   298,    97,
+      98,   208,   276,   364,   390,   420,   422,   435,   437,   439,
+     467,   468,   469,   470,   471,   473,   465,   432,   428,   312,
+     308,   174,   174,   174,   174,   174,   174,   321,     4,     4,
+     478,   149,   151,   152,   208,   276,   420,   422,   543,   544,
+     545,   546,   548,   541,     6,     3,   416,   412,     4,   173,
+      35,    36,    37,    38,   268,   173,   173,   173,   173,   173,
+     173,   173,     8,     8,     8,     8,     3,     8,   472,     4,
+       8,     3,     8,     8,   173,   173,   549,     4,   547,     3,
+       8,   173,     8,   204,   363,     4,   176,   469,     4,   174,
+       4,   544,   173,     5,   173,     7,   550,   551,   552,     3,
+       6,   150,   153,   154,   155,   553,   554,   555,   557,   558,
+     559,   551,   556,     4,     4,     4,     3,     8,     4,   176,
+     174,   174,   554,   173
   };
 
   const unsigned short
   Dhcp4Parser::yyr1_[] =
   {
-       0,   175,   177,   176,   178,   176,   179,   176,   180,   176,
-     181,   176,   182,   176,   183,   176,   184,   176,   185,   176,
-     186,   176,   187,   176,   188,   176,   189,   176,   190,   176,
-     191,   191,   191,   191,   191,   191,   191,   192,   194,   193,
-     195,   196,   196,   197,   197,   199,   198,   200,   200,   201,
-     201,   203,   202,   204,   204,   205,   205,   206,   208,   207,
-     209,   209,   210,   210,   210,   210,   210,   210,   212,   211,
-     214,   213,   215,   215,   216,   216,   216,   216,   216,   216,
-     216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-     216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-     216,   216,   216,   216,   216,   216,   216,   216,   216,   216,
-     216,   216,   216,   216,   217,   218,   219,   220,   221,   222,
-     223,   225,   224,   226,   227,   228,   230,   229,   231,   231,
-     232,   232,   232,   232,   232,   232,   232,   234,   233,   236,
-     235,   238,   237,   239,   239,   241,   240,   242,   242,   243,
-     245,   244,   247,   246,   248,   248,   249,   251,   250,   253,
-     252,   255,   254,   256,   256,   257,   257,   259,   258,   260,
-     260,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     261,   263,   262,   264,   264,   264,   264,   266,   265,   268,
-     267,   270,   269,   271,   273,   272,   274,   275,   276,   277,
-     278,   279,   280,   282,   281,   284,   283,   286,   285,   288,
-     287,   289,   290,   292,   291,   293,   293,   294,   294,   294,
-     294,   294,   295,   296,   297,   298,   299,   301,   300,   302,
-     302,   303,   303,   305,   304,   307,   306,   308,   308,   308,
-     309,   309,   311,   310,   313,   312,   315,   314,   316,   316,
-     317,   317,   317,   317,   317,   317,   318,   319,   320,   321,
-     322,   323,   325,   324,   326,   326,   327,   327,   329,   328,
-     331,   330,   332,   332,   333,   333,   333,   333,   333,   333,
-     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
-     333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
-     333,   335,   334,   337,   336,   339,   338,   341,   340,   343,
-     342,   345,   344,   347,   346,   349,   348,   350,   350,   350,
-     350,   351,   353,   352,   354,   354,   355,   355,   357,   356,
-     358,   358,   359,   359,   359,   359,   359,   359,   359,   359,
-     359,   359,   359,   359,   359,   359,   359,   359,   359,   359,
-     359,   359,   359,   359,   361,   360,   363,   362,   364,   364,
-     365,   365,   367,   366,   369,   368,   370,   370,   371,   371,
-     372,   372,   372,   372,   372,   372,   372,   372,   372,   372,
-     373,   374,   375,   377,   376,   379,   378,   381,   380,   382,
-     384,   383,   385,   387,   386,   388,   388,   389,   389,   391,
-     390,   393,   392,   394,   394,   395,   395,   396,   396,   396,
-     396,   396,   396,   396,   396,   396,   397,   399,   398,   400,
-     401,   402,   403,   405,   404,   406,   406,   407,   407,   409,
-     408,   411,   410,   412,   412,   413,   413,   413,   413,   413,
-     413,   413,   415,   414,   417,   416,   419,   418,   421,   420,
-     422,   422,   423,   423,   425,   424,   427,   426,   428,   428,
-     429,   429,   430,   430,   430,   430,   430,   430,   430,   430,
-     430,   430,   430,   430,   430,   430,   430,   432,   431,   434,
-     433,   436,   435,   438,   437,   440,   439,   442,   441,   444,
-     443,   446,   445,   448,   447,   450,   449,   452,   451,   454,
-     453,   456,   455,   457,   457,   459,   458,   460,   460,   462,
-     461,   463,   463,   464,   464,   465,   465,   465,   465,   465,
-     465,   465,   465,   465,   465,   465,   466,   468,   467,   469,
-     470,   472,   471,   473,   473,   474,   474,   474,   474,   474,
-     476,   475,   478,   477,   480,   479,   482,   481,   484,   483,
-     485,   485,   486,   486,   486,   486,   486,   486,   486,   486,
-     486,   486,   486,   486,   486,   486,   486,   486,   486,   486,
-     487,   489,   488,   491,   490,   492,   494,   493,   495,   496,
-     498,   497,   499,   499,   501,   500,   502,   503,   505,   504,
-     506,   506,   506,   506,   506,   508,   507,   510,   509,   512,
-     511,   514,   513,   516,   515,   518,   517,   520,   519,   522,
-     521,   523,   523,   524,   524,   526,   525,   527,   529,   528,
-     531,   530,   532,   532,   533,   535,   534,   536,   536,   538,
-     537,   539,   539,   540,   540,   540,   540,   540,   540,   540,
-     541,   543,   542,   545,   544,   546,   546,   548,   547,   549,
-     549,   550,   550,   550,   550,   552,   551,   553,   554,   555
+       0,   177,   179,   178,   180,   178,   181,   178,   182,   178,
+     183,   178,   184,   178,   185,   178,   186,   178,   187,   178,
+     188,   178,   189,   178,   190,   178,   191,   178,   192,   178,
+     193,   193,   193,   193,   193,   193,   193,   194,   196,   195,
+     197,   198,   198,   199,   199,   201,   200,   202,   202,   203,
+     203,   205,   204,   206,   206,   207,   207,   208,   210,   209,
+     211,   211,   212,   212,   212,   212,   212,   212,   214,   213,
+     216,   215,   217,   217,   218,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,   218,   218,   218,   218,   218,   218,
+     218,   218,   218,   218,   219,   220,   221,   222,   223,   224,
+     225,   226,   227,   229,   228,   230,   231,   232,   234,   233,
+     235,   235,   236,   236,   236,   236,   236,   236,   236,   238,
+     237,   240,   239,   242,   241,   243,   243,   245,   244,   246,
+     246,   247,   249,   248,   251,   250,   252,   252,   253,   255,
+     254,   257,   256,   259,   258,   260,   260,   261,   261,   263,
+     262,   264,   264,   265,   265,   265,   265,   265,   265,   265,
+     265,   265,   265,   265,   265,   265,   265,   265,   265,   265,
+     265,   265,   265,   267,   266,   268,   268,   268,   268,   270,
+     269,   272,   271,   274,   273,   275,   277,   276,   278,   279,
+     280,   281,   282,   283,   284,   286,   285,   288,   287,   290,
+     289,   292,   291,   293,   294,   296,   295,   297,   297,   298,
+     298,   298,   298,   298,   299,   300,   301,   302,   303,   305,
+     304,   306,   306,   307,   307,   309,   308,   311,   310,   312,
+     312,   312,   313,   313,   315,   314,   317,   316,   319,   318,
+     320,   320,   321,   321,   321,   321,   321,   321,   322,   323,
+     324,   325,   326,   327,   329,   328,   330,   330,   331,   331,
+     333,   332,   335,   334,   336,   336,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   337,   337,   337,   337,   337,
+     337,   337,   337,   337,   337,   339,   338,   341,   340,   343,
+     342,   345,   344,   347,   346,   349,   348,   351,   350,   353,
+     352,   354,   354,   354,   354,   355,   357,   356,   358,   358,
+     359,   359,   361,   360,   362,   362,   363,   363,   363,   363,
+     363,   363,   363,   363,   363,   363,   363,   363,   363,   363,
+     363,   363,   363,   363,   363,   363,   363,   363,   363,   363,
+     365,   364,   367,   366,   368,   368,   369,   369,   371,   370,
+     373,   372,   374,   374,   375,   375,   376,   376,   376,   376,
+     376,   376,   376,   376,   376,   376,   377,   378,   379,   381,
+     380,   383,   382,   385,   384,   386,   388,   387,   389,   391,
+     390,   392,   392,   393,   393,   395,   394,   397,   396,   398,
+     398,   399,   399,   400,   400,   400,   400,   400,   400,   400,
+     400,   400,   401,   403,   402,   404,   405,   406,   407,   409,
+     408,   410,   410,   411,   411,   413,   412,   415,   414,   416,
+     416,   417,   417,   417,   417,   417,   417,   417,   419,   418,
+     421,   420,   423,   422,   425,   424,   426,   426,   427,   427,
+     429,   428,   431,   430,   432,   432,   433,   433,   434,   434,
+     434,   434,   434,   434,   434,   434,   434,   434,   434,   434,
+     434,   434,   434,   436,   435,   438,   437,   440,   439,   442,
+     441,   444,   443,   446,   445,   448,   447,   450,   449,   452,
+     451,   454,   453,   456,   455,   458,   457,   460,   459,   461,
+     461,   463,   462,   464,   464,   466,   465,   467,   467,   468,
+     468,   469,   469,   469,   469,   469,   469,   469,   469,   469,
+     469,   469,   470,   472,   471,   473,   474,   476,   475,   477,
+     477,   478,   478,   478,   478,   478,   480,   479,   482,   481,
+     484,   483,   486,   485,   488,   487,   489,   489,   490,   490,
+     490,   490,   490,   490,   490,   490,   490,   490,   490,   490,
+     490,   490,   490,   490,   490,   490,   491,   493,   492,   495,
+     494,   496,   498,   497,   499,   500,   502,   501,   503,   503,
+     505,   504,   506,   507,   509,   508,   510,   510,   510,   510,
+     510,   512,   511,   514,   513,   516,   515,   518,   517,   520,
+     519,   522,   521,   524,   523,   526,   525,   527,   527,   528,
+     528,   530,   529,   531,   533,   532,   535,   534,   536,   536,
+     537,   539,   538,   540,   540,   542,   541,   543,   543,   544,
+     544,   544,   544,   544,   544,   544,   545,   547,   546,   549,
+     548,   550,   550,   552,   551,   553,   553,   554,   554,   554,
+     554,   556,   555,   557,   558,   559
   };
 
   const unsigned char
@@ -4747,61 +4775,62 @@ namespace isc { namespace dhcp {
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     3,     3,     3,     3,     3,     3,
-       3,     0,     4,     3,     3,     3,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     1,     1,     0,     4,     1,     1,     3,
-       0,     6,     0,     6,     1,     3,     1,     0,     4,     0,
-       6,     0,     6,     0,     1,     1,     3,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       3,     3,     3,     0,     4,     3,     3,     3,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     4,     1,     1,     0,     4,     1,
+       1,     3,     0,     6,     0,     6,     1,     3,     1,     0,
+       4,     0,     6,     0,     6,     0,     1,     1,     3,     0,
+       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     3,     0,     4,     3,     3,     3,     3,
-       3,     3,     3,     0,     4,     0,     4,     0,     4,     0,
-       4,     3,     3,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     6,     0,
-       1,     1,     3,     0,     4,     0,     4,     1,     3,     1,
-       1,     1,     0,     4,     0,     4,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     1,     3,     3,     3,     3,
-       3,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       0,     4,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     1,     1,     1,     1,     0,
+       4,     0,     4,     0,     4,     3,     0,     4,     3,     3,
+       3,     3,     3,     3,     3,     0,     4,     0,     4,     0,
+       4,     0,     4,     3,     3,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     1,     1,     1,
-       1,     3,     0,     6,     0,     1,     1,     3,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     1,     1,     1,     1,     3,     0,     6,     0,     1,
+       1,     3,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     6,     0,     4,     0,     1,
-       1,     3,     0,     4,     0,     4,     0,     1,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     3,     1,     0,     4,     0,     4,     0,     4,     1,
-       0,     4,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     1,
-       1,     3,     3,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     0,     4,     0,     4,     0,     4,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     0,     1,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       0,     6,     0,     4,     0,     1,     1,     3,     0,     4,
+       0,     4,     0,     1,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     3,     1,     0,
+       4,     0,     4,     0,     4,     1,     0,     4,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
+       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     1,     1,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
        4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     6,     1,     1,     0,     6,     1,     3,     0,
-       4,     0,     1,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
-       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     6,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
+       4,     0,     4,     0,     4,     0,     4,     0,     6,     1,
+       1,     0,     6,     1,     3,     0,     4,     0,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     3,     3,     0,     6,     1,
+       3,     1,     1,     1,     1,     1,     0,     4,     0,     4,
+       0,     4,     0,     6,     0,     4,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     4,     3,     0,     4,     3,     3,
-       0,     4,     1,     1,     0,     4,     3,     3,     0,     4,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     6,     0,
-       4,     1,     3,     1,     1,     0,     6,     3,     0,     6,
-       0,     4,     1,     3,     1,     0,     6,     1,     3,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     1,     1,
-       3,     0,     4,     0,     6,     1,     3,     0,     4,     1,
-       3,     1,     1,     1,     1,     0,     4,     3,     3,     3
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
+       4,     3,     0,     4,     3,     3,     0,     4,     1,     1,
+       0,     4,     3,     3,     0,     4,     1,     1,     1,     1,
+       1,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     6,     0,     4,     1,     3,     1,
+       1,     0,     6,     3,     0,     6,     0,     4,     1,     3,
+       1,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     3,     0,     4,     0,
+       6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
+       1,     0,     4,     3,     3,     3
   };
 
 
@@ -4826,17 +4855,18 @@ namespace isc { namespace dhcp {
   "\"connect-timeout\"", "\"contact-points\"", "\"keyspace\"",
   "\"consistency\"", "\"serial-consistency\"", "\"max-reconnect-tries\"",
   "\"reconnect-wait-time\"", "\"request-timeout\"", "\"tcp-keepalive\"",
-  "\"tcp-nodelay\"", "\"valid-lifetime\"", "\"renew-timer\"",
-  "\"rebind-timer\"", "\"calculate-tee-times\"", "\"t1-percent\"",
-  "\"t2-percent\"", "\"decline-probation-period\"", "\"server-tag\"",
-  "\"subnet4\"", "\"4o6-interface\"", "\"4o6-interface-id\"",
-  "\"4o6-subnet\"", "\"option-def\"", "\"option-data\"", "\"name\"",
-  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", "\"always-send\"",
-  "\"record-types\"", "\"encapsulate\"", "\"array\"",
-  "\"shared-networks\"", "\"pools\"", "\"pool\"", "\"user-context\"",
-  "\"comment\"", "\"subnet\"", "\"interface\"", "\"id\"",
-  "\"reservation-mode\"", "\"disabled\"", "\"out-of-pool\"", "\"global\"",
-  "\"all\"", "\"host-reservation-identifiers\"", "\"client-classes\"",
+  "\"tcp-nodelay\"", "\"valid-lifetime\"", "\"min-valid-lifetime\"",
+  "\"max-valid-lifetime\"", "\"renew-timer\"", "\"rebind-timer\"",
+  "\"calculate-tee-times\"", "\"t1-percent\"", "\"t2-percent\"",
+  "\"decline-probation-period\"", "\"server-tag\"", "\"subnet4\"",
+  "\"4o6-interface\"", "\"4o6-interface-id\"", "\"4o6-subnet\"",
+  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
+  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
+  "\"encapsulate\"", "\"array\"", "\"shared-networks\"", "\"pools\"",
+  "\"pool\"", "\"user-context\"", "\"comment\"", "\"subnet\"",
+  "\"interface\"", "\"id\"", "\"reservation-mode\"", "\"disabled\"",
+  "\"out-of-pool\"", "\"global\"", "\"all\"",
+  "\"host-reservation-identifiers\"", "\"client-classes\"",
   "\"require-client-classes\"", "\"test\"", "\"only-if-required\"",
   "\"client-class\"", "\"reservations\"", "\"duid\"", "\"hw-address\"",
   "\"circuit-id\"", "\"client-id\"", "\"hostname\"", "\"flex-id\"",
@@ -4868,7 +4898,8 @@ namespace isc { namespace dhcp {
   "not_empty_list", "list_strings", "$@17", "list_strings_content",
   "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@18",
   "global_objects", "global_object", "dhcp4_object", "$@19", "sub_dhcp4",
-  "$@20", "global_params", "global_param", "valid_lifetime", "renew_timer",
+  "$@20", "global_params", "global_param", "valid_lifetime",
+  "min_valid_lifetime", "max_valid_lifetime", "renew_timer",
   "rebind_timer", "calculate_tee_times", "t1_percent", "t2_percent",
   "decline_probation_period", "server_tag", "$@21", "echo_client_id",
   "match_client_id", "authoritative", "interfaces_config", "$@22",
@@ -4957,73 +4988,74 @@ namespace isc { namespace dhcp {
   const unsigned short
   Dhcp4Parser::yyrline_[] =
   {
-       0,   262,   262,   262,   263,   263,   264,   264,   265,   265,
-     266,   266,   267,   267,   268,   268,   269,   269,   270,   270,
-     271,   271,   272,   272,   273,   273,   274,   274,   275,   275,
-     283,   284,   285,   286,   287,   288,   289,   292,   297,   297,
-     308,   311,   312,   315,   319,   326,   326,   333,   334,   337,
-     341,   348,   348,   355,   356,   359,   363,   374,   384,   384,
-     400,   401,   405,   406,   407,   408,   409,   410,   413,   413,
-     428,   428,   437,   438,   443,   444,   445,   446,   447,   448,
-     449,   450,   451,   452,   453,   454,   455,   456,   457,   458,
-     459,   460,   461,   462,   463,   464,   465,   466,   467,   468,
-     469,   470,   471,   472,   473,   474,   475,   476,   477,   478,
-     479,   480,   481,   482,   485,   490,   495,   500,   505,   510,
-     515,   520,   520,   528,   533,   538,   544,   544,   555,   556,
-     559,   560,   561,   562,   563,   564,   565,   568,   568,   577,
-     577,   587,   587,   594,   595,   598,   598,   605,   607,   611,
-     617,   617,   629,   629,   639,   640,   642,   644,   644,   662,
-     662,   674,   674,   684,   685,   688,   689,   692,   692,   702,
-     703,   706,   707,   708,   709,   710,   711,   712,   713,   714,
-     715,   716,   717,   718,   719,   720,   721,   722,   723,   724,
-     725,   728,   728,   735,   736,   737,   738,   741,   741,   749,
-     749,   757,   757,   765,   770,   770,   778,   783,   788,   793,
-     798,   803,   808,   813,   813,   821,   821,   829,   829,   837,
-     837,   845,   850,   855,   855,   865,   866,   869,   870,   871,
-     872,   873,   876,   881,   886,   891,   896,   901,   901,   911,
-     912,   915,   916,   919,   919,   929,   929,   939,   940,   941,
-     944,   945,   948,   948,   956,   956,   964,   964,   975,   976,
-     979,   980,   981,   982,   983,   984,   987,   992,   997,  1002,
-    1007,  1012,  1020,  1020,  1033,  1034,  1037,  1038,  1045,  1045,
-    1071,  1071,  1082,  1083,  1087,  1088,  1089,  1090,  1091,  1092,
-    1093,  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,
+       0,   264,   264,   264,   265,   265,   266,   266,   267,   267,
+     268,   268,   269,   269,   270,   270,   271,   271,   272,   272,
+     273,   273,   274,   274,   275,   275,   276,   276,   277,   277,
+     285,   286,   287,   288,   289,   290,   291,   294,   299,   299,
+     310,   313,   314,   317,   321,   328,   328,   335,   336,   339,
+     343,   350,   350,   357,   358,   361,   365,   376,   386,   386,
+     402,   403,   407,   408,   409,   410,   411,   412,   415,   415,
+     430,   430,   439,   440,   445,   446,   447,   448,   449,   450,
+     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
+     461,   462,   463,   464,   465,   466,   467,   468,   469,   470,
+     471,   472,   473,   474,   475,   476,   477,   478,   479,   480,
+     481,   482,   483,   484,   487,   492,   497,   502,   507,   512,
+     517,   522,   527,   532,   532,   540,   545,   550,   556,   556,
+     567,   568,   571,   572,   573,   574,   575,   576,   577,   580,
+     580,   589,   589,   599,   599,   606,   607,   610,   610,   617,
+     619,   623,   629,   629,   641,   641,   651,   652,   654,   656,
+     656,   674,   674,   686,   686,   696,   697,   700,   701,   704,
+     704,   714,   715,   718,   719,   720,   721,   722,   723,   724,
+     725,   726,   727,   728,   729,   730,   731,   732,   733,   734,
+     735,   736,   737,   740,   740,   747,   748,   749,   750,   753,
+     753,   761,   761,   769,   769,   777,   782,   782,   790,   795,
+     800,   805,   810,   815,   820,   825,   825,   833,   833,   841,
+     841,   849,   849,   857,   862,   867,   867,   877,   878,   881,
+     882,   883,   884,   885,   888,   893,   898,   903,   908,   913,
+     913,   923,   924,   927,   928,   931,   931,   941,   941,   951,
+     952,   953,   956,   957,   960,   960,   968,   968,   976,   976,
+     987,   988,   991,   992,   993,   994,   995,   996,   999,  1004,
+    1009,  1014,  1019,  1024,  1032,  1032,  1045,  1046,  1049,  1050,
+    1057,  1057,  1083,  1083,  1094,  1095,  1099,  1100,  1101,  1102,
     1103,  1104,  1105,  1106,  1107,  1108,  1109,  1110,  1111,  1112,
-    1113,  1116,  1116,  1124,  1124,  1132,  1132,  1140,  1140,  1148,
-    1148,  1156,  1156,  1164,  1164,  1174,  1174,  1181,  1182,  1183,
-    1184,  1187,  1194,  1194,  1205,  1206,  1210,  1211,  1214,  1214,
-    1222,  1223,  1226,  1227,  1228,  1229,  1230,  1231,  1232,  1233,
-    1234,  1235,  1236,  1237,  1238,  1239,  1240,  1241,  1242,  1243,
-    1244,  1245,  1246,  1247,  1254,  1254,  1267,  1267,  1276,  1277,
-    1280,  1281,  1286,  1286,  1301,  1301,  1315,  1316,  1319,  1320,
-    1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,  1332,
-    1335,  1337,  1342,  1344,  1344,  1352,  1352,  1360,  1360,  1368,
-    1370,  1370,  1378,  1387,  1387,  1399,  1400,  1405,  1406,  1411,
-    1411,  1423,  1423,  1435,  1436,  1441,  1442,  1447,  1448,  1449,
-    1450,  1451,  1452,  1453,  1454,  1455,  1458,  1460,  1460,  1468,
-    1470,  1472,  1477,  1485,  1485,  1497,  1498,  1501,  1502,  1505,
-    1505,  1515,  1515,  1525,  1526,  1529,  1530,  1531,  1532,  1533,
-    1534,  1535,  1538,  1538,  1546,  1546,  1571,  1571,  1601,  1601,
-    1611,  1612,  1615,  1616,  1619,  1619,  1628,  1628,  1637,  1638,
-    1641,  1642,  1646,  1647,  1648,  1649,  1650,  1651,  1652,  1653,
-    1654,  1655,  1656,  1657,  1658,  1659,  1660,  1663,  1663,  1671,
-    1671,  1679,  1679,  1687,  1687,  1695,  1695,  1705,  1705,  1713,
-    1713,  1721,  1721,  1729,  1729,  1737,  1737,  1745,  1745,  1753,
-    1753,  1766,  1766,  1776,  1777,  1783,  1783,  1793,  1794,  1797,
-    1797,  1807,  1808,  1811,  1812,  1815,  1816,  1817,  1818,  1819,
-    1820,  1821,  1822,  1823,  1824,  1825,  1828,  1830,  1830,  1838,
-    1847,  1854,  1854,  1864,  1865,  1868,  1869,  1870,  1871,  1872,
-    1875,  1875,  1883,  1883,  1894,  1894,  1932,  1932,  1944,  1944,
-    1954,  1955,  1958,  1959,  1960,  1961,  1962,  1963,  1964,  1965,
-    1966,  1967,  1968,  1969,  1970,  1971,  1972,  1973,  1974,  1975,
-    1978,  1983,  1983,  1991,  1991,  1999,  2004,  2004,  2012,  2017,
-    2022,  2022,  2030,  2031,  2034,  2034,  2042,  2047,  2052,  2052,
-    2060,  2063,  2066,  2069,  2072,  2078,  2078,  2086,  2086,  2094,
-    2094,  2105,  2105,  2112,  2112,  2119,  2119,  2126,  2126,  2137,
-    2137,  2147,  2148,  2152,  2153,  2156,  2156,  2166,  2176,  2176,
-    2186,  2186,  2197,  2198,  2202,  2206,  2206,  2218,  2219,  2223,
-    2223,  2231,  2232,  2235,  2236,  2237,  2238,  2239,  2240,  2241,
-    2244,  2249,  2249,  2257,  2257,  2267,  2268,  2271,  2271,  2279,
-    2280,  2283,  2284,  2285,  2286,  2289,  2289,  2297,  2302,  2307
+    1113,  1114,  1115,  1116,  1117,  1118,  1119,  1120,  1121,  1122,
+    1123,  1124,  1125,  1126,  1127,  1130,  1130,  1138,  1138,  1146,
+    1146,  1154,  1154,  1162,  1162,  1170,  1170,  1178,  1178,  1188,
+    1188,  1195,  1196,  1197,  1198,  1201,  1208,  1208,  1219,  1220,
+    1224,  1225,  1228,  1228,  1236,  1237,  1240,  1241,  1242,  1243,
+    1244,  1245,  1246,  1247,  1248,  1249,  1250,  1251,  1252,  1253,
+    1254,  1255,  1256,  1257,  1258,  1259,  1260,  1261,  1262,  1263,
+    1270,  1270,  1283,  1283,  1292,  1293,  1296,  1297,  1302,  1302,
+    1317,  1317,  1331,  1332,  1335,  1336,  1339,  1340,  1341,  1342,
+    1343,  1344,  1345,  1346,  1347,  1348,  1351,  1353,  1358,  1360,
+    1360,  1368,  1368,  1376,  1376,  1384,  1386,  1386,  1394,  1403,
+    1403,  1415,  1416,  1421,  1422,  1427,  1427,  1439,  1439,  1451,
+    1452,  1457,  1458,  1463,  1464,  1465,  1466,  1467,  1468,  1469,
+    1470,  1471,  1474,  1476,  1476,  1484,  1486,  1488,  1493,  1501,
+    1501,  1513,  1514,  1517,  1518,  1521,  1521,  1531,  1531,  1541,
+    1542,  1545,  1546,  1547,  1548,  1549,  1550,  1551,  1554,  1554,
+    1562,  1562,  1587,  1587,  1617,  1617,  1627,  1628,  1631,  1632,
+    1635,  1635,  1644,  1644,  1653,  1654,  1657,  1658,  1662,  1663,
+    1664,  1665,  1666,  1667,  1668,  1669,  1670,  1671,  1672,  1673,
+    1674,  1675,  1676,  1679,  1679,  1687,  1687,  1695,  1695,  1703,
+    1703,  1711,  1711,  1721,  1721,  1729,  1729,  1737,  1737,  1745,
+    1745,  1753,  1753,  1761,  1761,  1769,  1769,  1782,  1782,  1792,
+    1793,  1799,  1799,  1809,  1810,  1813,  1813,  1823,  1824,  1827,
+    1828,  1831,  1832,  1833,  1834,  1835,  1836,  1837,  1838,  1839,
+    1840,  1841,  1844,  1846,  1846,  1854,  1863,  1870,  1870,  1880,
+    1881,  1884,  1885,  1886,  1887,  1888,  1891,  1891,  1899,  1899,
+    1910,  1910,  1948,  1948,  1960,  1960,  1970,  1971,  1974,  1975,
+    1976,  1977,  1978,  1979,  1980,  1981,  1982,  1983,  1984,  1985,
+    1986,  1987,  1988,  1989,  1990,  1991,  1994,  1999,  1999,  2007,
+    2007,  2015,  2020,  2020,  2028,  2033,  2038,  2038,  2046,  2047,
+    2050,  2050,  2058,  2063,  2068,  2068,  2076,  2079,  2082,  2085,
+    2088,  2094,  2094,  2102,  2102,  2110,  2110,  2121,  2121,  2128,
+    2128,  2135,  2135,  2142,  2142,  2153,  2153,  2163,  2164,  2168,
+    2169,  2172,  2172,  2182,  2192,  2192,  2202,  2202,  2213,  2214,
+    2218,  2222,  2222,  2234,  2235,  2239,  2239,  2247,  2248,  2251,
+    2252,  2253,  2254,  2255,  2256,  2257,  2260,  2265,  2265,  2273,
+    2273,  2283,  2284,  2287,  2287,  2295,  2296,  2299,  2300,  2301,
+    2302,  2305,  2305,  2313,  2318,  2323
   };
 
   // Print the state stack on the debug stream.
@@ -5058,9 +5090,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5062 "dhcp4_parser.cc"
+#line 5094 "dhcp4_parser.cc"
 
-#line 2312 "dhcp4_parser.yy"
+#line 2328 "dhcp4_parser.yy"
 
 
 void
index 5517a2e37288da72855451a57c1b8744f3ae22ad..6fdade1faf2f1c74006c60807b350957c9503746 100644 (file)
@@ -507,124 +507,126 @@ namespace isc { namespace dhcp {
         TOKEN_TCP_KEEPALIVE = 309,
         TOKEN_TCP_NODELAY = 310,
         TOKEN_VALID_LIFETIME = 311,
-        TOKEN_RENEW_TIMER = 312,
-        TOKEN_REBIND_TIMER = 313,
-        TOKEN_CALCULATE_TEE_TIMES = 314,
-        TOKEN_T1_PERCENT = 315,
-        TOKEN_T2_PERCENT = 316,
-        TOKEN_DECLINE_PROBATION_PERIOD = 317,
-        TOKEN_SERVER_TAG = 318,
-        TOKEN_SUBNET4 = 319,
-        TOKEN_SUBNET_4O6_INTERFACE = 320,
-        TOKEN_SUBNET_4O6_INTERFACE_ID = 321,
-        TOKEN_SUBNET_4O6_SUBNET = 322,
-        TOKEN_OPTION_DEF = 323,
-        TOKEN_OPTION_DATA = 324,
-        TOKEN_NAME = 325,
-        TOKEN_DATA = 326,
-        TOKEN_CODE = 327,
-        TOKEN_SPACE = 328,
-        TOKEN_CSV_FORMAT = 329,
-        TOKEN_ALWAYS_SEND = 330,
-        TOKEN_RECORD_TYPES = 331,
-        TOKEN_ENCAPSULATE = 332,
-        TOKEN_ARRAY = 333,
-        TOKEN_SHARED_NETWORKS = 334,
-        TOKEN_POOLS = 335,
-        TOKEN_POOL = 336,
-        TOKEN_USER_CONTEXT = 337,
-        TOKEN_COMMENT = 338,
-        TOKEN_SUBNET = 339,
-        TOKEN_INTERFACE = 340,
-        TOKEN_ID = 341,
-        TOKEN_RESERVATION_MODE = 342,
-        TOKEN_DISABLED = 343,
-        TOKEN_OUT_OF_POOL = 344,
-        TOKEN_GLOBAL = 345,
-        TOKEN_ALL = 346,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 347,
-        TOKEN_CLIENT_CLASSES = 348,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 349,
-        TOKEN_TEST = 350,
-        TOKEN_ONLY_IF_REQUIRED = 351,
-        TOKEN_CLIENT_CLASS = 352,
-        TOKEN_RESERVATIONS = 353,
-        TOKEN_DUID = 354,
-        TOKEN_HW_ADDRESS = 355,
-        TOKEN_CIRCUIT_ID = 356,
-        TOKEN_CLIENT_ID = 357,
-        TOKEN_HOSTNAME = 358,
-        TOKEN_FLEX_ID = 359,
-        TOKEN_RELAY = 360,
-        TOKEN_IP_ADDRESS = 361,
-        TOKEN_IP_ADDRESSES = 362,
-        TOKEN_HOOKS_LIBRARIES = 363,
-        TOKEN_LIBRARY = 364,
-        TOKEN_PARAMETERS = 365,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 366,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 367,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 368,
-        TOKEN_HOLD_RECLAIMED_TIME = 369,
-        TOKEN_MAX_RECLAIM_LEASES = 370,
-        TOKEN_MAX_RECLAIM_TIME = 371,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 372,
-        TOKEN_DHCP4O6_PORT = 373,
-        TOKEN_CONTROL_SOCKET = 374,
-        TOKEN_SOCKET_TYPE = 375,
-        TOKEN_SOCKET_NAME = 376,
-        TOKEN_DHCP_QUEUE_CONTROL = 377,
-        TOKEN_DHCP_DDNS = 378,
-        TOKEN_ENABLE_UPDATES = 379,
-        TOKEN_QUALIFYING_SUFFIX = 380,
-        TOKEN_SERVER_IP = 381,
-        TOKEN_SERVER_PORT = 382,
-        TOKEN_SENDER_IP = 383,
-        TOKEN_SENDER_PORT = 384,
-        TOKEN_MAX_QUEUE_SIZE = 385,
-        TOKEN_NCR_PROTOCOL = 386,
-        TOKEN_NCR_FORMAT = 387,
-        TOKEN_OVERRIDE_NO_UPDATE = 388,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 389,
-        TOKEN_REPLACE_CLIENT_NAME = 390,
-        TOKEN_GENERATED_PREFIX = 391,
-        TOKEN_TCP = 392,
-        TOKEN_JSON = 393,
-        TOKEN_WHEN_PRESENT = 394,
-        TOKEN_NEVER = 395,
-        TOKEN_ALWAYS = 396,
-        TOKEN_WHEN_NOT_PRESENT = 397,
-        TOKEN_HOSTNAME_CHAR_SET = 398,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 399,
-        TOKEN_LOGGING = 400,
-        TOKEN_LOGGERS = 401,
-        TOKEN_OUTPUT_OPTIONS = 402,
-        TOKEN_OUTPUT = 403,
-        TOKEN_DEBUGLEVEL = 404,
-        TOKEN_SEVERITY = 405,
-        TOKEN_FLUSH = 406,
-        TOKEN_MAXSIZE = 407,
-        TOKEN_MAXVER = 408,
-        TOKEN_DHCP6 = 409,
-        TOKEN_DHCPDDNS = 410,
-        TOKEN_CONTROL_AGENT = 411,
-        TOKEN_TOPLEVEL_JSON = 412,
-        TOKEN_TOPLEVEL_DHCP4 = 413,
-        TOKEN_SUB_DHCP4 = 414,
-        TOKEN_SUB_INTERFACES4 = 415,
-        TOKEN_SUB_SUBNET4 = 416,
-        TOKEN_SUB_POOL4 = 417,
-        TOKEN_SUB_RESERVATION = 418,
-        TOKEN_SUB_OPTION_DEFS = 419,
-        TOKEN_SUB_OPTION_DEF = 420,
-        TOKEN_SUB_OPTION_DATA = 421,
-        TOKEN_SUB_HOOKS_LIBRARY = 422,
-        TOKEN_SUB_DHCP_DDNS = 423,
-        TOKEN_SUB_LOGGING = 424,
-        TOKEN_SUB_CONFIG_CONTROL = 425,
-        TOKEN_STRING = 426,
-        TOKEN_INTEGER = 427,
-        TOKEN_FLOAT = 428,
-        TOKEN_BOOLEAN = 429
+        TOKEN_MIN_VALID_LIFETIME = 312,
+        TOKEN_MAX_VALID_LIFETIME = 313,
+        TOKEN_RENEW_TIMER = 314,
+        TOKEN_REBIND_TIMER = 315,
+        TOKEN_CALCULATE_TEE_TIMES = 316,
+        TOKEN_T1_PERCENT = 317,
+        TOKEN_T2_PERCENT = 318,
+        TOKEN_DECLINE_PROBATION_PERIOD = 319,
+        TOKEN_SERVER_TAG = 320,
+        TOKEN_SUBNET4 = 321,
+        TOKEN_SUBNET_4O6_INTERFACE = 322,
+        TOKEN_SUBNET_4O6_INTERFACE_ID = 323,
+        TOKEN_SUBNET_4O6_SUBNET = 324,
+        TOKEN_OPTION_DEF = 325,
+        TOKEN_OPTION_DATA = 326,
+        TOKEN_NAME = 327,
+        TOKEN_DATA = 328,
+        TOKEN_CODE = 329,
+        TOKEN_SPACE = 330,
+        TOKEN_CSV_FORMAT = 331,
+        TOKEN_ALWAYS_SEND = 332,
+        TOKEN_RECORD_TYPES = 333,
+        TOKEN_ENCAPSULATE = 334,
+        TOKEN_ARRAY = 335,
+        TOKEN_SHARED_NETWORKS = 336,
+        TOKEN_POOLS = 337,
+        TOKEN_POOL = 338,
+        TOKEN_USER_CONTEXT = 339,
+        TOKEN_COMMENT = 340,
+        TOKEN_SUBNET = 341,
+        TOKEN_INTERFACE = 342,
+        TOKEN_ID = 343,
+        TOKEN_RESERVATION_MODE = 344,
+        TOKEN_DISABLED = 345,
+        TOKEN_OUT_OF_POOL = 346,
+        TOKEN_GLOBAL = 347,
+        TOKEN_ALL = 348,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 349,
+        TOKEN_CLIENT_CLASSES = 350,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 351,
+        TOKEN_TEST = 352,
+        TOKEN_ONLY_IF_REQUIRED = 353,
+        TOKEN_CLIENT_CLASS = 354,
+        TOKEN_RESERVATIONS = 355,
+        TOKEN_DUID = 356,
+        TOKEN_HW_ADDRESS = 357,
+        TOKEN_CIRCUIT_ID = 358,
+        TOKEN_CLIENT_ID = 359,
+        TOKEN_HOSTNAME = 360,
+        TOKEN_FLEX_ID = 361,
+        TOKEN_RELAY = 362,
+        TOKEN_IP_ADDRESS = 363,
+        TOKEN_IP_ADDRESSES = 364,
+        TOKEN_HOOKS_LIBRARIES = 365,
+        TOKEN_LIBRARY = 366,
+        TOKEN_PARAMETERS = 367,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 368,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 369,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 370,
+        TOKEN_HOLD_RECLAIMED_TIME = 371,
+        TOKEN_MAX_RECLAIM_LEASES = 372,
+        TOKEN_MAX_RECLAIM_TIME = 373,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 374,
+        TOKEN_DHCP4O6_PORT = 375,
+        TOKEN_CONTROL_SOCKET = 376,
+        TOKEN_SOCKET_TYPE = 377,
+        TOKEN_SOCKET_NAME = 378,
+        TOKEN_DHCP_QUEUE_CONTROL = 379,
+        TOKEN_DHCP_DDNS = 380,
+        TOKEN_ENABLE_UPDATES = 381,
+        TOKEN_QUALIFYING_SUFFIX = 382,
+        TOKEN_SERVER_IP = 383,
+        TOKEN_SERVER_PORT = 384,
+        TOKEN_SENDER_IP = 385,
+        TOKEN_SENDER_PORT = 386,
+        TOKEN_MAX_QUEUE_SIZE = 387,
+        TOKEN_NCR_PROTOCOL = 388,
+        TOKEN_NCR_FORMAT = 389,
+        TOKEN_OVERRIDE_NO_UPDATE = 390,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 391,
+        TOKEN_REPLACE_CLIENT_NAME = 392,
+        TOKEN_GENERATED_PREFIX = 393,
+        TOKEN_TCP = 394,
+        TOKEN_JSON = 395,
+        TOKEN_WHEN_PRESENT = 396,
+        TOKEN_NEVER = 397,
+        TOKEN_ALWAYS = 398,
+        TOKEN_WHEN_NOT_PRESENT = 399,
+        TOKEN_HOSTNAME_CHAR_SET = 400,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 401,
+        TOKEN_LOGGING = 402,
+        TOKEN_LOGGERS = 403,
+        TOKEN_OUTPUT_OPTIONS = 404,
+        TOKEN_OUTPUT = 405,
+        TOKEN_DEBUGLEVEL = 406,
+        TOKEN_SEVERITY = 407,
+        TOKEN_FLUSH = 408,
+        TOKEN_MAXSIZE = 409,
+        TOKEN_MAXVER = 410,
+        TOKEN_DHCP6 = 411,
+        TOKEN_DHCPDDNS = 412,
+        TOKEN_CONTROL_AGENT = 413,
+        TOKEN_TOPLEVEL_JSON = 414,
+        TOKEN_TOPLEVEL_DHCP4 = 415,
+        TOKEN_SUB_DHCP4 = 416,
+        TOKEN_SUB_INTERFACES4 = 417,
+        TOKEN_SUB_SUBNET4 = 418,
+        TOKEN_SUB_POOL4 = 419,
+        TOKEN_SUB_RESERVATION = 420,
+        TOKEN_SUB_OPTION_DEFS = 421,
+        TOKEN_SUB_OPTION_DEF = 422,
+        TOKEN_SUB_OPTION_DATA = 423,
+        TOKEN_SUB_HOOKS_LIBRARY = 424,
+        TOKEN_SUB_DHCP_DDNS = 425,
+        TOKEN_SUB_LOGGING = 426,
+        TOKEN_SUB_CONFIG_CONTROL = 427,
+        TOKEN_STRING = 428,
+        TOKEN_INTEGER = 429,
+        TOKEN_FLOAT = 430,
+        TOKEN_BOOLEAN = 431
       };
     };
 
@@ -766,30 +768,30 @@ namespace isc { namespace dhcp {
         // Type destructor.
 switch (yytype)
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -872,13 +874,13 @@ switch (yytype)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_DHCP_SOCKET_TYPE || tok == token::TOKEN_RAW || tok == token::TOKEN_UDP || tok == token::TOKEN_OUTBOUND_INTERFACE || tok == token::TOKEN_SAME_AS_INBOUND || tok == token::TOKEN_USE_ROUTING || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_ECHO_CLIENT_ID || tok == token::TOKEN_MATCH_CLIENT_ID || tok == token::TOKEN_AUTHORITATIVE || tok == token::TOKEN_NEXT_SERVER || tok == token::TOKEN_SERVER_HOSTNAME || tok == token::TOKEN_BOOT_FILE_NAME || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET4 || tok == token::TOKEN_SUBNET_4O6_INTERFACE || tok == token::TOKEN_SUBNET_4O6_INTERFACE_ID || tok == token::TOKEN_SUBNET_4O6_SUBNET || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_ID || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_CIRCUIT_ID || tok == token::TOKEN_CLIENT_ID || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP4 || tok == token::TOKEN_SUB_DHCP4 || tok == token::TOKEN_SUB_INTERFACES4 || tok == token::TOKEN_SUB_SUBNET4 || tok == token::TOKEN_SUB_POOL4 || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1795,6 +1797,36 @@ switch (yytype)
         return symbol_type (token::TOKEN_VALID_LIFETIME, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_MIN_VALID_LIFETIME (location_type l)
+      {
+        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_MIN_VALID_LIFETIME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_MAX_VALID_LIFETIME (location_type l)
+      {
+        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_MAX_VALID_LIFETIME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -3871,12 +3903,12 @@ switch (yytype)
     enum
     {
       yyeof_ = 0,
-      yylast_ = 1028,     ///< Last index in yytable_.
-      yynnts_ = 381,  ///< Number of nonterminal symbols.
+      yylast_ = 1055,     ///< Last index in yytable_.
+      yynnts_ = 383,  ///< Number of nonterminal symbols.
       yyfinal_ = 30, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 175  ///< Number of tokens.
+      yyntokens_ = 177  ///< Number of tokens.
     };
 
 
@@ -3936,9 +3968,10 @@ switch (yytype)
      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   168,   169,   170,   171,   172,   173,   174
+     165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176
     };
-    const unsigned user_token_number_max_ = 429;
+    const unsigned user_token_number_max_ = 431;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int> (t) <= yyeof_)
@@ -3959,30 +3992,30 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -4001,30 +4034,30 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -4050,30 +4083,30 @@ switch (yytype)
     super_type::move (s);
     switch (this->type_get ())
     {
-      case 191: // value
-      case 195: // map_value
-      case 239: // socket_type
-      case 242: // outbound_interface_value
-      case 264: // db_type
-      case 350: // hr_mode
-      case 499: // ncr_protocol_value
-      case 506: // replace_client_name_value
+      case 193: // value
+      case 197: // map_value
+      case 243: // socket_type
+      case 246: // outbound_interface_value
+      case 268: // db_type
+      case 354: // hr_mode
+      case 503: // ncr_protocol_value
+      case 510: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 174: // "boolean"
+      case 176: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 173: // "floating point"
+      case 175: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 172: // "integer"
+      case 174: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 171: // "constant string"
+      case 173: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -4158,14 +4191,14 @@ switch (yytype)
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426,   427,   428,   429
+     425,   426,   427,   428,   429,   430,   431
     };
     return token_type (yytoken_number_[type]);
   }
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 4169 "dhcp4_parser.h"
+#line 4202 "dhcp4_parser.h"
 
 
 
index ce67957dc7b5e00e07cf79112889827aceab6e5c..52d84cb09337fcb9f10e5e4d7661361dffc4e4b8 100644 (file)
@@ -691,8 +691,8 @@ static void yynoreturn yy_fatal_error ( const char* msg  );
 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
        (yy_c_buf_p) = yy_cp;
 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
-#define YY_NUM_RULES 186
-#define YY_END_OF_BUFFER 187
+#define YY_NUM_RULES 190
+#define YY_END_OF_BUFFER 191
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,178 +700,186 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1544] =
+static const flex_int16_t yy_accept[1615] =
     {   0,
-      179,  179,    0,    0,    0,    0,    0,    0,    0,    0,
-      187,  185,   10,   11,  185,    1,  179,  176,  179,  179,
-      185,  178,  177,  185,  185,  185,  185,  185,  172,  173,
-      185,  185,  185,  174,  175,    5,    5,    5,  185,  185,
-      185,   10,   11,    0,    0,  168,    0,    0,    0,    0,
+      183,  183,    0,    0,    0,    0,    0,    0,    0,    0,
+      191,  189,   10,   11,  189,    1,  183,  180,  183,  183,
+      189,  182,  181,  189,  189,  189,  189,  189,  176,  177,
+      189,  189,  189,  178,  179,    5,    5,    5,  189,  189,
+      189,   10,   11,    0,    0,  172,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    1,  179,
-      179,    0,  178,  179,    3,    2,    6,    0,  179,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    1,  183,
+      183,    0,  182,  183,    3,    2,    6,    0,  183,    0,
         0,    0,    0,    0,    0,    4,    0,    0,    9,    0,
 
-      169,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  171,    0,    0,    0,
+      173,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  175,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        2,    0,    0,    0,    0,    0,    0,    0,    8,    0,
-        0,    0,    0,  146,    0,    0,  147,    0,    0,    0,
+        0,    2,    0,    0,    0,    0,    0,    0,    0,    8,
+        0,    0,    0,    0,  150,    0,    0,  151,    0,    0,
 
-        0,    0,    0,    0,    0,  170,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  174,    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,   98,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  102,
         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,  184,  182,    0,  181,
+        0,    0,    0,    0,    0,    0,    0,    0,  188,  186,
 
-      180,    0,    0,    0,    0,    0,    0,    0,  145,    0,
-        0,   28,    0,   27,    0,    0,  105,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   55,    0,    0,
+        0,  185,  184,    0,    0,    0,    0,    0,    0,    0,
+      149,    0,    0,   28,    0,   27,    0,    0,  109,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   55,
         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,  102,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      106,    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,  183,  180,    0,    0,    0,    0,    0,    0,    0,
-        0,   29,    0,    0,   31,    0,    0,    0,    0,    0,
-        0,  106,    0,    0,    0,    0,    0,    0,    0,   83,
-        0,    0,    0,    0,    0,    0,    0,  130,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
+        0,    0,    0,    0,  187,  184,    0,    0,    0,    0,
+        0,    0,    0,    0,   29,    0,    0,   31,    0,    0,
+        0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
+        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
+      134,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   58,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   86,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       82,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   92,    0,   59,    0,    0,    0,    0,
 
+       96,    0,   59,    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,  129,  154,   51,    0,   56,    0,    0,
+        0,    0,    0,    0,  169,   37,    0,   34,    0,   33,
+        0,    0,    0,  142,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  121,    0,    0,
+        0,    0,    0,    0,    0,    0,  153,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,   53,    0,    0,   32,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   89,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  125,  150,   51,    0,
-       56,    0,    0,    0,    0,    0,    0,  165,   37,    0,
-       34,    0,   33,    0,    0,    0,  138,    0,    0,    0,
+        0,  143,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  138,    0,    0,    0,    0,
+        0,    0,    0,    0,    7,   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,
-      117,    0,    0,    0,    0,    0,    0,    0,    0,  149,
+        0,    0,    0,    0,    0,    0,    0,  108,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   53,    0,    0,   32,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,   85,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  123,
+        0,    0,    0,    0,    0,    0,    0,    0,  120,    0,
+        0,    0,    0,    0,    0,    0,    0,   91,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      139,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  134,    0,    0,    0,    0,    0,
-        0,    0,    0,    7,   35,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   99,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  117,    0,    0,    0,    0,    0,   98,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  104,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  119,    0,    0,    0,
+      137,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  116,    0,    0,    0,    0,    0,    0,
-        0,    0,   87,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  147,  118,    0,    0,
+        0,    0,    0,    0,  122,   52,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   60,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   95,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  113,    0,    0,
-        0,    0,    0,   94,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  133,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   82,    0,
+        0,    0,    0,    0,    0,    0,    0,  170,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  143,  114,    0,    0,    0,    0,  118,   52,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  105,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  136,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   60,
+        0,    0,    0,    0,    0,    0,   63,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   57,   90,    0,
+        0,    0,  133,    0,    0,    0,   50,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   78,
-        0,    0,    0,    0,    0,    0,    0,    0,  166,    0,
+        0,    0,    0,    0,    0,  125,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  101,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      132,    0,    0,    0,    0,    0,    0,   63,    0,    0,
+        0,    0,    0,    0,  168,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,   57,   86,    0,    0,    0,  129,
-        0,    0,    0,   50,    0,    0,    0,    0,    0,    0,
+        0,  100,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  121,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,   16,    0,    0,  148,   14,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  164,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  139,    0,  124,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  135,  152,    0,   40,    0,  144,    0,    0,
 
-        0,    0,    0,    0,   41,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   16,    0,    0,  144,
-       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,  135,    0,  120,    0,
+       20,    0,    0,    0,   84,    0,    0,    0,    0,  146,
+       54,    0,   92,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   81,
+        0,    0,    0,  115,  116,    0,    0,    0,    0,    0,
+        0,    0,    0,   88,    0,    0,    0,    0,    0,    0,
+       64,    0,    0,    0,    0,    0,    0,    0,    0,  141,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  131,  148,    0,   40,    0,
-      140,    0,    0,    0,    0,    0,    0,    0,    0,   20,
-        0,    0,    0,   80,    0,    0,    0,    0,  142,   54,
-        0,   88,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   77,    0,
-        0,    0,  111,  112,    0,    0,    0,    0,    0,    0,
-        0,    0,   84,    0,    0,    0,    0,    0,    0,   64,
-        0,    0,    0,    0,    0,    0,    0,    0,  137,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  107,    0,    0,    0,    0,
-        0,   81,  103,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   74,    0,    0,    0,    0,    0,
-        0,   17,    0,   15,    0,  162,  161,    0,   69,    0,
-        0,    0,    0,    0,   30,    0,  124,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  111,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   85,  107,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  159,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   78,
+        0,    0,    0,    0,    0,    0,   17,    0,   15,    0,
+      166,  165,    0,   69,    0,    0,    0,    0,    0,   30,
+        0,  128,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  163,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  101,    0,  132,   43,    0,
+       61,    0,    0,    0,    0,    0,    0,    0,    0,   19,
+        0,    0,    0,    0,    0,    0,  103,   79,    0,    0,
+      140,    0,    0,    0,    0,    0,  131,    0,    0,    0,
+        0,    0,   97,    0,  171,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,   95,    0,    0,  155,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       97,    0,  128,   43,    0,   61,    0,    0,    0,    0,
-       19,    0,    0,    0,    0,    0,    0,   99,   75,    0,
-        0,  136,    0,    0,    0,    0,    0,  127,    0,    0,
-        0,    0,    0,   93,    0,  167,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   91,    0,    0,
-      151,    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,   42,
-
-        0,    0,   68,    0,    0,    0,    0,  122,   47,    0,
-        0,    0,   70,  160,   38,    0,    0,   12,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   45,    0,    0,
-       44,   18,    0,    0,    0,    0,  115,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   73,    0,    0,    0,    0,   62,    0,    0,   89,
-        0,    0,    0,    0,    0,  141,    0,    0,    0,   46,
+        0,    0,   42,    0,    0,   68,    0,    0,    0,    0,
+      126,   47,    0,    0,    0,   70,  164,   38,    0,    0,
+       12,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       45,    0,    0,   44,    0,   18,    0,    0,    0,    0,
+        0,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   75,    0,
+
+        0,    0,    0,   62,    0,    0,   93,    0,    0,    0,
+        0,    0,  145,    0,    0,    0,   46,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   67,    0,    0,    0,   79,    0,   36,
-        0,   48,    0,    0,    0,    0,    0,    0,   24,    0,
-
-        0,    0,    0,    0,    0,  157,    0,  126,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  100,    0,    0,
+        0,    0,    0,    0,   67,    0,    0,    0,   83,    0,
+       36,    0,   48,    0,    0,    0,    0,    0,    0,   24,
+        0,    0,    0,    0,    0,    0,    0,  161,    0,    0,
+        0,    0,  130,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  104,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   25,   39,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   13,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,  167,    0,    0,
+        0,    0,    0,    0,    0,  160,    0,   77,    0,   76,
+        0,   21,   72,    0,    0,    0,    0,    0,   65,    0,
+      114,    0,    0,   94,    0,    0,  159,    0,    0,    0,
+       71,    0,    0,    0,   66,    0,   23,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       25,   39,    0,    0,    0,    0,    0,   13,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  163,    0,
-        0,    0,    0,    0,    0,  156,    0,    0,   21,   72,
-        0,    0,    0,    0,    0,   65,    0,  110,    0,    0,
-       90,    0,    0,  155,    0,    0,   71,    0,    0,   66,
-        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   49,    0,    0,    0,    0,
+        0,   74,   73,   22,    0,  112,  127,    0,    0,    0,
+        0,    0,    0,  157,  162,   80,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,   49,    0,    0,    0,
-        0,    0,   22,    0,  108,  123,    0,    0,    0,    0,
-        0,    0,  153,  158,   76,    0,    0,    0,    0,  152,
-        0,    0,   26,    0,    0,    0,    0,    0,  109,    0,
-        0,  154,    0
+      156,    0,    0,   26,    0,    0,    0,    0,    0,  113,
+        0,    0,  158,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -918,374 +926,390 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1556] =
+static const flex_int16_t yy_base[1627] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     1944, 1945,   34, 1940,  145,    0,  207, 1945,  214,  221,
-       13,  228, 1945, 1920,  118,   25,    2,    6, 1945, 1945,
-       73,   11,   17, 1945, 1945, 1945,  104, 1928, 1881,    0,
-     1918,  108, 1935,   24,  256, 1945,   67, 1877, 1883, 1903,
+     2016, 2017,   34, 2012,  145,    0,  207, 2017,  214,  221,
+       13,  228, 2017, 1992,  118,   25,    2,    6, 2017, 2017,
+       73,   11,   17, 2017, 2017, 2017,  104, 2000, 1953,    0,
+     1990,  108, 2007,   24,  256, 2017,   67, 1949, 1955, 1975,
        84,   75,  189,   88,  226,   91,   89,  284,  196,  206,
-      219,  191,  210,  197,   60,  242, 1884,  278,  230,  298,
-      275,  305, 1867,  212,  306,  345,  314, 1886,    0,  367,
-      374,  389,  404,  396, 1945,    0, 1945,  411,  418,  314,
-      322,  292,  345,  399,  331, 1945, 1883, 1924, 1945,  331,
-
-     1945,  431,  398, 1870, 1880, 1921,  408,   10,  327, 1874,
-      401,  408,  405,  411,  248, 1919,    0,  484,  407, 1861,
-     1866, 1868,  392, 1864, 1853, 1854,  401, 1870, 1853, 1862,
-      411,  314,  411, 1856, 1854,  235, 1843, 1901,  403, 1846,
-     1899, 1839, 1862, 1859, 1859, 1853,  404, 1846, 1839, 1844,
-     1838,  416, 1849, 1842, 1833, 1832, 1846,  399, 1884, 1831,
-      421, 1843, 1846, 1830,  480, 1831,  454, 1843, 1840, 1841,
-     1839, 1874, 1873,  426, 1819, 1824, 1820, 1812, 1829, 1821,
-        0,  431,  448,  443,  450,  449,  465, 1820, 1945,    0,
-      497, 1811, 1814, 1945,  452,  486, 1945, 1868, 1821,  496,
-
-     1866,  497, 1865,  490, 1864, 1945,  536, 1863,  502, 1822,
-     1819, 1816, 1815, 1806,  506, 1857, 1851, 1815, 1794, 1802,
-     1808, 1796, 1810, 1806, 1807, 1807, 1802, 1794, 1796, 1780,
-     1784, 1797, 1799, 1796, 1788, 1778, 1781, 1795, 1945, 1781,
-     1789, 1792, 1773, 1772, 1824, 1771, 1781, 1821,  508, 1780,
-     1768, 1779, 1817,  528, 1821, 1756, 1771,  518, 1761, 1777,
-     1758, 1760, 1756, 1762, 1753, 1752, 1765, 1758, 1760, 1764,
-     1763, 1757,  509, 1764, 1759, 1751, 1741, 1756, 1751, 1755,
-      513, 1753, 1739, 1745, 1752, 1740, 1737, 1736,  562, 1731,
-     1745, 1744, 1747, 1729, 1737,  531, 1945, 1945,  547, 1945,
-
-     1945, 1724,    0,  535, 1726,  572,  550, 1782, 1945, 1733,
-      553, 1945, 1780, 1945, 1774,  603, 1945,  552, 1714, 1717,
-     1723, 1775, 1730, 1725, 1728, 1723,   80, 1945, 1725,  585,
-     1723, 1720, 1721,  584, 1725, 1765, 1713, 1708, 1705, 1701,
-     1703, 1754, 1711, 1700, 1716, 1750, 1696,  596, 1709, 1709,
-     1692, 1693, 1706, 1693, 1703, 1698, 1705, 1700, 1685,  441,
-     1694, 1697, 1692, 1688, 1738,  326,  569, 1945, 1732, 1682,
-     1681, 1674, 1676, 1680, 1669, 1676, 1681,  530, 1728, 1681,
-      549, 1678, 1682, 1680, 1669, 1669, 1681,  547, 1656, 1657,
-     1678,  558, 1660, 1657, 1671, 1674, 1669, 1655, 1667, 1666,
-
-     1665, 1664, 1663, 1662,  555, 1705, 1704, 1703, 1645,  627,
-     1658, 1945, 1945, 1657,    0,  573, 1645, 1698, 1697, 1653,
-     1695, 1945, 1641, 1693, 1945,  581,  647,  603, 1692, 1640,
-     1631, 1945, 1636, 1642, 1645, 1628, 1643, 1630, 1629, 1945,
-     1639, 1630, 1627, 1639,  574, 1624, 1626, 1945, 1632, 1617,
-     1619, 1630, 1628, 1623,  635, 1630, 1618, 1611, 1662, 1945,
-     1609, 1625, 1659, 1663, 1619, 1613, 1615, 1616, 1618, 1652,
-     1603, 1598, 1597, 1599, 1592, 1607, 1585, 1592, 1597, 1647,
-     1945, 1592, 1588, 1644, 1595, 1589, 1596, 1581, 1591, 1594,
-     1583, 1582, 1577, 1945, 1634, 1945, 1576, 1575, 1568, 1585,
-
-     1624, 1569, 1574, 1583, 1577, 1571, 1580,  637, 1617, 1579,
-     1562, 1562, 1557, 1553, 1559, 1564, 1557, 1565, 1569, 1552,
-     1610, 1550, 1551, 1550, 1562, 1551, 1945, 1945, 1945, 1551,
-     1945, 1561, 1597, 1557,    0, 1600, 1548, 1945, 1945, 1545,
-     1945, 1551, 1945,  623,  622,  670, 1945, 1556, 1590, 1535,
-     1588, 1533, 1532, 1531, 1538, 1531, 1539, 1542, 1541, 1525,
-     1540, 1522, 1569, 1536, 1574, 1518, 1520, 1532, 1532, 1531,
-     1945, 1516, 1513, 1571, 1526, 1518, 1524, 1515, 1523, 1945,
-     1508, 1519, 1523, 1505, 1519,  576, 1501, 1495, 1500, 1497,
-     1512, 1513, 1510, 1553, 1508, 1945, 1494, 1496, 1945, 1504,
-
-     1543, 1542,   16, 1503, 1486, 1487, 1492, 1483, 1945, 1497,
-     1483,  671, 1475, 1496, 1493, 1485, 1530, 1482, 1489, 1527,
-     1945, 1473, 1471, 1485, 1469, 1483, 1486, 1520, 1519, 1518,
-     1517, 1462, 1515, 1514, 1945,  629, 1476, 1475, 1472, 1472,
-     1470, 1459, 1461, 1945, 1945, 1506, 1452, 1509,  621,  618,
-     1450, 1448, 1464, 1505,  639, 1499, 1459, 1497, 1496, 1448,
-     1442, 1437, 1492, 1452, 1442, 1450, 1488, 1449, 1431, 1439,
-     1441, 1445, 1482, 1486, 1441, 1440, 1945, 1441, 1434, 1423,
-     1436, 1439, 1434, 1429, 1434, 1431, 1430, 1426, 1432, 1427,
-     1470, 1469, 1411, 1407,  609, 1466, 1945, 1465, 1412, 1404,
-
-     1457, 1418, 1405, 1945, 1405, 1414, 1413, 1413, 1397, 1454,
-     1395, 1408, 1945, 1400, 1392, 1401, 1394, 1405, 1382, 1386,
-     1439, 1401, 1383, 1381, 1392,   20,  130,  266,  274,  309,
-      630,  348,  638,  419,  479,  641, 1945,  534,  506,  542,
-      573,  594,  610,  619,  625,  634,  683, 1945,  690,  666,
-      654,  655,  650, 1945,  648,  663,  660,  646,  653,  652,
-      650,  669,  666,  667,  657,  670,  656,  656,  662,  718,
-      664,  680,  663,  717,  672, 1945,  683,  683,  676,  687,
-      685,  730,  672,  674,  689,  690,  678,  737,  694,  680,
-      683, 1945, 1945,  699,  698,  703,  691, 1945, 1945,  705,
-
-      692,  690,  708,  695,  695,  746,  696,  754,  755, 1945,
-      700,  714,  714,  759,  707,  709,  703,  763,  716,  706,
-      707,  703,  713,  717,  728,  712,  730,  725,  727,  720,
-      722,  723,  735,  725,  740,  781,  738,  743,  720, 1945,
-      732,  733,  747,  737,  784,  732,  747,  747, 1945,  766,
-      774,  743,  792,  758,  746,  741,  742,  754,  761,  750,
-      751,  747,  765,  757,  752,  805,  811,  768,  759, 1945,
-      771,  756,  772,  762,  775,  769,  817,  783,  767,  768,
-     1945,  784,  787,  770,  772,  830,  773, 1945,  790,  793,
-      773,  792,  832,  790,  786,  781,  799,  798,  784,  799,
-
-      791,  787,  805,  790, 1945, 1945,  798,  845,  798, 1945,
-      806,  801,  854, 1945,  803,  808,  852,  804,  805,  817,
-      811,  815,  813,  811,  822,  867,  811,  816,  870,  871,
-      815,  827, 1945,  815,  823,  821,  818,  819,  828,  840,
-      824,  838,  839,  840,  856,  861,  843,  830,  832,  832,
-      852,  851,  842,  831,  848,  855,  898,  840,  900,  847,
-      851, 1945,  898,  847,  865,  862,  902,  851,  869,  870,
-      856,  864,  875,  855,  870,  877,  919,  920, 1945,  873,
-      922,  923,  874,  884,  886,  870,  871,  878,  887,  932,
-      879,  878,  895,  936,  886,  890,  888,  886,  941,  942,
-
-      892,  944,  940,  898, 1945,  903,  896,  887,  906,  900,
-      895,  905,  902,  907,  903,  915, 1945,  899,  901, 1945,
-     1945,  901,  961,  900,  919,  920,  965,  966,  920,  905,
-      926,  908,  913,  920,  953,  944,  976,  933,  920,  922,
-      939,  934,  938,  983,  931,  935, 1945,  932, 1945,  946,
-      944,  947,  931,  932,  992,  945,  950,  937,  948,  941,
-      947,  943,  961,  962,  964, 1945, 1945,  962, 1945,  964,
-     1945,  949,  950,  969,  959, 1011,  964, 1008,  972, 1945,
-      964,  956, 1017, 1945, 1018,  965,  972, 1016, 1945, 1945,
-      974, 1945,  965,  965,  968,  982,  987,  970,  981, 1030,
-
-      987,  988,  989, 1029,  985, 1036,  989, 1038, 1945,  985,
-     1040, 1041, 1945, 1945,  981, 1043, 1002,  986,  998,  988,
-     1018, 1049, 1945, 1006, 1051,  998, 1013, 1049, 1001, 1945,
-      997, 1013, 1001, 1019, 1007, 1007, 1062, 1019, 1945, 1021,
-     1020, 1022, 1015, 1024, 1025, 1022, 1012, 1015, 1015, 1074,
-     1021, 1077, 1078, 1021, 1080, 1945, 1016, 1031, 1024, 1084,
-     1037, 1945, 1945, 1033, 1044, 1029, 1046, 1032, 1093, 1094,
-     1039, 1049, 1098, 1055, 1945, 1047, 1047, 1049, 1051, 1104,
-     1047, 1945, 1048, 1945, 1050, 1945, 1945, 1064, 1945, 1058,
-     1110, 1059, 1112, 1092, 1945, 1109, 1945, 1057, 1065, 1059,
-
-     1056, 1059, 1062, 1062, 1058, 1064, 1124, 1072, 1945, 1068,
-     1127, 1080, 1071, 1086, 1086, 1089, 1089, 1086, 1130, 1093,
-     1945, 1085, 1945, 1945, 1095, 1945, 1096, 1097, 1094, 1138,
-     1945, 1087, 1087, 1093, 1092, 1104, 1104, 1945, 1945, 1145,
-     1092, 1945, 1109, 1094, 1094, 1096, 1102, 1945, 1157, 1099,
-     1109, 1160, 1121, 1945, 1118, 1945, 1137, 1105, 1165, 1166,
-     1123, 1128, 1110, 1170, 1171, 1172, 1125, 1945, 1115, 1175,
-     1945, 1113, 1172, 1135, 1131, 1175, 1123, 1128, 1126, 1185,
-     1141, 1187, 1188, 1149, 1139, 1133, 1149, 1194, 1136, 1153,
-     1138, 1153, 1137, 1195, 1196, 1197, 1144, 1199, 1162, 1945,
-
-     1162, 1149, 1945, 1160, 1209, 1179, 1163, 1945, 1945, 1154,
-     1165, 1214, 1945, 1945, 1945, 1161, 1159, 1945, 1217, 1163,
-     1214, 1157, 1162, 1223, 1171, 1181, 1182, 1945, 1227, 1180,
-     1945, 1945, 1171, 1186, 1174, 1189, 1945, 1228, 1194, 1187,
-     1188, 1197, 1180, 1186, 1188, 1242, 1202, 1201, 1193, 1247,
-     1196, 1945, 1249, 1198, 1251, 1193, 1945, 1200, 1200, 1945,
-     1204, 1199, 1198, 1258, 1211, 1945, 1255, 1206, 1203, 1945,
-     1217, 1220, 1265, 1218, 1267, 1208, 1210, 1218, 1208, 1224,
-     1225, 1219, 1235, 1945, 1225, 1277, 1236, 1945, 1274, 1945,
-     1236, 1945, 1276, 1277, 1232, 1240, 1231, 1238, 1945, 1235,
-
-     1240, 1238, 1290, 1291, 1234, 1945, 1249, 1945, 1239, 1251,
-     1252, 1297, 1239, 1247, 1241, 1249, 1262, 1945, 1239, 1262,
-     1247, 1247, 1252, 1308, 1256, 1268, 1259, 1268, 1270, 1274,
-     1945, 1945, 1315, 1258, 1274, 1318, 1319, 1945, 1315, 1277,
-     1274, 1279, 1266, 1325, 1262, 1327, 1280, 1285, 1945, 1330,
-     1287, 1288, 1333, 1290, 1293, 1945, 1336, 1297, 1945, 1945,
-     1279, 1339, 1286, 1341, 1284, 1945, 1301, 1945, 1292, 1288,
-     1945, 1288, 1290, 1945, 1295, 1305, 1945, 1291, 1303, 1945,
-     1299, 1945, 1309, 1303, 1311, 1308, 1299, 1353, 1300, 1308,
-     1317, 1310, 1305, 1306, 1321, 1366, 1313, 1320, 1307, 1322,
-
-     1327, 1372, 1329, 1374, 1375, 1318, 1945, 1334, 1325, 1339,
-     1335, 1328, 1945, 1382, 1945, 1945, 1383, 1384, 1339, 1338,
-     1339, 1329, 1945, 1945, 1945, 1389, 1331, 1347, 1392, 1945,
-     1388, 1337, 1945, 1336, 1338, 1349, 1398, 1347, 1945, 1356,
-     1401, 1945, 1945, 1407, 1412, 1417, 1422, 1427, 1432, 1437,
-     1440, 1414, 1419, 1421, 1434
+      219,  191,  210,  197,   60,  242, 1956,  278,  287,  298,
+      294,  313, 1939,  212,  318,  350,  328, 1958,    0,  379,
+      400,  417,  424,  429, 2017,    0, 2017,  393,  407,  269,
+      299,  301,  406,  418,  304, 2017, 1955, 1996, 2017,  293,
+
+     2017,  442,  312, 1942, 1952, 1993,  421,   10,  345, 1946,
+      319,  338,  336,  369,  248, 1991,    0,  495,  413, 1933,
+     1938, 1940,  332, 1936, 1925, 1926,  410, 1942, 1925, 1934,
+      418,  340,  226, 1928, 1926,  405, 1915, 1973,  448, 1918,
+     1971, 1911, 1934, 1931, 1931, 1925,  411, 1918, 1916, 1910,
+     1915, 1909,  421, 1920, 1913, 1904, 1903, 1917,  408, 1955,
+     1902,  413, 1914, 1917, 1901,  491, 1902,  423, 1914, 1911,
+     1912, 1910, 1945, 1944,  434, 1890, 1895, 1891, 1883, 1900,
+     1892,    0,  451,  460,  434,  460,  468,  476, 1891, 2017,
+        0,  481, 1882, 1885, 2017,  464,  474, 2017, 1939, 1892,
+
+      504, 1937,  507, 1936,  497, 1935, 2017,  544, 1934,  517,
+     1893, 1890, 1887, 1886, 1877,  514, 1928, 1922, 1886, 1865,
+     1873, 1879, 1867, 1881, 1877, 1878, 1878, 1873, 1865, 1867,
+     1851, 1855, 1868, 1870, 1867, 1859, 1849, 1852, 1866, 2017,
+     1852, 1860, 1863, 1844, 1843, 1895, 1842, 1852, 1892,  519,
+     1851, 1890, 1838, 1849, 1887,  524, 1891, 1826, 1841,  358,
+     1831, 1847, 1828, 1830, 1826, 1832, 1823, 1822, 1835, 1828,
+     1830, 1834, 1833, 1827,  220, 1834, 1829, 1821, 1811, 1826,
+     1821, 1825,  482, 1823, 1809, 1815, 1822, 1810, 1807, 1806,
+      486, 1801, 1815, 1814, 1817, 1799, 1807,  537, 2017, 2017,
+
+      539, 2017, 2017, 1794,    0,  506, 1796,  579,  548, 1852,
+     2017, 1803,  545, 2017, 1850, 2017, 1844,  595, 2017,  536,
+     1784, 1787, 1793, 1845, 1800, 1795, 1798, 1793,   80, 2017,
+     1795,  593, 1793, 1790, 1791,  323, 1795, 1835, 1783, 1778,
+     1775, 1771, 1773, 1824, 1781, 1770, 1786, 1820, 1766,  596,
+     1779, 1779, 1762, 1763, 1776, 1763, 1773, 1768, 1775, 1770,
+     1755,  563, 1764, 1767, 1762,  322, 1758, 1808,  566,  553,
+     2017, 1802, 1752, 1751, 1744, 1746, 1750, 1739, 1746, 1751,
+      575, 1798, 1751,  578, 1748, 1752, 1750, 1739, 1739, 1751,
+      570, 1726, 1727, 1748,  581, 1730, 1727, 1741, 1744, 1739,
+
+     1725, 1737, 1736, 1735, 1734, 1733, 1732,  476, 1775, 1774,
+     1773, 1715,  641, 1728, 2017, 2017, 1727,    0,  598, 1715,
+     1768, 1767, 1723, 1765, 2017, 1711, 1763, 2017,  604,  652,
+      617, 1762, 1710, 1701, 2017, 1706, 1712, 1715, 1698, 1713,
+     1700, 1699, 2017, 1709, 1700, 1697, 1709,  552, 1694, 1696,
+     2017, 1702, 1687, 1689, 1700, 1698, 1693,  643, 1700, 1688,
+     1681, 1732, 2017, 1679, 1695, 1729, 1733, 1689, 1683, 1685,
+     1686, 1688, 1722, 1673, 1668, 1667, 1669, 1665, 1661, 1676,
+     1679, 1653, 1660, 1665, 1658, 1674, 1713, 2017, 1658, 1654,
+     1710, 1661, 1655, 1662, 1647, 1657, 1660, 1649, 1648, 1643,
+
+     2017, 1700, 2017, 1642, 1641, 1634, 1651, 1690, 1635, 1640,
+     1649, 1643, 1637, 1646,  645, 1683, 1645, 1628, 1628, 1623,
+     1619, 1625, 1630, 1623, 1631, 1635, 1618, 1676, 1616, 1617,
+     1616, 1628, 1617, 2017, 2017, 2017, 1617, 2017, 1627, 1663,
+     1623,    0, 1666, 1614, 2017, 2017, 1611, 2017, 1617, 2017,
+      604,  622,  676, 2017, 1622, 1656, 1601, 1654, 1599, 1598,
+     1597, 1604, 1597, 1605, 1608, 1607, 1591, 1606, 1588, 1635,
+     1602, 1640, 1584, 1586, 1598, 1598, 1597, 2017, 1582, 1579,
+     1637, 1592, 1584, 1590, 1581, 1589, 2017, 1574, 1585, 1589,
+     1571, 1585,  536, 1567, 1561, 1566, 1563, 1578, 1577, 1578,
+
+     1568, 1574, 1617, 1572, 1571, 1563, 2017, 1556, 1558, 2017,
+     1566, 1605, 1604,   16, 1565, 1548, 1549, 1554, 1545, 2017,
+     1559, 1545,  677, 1537, 1558, 1555, 1547, 1592, 1544, 1551,
+     1589, 2017, 1535, 1533, 1547, 1531, 1545, 1548, 1582, 1581,
+     1580, 1579, 1524, 1577, 1576, 2017,  597, 1538, 1537, 1534,
+     1534, 1532, 1521, 1523, 2017, 2017, 1568, 1514, 1571,  621,
+      621, 1512, 1510, 1526, 1567,  641, 1561, 1521, 1559, 1558,
+     1510, 1504, 1499, 1554, 1514, 1504, 1512, 1550, 1511, 1493,
+     1501, 1503, 1507, 1544, 1548, 1503, 1502, 2017, 1503, 1496,
+     1485, 1498, 1501, 1496, 1491, 1496, 1493, 1492, 1488, 1494,
+
+     1489, 1532, 1531, 1473, 1484, 1468,  634, 1479, 1526, 2017,
+     1525, 1479, 1475, 1470, 1462, 1515, 1476, 1463, 2017, 1463,
+     1472, 1471, 1471, 1455, 1512,   77,  245, 2017,  348,  430,
+      460,  456,  534,  530,  575,  639,  611,  596,  606,  619,
+      663,  673,  682,  630,  648,  643,  657,  652,  637,  649,
+      650, 2017,  704,  661,  662,  653,  666,  669,  660,  666,
+      675,  716, 2017,  712,  688,  675,  676,  671, 2017,  669,
+      684,  681,  667,  674,  673,  671,  690,  687,  688,  678,
+      691,  677,  676,  682,  738,  684,  700,  683,  737,  692,
+     2017,  702,  702,  696,  707,  705,  750,  692,  694,  709,
+
+      710,  698,  757,  714,  700,  703, 2017, 2017,  719,  718,
+      719,  724,  712,  723, 2017, 2017,  723,  725,  729,  716,
+      714,  732,  719,  719,  770,  720,  778,  779, 2017,  724,
+      738,  738,  783,  731,  733,  727,  787,  740,  730,  731,
+      727,  737,  741,  752,  736,  754,  749,  751,  744,  746,
+      747,  759,  749,  764,  805,  762,  767,  744, 2017,  756,
+      757,  771,  761,  808,  756,  771,  771, 2017,  790,  798,
+      767,  816,  782,  770,  765,  766,  778,  785,  774,  775,
+      771,  789,  781,  776,  829,  835,  792,  783, 2017,  795,
+      780,  796,  786,  799,  793,  841,  807,  791,  792, 2017,
+
+      808,  811,  794,  796,  854,  797, 2017,  814,  817,  797,
+      816,  804,  857,  815,  811,  860,  809,  862,  809,  827,
+      826,  812,  827,  819,  815,  833,  818, 2017, 2017,  826,
+      873,  826, 2017,  834,  829,  882, 2017,  831,  836,  880,
+      832,  833,  845,  839,  843,  841,  839,  850,  895,  839,
+      844,  898,  899,  843,  855, 2017,  843,  851,  849,  846,
+      847,  856,  868,  852,  866,  867,  869,  885,  890,  872,
+      858,  860,  860,  880,  879,  870,  859,  876,  883,  926,
+      868,  928,  875,  879, 2017,  926,  875,  893,  890,  930,
+      879,  897,  898,  884,  892,  901,  883,  898,  905,  947,
+
+      948, 2017,  901,  950,  951,  902,  912,  914,  898,  900,
+      900,  907,  916,  910,  905,  912,  964,  911,  910,  927,
+      968,  918,  922,  920,  918,  973,  974,  924,  976,  972,
+      930, 2017,  935,  928,  919,  938,  932,  927,  937,  934,
+      939,  935,  947, 2017,  931,  933, 2017, 2017,  933,  993,
+      932,  952,  953,  998,  999,  952,  937,  958,  940,  945,
+      952,  985,  976, 1008,  965,  952,  954,  971,  966,  970,
+     1015,  963,  967, 2017,  964, 2017,  978,  976,  979,  963,
+      964, 1024,  977,  982,  969,  980,  973,  979,  975,  993,
+      994,  996, 2017, 2017,  994, 2017,  996, 2017,  981,  982,
+
+     1001,  991, 1043, 1000,  997, 1041, 1005, 1000, 1005, 1002,
+     2017, 1000,  992, 1053, 2017, 1054, 1001, 1008, 1052, 2017,
+     2017, 1010, 2017, 1001, 1001, 1004, 1018, 1023, 1006, 1017,
+     1066, 1023, 1024, 1025, 1065, 1021, 1072, 1025, 1074, 2017,
+     1021, 1076, 1077, 2017, 2017, 1017, 1079, 1038, 1022, 1034,
+     1024, 1054, 1085, 2017, 1042, 1087, 1034, 1049, 1085, 1037,
+     2017, 1033, 1049, 1037, 1055, 1043, 1043, 1098, 1055, 2017,
+     1057, 1056, 1058, 1051, 1060, 1061, 1058, 1048, 1051, 1051,
+     1110, 1057, 1113, 1114, 1057, 1116, 2017, 1074, 1053, 1068,
+     1061, 1076, 1079, 1079, 1125, 1078, 2017, 2017, 1075, 1085,
+
+     1070, 1087, 1073, 1134, 1135, 1079, 1089, 1138, 1095, 2017,
+     1087, 1087, 1089, 1091, 1144, 1087, 2017, 1088, 2017, 1090,
+     2017, 2017, 1104, 2017, 1098, 1150, 1099, 1152, 1132, 2017,
+     1149, 2017, 1097, 1105, 1099, 1096, 1099, 1102, 1102, 1098,
+     1104, 1164, 1112, 2017, 1108, 1167, 1120, 1111, 1126, 1126,
+     1129, 1129, 1126, 1170, 1133, 2017, 1125, 2017, 2017, 1135,
+     2017, 1175, 1137, 1138, 1135, 1179, 1141, 1181, 1143, 2017,
+     1131, 1131, 1137, 1136, 1148, 1148, 2017, 2017, 1189, 1136,
+     2017, 1153, 1138, 1138, 1140, 1146, 2017, 1201, 1143, 1153,
+     1204, 1165, 2017, 1162, 2017, 1181, 1149, 1209, 1210, 1167,
+
+     1172, 1154, 1214, 1215, 1216, 1169, 2017, 1159, 1219, 2017,
+     1157, 1216, 1179, 1175, 1219, 1167, 1172, 1170, 1229, 1185,
+     1231, 1181, 1233, 1195, 1184, 1178, 1179, 1188, 1181, 1197,
+     1242, 1184, 1201, 1186, 1201, 1185, 1243, 1244, 1245, 1192,
+     1247, 1210, 2017, 1210, 1197, 2017, 1208, 1257, 1227, 1211,
+     2017, 2017, 1202, 1213, 1262, 2017, 2017, 2017, 1209, 1207,
+     2017, 1265, 1211, 1262, 1205, 1210, 1271, 1219, 1229, 1230,
+     2017, 1275, 1228, 2017, 1229, 2017, 1220, 1235, 1223, 1233,
+     1234, 1235, 1241, 2017, 1280, 1248, 1241, 1242, 1251, 1233,
+     1239, 1241, 1295, 1254, 1253, 1245, 1299, 1248, 2017, 1301,
+
+     1250, 1303, 1245, 2017, 1252, 1252, 2017, 1256, 1251, 1250,
+     1310, 1263, 2017, 1307, 1258, 1255, 2017, 1269, 1271, 1273,
+     1318, 1271, 1268, 1276, 1270, 1323, 1264, 1266, 1274, 1264,
+     1280, 1281, 1275, 1291, 2017, 1281, 1333, 1292, 2017, 1330,
+     2017, 1292, 2017, 1332, 1333, 1288, 1296, 1287, 1294, 2017,
+     1291, 1296, 1294, 1346, 1347, 1304, 1291, 2017, 1306, 1307,
+     1308, 1309, 2017, 1299, 1311, 1312, 1357, 1299, 1307, 1301,
+     1309, 1322, 2017, 1299, 1322, 1307, 1307, 1312, 1368, 1316,
+     1328, 1319, 1328, 1330, 1334, 2017, 2017, 1316, 1376, 1319,
+     1378, 1320, 1380, 1338, 1382, 1383, 2017, 1379, 1341, 1338,
+
+     1343, 1330, 1389, 1326, 1391, 1344, 1349, 2017, 1394, 1351,
+     1352, 1397, 1354, 1357, 1352, 2017, 1401, 2017, 1354, 2017,
+     1363, 2017, 2017, 1345, 1405, 1352, 1407, 1350, 2017, 1367,
+     2017, 1358, 1354, 2017, 1354, 1356, 2017, 1361, 1371, 1364,
+     2017, 1365, 1359, 1371, 2017, 1367, 2017, 1377, 1371, 1379,
+     1376, 1367, 1421, 1368, 1376, 1385, 1386, 1387, 1380, 1375,
+     1376, 1391, 1436, 1383, 1390, 1377, 1392, 1397, 1442, 1443,
+     1444, 1401, 1446, 1447, 1390, 2017, 1406, 1397, 1411, 1407,
+     1400, 2017, 2017, 2017, 1454, 2017, 2017, 1455, 1456, 1411,
+     1410, 1411, 1401, 2017, 2017, 2017, 1461, 1403, 1419, 1464,
+
+     2017, 1460, 1409, 2017, 1408, 1410, 1421, 1470, 1419, 2017,
+     1428, 1473, 2017, 2017, 1479, 1484, 1489, 1494, 1499, 1504,
+     1509, 1512, 1486, 1491, 1493, 1506
     } ;
 
-static const flex_int16_t yy_def[1556] =
+static const flex_int16_t yy_def[1627] =
     {   0,
-     1544, 1544, 1545, 1545, 1544, 1544, 1544, 1544, 1544, 1544,
-     1543, 1543, 1543, 1543, 1543, 1546, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1547,
-     1543, 1543, 1543, 1548,   15, 1543,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1549,   45,   45,
+     1615, 1615, 1616, 1616, 1615, 1615, 1615, 1615, 1615, 1615,
+     1614, 1614, 1614, 1614, 1614, 1617, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1618,
+     1614, 1614, 1614, 1619,   15, 1614,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1620,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1546, 1543,
-     1543, 1543, 1543, 1543, 1543, 1550, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1547, 1543, 1548,
+       45,   45,   45,   45,   45,   45,   45,   45, 1617, 1614,
+     1614, 1614, 1614, 1614, 1614, 1621, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1618, 1614, 1619,
 
-     1543, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1551,   45, 1549,   45,   45,
+     1614, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1622,   45, 1620,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1550, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1552,
-       45,   45,   45, 1543,   45,   45, 1543,   45,   45,   45,
+       45, 1621, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1623,   45,   45,   45, 1614,   45,   45, 1614,   45,   45,
 
-       45,   45,   45,   45, 1551, 1543, 1549,   45,   45,   45,
+       45,   45,   45,   45,   45, 1622, 1614, 1620,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1543, 1543, 1543, 1543, 1543,
+       45,   45,   45,   45,   45,   45,   45, 1614, 1614, 1614,
 
-     1543, 1543, 1553,   45,   45,   45,   45,   45, 1543,   45,
-       45, 1543,   45, 1543,   45, 1549, 1543,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
+     1614, 1614, 1614, 1614, 1624,   45,   45,   45,   45,   45,
+     1614,   45,   45, 1614,   45, 1614,   45, 1620, 1614,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1543, 1543, 1543, 1554,   45,   45,   45,   45,   45,
-       45, 1543,   45,   45, 1543,   45, 1549,   45,   45,   45,
-       45, 1543,   45,   45,   45,   45,   45,   45,   45, 1543,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45, 1614, 1614, 1614, 1625,   45,   45,
+       45,   45,   45,   45, 1614,   45,   45, 1614,   45, 1620,
+       45,   45,   45,   45, 1614,   45,   45,   45,   45,   45,
+       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1543,   45, 1543,   45,   45,   45,   45,
 
+     1614,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1614, 1614, 1614,   45, 1614,   45,   45,
+     1614, 1626,   45,   45, 1614, 1614,   45, 1614,   45, 1614,
+       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
+       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1543, 1543, 1543,   45,
-     1543,   45,   45, 1543, 1555,   45,   45, 1543, 1543,   45,
-     1543,   45, 1543,   45,   45,   45, 1543,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 1614,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1614,   45,   45,   45,   45,
+       45,   45,   45,   45, 1614, 1614,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1543,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1543,   45,   45, 1543,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1543,   45,   45,   45,   45,   45,
-       45,   45,   45, 1543, 1543,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1614,   45,   45,   45,   45,   45, 1614,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
+     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1543,   45,   45,   45,   45,   45,   45,
-       45,   45, 1543,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1614, 1614,   45,   45,
+       45,   45,   45,   45, 1614, 1614,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
-       45,   45,   45, 1543,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1543,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1543, 1543,   45,   45,   45,   45, 1543, 1543,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
 
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
+       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1614, 1614,   45,
+       45,   45, 1614,   45,   45,   45, 1614,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
+       45,   45,   45,   45,   45, 1614,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1543,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
+       45,   45,   45,   45, 1614,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45, 1543, 1543,   45,   45,   45, 1543,
-       45,   45,   45, 1543,   45,   45,   45,   45,   45,   45,
+       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1543,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1614,   45,   45, 1614, 1614,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1614,   45, 1614,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1614, 1614,   45, 1614,   45, 1614,   45,   45,
 
-       45,   45,   45,   45, 1543,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1543,   45,   45, 1543,
-     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1543,   45, 1543,   45,
+     1614,   45,   45,   45, 1614,   45,   45,   45,   45, 1614,
+     1614,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45, 1614, 1614,   45,   45,   45,   45,   45,
+       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
+     1614,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1543, 1543,   45, 1543,   45,
-     1543,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
-       45,   45,   45, 1543,   45,   45,   45,   45, 1543, 1543,
-       45, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
-       45,   45, 1543, 1543,   45,   45,   45,   45,   45,   45,
-       45,   45, 1543,   45,   45,   45,   45,   45,   45, 1543,
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
+       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1614, 1614,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45, 1614,   45, 1614,   45,
+     1614, 1614,   45, 1614,   45,   45,   45,   45,   45, 1614,
+       45, 1614,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1614,   45, 1614, 1614,   45,
+     1614,   45,   45,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45, 1614, 1614,   45,   45,
+     1614,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
+       45,   45, 1614,   45, 1614,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45, 1614,   45,   45, 1614,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1543,   45,   45,   45,   45,
-       45, 1543, 1543,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1543,   45,   45,   45,   45,   45,
-       45, 1543,   45, 1543,   45, 1543, 1543,   45, 1543,   45,
-       45,   45,   45,   45, 1543,   45, 1543,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1543,   45, 1543, 1543,   45, 1543,   45,   45,   45,   45,
-     1543,   45,   45,   45,   45,   45,   45, 1543, 1543,   45,
-       45, 1543,   45,   45,   45,   45,   45, 1543,   45,   45,
-       45,   45,   45, 1543,   45, 1543,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
-     1543,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1543,
-
-       45,   45, 1543,   45,   45,   45,   45, 1543, 1543,   45,
-       45,   45, 1543, 1543, 1543,   45,   45, 1543,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
-     1543, 1543,   45,   45,   45,   45, 1543,   45,   45,   45,
+       45,   45, 1614,   45,   45, 1614,   45,   45,   45,   45,
+     1614, 1614,   45,   45,   45, 1614, 1614, 1614,   45,   45,
+     1614,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1614,   45,   45, 1614,   45, 1614,   45,   45,   45,   45,
+       45,   45,   45, 1614,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1614,   45,
+
+       45,   45,   45, 1614,   45,   45, 1614,   45,   45,   45,
+       45,   45, 1614,   45,   45,   45, 1614,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1543,   45,   45,   45,   45, 1543,   45,   45, 1543,
-       45,   45,   45,   45,   45, 1543,   45,   45,   45, 1543,
+       45,   45,   45,   45, 1614,   45,   45,   45, 1614,   45,
+     1614,   45, 1614,   45,   45,   45,   45,   45,   45, 1614,
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
+       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1614,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1614, 1614,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1614,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45, 1614,   45,   45,
+       45,   45,   45,   45,   45, 1614,   45, 1614,   45, 1614,
+       45, 1614, 1614,   45,   45,   45,   45,   45, 1614,   45,
+     1614,   45,   45, 1614,   45,   45, 1614,   45,   45,   45,
+     1614,   45,   45,   45, 1614,   45, 1614,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1543,   45,   45,   45, 1543,   45, 1543,
-       45, 1543,   45,   45,   45,   45,   45,   45, 1543,   45,
-
-       45,   45,   45,   45,   45, 1543,   45, 1543,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1543,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1543, 1543,   45,   45,   45,   45,   45, 1543,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1543,   45,
-       45,   45,   45,   45,   45, 1543,   45,   45, 1543, 1543,
-       45,   45,   45,   45,   45, 1543,   45, 1543,   45,   45,
-     1543,   45,   45, 1543,   45,   45, 1543,   45,   45, 1543,
-       45, 1543,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1614,   45,   45,   45,   45,
+       45, 1614, 1614, 1614,   45, 1614, 1614,   45,   45,   45,
+       45,   45,   45, 1614, 1614, 1614,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45, 1543,   45,   45,   45,
-       45,   45, 1543,   45, 1543, 1543,   45,   45,   45,   45,
-       45,   45, 1543, 1543, 1543,   45,   45,   45,   45, 1543,
-       45,   45, 1543,   45,   45,   45,   45,   45, 1543,   45,
-       45, 1543,    0, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543
+     1614,   45,   45, 1614,   45,   45,   45,   45,   45, 1614,
+       45,   45, 1614,    0, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614
     } ;
 
-static const flex_int16_t yy_nxt[2019] =
+static const flex_int16_t yy_nxt[2091] =
     {   0,
-     1543,   13,   14,   13, 1543,   15,   16, 1543,   17,   18,
+     1614,   13,   14,   13, 1614,   15,   16, 1614,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       85,  704,   37,   14,   37,   86,   25,   26,   38,  101,
-      825,   27,   37,   14,   37,   42,   28,   42,   38,   91,
-       92,   29,  196,   30,   13,   14,   13,   90,   91,   25,
+       85,  719,   37,   14,   37,   86,   25,   26,   38,  101,
+     1614,   27,   37,   14,   37,   42,   28,   42,   38,   91,
+       92,   29,  197,   30,   13,   14,   13,   90,   91,   25,
        31,   92,   13,   14,   13,   13,   14,   13,   32,   40,
-      705,   13,   14,   13,   33,   40,  102,   91,   92,  196,
+      720,   13,   14,   13,   33,   40,  102,   91,   92,  197,
        90,   34,   35,   13,   14,   13,   94,   15,   16,   95,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   90,   39,  103,   25,   26,
 
        13,   14,   13,   27,   39,   42,  107,   42,   28,   42,
       108,   42,   41,   29,  111,   30,  114,  115,   93,  136,
-       41,   25,   31,  103,  137,  437,   88,  138,   88,  107,
+       41,   25,   31,  103,  137,  440,   88,  138,   88,  107,
        32,   89,   89,   89,   89,   89,   33,  111,  108,  114,
-      826,  115,  438,   34,   35,   44,   44,   44,   45,   45,
+      830,  115,  441,   34,   35,   44,   44,   44,   45,   45,
        46,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   47,   45,   48,
        49,   50,   51,   45,   52,   53,   54,   45,   45,   45,
@@ -1297,221 +1321,228 @@ static const flex_int16_t yy_nxt[2019] =
        81,   81,   81,   81,   81,   80,  103,   83,   83,   83,
        83,   83,  107,   82,   84,   84,   84,   84,   84,   80,
        82,   83,   83,   83,   83,   83,  134,   82,  110,  131,
-      112,  121,  119,  135,   82,  107,   82,  164,  120,  132,
-      113,  165,  122,   82,  126,  123,  133,  124,  127,  125,
-       82,  128,  129,  112,  204,  147,  827,   82,   45,  148,
+      112,  121,  119,  135,   82,  107,   82,  165,  120,  132,
+      113,  166,  122,   82,  126,  123,  133,  124,  127,  125,
+       82,  128,  129,  112,  205,  231,  390,   82,   45,  391,
        45,   45,   45,   45,  130,   45,   45,   45,  113,  117,
-      139,  234,   45,   45,  235,   45,   45,  204,  236,  149,
+      139,  232,   45,   45,  831,   45,   45,  205,  101,  183,
 
       140,   45,  141,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,  111,  153,   45,  143,  144,  184,
-       45,  145,  197,  154,   45,  155,  101,  146,  828,  114,
-      156,  157,   45,  150,  182,  151,   45,  152,   45,  118,
-      158,  166,  183,  159,  160,  167,  829,  184,  168,  172,
-      173,  228,  114,  198,  161,  169,  170,  162,  184,  112,
-      182,  171,  178,  102,  229,  182,  482,  179,  183,  113,
-       84,   84,   84,   84,   84,   80,  483,   81,   81,   81,
-       81,   81,  174,   82,  175,  832,  187,   88,  176,   88,
-
-       82,  185,   89,   89,   89,   89,   89,  113,  239,   84,
-       84,   84,   84,   84,  177,   80,   82,   83,   83,   83,
-       83,   83,   82,   82,   89,   89,   89,   89,   89,  183,
-       82,   89,   89,   89,   89,   89,  100,  191,  195,  200,
-      213,  201,  202,  100,  203,   82,  191,  219,  220,  214,
-      215,  248,  240,   82,  200,  186,  225,  221,  226,  201,
-      230,  260,  261,  208,  195,  191,  296,  200,  201,  298,
-      202,  203,  249,  100,  209,  227,  231,  100,  297,  297,
-      264,  100,  254,  265,  266,  296,  289,  307,  836,  100,
-      270,  298,  298,  100,  296,  100,  190,  207,  207,  207,
-
-      207,  207,  475,  476,  297,  300,  207,  207,  207,  207,
-      207,  207,  280,  299,  301,  307,  281,  308,  360,  304,
-      282,  315,  311,  313,  304,  271,  272,  273,  371,  207,
-      207,  207,  207,  207,  207,  494,  274,  837,  275,  840,
-      276,  277,  304,  278,  308,  311,  313,  318,  315,  316,
-      316,  316,  316,  316,  311,  841,  324,  412,  316,  316,
-      316,  316,  316,  316,  325,  387,  396,  312,  388,  326,
-      327,  361,  405,  412,  362,  416,  421,  367,  372,  397,
-      412,  316,  316,  316,  316,  316,  316,  424,  418,  419,
-      440,  842,  416,  495,  445,  441,  413,  420,  498,  421,
-
-      446,  460,  499,  424,  416,  506,  461,  511,  536,  507,
-      525,  512,  544,  526,  545,  424,  427,  427,  427,  427,
-      427,  428,  561,  688,  689,  427,  427,  427,  427,  427,
-      427,  484,  531,  843,  737,  562,  536,  532,  536,  544,
-      571,  545,  621,  844,  750,  572,  738,  622,  427,  427,
-      427,  427,  427,  427,  462,  649,  650,  749,  845,  463,
-       45,   45,   45,   45,   45,  796,  546,  750,  797,   45,
-       45,   45,   45,   45,   45,  645,  713,  846,  847,  848,
-      651,  714,  649,  830,  650,  749,  755,  756,  849,  757,
-      831,  833,   45,   45,   45,   45,   45,   45,  834,  838,
-
-      850,  851,  835,  852,  853,  839,  854,  855,  856,  857,
-      858,  859,  860,  861,  862,  863,  864,  865,  866,  867,
-      715,  868,  869,  870,  871,  872,  873,  874,  875,  851,
-      876,  877,  878,  879,  880,  881,  883,  884,  885,  886,
-      882,  887,  888,  889,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  899,  901,  902,  903,  900,  904,  905,
-      906,  907,  908,  909,  910,  911,  912,  913,  914,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
-      926,  927,  928,  929,  931,  932,  933,  934,  935,  936,
-      937,  938,  939,  940,  941,  930,  942,  943,  944,  945,
-
-      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
-      956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  967,  968,  946,  969,  970,  945,  971,  972,  973,
-      974,  975,  976,  977,  978,  979,  982,  983,  984,  985,
-      980,  986,  987,  988,  989,  990,  991,  992,  993,  994,
-      995,  996,  997,  999, 1000, 1001, 1002, 1003, 1004, 1005,
-     1006, 1007, 1008,  998, 1009, 1010, 1011, 1012, 1013, 1014,
-     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024,
-     1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
-     1035, 1037, 1036,  981, 1038, 1039, 1040, 1041, 1042, 1043,
+       45,   45,   45,   45,  111,  183,   45,  143,  144,  184,
+       45,  145,  147,  448,   45,  102,  148,  146,  185,  449,
+      149,  185,   45,  151,  154,  152,   45,  153,   45,  118,
+      198,  192,  155,  114,  156,  184,  150,  201,  159,  157,
+      158,  160,  161,  167,  173,  174,  185,  168,  374,  188,
+      169,  202,  162,  203,  112,  163,  114,  170,  171,  192,
+      214,  199,  485,  172,  113,  201,  179,  229,  486,  215,
+      216,  180,   84,   84,   84,   84,   84,  175,  202,  176,
+
+      230,  203,  204,  177,  832,   82,   89,   89,   89,   89,
+       89,   80,  113,   81,   81,   81,   81,   81,  375,  178,
+       89,   89,   89,   89,   89,   88,   82,   88,   82,  204,
+       89,   89,   89,   89,   89,   80,  183,   83,   83,   83,
+       83,   83,   84,   84,   84,   84,   84,  100,  184,   82,
+       82,  196,  192,  240,  100,   82,  220,  221,  249,  201,
+      300,  235,  186,  226,  236,  227,  222,  202,  237,  209,
+      262,  263,  266,   82,  187,  267,  268,  196,   82,  250,
+      210,  282,  228,  300,  100,  283,  298,  256,  100,  284,
+      299,  314,  100,  833,  291,  298,  408,  241,  299,  309,
+
+      100,  272,  300,  306,  100,  310,  100,  191,  208,  208,
+      208,  208,  208,  834,  298,  835,  299,  208,  208,  208,
+      208,  208,  208,  301,  302,  303,  306,  309,  317,  362,
+      313,  532,  310,  315,  533,  399,  273,  274,  275,  306,
+      208,  208,  208,  208,  208,  208,  419,  276,  400,  277,
+      313,  278,  279,  313,  280,  317,  315,  318,  318,  318,
+      318,  318,  320,  415,  326,  415,  318,  318,  318,  318,
+      318,  318,  327,  370,  424,  419,  419,  328,  329,  427,
+      501,  836,  363,  699,  700,  364,  415,  427,  416,  318,
+      318,  318,  318,  318,  318,  421,  422,  424,  443,  837,
+
+      568,  463,  752,  444,  423,  431,  464,  427,  430,  430,
+      430,  430,  430,  569,  753,  491,  489,  430,  430,  430,
+      430,  430,  430,  478,  479,  480,  490,  505,  513,  481,
+      518,  506,  514,  543,  519,  551,  660,  552,  502,  838,
+      430,  430,  430,  430,  430,  430,  538,  765,  578,  839,
+      632,  539,  543,  579,  465,  633,  661,  764,  840,  466,
+      841,  543,  551,  660,  552,   45,   45,   45,   45,   45,
+      765,  842,  843,  844,   45,   45,   45,   45,   45,   45,
+      553,  656,  728,  845,  661,  764,  662,  729,  770,  771,
+      812,  772,  846,  813,  847,  848,  849,   45,   45,   45,
+
+       45,   45,   45,  850,  851,  852,  855,  856,  857,  859,
+      860,  861,  853,  862,  858,  863,  854,  864,  865,  866,
+      867,  868,  869,  870,  871,  872,  730,  873,  874,  875,
+      876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
+      886,  887,  888,  889,  890,  891,  892,  893,  894,  895,
+      896,  870,  897,  898,  899,  900,  902,  903,  904,  905,
+      901,  906,  907,  908,  909,  910,  911,  912,  913,  914,
+      915,  916,  917,  918,  919,  920,  921,  922,  924,  925,
+      926,  923,  927,  928,  929,  930,  931,  932,  933,  934,
+      935,  936,  937,  938,  939,  940,  941,  942,  943,  944,
+
+      945,  946,  947,  948,  949,  950,  951,  952,  954,  955,
+      956,  957,  958,  959,  960,  961,  962,  963,  964,  953,
+      965,  966,  967,  968,  969,  970,  971,  972,  973,  974,
+      975,  976,  977,  978,  979,  980,  981,  982,  983,  984,
+      985,  986,  987,  988,  989,  990,  991,  969,  992,  993,
+      968,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
+     1005, 1006, 1007, 1008, 1003, 1009, 1010, 1011, 1012, 1013,
+     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+     1024, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034,
+     1035, 1025, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,
 
      1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
-     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1035, 1036,
-     1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1071, 1073,
-     1074, 1075, 1070, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
-     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
-     1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102,
-     1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
-     1113, 1114, 1072, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
+     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1004, 1061, 1062,
+     1064, 1063, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
+     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1084, 1085, 1086, 1087, 1088, 1089, 1062, 1063, 1090,
+     1091, 1092, 1093, 1094, 1095, 1096, 1098, 1100, 1101, 1102,
+     1097, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
+     1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
      1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
      1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
 
-     1142, 1143, 1121, 1144, 1145, 1146, 1147, 1148, 1122, 1149,
-     1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
-     1160, 1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169,
-     1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179,
-     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
-     1191, 1192, 1193, 1194, 1195, 1196, 1197, 1199, 1200, 1201,
-     1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
-     1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
-     1222, 1194, 1223, 1224, 1225, 1226, 1227, 1228, 1230, 1231,
-     1232, 1233, 1180, 1234, 1235, 1229, 1236, 1237, 1238, 1239,
-
-     1198, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248,
-     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258,
-     1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268,
-     1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278,
-     1279, 1257, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
+     1099, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
+     1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160,
+     1161, 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170,
+     1171, 1172, 1173, 1174, 1152, 1175, 1176, 1177, 1178, 1179,
+     1153, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188,
+     1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198,
+     1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
+     1209, 1210, 1211, 1212, 1213, 1214, 1216, 1217, 1218, 1219,
+     1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229,
+     1230, 1231, 1232, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
+
+     1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
+     1251, 1252, 1253, 1254, 1255, 1256, 1257, 1229, 1258, 1259,
+     1260, 1261, 1262, 1263, 1264, 1266, 1267, 1268, 1215, 1269,
+     1270, 1271, 1265, 1272, 1273, 1274, 1233, 1275, 1276, 1277,
+     1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287,
      1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297,
      1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307,
      1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317,
-     1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327,
-     1328, 1330, 1331, 1332, 1333, 1306, 1334, 1335, 1336, 1337,
-
-     1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347,
-     1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357,
-     1358, 1359, 1360, 1362, 1363, 1364, 1365, 1361, 1366, 1367,
-     1368, 1369, 1370, 1371, 1372, 1373, 1374, 1375, 1376, 1377,
-     1378, 1379, 1380, 1353, 1381, 1382, 1383, 1384, 1329, 1385,
-     1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395,
-     1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
-     1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415,
-     1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425,
-     1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435,
-
-     1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445,
-     1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455,
-     1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465,
-     1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475,
-     1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485,
-     1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495,
-     1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
-     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515,
-     1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525,
-     1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535,
-
-     1536, 1537, 1538, 1539, 1540, 1541, 1542,   12,   12,   12,
-       12,   12,   36,   36,   36,   36,   36,   79,  303,   79,
-       79,   79,   98,  415,   98,  535,   98,  100,  100,  100,
-      100,  100,  116,  116,  116,  116,  116,  181,  100,  181,
-      181,  181,  205,  205,  205,  824,  823,  822,  821,  820,
-      819,  818,  817,  816,  815,  814,  813,  812,  811,  810,
-      809,  808,  807,  806,  805,  804,  803,  802,  801,  800,
-      799,  798,  795,  794,  793,  792,  791,  790,  789,  788,
-      787,  786,  785,  784,  783,  782,  781,  780,  779,  778,
-      777,  776,  775,  774,  773,  772,  771,  770,  769,  768,
-
-      767,  766,  765,  764,  763,  762,  761,  760,  759,  758,
-      754,  753,  752,  751,  748,  747,  746,  745,  744,  743,
-      742,  741,  740,  739,  736,  735,  734,  733,  732,  731,
-      730,  729,  728,  727,  726,  725,  724,  723,  722,  721,
-      720,  719,  718,  717,  716,  712,  711,  710,  709,  708,
-      707,  706,  703,  702,  701,  700,  699,  698,  697,  696,
-      695,  694,  693,  692,  691,  690,  687,  686,  685,  684,
-      683,  682,  681,  680,  679,  678,  677,  676,  675,  674,
-      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
-      663,  662,  661,  660,  659,  658,  657,  656,  655,  654,
-
-      653,  652,  648,  647,  646,  645,  644,  643,  642,  641,
-      640,  639,  638,  637,  636,  635,  634,  633,  632,  631,
-      630,  629,  628,  627,  626,  625,  624,  623,  620,  619,
-      618,  617,  616,  615,  614,  613,  612,  611,  610,  609,
-      608,  607,  606,  605,  604,  603,  602,  601,  600,  599,
-      598,  597,  596,  595,  594,  593,  592,  591,  590,  589,
-      588,  587,  586,  585,  584,  583,  582,  581,  580,  579,
-      578,  577,  576,  575,  574,  573,  570,  569,  568,  567,
-      566,  565,  564,  563,  560,  559,  558,  557,  556,  555,
-      554,  553,  552,  551,  550,  549,  548,  547,  543,  542,
-
-      541,  540,  539,  538,  537,  534,  533,  530,  529,  528,
-      527,  524,  523,  522,  521,  520,  519,  518,  517,  516,
-      515,  514,  513,  510,  509,  508,  505,  504,  503,  502,
-      501,  500,  497,  496,  493,  492,  491,  490,  489,  488,
-      487,  486,  485,  481,  480,  479,  478,  477,  474,  473,
-      472,  471,  470,  469,  468,  467,  466,  465,  464,  459,
-      458,  457,  456,  455,  454,  453,  452,  451,  450,  449,
-      448,  447,  444,  443,  442,  439,  436,  435,  434,  433,
-      432,  431,  430,  429,  426,  425,  423,  422,  417,  414,
-      411,  410,  409,  408,  407,  406,  404,  403,  402,  401,
-
-      400,  399,  398,  395,  394,  393,  392,  391,  390,  389,
-      386,  385,  384,  383,  382,  381,  380,  379,  378,  377,
-      376,  375,  374,  373,  370,  369,  368,  366,  365,  364,
-      363,  359,  358,  357,  356,  355,  354,  353,  352,  351,
-      350,  349,  348,  347,  346,  345,  344,  343,  342,  341,
-      340,  339,  338,  337,  336,  335,  334,  333,  332,  331,
-      330,  329,  328,  323,  322,  321,  320,  319,  317,  206,
-      314,  312,  310,  309,  306,  305,  302,  295,  294,  293,
-      292,  291,  290,  288,  287,  286,  285,  284,  283,  279,
-      269,  268,  267,  263,  262,  259,  258,  257,  256,  255,
-
-      253,  252,  251,  250,  247,  246,  245,  244,  243,  242,
-      241,  238,  237,  233,  232,  224,  223,  222,  218,  217,
-      216,  212,  211,  210,  206,  199,  194,  193,  192,  189,
-      188,  180,  163,  142,  106,  105,  104,   43,   99,   97,
-       96,   87,   43, 1543,   11, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543
+     1318, 1296, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326,
+     1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336,
+
+     1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346,
+     1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356,
+     1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366,
+     1367, 1368, 1369, 1370, 1371, 1373, 1374, 1375, 1376, 1349,
+     1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386,
+     1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396,
+     1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406,
+     1407, 1409, 1410, 1411, 1412, 1408, 1413, 1414, 1415, 1416,
+     1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426,
+     1427, 1400, 1372, 1428, 1429, 1430, 1431, 1432, 1433, 1434,
+
+     1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444,
+     1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454,
+     1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464,
+     1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474,
+     1475, 1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484,
+     1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494,
+     1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504,
+     1505, 1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514,
+     1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524,
+     1525, 1526, 1527, 1528, 1529, 1530, 1531, 1532, 1533, 1534,
+
+     1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544,
+     1545, 1546, 1547, 1548, 1549, 1550, 1551, 1552, 1553, 1554,
+     1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564,
+     1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574,
+     1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584,
+     1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
+     1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604,
+     1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613,   12,
+       12,   12,   12,   12,   36,   36,   36,   36,   36,   79,
+      305,   79,   79,   79,   98,  418,   98,  542,   98,  100,
+
+      100,  100,  100,  100,  116,  116,  116,  116,  116,  182,
+      100,  182,  182,  182,  206,  206,  206,  829,  828,  827,
+      826,  825,  824,  823,  822,  821,  820,  819,  818,  817,
+      816,  815,  814,  811,  810,  809,  808,  807,  806,  805,
+      804,  803,  802,  801,  800,  799,  798,  797,  796,  795,
+      794,  793,  792,  791,  790,  789,  788,  787,  786,  785,
+      784,  783,  782,  781,  780,  779,  778,  777,  776,  775,
+      774,  773,  769,  768,  767,  766,  763,  762,  761,  760,
+      759,  758,  757,  756,  755,  754,  751,  750,  749,  748,
+      747,  746,  745,  744,  743,  742,  741,  740,  739,  738,
+
+      737,  736,  735,  734,  733,  732,  731,  727,  726,  725,
+      724,  723,  722,  721,  718,  717,  716,  715,  714,  713,
+      712,  711,  710,  709,  708,  707,  706,  705,  704,  703,
+      702,  701,  698,  697,  696,  695,  694,  693,  692,  691,
+      690,  689,  688,  687,  686,  685,  684,  683,  682,  681,
+      680,  679,  678,  677,  676,  675,  674,  673,  672,  671,
+      670,  669,  668,  667,  666,  665,  664,  663,  659,  658,
+      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
+      647,  646,  645,  644,  643,  642,  641,  640,  639,  638,
+      637,  636,  635,  634,  631,  630,  629,  628,  627,  626,
+
+      625,  624,  623,  622,  621,  620,  619,  618,  617,  616,
+      615,  614,  613,  612,  611,  610,  609,  608,  607,  606,
+      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
+      595,  594,  593,  592,  591,  590,  589,  588,  587,  586,
+      585,  584,  583,  582,  581,  580,  577,  576,  575,  574,
+      573,  572,  571,  570,  567,  566,  565,  564,  563,  562,
+      561,  560,  559,  558,  557,  556,  555,  554,  550,  549,
+      548,  547,  546,  545,  544,  541,  540,  537,  536,  535,
+      534,  531,  530,  529,  528,  527,  526,  525,  524,  523,
+      522,  521,  520,  517,  516,  515,  512,  511,  510,  509,
+
+      508,  507,  504,  503,  500,  499,  498,  497,  496,  495,
+      494,  493,  492,  488,  487,  484,  483,  482,  477,  476,
+      475,  474,  473,  472,  471,  470,  469,  468,  467,  462,
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  447,  446,  445,  442,  439,  438,  437,  436,
+      435,  434,  433,  432,  429,  428,  426,  425,  420,  417,
+      414,  413,  412,  411,  410,  409,  407,  406,  405,  404,
+      403,  402,  401,  398,  397,  396,  395,  394,  393,  392,
+      389,  388,  387,  386,  385,  384,  383,  382,  381,  380,
+      379,  378,  377,  376,  373,  372,  371,  369,  368,  367,
+
+      366,  365,  361,  360,  359,  358,  357,  356,  355,  354,
+      353,  352,  351,  350,  349,  348,  347,  346,  345,  344,
+      343,  342,  341,  340,  339,  338,  337,  336,  335,  334,
+      333,  332,  331,  330,  325,  324,  323,  322,  321,  319,
+      207,  316,  314,  312,  311,  308,  307,  304,  297,  296,
+      295,  294,  293,  292,  290,  289,  288,  287,  286,  285,
+      281,  271,  270,  269,  265,  264,  261,  260,  259,  258,
+      257,  255,  254,  253,  252,  251,  248,  247,  246,  245,
+      244,  243,  242,  239,  238,  234,  233,  225,  224,  223,
+      219,  218,  217,  213,  212,  211,  207,  200,  195,  194,
+
+      193,  190,  189,  181,  164,  142,  106,  105,  104,   43,
+       99,   97,   96,   87,   43, 1614,   11, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614
     } ;
 
-static const flex_int16_t yy_chk[2019] =
+static const flex_int16_t yy_chk[2091] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  603,    3,    3,    3,   21,    1,    1,    3,   44,
-      726,    1,    4,    4,    4,   13,    1,   13,    4,   27,
+       21,  614,    3,    3,    3,   21,    1,    1,    3,   44,
+        0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  108,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      603,    8,    8,    8,    1,    8,   44,   27,   28,  108,
+      614,    8,    8,    8,    1,    8,   44,   27,   28,  108,
        26,    1,    1,    2,    2,    2,   32,    2,    2,   33,
         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
         2,    2,    9,    9,    9,   31,    5,   47,    2,    2,
 
        10,   10,   10,    2,    6,   37,   51,   37,    2,   42,
        52,   42,    9,    2,   54,    2,   56,   57,   31,   65,
-       10,    2,    2,   47,   65,  327,   25,   65,   25,   51,
+       10,    2,    2,   47,   65,  329,   25,   65,   25,   51,
         2,   25,   25,   25,   25,   25,    2,   54,   52,   56,
-      727,   57,  327,    2,    2,   15,   15,   15,   15,   15,
+      726,   57,  329,    2,    2,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1525,199 +1556,206 @@ static const flex_int16_t yy_chk[2019] =
        19,   22,   22,   22,   22,   22,   64,   20,   53,   62,
        55,   60,   59,   64,   22,   63,   17,   74,   59,   62,
        55,   74,   60,   19,   61,   60,   63,   60,   61,   60,
-       20,   61,   61,   55,  115,   69,  728,   22,   45,   69,
+       20,   61,   61,   55,  115,  133,  275,   22,   45,  275,
        45,   45,   45,   45,   61,   45,   45,   45,   55,   58,
-       66,  136,   45,   45,  136,   45,   58,  115,  136,   69,
+       66,  133,   45,   45,  727,   45,   58,  115,  100,   90,
 
        66,   45,   66,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   70,   71,   58,   68,   68,   92,
-       58,   68,  109,   71,   58,   71,  100,   68,  729,   77,
-       71,   71,   58,   70,   90,   70,   58,   70,   58,   58,
-       72,   75,   91,   72,   72,   75,  730,   92,   75,   76,
-       76,  132,   77,  109,   72,   75,   75,   72,   95,   76,
-       90,   75,   77,  100,  132,   93,  366,   77,   91,   76,
-       80,   80,   80,   80,   80,   81,  366,   81,   81,   81,
-       81,   81,   76,   80,   76,  732,   95,   82,   76,   82,
-
-       81,   93,   82,   82,   82,   82,   82,   76,  139,   84,
-       84,   84,   84,   84,   76,   83,   80,   83,   83,   83,
-       83,   83,   84,   81,   88,   88,   88,   88,   88,   94,
-       83,   89,   89,   89,   89,   89,  102,  103,  107,  111,
-      123,  112,  113,  102,  114,   84,  119,  127,  127,  123,
-      123,  147,  139,   83,  152,   94,  131,  127,  131,  174,
-      133,  158,  158,  119,  107,  103,  182,  111,  112,  184,
-      113,  114,  147,  102,  119,  131,  133,  102,  183,  186,
-      161,  102,  152,  161,  161,  185,  174,  195,  734,  102,
-      165,  187,  184,  102,  182,  102,  102,  118,  118,  118,
-
-      118,  118,  360,  360,  183,  186,  118,  118,  118,  118,
-      118,  118,  167,  185,  187,  195,  167,  196,  249,  191,
-      167,  204,  200,  202,  209,  165,  165,  165,  258,  118,
-      118,  118,  118,  118,  118,  378,  165,  735,  165,  738,
-      165,  165,  191,  165,  196,  200,  202,  209,  204,  207,
-      207,  207,  207,  207,  254,  739,  215,  296,  207,  207,
-      207,  207,  207,  207,  215,  273,  281,  289,  273,  215,
-      215,  249,  289,  299,  249,  304,  307,  254,  258,  281,
-      296,  207,  207,  207,  207,  207,  207,  311,  306,  306,
-      330,  740,  318,  378,  334,  330,  299,  306,  381,  307,
-
-      334,  348,  381,  367,  304,  388,  348,  392,  416,  388,
-      405,  392,  426,  405,  426,  311,  316,  316,  316,  316,
-      316,  318,  445,  586,  586,  316,  316,  316,  316,  316,
-      316,  367,  410,  741,  636,  445,  416,  410,  428,  426,
-      455,  426,  508,  742,  650,  455,  636,  508,  316,  316,
-      316,  316,  316,  316,  348,  544,  545,  649,  743,  348,
-      427,  427,  427,  427,  427,  695,  428,  650,  695,  427,
-      427,  427,  427,  427,  427,  546,  612,  744,  745,  746,
-      546,  612,  544,  731,  545,  649,  655,  655,  747,  655,
-      731,  733,  427,  427,  427,  427,  427,  427,  733,  736,
-
-      749,  750,  733,  751,  752,  736,  753,  755,  756,  757,
-      758,  759,  760,  761,  762,  763,  764,  765,  766,  767,
-      612,  768,  769,  770,  771,  772,  773,  774,  775,  750,
-      777,  778,  779,  780,  781,  782,  783,  784,  785,  786,
-      782,  787,  788,  789,  790,  791,  794,  795,  796,  797,
-      800,  801,  802,  803,  804,  805,  806,  803,  807,  808,
-      809,  811,  812,  813,  814,  815,  816,  817,  818,  819,
-      820,  821,  822,  823,  824,  825,  826,  827,  828,  829,
-      830,  831,  832,  833,  834,  835,  836,  837,  838,  839,
-      841,  842,  843,  844,  845,  833,  846,  847,  848,  850,
-
-      851,  852,  853,  854,  855,  856,  857,  858,  859,  860,
-      861,  862,  863,  864,  865,  866,  867,  868,  869,  871,
-      872,  873,  874,  851,  875,  876,  850,  877,  878,  879,
-      880,  882,  883,  884,  885,  886,  887,  889,  890,  891,
-      886,  892,  893,  894,  895,  896,  897,  898,  899,  900,
-      901,  902,  903,  904,  907,  908,  909,  911,  912,  913,
-      915,  916,  917,  903,  918,  919,  920,  921,  922,  923,
-      924,  925,  926,  927,  928,  929,  930,  931,  932,  934,
-      935,  936,  937,  938,  939,  940,  941,  942,  943,  944,
-      945,  947,  946,  886,  948,  949,  950,  951,  952,  953,
-
-      954,  955,  956,  957,  958,  959,  960,  961,  963,  964,
-      965,  966,  967,  968,  969,  970,  971,  972,  945,  946,
-      973,  974,  975,  976,  977,  978,  980,  981,  982,  983,
-      984,  985,  981,  986,  987,  988,  989,  990,  991,  992,
-      993,  994,  995,  996,  997,  998,  999, 1000, 1001, 1002,
-     1003, 1004, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
-     1014, 1015, 1016, 1018, 1019, 1022, 1023, 1024, 1025, 1026,
-     1027, 1028,  982, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
-     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
-     1046, 1048, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
-
-     1058, 1059, 1035, 1060, 1061, 1062, 1063, 1064, 1036, 1065,
-     1068, 1070, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079,
-     1081, 1082, 1083, 1085, 1086, 1087, 1088, 1091, 1093, 1094,
-     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1110, 1111, 1112, 1115, 1116, 1117,
-     1118, 1119, 1120, 1121, 1122, 1124, 1125, 1126, 1127, 1128,
-     1129, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1140,
-     1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150,
-     1151, 1121, 1152, 1153, 1154, 1155, 1157, 1158, 1159, 1160,
-     1161, 1164, 1104, 1165, 1166, 1158, 1167, 1168, 1169, 1170,
-
-     1125, 1171, 1172, 1173, 1174, 1176, 1177, 1178, 1179, 1180,
-     1181, 1183, 1185, 1188, 1190, 1191, 1192, 1193, 1194, 1196,
-     1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207,
-     1208, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218,
-     1219, 1194, 1220, 1222, 1225, 1227, 1228, 1229, 1230, 1232,
-     1233, 1234, 1235, 1236, 1237, 1240, 1241, 1243, 1244, 1245,
-     1246, 1247, 1249, 1250, 1251, 1252, 1253, 1255, 1257, 1258,
-     1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1269,
-     1270, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1279,
-     1280, 1281, 1282, 1283, 1284, 1257, 1285, 1286, 1287, 1288,
-
-     1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298,
-     1299, 1301, 1302, 1304, 1305, 1306, 1307, 1310, 1311, 1312,
-     1316, 1317, 1319, 1320, 1321, 1322, 1323, 1319, 1324, 1325,
-     1326, 1327, 1329, 1330, 1333, 1334, 1335, 1336, 1338, 1339,
-     1340, 1341, 1342, 1306, 1343, 1344, 1345, 1346, 1280, 1347,
-     1348, 1349, 1350, 1351, 1353, 1354, 1355, 1356, 1358, 1359,
-     1361, 1362, 1363, 1364, 1365, 1367, 1368, 1369, 1371, 1372,
-     1373, 1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1382,
-     1383, 1385, 1386, 1387, 1389, 1391, 1393, 1394, 1395, 1396,
-     1397, 1398, 1400, 1401, 1402, 1403, 1404, 1405, 1407, 1409,
-
-     1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1419, 1420,
-     1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
-     1433, 1434, 1435, 1436, 1437, 1439, 1440, 1441, 1442, 1443,
-     1444, 1445, 1446, 1447, 1448, 1450, 1451, 1452, 1453, 1454,
-     1455, 1457, 1458, 1461, 1462, 1463, 1464, 1465, 1467, 1469,
-     1470, 1472, 1473, 1475, 1476, 1478, 1479, 1481, 1483, 1484,
-     1485, 1486, 1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494,
-     1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504,
-     1505, 1506, 1508, 1509, 1510, 1511, 1512, 1514, 1517, 1518,
-     1519, 1520, 1521, 1522, 1526, 1527, 1528, 1529, 1531, 1532,
-
-     1534, 1535, 1536, 1537, 1538, 1540, 1541, 1544, 1544, 1544,
-     1544, 1544, 1545, 1545, 1545, 1545, 1545, 1546, 1552, 1546,
-     1546, 1546, 1547, 1553, 1547, 1554, 1547, 1548, 1548, 1548,
-     1548, 1548, 1549, 1549, 1549, 1549, 1549, 1550, 1555, 1550,
-     1550, 1550, 1551, 1551, 1551,  725,  724,  723,  722,  721,
-      720,  719,  718,  717,  716,  715,  714,  712,  711,  710,
-      709,  708,  707,  706,  705,  703,  702,  701,  700,  699,
-      698,  696,  694,  693,  692,  691,  690,  689,  688,  687,
-      686,  685,  684,  683,  682,  681,  680,  679,  678,  676,
-      675,  674,  673,  672,  671,  670,  669,  668,  667,  666,
-
-      665,  664,  663,  662,  661,  660,  659,  658,  657,  656,
-      654,  653,  652,  651,  648,  647,  646,  643,  642,  641,
-      640,  639,  638,  637,  634,  633,  632,  631,  630,  629,
-      628,  627,  626,  625,  624,  623,  622,  620,  619,  618,
-      617,  616,  615,  614,  613,  611,  610,  608,  607,  606,
-      605,  604,  602,  601,  600,  598,  597,  595,  594,  593,
-      592,  591,  590,  589,  588,  587,  585,  584,  583,  582,
-      581,  579,  578,  577,  576,  575,  574,  573,  572,  570,
-      569,  568,  567,  566,  565,  564,  563,  562,  561,  560,
-      559,  558,  557,  556,  555,  554,  553,  552,  551,  550,
-
-      549,  548,  542,  540,  537,  536,  534,  533,  532,  530,
-      526,  525,  524,  523,  522,  521,  520,  519,  518,  517,
-      516,  515,  514,  513,  512,  511,  510,  509,  507,  506,
-      505,  504,  503,  502,  501,  500,  499,  498,  497,  495,
-      493,  492,  491,  490,  489,  488,  487,  486,  485,  484,
-      483,  482,  480,  479,  478,  477,  476,  475,  474,  473,
-      472,  471,  470,  469,  468,  467,  466,  465,  464,  463,
-      462,  461,  459,  458,  457,  456,  454,  453,  452,  451,
-      450,  449,  447,  446,  444,  443,  442,  441,  439,  438,
-      437,  436,  435,  434,  433,  431,  430,  429,  424,  423,
-
-      421,  420,  419,  418,  417,  414,  411,  409,  408,  407,
-      406,  404,  403,  402,  401,  400,  399,  398,  397,  396,
-      395,  394,  393,  391,  390,  389,  387,  386,  385,  384,
-      383,  382,  380,  379,  377,  376,  375,  374,  373,  372,
-      371,  370,  369,  365,  364,  363,  362,  361,  359,  358,
-      357,  356,  355,  354,  353,  352,  351,  350,  349,  347,
-      346,  345,  344,  343,  342,  341,  340,  339,  338,  337,
-      336,  335,  333,  332,  331,  329,  326,  325,  324,  323,
-      322,  321,  320,  319,  315,  313,  310,  308,  305,  302,
-      295,  294,  293,  292,  291,  290,  288,  287,  286,  285,
-
-      284,  283,  282,  280,  279,  278,  277,  276,  275,  274,
-      272,  271,  270,  269,  268,  267,  266,  265,  264,  263,
-      262,  261,  260,  259,  257,  256,  255,  253,  252,  251,
-      250,  248,  247,  246,  245,  244,  243,  242,  241,  240,
-      238,  237,  236,  235,  234,  233,  232,  231,  230,  229,
-      228,  227,  226,  225,  224,  223,  222,  221,  220,  219,
-      218,  217,  216,  214,  213,  212,  211,  210,  208,  205,
-      203,  201,  199,  198,  193,  192,  188,  180,  179,  178,
-      177,  176,  175,  173,  172,  171,  170,  169,  168,  166,
-      164,  163,  162,  160,  159,  157,  156,  155,  154,  153,
-
-      151,  150,  149,  148,  146,  145,  144,  143,  142,  141,
-      140,  138,  137,  135,  134,  130,  129,  128,  126,  125,
-      124,  122,  121,  120,  116,  110,  106,  105,  104,   98,
-       97,   78,   73,   67,   50,   49,   48,   43,   41,   39,
-       38,   24,   14,   11, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543,
-     1543, 1543, 1543, 1543, 1543, 1543, 1543, 1543
+       45,   45,   45,   45,   70,   90,   58,   68,   68,   91,
+       58,   68,   69,  336,   58,  100,   69,   68,   92,  336,
+       69,   95,   58,   70,   71,   70,   58,   70,   58,   58,
+      109,  103,   71,   77,   71,   91,   69,  111,   72,   71,
+       71,   72,   72,   75,   76,   76,   92,   75,  260,   95,
+       75,  112,   72,  113,   76,   72,   77,   75,   75,  103,
+      123,  109,  366,   75,   76,  111,   77,  132,  366,  123,
+      123,   77,   80,   80,   80,   80,   80,   76,  112,   76,
+
+      132,  113,  114,   76,  729,   80,   88,   88,   88,   88,
+       88,   81,   76,   81,   81,   81,   81,   81,  260,   76,
+       89,   89,   89,   89,   89,   82,   81,   82,   80,  114,
+       82,   82,   82,   82,   82,   83,   93,   83,   83,   83,
+       83,   83,   84,   84,   84,   84,   84,  102,   94,   81,
+       83,  107,  119,  139,  102,   84,  127,  127,  147,  153,
+      185,  136,   93,  131,  136,  131,  127,  175,  136,  119,
+      159,  159,  162,   83,   94,  162,  162,  107,   84,  147,
+      119,  168,  131,  185,  102,  168,  183,  153,  102,  168,
+      184,  291,  102,  730,  175,  186,  291,  139,  187,  196,
+
+      102,  166,  188,  192,  102,  197,  102,  102,  118,  118,
+      118,  118,  118,  731,  183,  732,  184,  118,  118,  118,
+      118,  118,  118,  186,  187,  188,  192,  196,  205,  250,
+      201,  408,  197,  203,  408,  283,  166,  166,  166,  210,
+      118,  118,  118,  118,  118,  118,  306,  166,  283,  166,
+      256,  166,  166,  201,  166,  205,  203,  208,  208,  208,
+      208,  208,  210,  298,  216,  301,  208,  208,  208,  208,
+      208,  208,  216,  256,  309,  306,  320,  216,  216,  313,
+      381,  733,  250,  593,  593,  250,  298,  370,  301,  208,
+      208,  208,  208,  208,  208,  308,  308,  309,  332,  734,
+
+      448,  350,  647,  332,  308,  320,  350,  313,  318,  318,
+      318,  318,  318,  448,  647,  370,  369,  318,  318,  318,
+      318,  318,  318,  362,  362,  362,  369,  384,  391,  362,
+      395,  384,  391,  419,  395,  429,  551,  429,  381,  735,
+      318,  318,  318,  318,  318,  318,  413,  661,  458,  736,
+      515,  413,  431,  458,  350,  515,  552,  660,  737,  350,
+      738,  419,  429,  551,  429,  430,  430,  430,  430,  430,
+      661,  739,  740,  741,  430,  430,  430,  430,  430,  430,
+      431,  553,  623,  742,  552,  660,  553,  623,  666,  666,
+      707,  666,  743,  707,  744,  745,  746,  430,  430,  430,
+
+      430,  430,  430,  746,  747,  748,  749,  750,  751,  753,
+      754,  755,  748,  756,  751,  757,  748,  758,  759,  760,
+      761,  762,  764,  765,  766,  767,  623,  768,  770,  771,
+      772,  773,  774,  775,  776,  777,  778,  779,  780,  781,
+      782,  783,  784,  785,  786,  787,  788,  789,  790,  792,
+      793,  765,  794,  795,  796,  797,  798,  799,  800,  801,
+      797,  802,  803,  804,  805,  806,  809,  810,  811,  812,
+      813,  814,  817,  818,  819,  820,  821,  822,  823,  824,
+      825,  822,  826,  827,  828,  830,  831,  832,  833,  834,
+      835,  836,  837,  838,  839,  840,  841,  842,  843,  844,
+
+      845,  846,  847,  848,  849,  850,  851,  852,  853,  854,
+      855,  856,  857,  858,  860,  861,  862,  863,  864,  852,
+      865,  866,  867,  869,  870,  871,  872,  873,  874,  875,
+      876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
+      886,  887,  888,  890,  891,  892,  893,  870,  894,  895,
+      869,  896,  897,  898,  899,  901,  902,  903,  904,  905,
+      906,  908,  909,  910,  905,  911,  912,  913,  914,  915,
+      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+      926,  927,  930,  931,  932,  934,  935,  936,  938,  939,
+      940,  926,  941,  942,  943,  944,  945,  946,  947,  948,
+
+      949,  950,  951,  952,  953,  954,  955,  957,  958,  959,
+      960,  961,  962,  963,  964,  965,  966,  905,  967,  968,
+      970,  969,  971,  972,  973,  974,  975,  976,  977,  978,
+      979,  980,  981,  982,  983,  984,  986,  987,  988,  989,
+      990,  991,  992,  993,  994,  995,  996,  968,  969,  997,
+      998,  999, 1000, 1001, 1003, 1004, 1005, 1006, 1007, 1008,
+     1004, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
+     1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027,
+     1028, 1029, 1030, 1031, 1033, 1034, 1035, 1036, 1037, 1038,
+     1039, 1040, 1041, 1042, 1043, 1045, 1046, 1049, 1050, 1051,
+
+     1005, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
+     1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070,
+     1071, 1072, 1073, 1075, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1084, 1085, 1086, 1062, 1087, 1088, 1089, 1090, 1091,
+     1063, 1092, 1095, 1097, 1099, 1100, 1101, 1102, 1103, 1104,
+     1105, 1106, 1107, 1108, 1109, 1110, 1112, 1113, 1114, 1116,
+     1117, 1118, 1119, 1122, 1124, 1125, 1126, 1127, 1128, 1129,
+     1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139,
+     1141, 1142, 1143, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
+     1153, 1155, 1156, 1157, 1158, 1159, 1160, 1162, 1163, 1164,
+
+     1165, 1166, 1167, 1168, 1169, 1171, 1172, 1173, 1174, 1175,
+     1176, 1177, 1178, 1179, 1180, 1181, 1182, 1152, 1183, 1184,
+     1185, 1186, 1188, 1189, 1190, 1191, 1192, 1193, 1135, 1194,
+     1195, 1196, 1190, 1199, 1200, 1201, 1156, 1202, 1203, 1204,
+     1205, 1206, 1207, 1208, 1209, 1211, 1212, 1213, 1214, 1215,
+     1216, 1218, 1220, 1223, 1225, 1226, 1227, 1228, 1229, 1231,
+     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242,
+     1243, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
+     1254, 1229, 1255, 1257, 1260, 1262, 1263, 1264, 1265, 1266,
+     1267, 1268, 1269, 1271, 1272, 1273, 1274, 1275, 1276, 1279,
+
+     1280, 1282, 1283, 1284, 1285, 1286, 1288, 1289, 1290, 1291,
+     1292, 1294, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1303,
+     1304, 1305, 1306, 1308, 1309, 1311, 1312, 1313, 1314, 1315,
+     1316, 1317, 1318, 1318, 1319, 1320, 1321, 1322, 1323, 1296,
+     1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333,
+     1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1344,
+     1345, 1347, 1348, 1349, 1350, 1353, 1354, 1355, 1359, 1360,
+     1362, 1363, 1364, 1365, 1366, 1362, 1367, 1368, 1369, 1370,
+     1372, 1373, 1375, 1377, 1378, 1379, 1380, 1381, 1382, 1383,
+     1385, 1349, 1319, 1386, 1387, 1388, 1389, 1390, 1391, 1392,
+
+     1393, 1394, 1395, 1396, 1397, 1398, 1400, 1401, 1402, 1403,
+     1405, 1406, 1408, 1409, 1410, 1411, 1412, 1414, 1415, 1416,
+     1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
+     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1436, 1437, 1438,
+     1440, 1442, 1444, 1445, 1446, 1447, 1448, 1449, 1451, 1452,
+     1453, 1454, 1455, 1456, 1457, 1459, 1460, 1461, 1462, 1464,
+     1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1474, 1475,
+     1476, 1477, 1478, 1479, 1480, 1481, 1482, 1483, 1484, 1485,
+     1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1498,
+     1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1509,
+
+     1510, 1511, 1512, 1513, 1514, 1515, 1517, 1519, 1521, 1524,
+     1525, 1526, 1527, 1528, 1530, 1532, 1533, 1535, 1536, 1538,
+     1539, 1540, 1542, 1543, 1544, 1546, 1548, 1549, 1550, 1551,
+     1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561,
+     1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571,
+     1572, 1573, 1574, 1575, 1577, 1578, 1579, 1580, 1581, 1585,
+     1588, 1589, 1590, 1591, 1592, 1593, 1597, 1598, 1599, 1600,
+     1602, 1603, 1605, 1606, 1607, 1608, 1609, 1611, 1612, 1615,
+     1615, 1615, 1615, 1615, 1616, 1616, 1616, 1616, 1616, 1617,
+     1623, 1617, 1617, 1617, 1618, 1624, 1618, 1625, 1618, 1619,
+
+     1619, 1619, 1619, 1619, 1620, 1620, 1620, 1620, 1620, 1621,
+     1626, 1621, 1621, 1621, 1622, 1622, 1622,  725,  724,  723,
+      722,  721,  720,  718,  717,  716,  715,  714,  713,  712,
+      711,  709,  708,  706,  705,  704,  703,  702,  701,  700,
+      699,  698,  697,  696,  695,  694,  693,  692,  691,  690,
+      689,  687,  686,  685,  684,  683,  682,  681,  680,  679,
+      678,  677,  676,  675,  674,  673,  672,  671,  670,  669,
+      668,  667,  665,  664,  663,  662,  659,  658,  657,  654,
+      653,  652,  651,  650,  649,  648,  645,  644,  643,  642,
+      641,  640,  639,  638,  637,  636,  635,  634,  633,  631,
+
+      630,  629,  628,  627,  626,  625,  624,  622,  621,  619,
+      618,  617,  616,  615,  613,  612,  611,  609,  608,  606,
+      605,  604,  603,  602,  601,  600,  599,  598,  597,  596,
+      595,  594,  592,  591,  590,  589,  588,  586,  585,  584,
+      583,  582,  581,  580,  579,  577,  576,  575,  574,  573,
+      572,  571,  570,  569,  568,  567,  566,  565,  564,  563,
+      562,  561,  560,  559,  558,  557,  556,  555,  549,  547,
+      544,  543,  541,  540,  539,  537,  533,  532,  531,  530,
+      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  514,  513,  512,  511,  510,  509,
+
+      508,  507,  506,  505,  504,  502,  500,  499,  498,  497,
+      496,  495,  494,  493,  492,  491,  490,  489,  487,  486,
+      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
+      475,  474,  473,  472,  471,  470,  469,  468,  467,  466,
+      465,  464,  462,  461,  460,  459,  457,  456,  455,  454,
+      453,  452,  450,  449,  447,  446,  445,  444,  442,  441,
+      440,  439,  438,  437,  436,  434,  433,  432,  427,  426,
+      424,  423,  422,  421,  420,  417,  414,  412,  411,  410,
+      409,  407,  406,  405,  404,  403,  402,  401,  400,  399,
+      398,  397,  396,  394,  393,  392,  390,  389,  388,  387,
+
+      386,  385,  383,  382,  380,  379,  378,  377,  376,  375,
+      374,  373,  372,  368,  367,  365,  364,  363,  361,  360,
+      359,  358,  357,  356,  355,  354,  353,  352,  351,  349,
+      348,  347,  346,  345,  344,  343,  342,  341,  340,  339,
+      338,  337,  335,  334,  333,  331,  328,  327,  326,  325,
+      324,  323,  322,  321,  317,  315,  312,  310,  307,  304,
+      297,  296,  295,  294,  293,  292,  290,  289,  288,  287,
+      286,  285,  284,  282,  281,  280,  279,  278,  277,  276,
+      274,  273,  272,  271,  270,  269,  268,  267,  266,  265,
+      264,  263,  262,  261,  259,  258,  257,  255,  254,  253,
+
+      252,  251,  249,  248,  247,  246,  245,  244,  243,  242,
+      241,  239,  238,  237,  236,  235,  234,  233,  232,  231,
+      230,  229,  228,  227,  226,  225,  224,  223,  222,  221,
+      220,  219,  218,  217,  215,  214,  213,  212,  211,  209,
+      206,  204,  202,  200,  199,  194,  193,  189,  181,  180,
+      179,  178,  177,  176,  174,  173,  172,  171,  170,  169,
+      167,  165,  164,  163,  161,  160,  158,  157,  156,  155,
+      154,  152,  151,  150,  149,  148,  146,  145,  144,  143,
+      142,  141,  140,  138,  137,  135,  134,  130,  129,  128,
+      126,  125,  124,  122,  121,  120,  116,  110,  106,  105,
+
+      104,   98,   97,   78,   73,   67,   50,   49,   48,   43,
+       41,   39,   38,   24,   14,   11, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614,
+     1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614, 1614
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1726,28 +1764,28 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[186] =
+static const flex_int16_t yy_rule_linenum[190] =
     {   0,
       149,  151,  153,  158,  159,  164,  165,  166,  178,  181,
       186,  193,  202,  211,  220,  229,  238,  247,  256,  265,
-      274,  283,  292,  301,  310,  320,  330,  340,  350,  360,
-      370,  380,  389,  399,  409,  419,  429,  438,  447,  456,
-      465,  474,  483,  492,  501,  510,  519,  528,  537,  546,
-      555,  568,  577,  586,  595,  604,  615,  626,  637,  648,
-      660,  671,  682,  693,  704,  715,  726,  737,  748,  759,
-      770,  781,  792,  803,  814,  825,  834,  843,  853,  862,
-      871,  886,  902,  911,  920,  929,  938,  947,  956,  965,
-      974,  983,  992, 1014, 1036, 1045, 1055, 1065, 1074, 1084,
-
-     1095, 1104, 1113, 1122, 1131, 1140, 1150, 1159, 1168, 1177,
-     1188, 1199, 1210, 1219, 1229, 1238, 1247, 1256, 1265, 1275,
-     1284, 1293, 1303, 1315, 1328, 1337, 1346, 1356, 1366, 1375,
-     1386, 1396, 1405, 1415, 1425, 1434, 1443, 1452, 1461, 1471,
-     1480, 1490, 1499, 1508, 1517, 1526, 1535, 1544, 1553, 1562,
-     1571, 1580, 1589, 1598, 1607, 1616, 1625, 1634, 1643, 1652,
-     1661, 1670, 1679, 1688, 1697, 1706, 1715, 1725, 1824, 1829,
-     1834, 1839, 1840, 1841, 1842, 1843, 1844, 1846, 1864, 1877,
-     1882, 1886, 1888, 1890, 1892
+      274,  283,  292,  301,  310,  319,  328,  338,  348,  358,
+      368,  378,  387,  397,  407,  417,  427,  436,  445,  454,
+      463,  472,  481,  490,  499,  508,  517,  526,  535,  544,
+      553,  566,  575,  584,  593,  602,  613,  624,  635,  646,
+      658,  669,  680,  691,  702,  713,  724,  735,  746,  757,
+      768,  779,  790,  801,  812,  823,  834,  845,  856,  867,
+      876,  885,  895,  904,  913,  928,  944,  953,  962,  971,
+      980,  989,  998, 1007, 1016, 1025, 1034, 1056, 1078, 1087,
+
+     1097, 1107, 1116, 1126, 1137, 1146, 1155, 1164, 1173, 1182,
+     1192, 1201, 1210, 1219, 1230, 1241, 1252, 1261, 1271, 1280,
+     1289, 1298, 1307, 1317, 1326, 1335, 1345, 1357, 1370, 1379,
+     1388, 1398, 1408, 1417, 1428, 1438, 1447, 1457, 1467, 1476,
+     1485, 1494, 1503, 1513, 1522, 1532, 1541, 1550, 1559, 1568,
+     1577, 1586, 1595, 1604, 1613, 1622, 1631, 1640, 1649, 1658,
+     1667, 1676, 1685, 1694, 1703, 1712, 1721, 1730, 1739, 1748,
+     1757, 1767, 1866, 1871, 1876, 1881, 1882, 1883, 1884, 1885,
+     1886, 1888, 1906, 1919, 1924, 1928, 1930, 1932, 1934
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1800,7 +1838,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1803 "dhcp6_lexer.cc"
+#line 1841 "dhcp6_lexer.cc"
 /* noyywrap disables automatic rewinding for the next file to parse. Since we
    always parse only a single string, there's no need to do any wraps. And
    using yywrap requires linking with -lfl, which provides the default yywrap
@@ -1826,8 +1864,8 @@ using namespace isc::dhcp;
    by moving it ahead by yyleng bytes. yyleng specifies the length of the
    currently matched token. */
 #define YY_USER_ACTION  driver.loc_.columns(yyleng);
-#line 1829 "dhcp6_lexer.cc"
-#line 1830 "dhcp6_lexer.cc"
+#line 1867 "dhcp6_lexer.cc"
+#line 1868 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2159,7 +2197,7 @@ YY_DECL
     }
 
 
-#line 2162 "dhcp6_lexer.cc"
+#line 2200 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2188,13 +2226,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 >= 1544 )
+                               if ( yy_current_state >= 1615 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1543 );
+               while ( yy_current_state != 1614 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2213,13 +2251,13 @@ do_action:      /* This label is used only to access EOF actions. */
                        {
                        if ( yy_act == 0 )
                                fprintf( stderr, "--scanner backing up\n" );
-                       else if ( yy_act < 186 )
+                       else if ( yy_act < 190 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 186 )
+                       else if ( yy_act == 190 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 187 )
+                       else if ( yy_act == 191 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -2484,7 +2522,6 @@ YY_RULE_SETUP
 #line 310 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP6:
     case isc::dhcp::Parser6Context::DHCP_DDNS:
         return isc::dhcp::Dhcp6Parser::make_HOSTNAME_CHAR_SET(driver.loc_);
     default:
@@ -2494,10 +2531,9 @@ YY_RULE_SETUP
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 320 "dhcp6_lexer.ll"
+#line 319 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
-    case isc::dhcp::Parser6Context::DHCP6:
     case isc::dhcp::Parser6Context::DHCP_DDNS:
         return isc::dhcp::Dhcp6Parser::make_HOSTNAME_CHAR_REPLACEMENT(driver.loc_);
     default:
@@ -2507,7 +2543,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 330 "dhcp6_lexer.ll"
+#line 328 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
@@ -2520,7 +2556,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 340 "dhcp6_lexer.ll"
+#line 338 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_PROTOCOL) {
@@ -2533,7 +2569,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 350 "dhcp6_lexer.ll"
+#line 348 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::NCR_FORMAT) {
@@ -2546,7 +2582,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 360 "dhcp6_lexer.ll"
+#line 358 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -2559,7 +2595,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 370 "dhcp6_lexer.ll"
+#line 368 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -2572,7 +2608,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 380 "dhcp6_lexer.ll"
+#line 378 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME:
@@ -2584,7 +2620,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 389 "dhcp6_lexer.ll"
+#line 387 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -2597,7 +2633,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 399 "dhcp6_lexer.ll"
+#line 397 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -2610,7 +2646,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 409 "dhcp6_lexer.ll"
+#line 407 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -2623,7 +2659,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 419 "dhcp6_lexer.ll"
+#line 417 "dhcp6_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser6Context::REPLACE_CLIENT_NAME) {
@@ -2636,7 +2672,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 429 "dhcp6_lexer.ll"
+#line 427 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -2648,7 +2684,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 438 "dhcp6_lexer.ll"
+#line 436 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2660,7 +2696,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 447 "dhcp6_lexer.ll"
+#line 445 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2672,7 +2708,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 456 "dhcp6_lexer.ll"
+#line 454 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -2684,7 +2720,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 465 "dhcp6_lexer.ll"
+#line 463 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::INTERFACES_CONFIG:
@@ -2696,7 +2732,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 474 "dhcp6_lexer.ll"
+#line 472 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2708,7 +2744,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 483 "dhcp6_lexer.ll"
+#line 481 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SANITY_CHECKS:
@@ -2720,7 +2756,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 492 "dhcp6_lexer.ll"
+#line 490 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2732,7 +2768,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 501 "dhcp6_lexer.ll"
+#line 499 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2744,7 +2780,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 510 "dhcp6_lexer.ll"
+#line 508 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2756,7 +2792,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 519 "dhcp6_lexer.ll"
+#line 517 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -2768,7 +2804,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 528 "dhcp6_lexer.ll"
+#line 526 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG_CONTROL:
@@ -2780,7 +2816,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 537 "dhcp6_lexer.ll"
+#line 535 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG_CONTROL:
@@ -2792,7 +2828,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 546 "dhcp6_lexer.ll"
+#line 544 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOSTS_DATABASE:
@@ -2804,7 +2840,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 555 "dhcp6_lexer.ll"
+#line 553 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2820,7 +2856,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 568 "dhcp6_lexer.ll"
+#line 566 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2832,7 +2868,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 577 "dhcp6_lexer.ll"
+#line 575 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2844,7 +2880,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 586 "dhcp6_lexer.ll"
+#line 584 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2856,7 +2892,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 595 "dhcp6_lexer.ll"
+#line 593 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DATABASE_TYPE:
@@ -2868,7 +2904,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 604 "dhcp6_lexer.ll"
+#line 602 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2882,7 +2918,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 615 "dhcp6_lexer.ll"
+#line 613 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2896,7 +2932,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 626 "dhcp6_lexer.ll"
+#line 624 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2910,7 +2946,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 637 "dhcp6_lexer.ll"
+#line 635 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2924,7 +2960,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 648 "dhcp6_lexer.ll"
+#line 646 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2939,7 +2975,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 660 "dhcp6_lexer.ll"
+#line 658 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2953,7 +2989,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 671 "dhcp6_lexer.ll"
+#line 669 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2967,7 +3003,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 682 "dhcp6_lexer.ll"
+#line 680 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2981,7 +3017,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 693 "dhcp6_lexer.ll"
+#line 691 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -2995,7 +3031,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 704 "dhcp6_lexer.ll"
+#line 702 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3009,7 +3045,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 715 "dhcp6_lexer.ll"
+#line 713 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3023,7 +3059,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 726 "dhcp6_lexer.ll"
+#line 724 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3037,7 +3073,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 737 "dhcp6_lexer.ll"
+#line 735 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3051,7 +3087,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 748 "dhcp6_lexer.ll"
+#line 746 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3065,7 +3101,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 759 "dhcp6_lexer.ll"
+#line 757 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3079,7 +3115,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 770 "dhcp6_lexer.ll"
+#line 768 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3093,7 +3129,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 781 "dhcp6_lexer.ll"
+#line 779 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3107,7 +3143,35 @@ YY_RULE_SETUP
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 792 "dhcp6_lexer.ll"
+#line 790 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_MIN_PREFERRED_LIFETIME(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("min-preferred-lifetime", driver.loc_);
+    }
+}
+       YY_BREAK
+case 74:
+YY_RULE_SETUP
+#line 801 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_MAX_PREFERRED_LIFETIME(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("max-preferred-lifetime", driver.loc_);
+    }
+}
+       YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 812 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3119,9 +3183,37 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 76:
+YY_RULE_SETUP
+#line 823 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_MIN_VALID_LIFETIME(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("min-valid-lifetime", driver.loc_);
+    }
+}
+       YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 834 "dhcp6_lexer.ll"
+{
+    switch(driver.ctx_) {
+    case isc::dhcp::Parser6Context::DHCP6:
+    case isc::dhcp::Parser6Context::SUBNET6:
+    case isc::dhcp::Parser6Context::SHARED_NETWORK:
+        return isc::dhcp::Dhcp6Parser::make_MAX_VALID_LIFETIME(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("max-valid-lifetime", driver.loc_);
+    }
+}
+       YY_BREAK
+case 78:
 YY_RULE_SETUP
-#line 803 "dhcp6_lexer.ll"
+#line 845 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3133,9 +3225,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 79:
 YY_RULE_SETUP
-#line 814 "dhcp6_lexer.ll"
+#line 856 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3147,9 +3239,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 80:
 YY_RULE_SETUP
-#line 825 "dhcp6_lexer.ll"
+#line 867 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3159,9 +3251,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 81:
 YY_RULE_SETUP
-#line 834 "dhcp6_lexer.ll"
+#line 876 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3171,9 +3263,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 82:
 YY_RULE_SETUP
-#line 843 "dhcp6_lexer.ll"
+#line 885 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3184,9 +3276,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 83:
 YY_RULE_SETUP
-#line 853 "dhcp6_lexer.ll"
+#line 895 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3196,9 +3288,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 84:
 YY_RULE_SETUP
-#line 862 "dhcp6_lexer.ll"
+#line 904 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3208,9 +3300,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 85:
 YY_RULE_SETUP
-#line 871 "dhcp6_lexer.ll"
+#line 913 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3226,9 +3318,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 86:
 YY_RULE_SETUP
-#line 886 "dhcp6_lexer.ll"
+#line 928 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3245,9 +3337,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 87:
 YY_RULE_SETUP
-#line 902 "dhcp6_lexer.ll"
+#line 944 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3257,9 +3349,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 88:
 YY_RULE_SETUP
-#line 911 "dhcp6_lexer.ll"
+#line 953 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3269,9 +3361,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 89:
 YY_RULE_SETUP
-#line 920 "dhcp6_lexer.ll"
+#line 962 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3281,9 +3373,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 90:
 YY_RULE_SETUP
-#line 929 "dhcp6_lexer.ll"
+#line 971 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3293,9 +3385,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 91:
 YY_RULE_SETUP
-#line 938 "dhcp6_lexer.ll"
+#line 980 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3305,9 +3397,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 92:
 YY_RULE_SETUP
-#line 947 "dhcp6_lexer.ll"
+#line 989 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3317,9 +3409,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 93:
 YY_RULE_SETUP
-#line 956 "dhcp6_lexer.ll"
+#line 998 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3329,9 +3421,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 94:
 YY_RULE_SETUP
-#line 965 "dhcp6_lexer.ll"
+#line 1007 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3341,9 +3433,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 95:
 YY_RULE_SETUP
-#line 974 "dhcp6_lexer.ll"
+#line 1016 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3353,9 +3445,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 96:
 YY_RULE_SETUP
-#line 983 "dhcp6_lexer.ll"
+#line 1025 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3365,9 +3457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 97:
 YY_RULE_SETUP
-#line 992 "dhcp6_lexer.ll"
+#line 1034 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3390,9 +3482,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 98:
 YY_RULE_SETUP
-#line 1014 "dhcp6_lexer.ll"
+#line 1056 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3415,9 +3507,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 99:
 YY_RULE_SETUP
-#line 1036 "dhcp6_lexer.ll"
+#line 1078 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3427,9 +3519,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 100:
 YY_RULE_SETUP
-#line 1045 "dhcp6_lexer.ll"
+#line 1087 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3440,9 +3532,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 101:
 YY_RULE_SETUP
-#line 1055 "dhcp6_lexer.ll"
+#line 1097 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3453,9 +3545,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 102:
 YY_RULE_SETUP
-#line 1065 "dhcp6_lexer.ll"
+#line 1107 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3465,9 +3557,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 103:
 YY_RULE_SETUP
-#line 1074 "dhcp6_lexer.ll"
+#line 1116 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3478,9 +3570,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 104:
 YY_RULE_SETUP
-#line 1084 "dhcp6_lexer.ll"
+#line 1126 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3492,9 +3584,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 105:
 YY_RULE_SETUP
-#line 1095 "dhcp6_lexer.ll"
+#line 1137 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3504,9 +3596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 106:
 YY_RULE_SETUP
-#line 1104 "dhcp6_lexer.ll"
+#line 1146 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3516,9 +3608,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 107:
 YY_RULE_SETUP
-#line 1113 "dhcp6_lexer.ll"
+#line 1155 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3528,9 +3620,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 108:
 YY_RULE_SETUP
-#line 1122 "dhcp6_lexer.ll"
+#line 1164 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3540,9 +3632,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 109:
 YY_RULE_SETUP
-#line 1131 "dhcp6_lexer.ll"
+#line 1173 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3552,9 +3644,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 110:
 YY_RULE_SETUP
-#line 1140 "dhcp6_lexer.ll"
+#line 1182 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3565,9 +3657,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 111:
 YY_RULE_SETUP
-#line 1150 "dhcp6_lexer.ll"
+#line 1192 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3577,9 +3669,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 112:
 YY_RULE_SETUP
-#line 1159 "dhcp6_lexer.ll"
+#line 1201 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3589,9 +3681,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 113:
 YY_RULE_SETUP
-#line 1168 "dhcp6_lexer.ll"
+#line 1210 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3601,9 +3693,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 114:
 YY_RULE_SETUP
-#line 1177 "dhcp6_lexer.ll"
+#line 1219 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3615,9 +3707,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 115:
 YY_RULE_SETUP
-#line 1188 "dhcp6_lexer.ll"
+#line 1230 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3629,9 +3721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 116:
 YY_RULE_SETUP
-#line 1199 "dhcp6_lexer.ll"
+#line 1241 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3643,9 +3735,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 117:
 YY_RULE_SETUP
-#line 1210 "dhcp6_lexer.ll"
+#line 1252 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -3655,9 +3747,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 118:
 YY_RULE_SETUP
-#line 1219 "dhcp6_lexer.ll"
+#line 1261 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3668,9 +3760,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 119:
 YY_RULE_SETUP
-#line 1229 "dhcp6_lexer.ll"
+#line 1271 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3680,9 +3772,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 120:
 YY_RULE_SETUP
-#line 1238 "dhcp6_lexer.ll"
+#line 1280 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3692,9 +3784,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 121:
 YY_RULE_SETUP
-#line 1247 "dhcp6_lexer.ll"
+#line 1289 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3704,9 +3796,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 122:
 YY_RULE_SETUP
-#line 1256 "dhcp6_lexer.ll"
+#line 1298 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3716,9 +3808,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 123:
 YY_RULE_SETUP
-#line 1265 "dhcp6_lexer.ll"
+#line 1307 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -3728,9 +3820,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 124:
 YY_RULE_SETUP
-#line 1275 "dhcp6_lexer.ll"
+#line 1317 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3740,9 +3832,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 125:
 YY_RULE_SETUP
-#line 1284 "dhcp6_lexer.ll"
+#line 1326 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -3752,9 +3844,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 126:
 YY_RULE_SETUP
-#line 1293 "dhcp6_lexer.ll"
+#line 1335 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3765,9 +3857,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 127:
 YY_RULE_SETUP
-#line 1303 "dhcp6_lexer.ll"
+#line 1345 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3780,9 +3872,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 128:
 YY_RULE_SETUP
-#line 1315 "dhcp6_lexer.ll"
+#line 1357 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3796,9 +3888,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 129:
 YY_RULE_SETUP
-#line 1328 "dhcp6_lexer.ll"
+#line 1370 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3808,9 +3900,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 130:
 YY_RULE_SETUP
-#line 1337 "dhcp6_lexer.ll"
+#line 1379 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -3820,9 +3912,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 131:
 YY_RULE_SETUP
-#line 1346 "dhcp6_lexer.ll"
+#line 1388 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3833,9 +3925,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 132:
 YY_RULE_SETUP
-#line 1356 "dhcp6_lexer.ll"
+#line 1398 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3846,9 +3938,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 133:
 YY_RULE_SETUP
-#line 1366 "dhcp6_lexer.ll"
+#line 1408 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3858,9 +3950,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 134:
 YY_RULE_SETUP
-#line 1375 "dhcp6_lexer.ll"
+#line 1417 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -3872,9 +3964,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 135:
 YY_RULE_SETUP
-#line 1386 "dhcp6_lexer.ll"
+#line 1428 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3885,9 +3977,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 136:
 YY_RULE_SETUP
-#line 1396 "dhcp6_lexer.ll"
+#line 1438 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -3897,9 +3989,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 137:
 YY_RULE_SETUP
-#line 1405 "dhcp6_lexer.ll"
+#line 1447 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3910,9 +4002,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 138:
 YY_RULE_SETUP
-#line 1415 "dhcp6_lexer.ll"
+#line 1457 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3923,9 +4015,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 139:
 YY_RULE_SETUP
-#line 1425 "dhcp6_lexer.ll"
+#line 1467 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3935,9 +4027,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 140:
 YY_RULE_SETUP
-#line 1434 "dhcp6_lexer.ll"
+#line 1476 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3947,9 +4039,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 141:
 YY_RULE_SETUP
-#line 1443 "dhcp6_lexer.ll"
+#line 1485 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3959,9 +4051,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 142:
 YY_RULE_SETUP
-#line 1452 "dhcp6_lexer.ll"
+#line 1494 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3971,9 +4063,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 143:
 YY_RULE_SETUP
-#line 1461 "dhcp6_lexer.ll"
+#line 1503 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3984,9 +4076,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 144:
 YY_RULE_SETUP
-#line 1471 "dhcp6_lexer.ll"
+#line 1513 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -3996,9 +4088,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 145:
 YY_RULE_SETUP
-#line 1480 "dhcp6_lexer.ll"
+#line 1522 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4008,9 +4100,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 146:
 YY_RULE_SETUP
-#line 1490 "dhcp6_lexer.ll"
+#line 1532 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4020,9 +4112,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 147:
 YY_RULE_SETUP
-#line 1499 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4032,9 +4124,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 148:
 YY_RULE_SETUP
-#line 1508 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4044,9 +4136,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 149:
 YY_RULE_SETUP
-#line 1517 "dhcp6_lexer.ll"
+#line 1559 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4056,9 +4148,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 150:
 YY_RULE_SETUP
-#line 1526 "dhcp6_lexer.ll"
+#line 1568 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4068,9 +4160,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 151:
 YY_RULE_SETUP
-#line 1535 "dhcp6_lexer.ll"
+#line 1577 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4080,9 +4172,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 152:
 YY_RULE_SETUP
-#line 1544 "dhcp6_lexer.ll"
+#line 1586 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4092,9 +4184,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 153:
 YY_RULE_SETUP
-#line 1553 "dhcp6_lexer.ll"
+#line 1595 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4104,9 +4196,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 154:
 YY_RULE_SETUP
-#line 1562 "dhcp6_lexer.ll"
+#line 1604 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4116,9 +4208,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 155:
 YY_RULE_SETUP
-#line 1571 "dhcp6_lexer.ll"
+#line 1613 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4128,9 +4220,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 156:
 YY_RULE_SETUP
-#line 1580 "dhcp6_lexer.ll"
+#line 1622 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4140,9 +4232,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 157:
 YY_RULE_SETUP
-#line 1589 "dhcp6_lexer.ll"
+#line 1631 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4152,9 +4244,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 158:
 YY_RULE_SETUP
-#line 1598 "dhcp6_lexer.ll"
+#line 1640 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4164,9 +4256,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 159:
 YY_RULE_SETUP
-#line 1607 "dhcp6_lexer.ll"
+#line 1649 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4176,9 +4268,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 160:
 YY_RULE_SETUP
-#line 1616 "dhcp6_lexer.ll"
+#line 1658 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4188,9 +4280,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 161:
 YY_RULE_SETUP
-#line 1625 "dhcp6_lexer.ll"
+#line 1667 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4200,9 +4292,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 162:
 YY_RULE_SETUP
-#line 1634 "dhcp6_lexer.ll"
+#line 1676 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4212,9 +4304,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 163:
 YY_RULE_SETUP
-#line 1643 "dhcp6_lexer.ll"
+#line 1685 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4224,9 +4316,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 164:
 YY_RULE_SETUP
-#line 1652 "dhcp6_lexer.ll"
+#line 1694 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4236,9 +4328,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 165:
 YY_RULE_SETUP
-#line 1661 "dhcp6_lexer.ll"
+#line 1703 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4248,9 +4340,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 166:
 YY_RULE_SETUP
-#line 1670 "dhcp6_lexer.ll"
+#line 1712 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4260,9 +4352,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 167:
 YY_RULE_SETUP
-#line 1679 "dhcp6_lexer.ll"
+#line 1721 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4272,9 +4364,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 168:
 YY_RULE_SETUP
-#line 1688 "dhcp6_lexer.ll"
+#line 1730 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4284,9 +4376,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 169:
 YY_RULE_SETUP
-#line 1697 "dhcp6_lexer.ll"
+#line 1739 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4296,9 +4388,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 170:
 YY_RULE_SETUP
-#line 1706 "dhcp6_lexer.ll"
+#line 1748 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4308,9 +4400,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 171:
 YY_RULE_SETUP
-#line 1715 "dhcp6_lexer.ll"
+#line 1757 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONFIG:
@@ -4320,9 +4412,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 172:
 YY_RULE_SETUP
-#line 1725 "dhcp6_lexer.ll"
+#line 1767 "dhcp6_lexer.ll"
 {
     /* A string has been matched. It contains the actual string and single quotes.
        We need to get those quotes out of the way and just use its content, e.g.
@@ -4422,65 +4514,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 169:
-/* rule 169 can match eol */
+case 173:
+/* rule 173 can match eol */
 YY_RULE_SETUP
-#line 1824 "dhcp6_lexer.ll"
+#line 1866 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 170:
-/* rule 170 can match eol */
+case 174:
+/* rule 174 can match eol */
 YY_RULE_SETUP
-#line 1829 "dhcp6_lexer.ll"
+#line 1871 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 171:
+case 175:
 YY_RULE_SETUP
-#line 1834 "dhcp6_lexer.ll"
+#line 1876 "dhcp6_lexer.ll"
 {
     /* Bad string with an open escape at the end */
     driver.error(driver.loc_, "Overflow escape in " + std::string(yytext));
 }
        YY_BREAK
-case 172:
+case 176:
 YY_RULE_SETUP
-#line 1839 "dhcp6_lexer.ll"
+#line 1881 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 173:
+case 177:
 YY_RULE_SETUP
-#line 1840 "dhcp6_lexer.ll"
+#line 1882 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 174:
+case 178:
 YY_RULE_SETUP
-#line 1841 "dhcp6_lexer.ll"
+#line 1883 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 175:
+case 179:
 YY_RULE_SETUP
-#line 1842 "dhcp6_lexer.ll"
+#line 1884 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 176:
+case 180:
 YY_RULE_SETUP
-#line 1843 "dhcp6_lexer.ll"
+#line 1885 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 177:
+case 181:
 YY_RULE_SETUP
-#line 1844 "dhcp6_lexer.ll"
+#line 1886 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 178:
+case 182:
 YY_RULE_SETUP
-#line 1846 "dhcp6_lexer.ll"
+#line 1888 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4499,9 +4591,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 179:
+case 183:
 YY_RULE_SETUP
-#line 1864 "dhcp6_lexer.ll"
+#line 1906 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4515,43 +4607,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 180:
+case 184:
 YY_RULE_SETUP
-#line 1877 "dhcp6_lexer.ll"
+#line 1919 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 181:
+case 185:
 YY_RULE_SETUP
-#line 1882 "dhcp6_lexer.ll"
+#line 1924 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 182:
+case 186:
 YY_RULE_SETUP
-#line 1886 "dhcp6_lexer.ll"
+#line 1928 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 183:
+case 187:
 YY_RULE_SETUP
-#line 1888 "dhcp6_lexer.ll"
+#line 1930 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 184:
+case 188:
 YY_RULE_SETUP
-#line 1890 "dhcp6_lexer.ll"
+#line 1932 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 185:
+case 189:
 YY_RULE_SETUP
-#line 1892 "dhcp6_lexer.ll"
+#line 1934 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 1894 "dhcp6_lexer.ll"
+#line 1936 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4575,12 +4667,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 186:
+case 190:
 YY_RULE_SETUP
-#line 1917 "dhcp6_lexer.ll"
+#line 1959 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4583 "dhcp6_lexer.cc"
+#line 4675 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -4899,7 +4991,7 @@ static int yy_get_next_buffer (void)
                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 >= 1544 )
+                       if ( yy_current_state >= 1615 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -4932,11 +5024,11 @@ static int yy_get_next_buffer (void)
        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 >= 1544 )
+               if ( yy_current_state >= 1615 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1543);
+       yy_is_jam = (yy_current_state == 1614);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5685,7 +5777,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 1917 "dhcp6_lexer.ll"
+#line 1959 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index 0bd927b9577602f5c660fc9b6690c3966d90b4b7..1e6f19687e4dfa6027599bf5eacf0647ee2406c8 100644 (file)
@@ -251,29 +251,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -292,29 +292,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.type_get ())
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -333,29 +333,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.type_get ())
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -398,68 +398,68 @@ namespace isc { namespace dhcp {
         << yysym.location << ": ";
     switch (yytype)
     {
-      case 177: // "constant string"
-#line 256 "dhcp6_parser.yy"
+      case 181: // "constant string"
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < std::string > (); }
 #line 405 "dhcp6_parser.cc"
         break;
 
-      case 178: // "integer"
-#line 256 "dhcp6_parser.yy"
+      case 182: // "integer"
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < int64_t > (); }
 #line 411 "dhcp6_parser.cc"
         break;
 
-      case 179: // "floating point"
-#line 256 "dhcp6_parser.yy"
+      case 183: // "floating point"
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < double > (); }
 #line 417 "dhcp6_parser.cc"
         break;
 
-      case 180: // "boolean"
-#line 256 "dhcp6_parser.yy"
+      case 184: // "boolean"
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < bool > (); }
 #line 423 "dhcp6_parser.cc"
         break;
 
-      case 198: // value
-#line 256 "dhcp6_parser.yy"
+      case 202: // value
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 429 "dhcp6_parser.cc"
         break;
 
-      case 202: // map_value
-#line 256 "dhcp6_parser.yy"
+      case 206: // map_value
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 435 "dhcp6_parser.cc"
         break;
 
-      case 259: // db_type
-#line 256 "dhcp6_parser.yy"
+      case 267: // db_type
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 441 "dhcp6_parser.cc"
         break;
 
-      case 352: // hr_mode
-#line 256 "dhcp6_parser.yy"
+      case 360: // hr_mode
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 447 "dhcp6_parser.cc"
         break;
 
-      case 488: // duid_type
-#line 256 "dhcp6_parser.yy"
+      case 496: // duid_type
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 453 "dhcp6_parser.cc"
         break;
 
-      case 523: // ncr_protocol_value
-#line 256 "dhcp6_parser.yy"
+      case 531: // ncr_protocol_value
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 459 "dhcp6_parser.cc"
         break;
 
-      case 530: // replace_client_name_value
-#line 256 "dhcp6_parser.yy"
+      case 538: // replace_client_name_value
+#line 260 "dhcp6_parser.yy"
         { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 465 "dhcp6_parser.cc"
         break;
@@ -678,29 +678,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -725,139 +725,139 @@ namespace isc { namespace dhcp {
           switch (yyn)
             {
   case 2:
-#line 265 "dhcp6_parser.yy"
+#line 269 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 731 "dhcp6_parser.cc"
     break;
 
   case 4:
-#line 266 "dhcp6_parser.yy"
+#line 270 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.CONFIG; }
 #line 737 "dhcp6_parser.cc"
     break;
 
   case 6:
-#line 267 "dhcp6_parser.yy"
+#line 271 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.DHCP6; }
 #line 743 "dhcp6_parser.cc"
     break;
 
   case 8:
-#line 268 "dhcp6_parser.yy"
+#line 272 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 749 "dhcp6_parser.cc"
     break;
 
   case 10:
-#line 269 "dhcp6_parser.yy"
+#line 273 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.SUBNET6; }
 #line 755 "dhcp6_parser.cc"
     break;
 
   case 12:
-#line 270 "dhcp6_parser.yy"
+#line 274 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.POOLS; }
 #line 761 "dhcp6_parser.cc"
     break;
 
   case 14:
-#line 271 "dhcp6_parser.yy"
+#line 275 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.PD_POOLS; }
 #line 767 "dhcp6_parser.cc"
     break;
 
   case 16:
-#line 272 "dhcp6_parser.yy"
+#line 276 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 773 "dhcp6_parser.cc"
     break;
 
   case 18:
-#line 273 "dhcp6_parser.yy"
+#line 277 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.DHCP6; }
 #line 779 "dhcp6_parser.cc"
     break;
 
   case 20:
-#line 274 "dhcp6_parser.yy"
+#line 278 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 785 "dhcp6_parser.cc"
     break;
 
   case 22:
-#line 275 "dhcp6_parser.yy"
+#line 279 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 791 "dhcp6_parser.cc"
     break;
 
   case 24:
-#line 276 "dhcp6_parser.yy"
+#line 280 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 797 "dhcp6_parser.cc"
     break;
 
   case 26:
-#line 277 "dhcp6_parser.yy"
+#line 281 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 803 "dhcp6_parser.cc"
     break;
 
   case 28:
-#line 278 "dhcp6_parser.yy"
+#line 282 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.LOGGING; }
 #line 809 "dhcp6_parser.cc"
     break;
 
   case 30:
-#line 279 "dhcp6_parser.yy"
+#line 283 "dhcp6_parser.yy"
     { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 815 "dhcp6_parser.cc"
     break;
 
   case 32:
-#line 287 "dhcp6_parser.yy"
+#line 291 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 821 "dhcp6_parser.cc"
     break;
 
   case 33:
-#line 288 "dhcp6_parser.yy"
+#line 292 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 827 "dhcp6_parser.cc"
     break;
 
   case 34:
-#line 289 "dhcp6_parser.yy"
+#line 293 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 833 "dhcp6_parser.cc"
     break;
 
   case 35:
-#line 290 "dhcp6_parser.yy"
+#line 294 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 839 "dhcp6_parser.cc"
     break;
 
   case 36:
-#line 291 "dhcp6_parser.yy"
+#line 295 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 845 "dhcp6_parser.cc"
     break;
 
   case 37:
-#line 292 "dhcp6_parser.yy"
+#line 296 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 851 "dhcp6_parser.cc"
     break;
 
   case 38:
-#line 293 "dhcp6_parser.yy"
+#line 297 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 857 "dhcp6_parser.cc"
     break;
 
   case 39:
-#line 296 "dhcp6_parser.yy"
+#line 300 "dhcp6_parser.yy"
     {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -866,7 +866,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 40:
-#line 301 "dhcp6_parser.yy"
+#line 305 "dhcp6_parser.yy"
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -877,7 +877,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 41:
-#line 306 "dhcp6_parser.yy"
+#line 310 "dhcp6_parser.yy"
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -887,13 +887,13 @@ namespace isc { namespace dhcp {
     break;
 
   case 42:
-#line 312 "dhcp6_parser.yy"
+#line 316 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 893 "dhcp6_parser.cc"
     break;
 
   case 45:
-#line 319 "dhcp6_parser.yy"
+#line 323 "dhcp6_parser.yy"
     {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -902,7 +902,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 46:
-#line 323 "dhcp6_parser.yy"
+#line 327 "dhcp6_parser.yy"
     {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -912,7 +912,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 47:
-#line 330 "dhcp6_parser.yy"
+#line 334 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -921,7 +921,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 48:
-#line 333 "dhcp6_parser.yy"
+#line 337 "dhcp6_parser.yy"
     {
     // list parsing complete. Put any sanity checking here
 }
@@ -929,7 +929,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 51:
-#line 341 "dhcp6_parser.yy"
+#line 345 "dhcp6_parser.yy"
     {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -938,7 +938,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 52:
-#line 345 "dhcp6_parser.yy"
+#line 349 "dhcp6_parser.yy"
     {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -947,7 +947,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 53:
-#line 352 "dhcp6_parser.yy"
+#line 356 "dhcp6_parser.yy"
     {
     // List parsing about to start
 }
@@ -955,7 +955,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 54:
-#line 354 "dhcp6_parser.yy"
+#line 358 "dhcp6_parser.yy"
     {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -964,7 +964,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 57:
-#line 363 "dhcp6_parser.yy"
+#line 367 "dhcp6_parser.yy"
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -973,7 +973,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 58:
-#line 367 "dhcp6_parser.yy"
+#line 371 "dhcp6_parser.yy"
     {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -982,7 +982,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 59:
-#line 378 "dhcp6_parser.yy"
+#line 382 "dhcp6_parser.yy"
     {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -993,7 +993,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 60:
-#line 388 "dhcp6_parser.yy"
+#line 392 "dhcp6_parser.yy"
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1004,7 +1004,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 61:
-#line 393 "dhcp6_parser.yy"
+#line 397 "dhcp6_parser.yy"
     {
     // map parsing completed. If we ever want to do any wrap up
     // (maybe some sanity checking), this would be the best place
@@ -1017,7 +1017,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 70:
-#line 416 "dhcp6_parser.yy"
+#line 420 "dhcp6_parser.yy"
     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1030,7 +1030,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 71:
-#line 423 "dhcp6_parser.yy"
+#line 427 "dhcp6_parser.yy"
     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1040,7 +1040,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 72:
-#line 431 "dhcp6_parser.yy"
+#line 435 "dhcp6_parser.yy"
     {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1050,7 +1050,7 @@ namespace isc { namespace dhcp {
     break;
 
   case 73:
-#line 435 "dhcp6_parser.yy"
+#line 439 "dhcp6_parser.yy"
     {
     // No global parameter is required
     // parsing completed
@@ -1058,16 +1058,16 @@ namespace isc { namespace dhcp {
 #line 1059 "dhcp6_parser.cc"
     break;
 
-  case 115:
-#line 487 "dhcp6_parser.yy"
+  case 117:
+#line 493 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1067 "dhcp6_parser.cc"
     break;
 
-  case 116:
-#line 489 "dhcp6_parser.yy"
+  case 118:
+#line 495 "dhcp6_parser.yy"
     {
     ElementPtr datadir(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data-directory", datadir);
@@ -1076,8 +1076,8 @@ namespace isc { namespace dhcp {
 #line 1077 "dhcp6_parser.cc"
     break;
 
-  case 117:
-#line 495 "dhcp6_parser.yy"
+  case 119:
+#line 501 "dhcp6_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("preferred-lifetime", prf);
@@ -1085,545 +1085,581 @@ namespace isc { namespace dhcp {
 #line 1086 "dhcp6_parser.cc"
     break;
 
-  case 118:
-#line 500 "dhcp6_parser.yy"
+  case 120:
+#line 506 "dhcp6_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("valid-lifetime", prf);
+    ctx.stack_.back()->set("min-preferred-lifetime", prf);
 }
 #line 1095 "dhcp6_parser.cc"
     break;
 
-  case 119:
-#line 505 "dhcp6_parser.yy"
+  case 121:
+#line 511 "dhcp6_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("renew-timer", prf);
+    ctx.stack_.back()->set("max-preferred-lifetime", prf);
 }
 #line 1104 "dhcp6_parser.cc"
     break;
 
-  case 120:
-#line 510 "dhcp6_parser.yy"
+  case 122:
+#line 516 "dhcp6_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
-    ctx.stack_.back()->set("rebind-timer", prf);
+    ctx.stack_.back()->set("valid-lifetime", prf);
 }
 #line 1113 "dhcp6_parser.cc"
     break;
 
-  case 121:
-#line 515 "dhcp6_parser.yy"
+  case 123:
+#line 521 "dhcp6_parser.yy"
+    {
+    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("min-valid-lifetime", prf);
+}
+#line 1122 "dhcp6_parser.cc"
+    break;
+
+  case 124:
+#line 526 "dhcp6_parser.yy"
+    {
+    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("max-valid-lifetime", prf);
+}
+#line 1131 "dhcp6_parser.cc"
+    break;
+
+  case 125:
+#line 531 "dhcp6_parser.yy"
+    {
+    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("renew-timer", prf);
+}
+#line 1140 "dhcp6_parser.cc"
+    break;
+
+  case 126:
+#line 536 "dhcp6_parser.yy"
+    {
+    ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("rebind-timer", prf);
+}
+#line 1149 "dhcp6_parser.cc"
+    break;
+
+  case 127:
+#line 541 "dhcp6_parser.yy"
     {
     ElementPtr ctt(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("calculate-tee-times", ctt);
 }
-#line 1122 "dhcp6_parser.cc"
+#line 1158 "dhcp6_parser.cc"
     break;
 
-  case 122:
-#line 520 "dhcp6_parser.yy"
+  case 128:
+#line 546 "dhcp6_parser.yy"
     {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
 }
-#line 1131 "dhcp6_parser.cc"
+#line 1167 "dhcp6_parser.cc"
     break;
 
-  case 123:
-#line 525 "dhcp6_parser.yy"
+  case 129:
+#line 551 "dhcp6_parser.yy"
     {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
 }
-#line 1140 "dhcp6_parser.cc"
+#line 1176 "dhcp6_parser.cc"
     break;
 
-  case 124:
-#line 530 "dhcp6_parser.yy"
+  case 130:
+#line 556 "dhcp6_parser.yy"
     {
     ElementPtr dpp(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("decline-probation-period", dpp);
 }
-#line 1149 "dhcp6_parser.cc"
+#line 1185 "dhcp6_parser.cc"
     break;
 
-  case 125:
-#line 535 "dhcp6_parser.yy"
+  case 131:
+#line 561 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1157 "dhcp6_parser.cc"
+#line 1193 "dhcp6_parser.cc"
     break;
 
-  case 126:
-#line 537 "dhcp6_parser.yy"
+  case 132:
+#line 563 "dhcp6_parser.yy"
     {
     ElementPtr stag(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-tag", stag);
     ctx.leave();
 }
-#line 1167 "dhcp6_parser.cc"
+#line 1203 "dhcp6_parser.cc"
     break;
 
-  case 127:
-#line 543 "dhcp6_parser.yy"
+  case 133:
+#line 569 "dhcp6_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces-config", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.INTERFACES_CONFIG);
 }
-#line 1178 "dhcp6_parser.cc"
+#line 1214 "dhcp6_parser.cc"
     break;
 
-  case 128:
-#line 548 "dhcp6_parser.yy"
+  case 134:
+#line 574 "dhcp6_parser.yy"
     {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1188 "dhcp6_parser.cc"
+#line 1224 "dhcp6_parser.cc"
     break;
 
-  case 129:
-#line 554 "dhcp6_parser.yy"
+  case 135:
+#line 580 "dhcp6_parser.yy"
     {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1198 "dhcp6_parser.cc"
+#line 1234 "dhcp6_parser.cc"
     break;
 
-  case 130:
-#line 558 "dhcp6_parser.yy"
+  case 136:
+#line 584 "dhcp6_parser.yy"
     {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1207 "dhcp6_parser.cc"
+#line 1243 "dhcp6_parser.cc"
     break;
 
-  case 138:
-#line 574 "dhcp6_parser.yy"
+  case 144:
+#line 600 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interfaces", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1218 "dhcp6_parser.cc"
+#line 1254 "dhcp6_parser.cc"
     break;
 
-  case 139:
-#line 579 "dhcp6_parser.yy"
+  case 145:
+#line 605 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1227 "dhcp6_parser.cc"
+#line 1263 "dhcp6_parser.cc"
     break;
 
-  case 140:
-#line 584 "dhcp6_parser.yy"
+  case 146:
+#line 610 "dhcp6_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("re-detect", b);
 }
-#line 1236 "dhcp6_parser.cc"
+#line 1272 "dhcp6_parser.cc"
     break;
 
-  case 141:
-#line 590 "dhcp6_parser.yy"
+  case 147:
+#line 616 "dhcp6_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lease-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.LEASE_DATABASE);
 }
-#line 1247 "dhcp6_parser.cc"
+#line 1283 "dhcp6_parser.cc"
     break;
 
-  case 142:
-#line 595 "dhcp6_parser.yy"
+  case 148:
+#line 621 "dhcp6_parser.yy"
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1258 "dhcp6_parser.cc"
+#line 1294 "dhcp6_parser.cc"
     break;
 
-  case 143:
-#line 602 "dhcp6_parser.yy"
+  case 149:
+#line 628 "dhcp6_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-database", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1269 "dhcp6_parser.cc"
+#line 1305 "dhcp6_parser.cc"
     break;
 
-  case 144:
-#line 607 "dhcp6_parser.yy"
+  case 150:
+#line 633 "dhcp6_parser.yy"
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1280 "dhcp6_parser.cc"
+#line 1316 "dhcp6_parser.cc"
     break;
 
-  case 145:
-#line 614 "dhcp6_parser.yy"
+  case 151:
+#line 640 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hosts-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOSTS_DATABASE);
 }
-#line 1291 "dhcp6_parser.cc"
+#line 1327 "dhcp6_parser.cc"
     break;
 
-  case 146:
-#line 619 "dhcp6_parser.yy"
+  case 152:
+#line 645 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1300 "dhcp6_parser.cc"
+#line 1336 "dhcp6_parser.cc"
     break;
 
-  case 151:
-#line 632 "dhcp6_parser.yy"
+  case 157:
+#line 658 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1310 "dhcp6_parser.cc"
+#line 1346 "dhcp6_parser.cc"
     break;
 
-  case 152:
-#line 636 "dhcp6_parser.yy"
+  case 158:
+#line 662 "dhcp6_parser.yy"
     {
     // The type parameter is required
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1320 "dhcp6_parser.cc"
+#line 1356 "dhcp6_parser.cc"
     break;
 
-  case 175:
-#line 668 "dhcp6_parser.yy"
+  case 181:
+#line 694 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1328 "dhcp6_parser.cc"
+#line 1364 "dhcp6_parser.cc"
     break;
 
-  case 176:
-#line 670 "dhcp6_parser.yy"
+  case 182:
+#line 696 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1337 "dhcp6_parser.cc"
+#line 1373 "dhcp6_parser.cc"
     break;
 
-  case 177:
-#line 675 "dhcp6_parser.yy"
+  case 183:
+#line 701 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1343 "dhcp6_parser.cc"
+#line 1379 "dhcp6_parser.cc"
     break;
 
-  case 178:
-#line 676 "dhcp6_parser.yy"
+  case 184:
+#line 702 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1349 "dhcp6_parser.cc"
+#line 1385 "dhcp6_parser.cc"
     break;
 
-  case 179:
-#line 677 "dhcp6_parser.yy"
+  case 185:
+#line 703 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1355 "dhcp6_parser.cc"
+#line 1391 "dhcp6_parser.cc"
     break;
 
-  case 180:
-#line 678 "dhcp6_parser.yy"
+  case 186:
+#line 704 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1361 "dhcp6_parser.cc"
+#line 1397 "dhcp6_parser.cc"
     break;
 
-  case 181:
-#line 681 "dhcp6_parser.yy"
+  case 187:
+#line 707 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1369 "dhcp6_parser.cc"
+#line 1405 "dhcp6_parser.cc"
     break;
 
-  case 182:
-#line 683 "dhcp6_parser.yy"
+  case 188:
+#line 709 "dhcp6_parser.yy"
     {
     ElementPtr user(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("user", user);
     ctx.leave();
 }
-#line 1379 "dhcp6_parser.cc"
+#line 1415 "dhcp6_parser.cc"
     break;
 
-  case 183:
-#line 689 "dhcp6_parser.yy"
+  case 189:
+#line 715 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1387 "dhcp6_parser.cc"
+#line 1423 "dhcp6_parser.cc"
     break;
 
-  case 184:
-#line 691 "dhcp6_parser.yy"
+  case 190:
+#line 717 "dhcp6_parser.yy"
     {
     ElementPtr pwd(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("password", pwd);
     ctx.leave();
 }
-#line 1397 "dhcp6_parser.cc"
+#line 1433 "dhcp6_parser.cc"
     break;
 
-  case 185:
-#line 697 "dhcp6_parser.yy"
+  case 191:
+#line 723 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1405 "dhcp6_parser.cc"
+#line 1441 "dhcp6_parser.cc"
     break;
 
-  case 186:
-#line 699 "dhcp6_parser.yy"
+  case 192:
+#line 725 "dhcp6_parser.yy"
     {
     ElementPtr h(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host", h);
     ctx.leave();
 }
-#line 1415 "dhcp6_parser.cc"
+#line 1451 "dhcp6_parser.cc"
     break;
 
-  case 187:
-#line 705 "dhcp6_parser.yy"
+  case 193:
+#line 731 "dhcp6_parser.yy"
     {
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1424 "dhcp6_parser.cc"
+#line 1460 "dhcp6_parser.cc"
     break;
 
-  case 188:
-#line 710 "dhcp6_parser.yy"
+  case 194:
+#line 736 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1432 "dhcp6_parser.cc"
+#line 1468 "dhcp6_parser.cc"
     break;
 
-  case 189:
-#line 712 "dhcp6_parser.yy"
+  case 195:
+#line 738 "dhcp6_parser.yy"
     {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("name", name);
     ctx.leave();
 }
-#line 1442 "dhcp6_parser.cc"
+#line 1478 "dhcp6_parser.cc"
     break;
 
-  case 190:
-#line 718 "dhcp6_parser.yy"
+  case 196:
+#line 744 "dhcp6_parser.yy"
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1451 "dhcp6_parser.cc"
+#line 1487 "dhcp6_parser.cc"
     break;
 
-  case 191:
-#line 723 "dhcp6_parser.yy"
+  case 197:
+#line 749 "dhcp6_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("lfc-interval", n);
 }
-#line 1460 "dhcp6_parser.cc"
+#line 1496 "dhcp6_parser.cc"
     break;
 
-  case 192:
-#line 728 "dhcp6_parser.yy"
+  case 198:
+#line 754 "dhcp6_parser.yy"
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1469 "dhcp6_parser.cc"
+#line 1505 "dhcp6_parser.cc"
     break;
 
-  case 193:
-#line 733 "dhcp6_parser.yy"
+  case 199:
+#line 759 "dhcp6_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("connect-timeout", n);
 }
-#line 1478 "dhcp6_parser.cc"
+#line 1514 "dhcp6_parser.cc"
     break;
 
-  case 194:
-#line 738 "dhcp6_parser.yy"
+  case 200:
+#line 764 "dhcp6_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reconnect-wait-time", n);
 }
-#line 1487 "dhcp6_parser.cc"
+#line 1523 "dhcp6_parser.cc"
     break;
 
-  case 195:
-#line 743 "dhcp6_parser.yy"
+  case 201:
+#line 769 "dhcp6_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("request-timeout", n);
 }
-#line 1496 "dhcp6_parser.cc"
+#line 1532 "dhcp6_parser.cc"
     break;
 
-  case 196:
-#line 748 "dhcp6_parser.yy"
+  case 202:
+#line 774 "dhcp6_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-keepalive", n);
 }
-#line 1505 "dhcp6_parser.cc"
+#line 1541 "dhcp6_parser.cc"
     break;
 
-  case 197:
-#line 753 "dhcp6_parser.yy"
+  case 203:
+#line 779 "dhcp6_parser.yy"
     {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1514 "dhcp6_parser.cc"
+#line 1550 "dhcp6_parser.cc"
     break;
 
-  case 198:
-#line 758 "dhcp6_parser.yy"
+  case 204:
+#line 784 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1522 "dhcp6_parser.cc"
+#line 1558 "dhcp6_parser.cc"
     break;
 
-  case 199:
-#line 760 "dhcp6_parser.yy"
+  case 205:
+#line 786 "dhcp6_parser.yy"
     {
     ElementPtr cp(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("contact-points", cp);
     ctx.leave();
 }
-#line 1532 "dhcp6_parser.cc"
+#line 1568 "dhcp6_parser.cc"
     break;
 
-  case 200:
-#line 766 "dhcp6_parser.yy"
+  case 206:
+#line 792 "dhcp6_parser.yy"
     {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reconnect-tries", n);
 }
-#line 1541 "dhcp6_parser.cc"
+#line 1577 "dhcp6_parser.cc"
     break;
 
-  case 201:
-#line 771 "dhcp6_parser.yy"
+  case 207:
+#line 797 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1549 "dhcp6_parser.cc"
+#line 1585 "dhcp6_parser.cc"
     break;
 
-  case 202:
-#line 773 "dhcp6_parser.yy"
+  case 208:
+#line 799 "dhcp6_parser.yy"
     {
     ElementPtr ks(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("keyspace", ks);
     ctx.leave();
 }
-#line 1559 "dhcp6_parser.cc"
+#line 1595 "dhcp6_parser.cc"
     break;
 
-  case 203:
-#line 779 "dhcp6_parser.yy"
+  case 209:
+#line 805 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1567 "dhcp6_parser.cc"
+#line 1603 "dhcp6_parser.cc"
     break;
 
-  case 204:
-#line 781 "dhcp6_parser.yy"
+  case 210:
+#line 807 "dhcp6_parser.yy"
     {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("consistency", c);
     ctx.leave();
 }
-#line 1577 "dhcp6_parser.cc"
+#line 1613 "dhcp6_parser.cc"
     break;
 
-  case 205:
-#line 787 "dhcp6_parser.yy"
+  case 211:
+#line 813 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1585 "dhcp6_parser.cc"
+#line 1621 "dhcp6_parser.cc"
     break;
 
-  case 206:
-#line 789 "dhcp6_parser.yy"
+  case 212:
+#line 815 "dhcp6_parser.yy"
     {
     ElementPtr c(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("serial-consistency", c);
     ctx.leave();
 }
-#line 1595 "dhcp6_parser.cc"
+#line 1631 "dhcp6_parser.cc"
     break;
 
-  case 207:
-#line 795 "dhcp6_parser.yy"
+  case 213:
+#line 821 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sanity-checks", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SANITY_CHECKS);
 }
-#line 1606 "dhcp6_parser.cc"
+#line 1642 "dhcp6_parser.cc"
     break;
 
-  case 208:
-#line 800 "dhcp6_parser.yy"
+  case 214:
+#line 826 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1615 "dhcp6_parser.cc"
+#line 1651 "dhcp6_parser.cc"
     break;
 
-  case 212:
-#line 810 "dhcp6_parser.yy"
+  case 218:
+#line 836 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1623 "dhcp6_parser.cc"
+#line 1659 "dhcp6_parser.cc"
     break;
 
-  case 213:
-#line 812 "dhcp6_parser.yy"
+  case 219:
+#line 838 "dhcp6_parser.yy"
     {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1639,307 +1675,307 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1643 "dhcp6_parser.cc"
+#line 1679 "dhcp6_parser.cc"
     break;
 
-  case 214:
-#line 828 "dhcp6_parser.yy"
+  case 220:
+#line 854 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("mac-sources", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.MAC_SOURCES);
 }
-#line 1654 "dhcp6_parser.cc"
+#line 1690 "dhcp6_parser.cc"
     break;
 
-  case 215:
-#line 833 "dhcp6_parser.yy"
+  case 221:
+#line 859 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1663 "dhcp6_parser.cc"
+#line 1699 "dhcp6_parser.cc"
     break;
 
-  case 220:
-#line 846 "dhcp6_parser.yy"
+  case 226:
+#line 872 "dhcp6_parser.yy"
     {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1672 "dhcp6_parser.cc"
+#line 1708 "dhcp6_parser.cc"
     break;
 
-  case 221:
-#line 851 "dhcp6_parser.yy"
+  case 227:
+#line 877 "dhcp6_parser.yy"
     {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1681 "dhcp6_parser.cc"
+#line 1717 "dhcp6_parser.cc"
     break;
 
-  case 222:
-#line 856 "dhcp6_parser.yy"
+  case 228:
+#line 882 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("host-reservation-identifiers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOST_RESERVATION_IDENTIFIERS);
 }
-#line 1692 "dhcp6_parser.cc"
+#line 1728 "dhcp6_parser.cc"
     break;
 
-  case 223:
-#line 861 "dhcp6_parser.yy"
+  case 229:
+#line 887 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1701 "dhcp6_parser.cc"
+#line 1737 "dhcp6_parser.cc"
     break;
 
-  case 229:
-#line 875 "dhcp6_parser.yy"
+  case 235:
+#line 901 "dhcp6_parser.yy"
     {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1710 "dhcp6_parser.cc"
+#line 1746 "dhcp6_parser.cc"
     break;
 
-  case 230:
-#line 880 "dhcp6_parser.yy"
+  case 236:
+#line 906 "dhcp6_parser.yy"
     {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1719 "dhcp6_parser.cc"
+#line 1755 "dhcp6_parser.cc"
     break;
 
-  case 231:
-#line 887 "dhcp6_parser.yy"
+  case 237:
+#line 913 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay-supplied-options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1730 "dhcp6_parser.cc"
+#line 1766 "dhcp6_parser.cc"
     break;
 
-  case 232:
-#line 892 "dhcp6_parser.yy"
+  case 238:
+#line 918 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1739 "dhcp6_parser.cc"
+#line 1775 "dhcp6_parser.cc"
     break;
 
-  case 233:
-#line 897 "dhcp6_parser.yy"
+  case 239:
+#line 923 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hooks-libraries", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.HOOKS_LIBRARIES);
 }
-#line 1750 "dhcp6_parser.cc"
+#line 1786 "dhcp6_parser.cc"
     break;
 
-  case 234:
-#line 902 "dhcp6_parser.yy"
+  case 240:
+#line 928 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1759 "dhcp6_parser.cc"
+#line 1795 "dhcp6_parser.cc"
     break;
 
-  case 239:
-#line 915 "dhcp6_parser.yy"
+  case 245:
+#line 941 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1769 "dhcp6_parser.cc"
+#line 1805 "dhcp6_parser.cc"
     break;
 
-  case 240:
-#line 919 "dhcp6_parser.yy"
+  case 246:
+#line 945 "dhcp6_parser.yy"
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1779 "dhcp6_parser.cc"
+#line 1815 "dhcp6_parser.cc"
     break;
 
-  case 241:
-#line 925 "dhcp6_parser.yy"
+  case 247:
+#line 951 "dhcp6_parser.yy"
     {
     // Parse the hooks-libraries list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1789 "dhcp6_parser.cc"
+#line 1825 "dhcp6_parser.cc"
     break;
 
-  case 242:
-#line 929 "dhcp6_parser.yy"
+  case 248:
+#line 955 "dhcp6_parser.yy"
     {
     // The library hooks parameter is required
     ctx.require("library", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1799 "dhcp6_parser.cc"
+#line 1835 "dhcp6_parser.cc"
     break;
 
-  case 248:
-#line 944 "dhcp6_parser.yy"
+  case 254:
+#line 970 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1807 "dhcp6_parser.cc"
+#line 1843 "dhcp6_parser.cc"
     break;
 
-  case 249:
-#line 946 "dhcp6_parser.yy"
+  case 255:
+#line 972 "dhcp6_parser.yy"
     {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("library", lib);
     ctx.leave();
 }
-#line 1817 "dhcp6_parser.cc"
+#line 1853 "dhcp6_parser.cc"
     break;
 
-  case 250:
-#line 952 "dhcp6_parser.yy"
+  case 256:
+#line 978 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1825 "dhcp6_parser.cc"
+#line 1861 "dhcp6_parser.cc"
     break;
 
-  case 251:
-#line 954 "dhcp6_parser.yy"
+  case 257:
+#line 980 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1834 "dhcp6_parser.cc"
+#line 1870 "dhcp6_parser.cc"
     break;
 
-  case 252:
-#line 960 "dhcp6_parser.yy"
+  case 258:
+#line 986 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("expired-leases-processing", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.EXPIRED_LEASES_PROCESSING);
 }
-#line 1845 "dhcp6_parser.cc"
+#line 1881 "dhcp6_parser.cc"
     break;
 
-  case 253:
-#line 965 "dhcp6_parser.yy"
+  case 259:
+#line 991 "dhcp6_parser.yy"
     {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1855 "dhcp6_parser.cc"
+#line 1891 "dhcp6_parser.cc"
     break;
 
-  case 262:
-#line 983 "dhcp6_parser.yy"
+  case 268:
+#line 1009 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reclaim-timer-wait-time", value);
 }
-#line 1864 "dhcp6_parser.cc"
+#line 1900 "dhcp6_parser.cc"
     break;
 
-  case 263:
-#line 988 "dhcp6_parser.yy"
+  case 269:
+#line 1014 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush-reclaimed-timer-wait-time", value);
 }
-#line 1873 "dhcp6_parser.cc"
+#line 1909 "dhcp6_parser.cc"
     break;
 
-  case 264:
-#line 993 "dhcp6_parser.yy"
+  case 270:
+#line 1019 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hold-reclaimed-time", value);
 }
-#line 1882 "dhcp6_parser.cc"
+#line 1918 "dhcp6_parser.cc"
     break;
 
-  case 265:
-#line 998 "dhcp6_parser.yy"
+  case 271:
+#line 1024 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-leases", value);
 }
-#line 1891 "dhcp6_parser.cc"
+#line 1927 "dhcp6_parser.cc"
     break;
 
-  case 266:
-#line 1003 "dhcp6_parser.yy"
+  case 272:
+#line 1029 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-reclaim-time", value);
 }
-#line 1900 "dhcp6_parser.cc"
+#line 1936 "dhcp6_parser.cc"
     break;
 
-  case 267:
-#line 1008 "dhcp6_parser.yy"
+  case 273:
+#line 1034 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("unwarned-reclaim-cycles", value);
 }
-#line 1909 "dhcp6_parser.cc"
+#line 1945 "dhcp6_parser.cc"
     break;
 
-  case 268:
-#line 1016 "dhcp6_parser.yy"
+  case 274:
+#line 1042 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet6", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SUBNET6);
 }
-#line 1920 "dhcp6_parser.cc"
+#line 1956 "dhcp6_parser.cc"
     break;
 
-  case 269:
-#line 1021 "dhcp6_parser.yy"
+  case 275:
+#line 1047 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1929 "dhcp6_parser.cc"
+#line 1965 "dhcp6_parser.cc"
     break;
 
-  case 274:
-#line 1041 "dhcp6_parser.yy"
+  case 280:
+#line 1067 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1939 "dhcp6_parser.cc"
+#line 1975 "dhcp6_parser.cc"
     break;
 
-  case 275:
-#line 1045 "dhcp6_parser.yy"
+  case 281:
+#line 1071 "dhcp6_parser.yy"
     {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -1961,267 +1997,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 1965 "dhcp6_parser.cc"
+#line 2001 "dhcp6_parser.cc"
     break;
 
-  case 276:
-#line 1067 "dhcp6_parser.yy"
+  case 282:
+#line 1093 "dhcp6_parser.yy"
     {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1975 "dhcp6_parser.cc"
+#line 2011 "dhcp6_parser.cc"
     break;
 
-  case 277:
-#line 1071 "dhcp6_parser.yy"
+  case 283:
+#line 1097 "dhcp6_parser.yy"
     {
     // The subnet subnet6 parameter is required
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 1985 "dhcp6_parser.cc"
+#line 2021 "dhcp6_parser.cc"
     break;
 
-  case 303:
-#line 1108 "dhcp6_parser.yy"
+  case 313:
+#line 1138 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1993 "dhcp6_parser.cc"
+#line 2029 "dhcp6_parser.cc"
     break;
 
-  case 304:
-#line 1110 "dhcp6_parser.yy"
+  case 314:
+#line 1140 "dhcp6_parser.yy"
     {
     ElementPtr subnet(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("subnet", subnet);
     ctx.leave();
 }
-#line 2003 "dhcp6_parser.cc"
+#line 2039 "dhcp6_parser.cc"
     break;
 
-  case 305:
-#line 1116 "dhcp6_parser.yy"
+  case 315:
+#line 1146 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2011 "dhcp6_parser.cc"
+#line 2047 "dhcp6_parser.cc"
     break;
 
-  case 306:
-#line 1118 "dhcp6_parser.yy"
+  case 316:
+#line 1148 "dhcp6_parser.yy"
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface", iface);
     ctx.leave();
 }
-#line 2021 "dhcp6_parser.cc"
+#line 2057 "dhcp6_parser.cc"
     break;
 
-  case 307:
-#line 1124 "dhcp6_parser.yy"
+  case 317:
+#line 1154 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2029 "dhcp6_parser.cc"
+#line 2065 "dhcp6_parser.cc"
     break;
 
-  case 308:
-#line 1126 "dhcp6_parser.yy"
+  case 318:
+#line 1156 "dhcp6_parser.yy"
     {
     ElementPtr iface(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("interface-id", iface);
     ctx.leave();
 }
-#line 2039 "dhcp6_parser.cc"
+#line 2075 "dhcp6_parser.cc"
     break;
 
-  case 309:
-#line 1132 "dhcp6_parser.yy"
+  case 319:
+#line 1162 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2047 "dhcp6_parser.cc"
+#line 2083 "dhcp6_parser.cc"
     break;
 
-  case 310:
-#line 1134 "dhcp6_parser.yy"
+  case 320:
+#line 1164 "dhcp6_parser.yy"
     {
     ElementPtr cls(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-class", cls);
     ctx.leave();
 }
-#line 2057 "dhcp6_parser.cc"
+#line 2093 "dhcp6_parser.cc"
     break;
 
-  case 311:
-#line 1140 "dhcp6_parser.yy"
+  case 321:
+#line 1170 "dhcp6_parser.yy"
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("require-client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2068 "dhcp6_parser.cc"
+#line 2104 "dhcp6_parser.cc"
     break;
 
-  case 312:
-#line 1145 "dhcp6_parser.yy"
+  case 322:
+#line 1175 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2077 "dhcp6_parser.cc"
+#line 2113 "dhcp6_parser.cc"
     break;
 
-  case 313:
-#line 1150 "dhcp6_parser.yy"
+  case 323:
+#line 1180 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2085 "dhcp6_parser.cc"
+#line 2121 "dhcp6_parser.cc"
     break;
 
-  case 314:
-#line 1152 "dhcp6_parser.yy"
+  case 324:
+#line 1182 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2094 "dhcp6_parser.cc"
+#line 2130 "dhcp6_parser.cc"
     break;
 
-  case 315:
-#line 1157 "dhcp6_parser.yy"
+  case 325:
+#line 1187 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2100 "dhcp6_parser.cc"
+#line 2136 "dhcp6_parser.cc"
     break;
 
-  case 316:
-#line 1158 "dhcp6_parser.yy"
+  case 326:
+#line 1188 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2106 "dhcp6_parser.cc"
+#line 2142 "dhcp6_parser.cc"
     break;
 
-  case 317:
-#line 1159 "dhcp6_parser.yy"
+  case 327:
+#line 1189 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2112 "dhcp6_parser.cc"
+#line 2148 "dhcp6_parser.cc"
     break;
 
-  case 318:
-#line 1160 "dhcp6_parser.yy"
+  case 328:
+#line 1190 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2118 "dhcp6_parser.cc"
+#line 2154 "dhcp6_parser.cc"
     break;
 
-  case 319:
-#line 1163 "dhcp6_parser.yy"
+  case 329:
+#line 1193 "dhcp6_parser.yy"
     {
     ElementPtr id(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("id", id);
 }
-#line 2127 "dhcp6_parser.cc"
+#line 2163 "dhcp6_parser.cc"
     break;
 
-  case 320:
-#line 1168 "dhcp6_parser.yy"
+  case 330:
+#line 1198 "dhcp6_parser.yy"
     {
     ElementPtr rc(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("rapid-commit", rc);
 }
-#line 2136 "dhcp6_parser.cc"
+#line 2172 "dhcp6_parser.cc"
     break;
 
-  case 321:
-#line 1176 "dhcp6_parser.yy"
+  case 331:
+#line 1206 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("shared-networks", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.SHARED_NETWORK);
 }
-#line 2147 "dhcp6_parser.cc"
+#line 2183 "dhcp6_parser.cc"
     break;
 
-  case 322:
-#line 1181 "dhcp6_parser.yy"
+  case 332:
+#line 1211 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2156 "dhcp6_parser.cc"
+#line 2192 "dhcp6_parser.cc"
     break;
 
-  case 327:
-#line 1196 "dhcp6_parser.yy"
+  case 337:
+#line 1226 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2166 "dhcp6_parser.cc"
+#line 2202 "dhcp6_parser.cc"
     break;
 
-  case 328:
-#line 1200 "dhcp6_parser.yy"
+  case 338:
+#line 1230 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
 }
-#line 2174 "dhcp6_parser.cc"
+#line 2210 "dhcp6_parser.cc"
     break;
 
-  case 351:
-#line 1234 "dhcp6_parser.yy"
+  case 365:
+#line 1268 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-def", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DEF);
 }
-#line 2185 "dhcp6_parser.cc"
+#line 2221 "dhcp6_parser.cc"
     break;
 
-  case 352:
-#line 1239 "dhcp6_parser.yy"
+  case 366:
+#line 1273 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2194 "dhcp6_parser.cc"
+#line 2230 "dhcp6_parser.cc"
     break;
 
-  case 353:
-#line 1247 "dhcp6_parser.yy"
+  case 367:
+#line 1281 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2203 "dhcp6_parser.cc"
+#line 2239 "dhcp6_parser.cc"
     break;
 
-  case 354:
-#line 1250 "dhcp6_parser.yy"
+  case 368:
+#line 1284 "dhcp6_parser.yy"
     {
     // parsing completed
 }
-#line 2211 "dhcp6_parser.cc"
+#line 2247 "dhcp6_parser.cc"
     break;
 
-  case 359:
-#line 1266 "dhcp6_parser.yy"
+  case 373:
+#line 1300 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2221 "dhcp6_parser.cc"
+#line 2257 "dhcp6_parser.cc"
     break;
 
-  case 360:
-#line 1270 "dhcp6_parser.yy"
+  case 374:
+#line 1304 "dhcp6_parser.yy"
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2229,21 +2265,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2233 "dhcp6_parser.cc"
+#line 2269 "dhcp6_parser.cc"
     break;
 
-  case 361:
-#line 1281 "dhcp6_parser.yy"
+  case 375:
+#line 1315 "dhcp6_parser.yy"
     {
     // Parse the option-def list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2243 "dhcp6_parser.cc"
+#line 2279 "dhcp6_parser.cc"
     break;
 
-  case 362:
-#line 1285 "dhcp6_parser.yy"
+  case 376:
+#line 1319 "dhcp6_parser.yy"
     {
     // The name, code and type option def parameters are required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2251,280 +2287,280 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2255 "dhcp6_parser.cc"
+#line 2291 "dhcp6_parser.cc"
     break;
 
-  case 378:
-#line 1317 "dhcp6_parser.yy"
+  case 392:
+#line 1351 "dhcp6_parser.yy"
     {
     ElementPtr code(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("code", code);
 }
-#line 2264 "dhcp6_parser.cc"
+#line 2300 "dhcp6_parser.cc"
     break;
 
-  case 380:
-#line 1324 "dhcp6_parser.yy"
+  case 394:
+#line 1358 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2272 "dhcp6_parser.cc"
+#line 2308 "dhcp6_parser.cc"
     break;
 
-  case 381:
-#line 1326 "dhcp6_parser.yy"
+  case 395:
+#line 1360 "dhcp6_parser.yy"
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("type", prf);
     ctx.leave();
 }
-#line 2282 "dhcp6_parser.cc"
+#line 2318 "dhcp6_parser.cc"
     break;
 
-  case 382:
-#line 1332 "dhcp6_parser.yy"
+  case 396:
+#line 1366 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2290 "dhcp6_parser.cc"
+#line 2326 "dhcp6_parser.cc"
     break;
 
-  case 383:
-#line 1334 "dhcp6_parser.yy"
+  case 397:
+#line 1368 "dhcp6_parser.yy"
     {
     ElementPtr rtypes(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("record-types", rtypes);
     ctx.leave();
 }
-#line 2300 "dhcp6_parser.cc"
+#line 2336 "dhcp6_parser.cc"
     break;
 
-  case 384:
-#line 1340 "dhcp6_parser.yy"
+  case 398:
+#line 1374 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2308 "dhcp6_parser.cc"
+#line 2344 "dhcp6_parser.cc"
     break;
 
-  case 385:
-#line 1342 "dhcp6_parser.yy"
+  case 399:
+#line 1376 "dhcp6_parser.yy"
     {
     ElementPtr space(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("space", space);
     ctx.leave();
 }
-#line 2318 "dhcp6_parser.cc"
+#line 2354 "dhcp6_parser.cc"
     break;
 
-  case 387:
-#line 1350 "dhcp6_parser.yy"
+  case 401:
+#line 1384 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2326 "dhcp6_parser.cc"
+#line 2362 "dhcp6_parser.cc"
     break;
 
-  case 388:
-#line 1352 "dhcp6_parser.yy"
+  case 402:
+#line 1386 "dhcp6_parser.yy"
     {
     ElementPtr encap(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("encapsulate", encap);
     ctx.leave();
 }
-#line 2336 "dhcp6_parser.cc"
+#line 2372 "dhcp6_parser.cc"
     break;
 
-  case 389:
-#line 1358 "dhcp6_parser.yy"
+  case 403:
+#line 1392 "dhcp6_parser.yy"
     {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2345 "dhcp6_parser.cc"
+#line 2381 "dhcp6_parser.cc"
     break;
 
-  case 390:
-#line 1367 "dhcp6_parser.yy"
+  case 404:
+#line 1401 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("option-data", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OPTION_DATA);
 }
-#line 2356 "dhcp6_parser.cc"
+#line 2392 "dhcp6_parser.cc"
     break;
 
-  case 391:
-#line 1372 "dhcp6_parser.yy"
+  case 405:
+#line 1406 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2365 "dhcp6_parser.cc"
+#line 2401 "dhcp6_parser.cc"
     break;
 
-  case 396:
-#line 1391 "dhcp6_parser.yy"
+  case 410:
+#line 1425 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2375 "dhcp6_parser.cc"
+#line 2411 "dhcp6_parser.cc"
     break;
 
-  case 397:
-#line 1395 "dhcp6_parser.yy"
+  case 411:
+#line 1429 "dhcp6_parser.yy"
     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2384 "dhcp6_parser.cc"
+#line 2420 "dhcp6_parser.cc"
     break;
 
-  case 398:
-#line 1403 "dhcp6_parser.yy"
+  case 412:
+#line 1437 "dhcp6_parser.yy"
     {
     // Parse the option-data list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2394 "dhcp6_parser.cc"
+#line 2430 "dhcp6_parser.cc"
     break;
 
-  case 399:
-#line 1407 "dhcp6_parser.yy"
+  case 413:
+#line 1441 "dhcp6_parser.yy"
     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2403 "dhcp6_parser.cc"
+#line 2439 "dhcp6_parser.cc"
     break;
 
-  case 414:
-#line 1440 "dhcp6_parser.yy"
+  case 428:
+#line 1474 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2411 "dhcp6_parser.cc"
+#line 2447 "dhcp6_parser.cc"
     break;
 
-  case 415:
-#line 1442 "dhcp6_parser.yy"
+  case 429:
+#line 1476 "dhcp6_parser.yy"
     {
     ElementPtr data(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("data", data);
     ctx.leave();
 }
-#line 2421 "dhcp6_parser.cc"
+#line 2457 "dhcp6_parser.cc"
     break;
 
-  case 418:
-#line 1452 "dhcp6_parser.yy"
+  case 432:
+#line 1486 "dhcp6_parser.yy"
     {
     ElementPtr space(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("csv-format", space);
 }
-#line 2430 "dhcp6_parser.cc"
+#line 2466 "dhcp6_parser.cc"
     break;
 
-  case 419:
-#line 1457 "dhcp6_parser.yy"
+  case 433:
+#line 1491 "dhcp6_parser.yy"
     {
     ElementPtr persist(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("always-send", persist);
 }
-#line 2439 "dhcp6_parser.cc"
+#line 2475 "dhcp6_parser.cc"
     break;
 
-  case 420:
-#line 1465 "dhcp6_parser.yy"
+  case 434:
+#line 1499 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.POOLS);
 }
-#line 2450 "dhcp6_parser.cc"
+#line 2486 "dhcp6_parser.cc"
     break;
 
-  case 421:
-#line 1470 "dhcp6_parser.yy"
+  case 435:
+#line 1504 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2459 "dhcp6_parser.cc"
+#line 2495 "dhcp6_parser.cc"
     break;
 
-  case 426:
-#line 1485 "dhcp6_parser.yy"
+  case 440:
+#line 1519 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2469 "dhcp6_parser.cc"
+#line 2505 "dhcp6_parser.cc"
     break;
 
-  case 427:
-#line 1489 "dhcp6_parser.yy"
+  case 441:
+#line 1523 "dhcp6_parser.yy"
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2479 "dhcp6_parser.cc"
+#line 2515 "dhcp6_parser.cc"
     break;
 
-  case 428:
-#line 1495 "dhcp6_parser.yy"
+  case 442:
+#line 1529 "dhcp6_parser.yy"
     {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2489 "dhcp6_parser.cc"
+#line 2525 "dhcp6_parser.cc"
     break;
 
-  case 429:
-#line 1499 "dhcp6_parser.yy"
+  case 443:
+#line 1533 "dhcp6_parser.yy"
     {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
 }
-#line 2498 "dhcp6_parser.cc"
+#line 2534 "dhcp6_parser.cc"
     break;
 
-  case 439:
-#line 1517 "dhcp6_parser.yy"
+  case 453:
+#line 1551 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2506 "dhcp6_parser.cc"
+#line 2542 "dhcp6_parser.cc"
     break;
 
-  case 440:
-#line 1519 "dhcp6_parser.yy"
+  case 454:
+#line 1553 "dhcp6_parser.yy"
     {
     ElementPtr pool(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pool", pool);
     ctx.leave();
 }
-#line 2516 "dhcp6_parser.cc"
+#line 2552 "dhcp6_parser.cc"
     break;
 
-  case 441:
-#line 1525 "dhcp6_parser.yy"
+  case 455:
+#line 1559 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2524 "dhcp6_parser.cc"
+#line 2560 "dhcp6_parser.cc"
     break;
 
-  case 442:
-#line 1527 "dhcp6_parser.yy"
+  case 456:
+#line 1561 "dhcp6_parser.yy"
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2547,19 +2583,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2551 "dhcp6_parser.cc"
+#line 2587 "dhcp6_parser.cc"
     break;
 
-  case 443:
-#line 1550 "dhcp6_parser.yy"
+  case 457:
+#line 1584 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2559 "dhcp6_parser.cc"
+#line 2595 "dhcp6_parser.cc"
     break;
 
-  case 444:
-#line 1552 "dhcp6_parser.yy"
+  case 458:
+#line 1586 "dhcp6_parser.yy"
     {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2584,41 +2620,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2588 "dhcp6_parser.cc"
+#line 2624 "dhcp6_parser.cc"
     break;
 
-  case 445:
-#line 1580 "dhcp6_parser.yy"
+  case 459:
+#line 1614 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pd-pools", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.PD_POOLS);
 }
-#line 2599 "dhcp6_parser.cc"
+#line 2635 "dhcp6_parser.cc"
     break;
 
-  case 446:
-#line 1585 "dhcp6_parser.yy"
+  case 460:
+#line 1619 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2608 "dhcp6_parser.cc"
+#line 2644 "dhcp6_parser.cc"
     break;
 
-  case 451:
-#line 1600 "dhcp6_parser.yy"
+  case 465:
+#line 1634 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2618 "dhcp6_parser.cc"
+#line 2654 "dhcp6_parser.cc"
     break;
 
-  case 452:
-#line 1604 "dhcp6_parser.yy"
+  case 466:
+#line 1638 "dhcp6_parser.yy"
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2626,21 +2662,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2630 "dhcp6_parser.cc"
+#line 2666 "dhcp6_parser.cc"
     break;
 
-  case 453:
-#line 1612 "dhcp6_parser.yy"
+  case 467:
+#line 1646 "dhcp6_parser.yy"
     {
     // Parse the pd-pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2640 "dhcp6_parser.cc"
+#line 2676 "dhcp6_parser.cc"
     break;
 
-  case 454:
-#line 1616 "dhcp6_parser.yy"
+  case 468:
+#line 1650 "dhcp6_parser.yy"
     {
     // The prefix, prefix len and delegated len parameters are required.
     ctx.require("prefix", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
@@ -2648,544 +2684,544 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2652 "dhcp6_parser.cc"
+#line 2688 "dhcp6_parser.cc"
     break;
 
-  case 468:
-#line 1641 "dhcp6_parser.yy"
+  case 482:
+#line 1675 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2660 "dhcp6_parser.cc"
+#line 2696 "dhcp6_parser.cc"
     break;
 
-  case 469:
-#line 1643 "dhcp6_parser.yy"
+  case 483:
+#line 1677 "dhcp6_parser.yy"
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix", prf);
     ctx.leave();
 }
-#line 2670 "dhcp6_parser.cc"
+#line 2706 "dhcp6_parser.cc"
     break;
 
-  case 470:
-#line 1649 "dhcp6_parser.yy"
+  case 484:
+#line 1683 "dhcp6_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefix-len", prf);
 }
-#line 2679 "dhcp6_parser.cc"
+#line 2715 "dhcp6_parser.cc"
     break;
 
-  case 471:
-#line 1654 "dhcp6_parser.yy"
+  case 485:
+#line 1688 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2687 "dhcp6_parser.cc"
+#line 2723 "dhcp6_parser.cc"
     break;
 
-  case 472:
-#line 1656 "dhcp6_parser.yy"
+  case 486:
+#line 1690 "dhcp6_parser.yy"
     {
     ElementPtr prf(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix", prf);
     ctx.leave();
 }
-#line 2697 "dhcp6_parser.cc"
+#line 2733 "dhcp6_parser.cc"
     break;
 
-  case 473:
-#line 1662 "dhcp6_parser.yy"
+  case 487:
+#line 1696 "dhcp6_parser.yy"
     {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("excluded-prefix-len", prf);
 }
-#line 2706 "dhcp6_parser.cc"
+#line 2742 "dhcp6_parser.cc"
     break;
 
-  case 474:
-#line 1667 "dhcp6_parser.yy"
+  case 488:
+#line 1701 "dhcp6_parser.yy"
     {
     ElementPtr deleg(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("delegated-len", deleg);
 }
-#line 2715 "dhcp6_parser.cc"
+#line 2751 "dhcp6_parser.cc"
     break;
 
-  case 475:
-#line 1675 "dhcp6_parser.yy"
+  case 489:
+#line 1709 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("reservations", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.RESERVATIONS);
 }
-#line 2726 "dhcp6_parser.cc"
+#line 2762 "dhcp6_parser.cc"
     break;
 
-  case 476:
-#line 1680 "dhcp6_parser.yy"
+  case 490:
+#line 1714 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2735 "dhcp6_parser.cc"
+#line 2771 "dhcp6_parser.cc"
     break;
 
-  case 481:
-#line 1693 "dhcp6_parser.yy"
+  case 495:
+#line 1727 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2745 "dhcp6_parser.cc"
+#line 2781 "dhcp6_parser.cc"
     break;
 
-  case 482:
-#line 1697 "dhcp6_parser.yy"
+  case 496:
+#line 1731 "dhcp6_parser.yy"
     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2754 "dhcp6_parser.cc"
+#line 2790 "dhcp6_parser.cc"
     break;
 
-  case 483:
-#line 1702 "dhcp6_parser.yy"
+  case 497:
+#line 1736 "dhcp6_parser.yy"
     {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2764 "dhcp6_parser.cc"
+#line 2800 "dhcp6_parser.cc"
     break;
 
-  case 484:
-#line 1706 "dhcp6_parser.yy"
+  case 498:
+#line 1740 "dhcp6_parser.yy"
     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2773 "dhcp6_parser.cc"
+#line 2809 "dhcp6_parser.cc"
     break;
 
-  case 500:
-#line 1733 "dhcp6_parser.yy"
+  case 514:
+#line 1767 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-addresses", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2784 "dhcp6_parser.cc"
+#line 2820 "dhcp6_parser.cc"
     break;
 
-  case 501:
-#line 1738 "dhcp6_parser.yy"
+  case 515:
+#line 1772 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2793 "dhcp6_parser.cc"
+#line 2829 "dhcp6_parser.cc"
     break;
 
-  case 502:
-#line 1743 "dhcp6_parser.yy"
+  case 516:
+#line 1777 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("prefixes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2804 "dhcp6_parser.cc"
+#line 2840 "dhcp6_parser.cc"
     break;
 
-  case 503:
-#line 1748 "dhcp6_parser.yy"
+  case 517:
+#line 1782 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2813 "dhcp6_parser.cc"
+#line 2849 "dhcp6_parser.cc"
     break;
 
-  case 504:
-#line 1753 "dhcp6_parser.yy"
+  case 518:
+#line 1787 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2821 "dhcp6_parser.cc"
+#line 2857 "dhcp6_parser.cc"
     break;
 
-  case 505:
-#line 1755 "dhcp6_parser.yy"
+  case 519:
+#line 1789 "dhcp6_parser.yy"
     {
     ElementPtr d(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("duid", d);
     ctx.leave();
 }
-#line 2831 "dhcp6_parser.cc"
+#line 2867 "dhcp6_parser.cc"
     break;
 
-  case 506:
-#line 1761 "dhcp6_parser.yy"
+  case 520:
+#line 1795 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2839 "dhcp6_parser.cc"
+#line 2875 "dhcp6_parser.cc"
     break;
 
-  case 507:
-#line 1763 "dhcp6_parser.yy"
+  case 521:
+#line 1797 "dhcp6_parser.yy"
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hw-address", hw);
     ctx.leave();
 }
-#line 2849 "dhcp6_parser.cc"
+#line 2885 "dhcp6_parser.cc"
     break;
 
-  case 508:
-#line 1769 "dhcp6_parser.yy"
+  case 522:
+#line 1803 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2857 "dhcp6_parser.cc"
+#line 2893 "dhcp6_parser.cc"
     break;
 
-  case 509:
-#line 1771 "dhcp6_parser.yy"
+  case 523:
+#line 1805 "dhcp6_parser.yy"
     {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname", host);
     ctx.leave();
 }
-#line 2867 "dhcp6_parser.cc"
+#line 2903 "dhcp6_parser.cc"
     break;
 
-  case 510:
-#line 1777 "dhcp6_parser.yy"
+  case 524:
+#line 1811 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2875 "dhcp6_parser.cc"
+#line 2911 "dhcp6_parser.cc"
     break;
 
-  case 511:
-#line 1779 "dhcp6_parser.yy"
+  case 525:
+#line 1813 "dhcp6_parser.yy"
     {
     ElementPtr hw(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flex-id", hw);
     ctx.leave();
 }
-#line 2885 "dhcp6_parser.cc"
+#line 2921 "dhcp6_parser.cc"
     break;
 
-  case 512:
-#line 1785 "dhcp6_parser.yy"
+  case 526:
+#line 1819 "dhcp6_parser.yy"
     {
     ElementPtr c(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", c);
     ctx.stack_.push_back(c);
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2896 "dhcp6_parser.cc"
+#line 2932 "dhcp6_parser.cc"
     break;
 
-  case 513:
-#line 1790 "dhcp6_parser.yy"
+  case 527:
+#line 1824 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2905 "dhcp6_parser.cc"
+#line 2941 "dhcp6_parser.cc"
     break;
 
-  case 514:
-#line 1798 "dhcp6_parser.yy"
+  case 528:
+#line 1832 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("relay", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.RELAY);
 }
-#line 2916 "dhcp6_parser.cc"
+#line 2952 "dhcp6_parser.cc"
     break;
 
-  case 515:
-#line 1803 "dhcp6_parser.yy"
+  case 529:
+#line 1837 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2925 "dhcp6_parser.cc"
+#line 2961 "dhcp6_parser.cc"
     break;
 
-  case 518:
-#line 1812 "dhcp6_parser.yy"
+  case 532:
+#line 1846 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2933 "dhcp6_parser.cc"
+#line 2969 "dhcp6_parser.cc"
     break;
 
-  case 519:
-#line 1814 "dhcp6_parser.yy"
+  case 533:
+#line 1848 "dhcp6_parser.yy"
     {
     ElementPtr addr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ip-address", addr);
     ctx.leave();
 }
-#line 2943 "dhcp6_parser.cc"
+#line 2979 "dhcp6_parser.cc"
     break;
 
-  case 520:
-#line 1823 "dhcp6_parser.yy"
+  case 534:
+#line 1857 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("client-classes", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CLIENT_CLASSES);
 }
-#line 2954 "dhcp6_parser.cc"
+#line 2990 "dhcp6_parser.cc"
     break;
 
-  case 521:
-#line 1828 "dhcp6_parser.yy"
+  case 535:
+#line 1862 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2963 "dhcp6_parser.cc"
+#line 2999 "dhcp6_parser.cc"
     break;
 
-  case 524:
-#line 1837 "dhcp6_parser.yy"
+  case 538:
+#line 1871 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2973 "dhcp6_parser.cc"
+#line 3009 "dhcp6_parser.cc"
     break;
 
-  case 525:
-#line 1841 "dhcp6_parser.yy"
+  case 539:
+#line 1875 "dhcp6_parser.yy"
     {
     // The name client class parameter is required.
     ctx.require("name", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2983 "dhcp6_parser.cc"
+#line 3019 "dhcp6_parser.cc"
     break;
 
-  case 538:
-#line 1866 "dhcp6_parser.yy"
+  case 552:
+#line 1900 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2991 "dhcp6_parser.cc"
+#line 3027 "dhcp6_parser.cc"
     break;
 
-  case 539:
-#line 1868 "dhcp6_parser.yy"
+  case 553:
+#line 1902 "dhcp6_parser.yy"
     {
     ElementPtr test(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("test", test);
     ctx.leave();
 }
-#line 3001 "dhcp6_parser.cc"
+#line 3037 "dhcp6_parser.cc"
     break;
 
-  case 540:
-#line 1874 "dhcp6_parser.yy"
+  case 554:
+#line 1908 "dhcp6_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("only-if-required", b);
 }
-#line 3010 "dhcp6_parser.cc"
+#line 3046 "dhcp6_parser.cc"
     break;
 
-  case 541:
-#line 1882 "dhcp6_parser.yy"
+  case 555:
+#line 1916 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-id", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.SERVER_ID);
 }
-#line 3021 "dhcp6_parser.cc"
+#line 3057 "dhcp6_parser.cc"
     break;
 
-  case 542:
-#line 1887 "dhcp6_parser.yy"
+  case 556:
+#line 1921 "dhcp6_parser.yy"
     {
     // The type parameter is required.
     ctx.require("type", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3032 "dhcp6_parser.cc"
+#line 3068 "dhcp6_parser.cc"
     break;
 
-  case 554:
-#line 1909 "dhcp6_parser.yy"
+  case 568:
+#line 1943 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3040 "dhcp6_parser.cc"
+#line 3076 "dhcp6_parser.cc"
     break;
 
-  case 555:
-#line 1911 "dhcp6_parser.yy"
+  case 569:
+#line 1945 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3049 "dhcp6_parser.cc"
+#line 3085 "dhcp6_parser.cc"
     break;
 
-  case 556:
-#line 1916 "dhcp6_parser.yy"
+  case 570:
+#line 1950 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3055 "dhcp6_parser.cc"
+#line 3091 "dhcp6_parser.cc"
     break;
 
-  case 557:
-#line 1917 "dhcp6_parser.yy"
+  case 571:
+#line 1951 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3061 "dhcp6_parser.cc"
+#line 3097 "dhcp6_parser.cc"
     break;
 
-  case 558:
-#line 1918 "dhcp6_parser.yy"
+  case 572:
+#line 1952 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3067 "dhcp6_parser.cc"
+#line 3103 "dhcp6_parser.cc"
     break;
 
-  case 559:
-#line 1921 "dhcp6_parser.yy"
+  case 573:
+#line 1955 "dhcp6_parser.yy"
     {
     ElementPtr htype(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("htype", htype);
 }
-#line 3076 "dhcp6_parser.cc"
+#line 3112 "dhcp6_parser.cc"
     break;
 
-  case 560:
-#line 1926 "dhcp6_parser.yy"
+  case 574:
+#line 1960 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3084 "dhcp6_parser.cc"
+#line 3120 "dhcp6_parser.cc"
     break;
 
-  case 561:
-#line 1928 "dhcp6_parser.yy"
+  case 575:
+#line 1962 "dhcp6_parser.yy"
     {
     ElementPtr id(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("identifier", id);
     ctx.leave();
 }
-#line 3094 "dhcp6_parser.cc"
+#line 3130 "dhcp6_parser.cc"
     break;
 
-  case 562:
-#line 1934 "dhcp6_parser.yy"
+  case 576:
+#line 1968 "dhcp6_parser.yy"
     {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("time", time);
 }
-#line 3103 "dhcp6_parser.cc"
+#line 3139 "dhcp6_parser.cc"
     break;
 
-  case 563:
-#line 1939 "dhcp6_parser.yy"
+  case 577:
+#line 1973 "dhcp6_parser.yy"
     {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enterprise-id", time);
 }
-#line 3112 "dhcp6_parser.cc"
+#line 3148 "dhcp6_parser.cc"
     break;
 
-  case 564:
-#line 1946 "dhcp6_parser.yy"
+  case 578:
+#line 1980 "dhcp6_parser.yy"
     {
     ElementPtr time(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp4o6-port", time);
 }
-#line 3121 "dhcp6_parser.cc"
+#line 3157 "dhcp6_parser.cc"
     break;
 
-  case 565:
-#line 1953 "dhcp6_parser.yy"
+  case 579:
+#line 1987 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("control-socket", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.CONTROL_SOCKET);
 }
-#line 3132 "dhcp6_parser.cc"
+#line 3168 "dhcp6_parser.cc"
     break;
 
-  case 566:
-#line 1958 "dhcp6_parser.yy"
+  case 580:
+#line 1992 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3141 "dhcp6_parser.cc"
+#line 3177 "dhcp6_parser.cc"
     break;
 
-  case 574:
-#line 1974 "dhcp6_parser.yy"
+  case 588:
+#line 2008 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3149 "dhcp6_parser.cc"
+#line 3185 "dhcp6_parser.cc"
     break;
 
-  case 575:
-#line 1976 "dhcp6_parser.yy"
+  case 589:
+#line 2010 "dhcp6_parser.yy"
     {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-type", stype);
     ctx.leave();
 }
-#line 3159 "dhcp6_parser.cc"
+#line 3195 "dhcp6_parser.cc"
     break;
 
-  case 576:
-#line 1982 "dhcp6_parser.yy"
+  case 590:
+#line 2016 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3167 "dhcp6_parser.cc"
+#line 3203 "dhcp6_parser.cc"
     break;
 
-  case 577:
-#line 1984 "dhcp6_parser.yy"
+  case 591:
+#line 2018 "dhcp6_parser.yy"
     {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("socket-name", name);
     ctx.leave();
 }
-#line 3177 "dhcp6_parser.cc"
+#line 3213 "dhcp6_parser.cc"
     break;
 
-  case 578:
-#line 1992 "dhcp6_parser.yy"
+  case 592:
+#line 2026 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3185 "dhcp6_parser.cc"
+#line 3221 "dhcp6_parser.cc"
     break;
 
-  case 579:
-#line 1994 "dhcp6_parser.yy"
+  case 593:
+#line 2028 "dhcp6_parser.yy"
     {
     ElementPtr qc = yystack_[0].value.as < ElementPtr > ();
     ctx.stack_.back()->set("dhcp-queue-control", qc);
@@ -3221,626 +3257,626 @@ namespace isc { namespace dhcp {
 
     ctx.leave();
 }
-#line 3225 "dhcp6_parser.cc"
+#line 3261 "dhcp6_parser.cc"
     break;
 
-  case 580:
-#line 2032 "dhcp6_parser.yy"
+  case 594:
+#line 2066 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-ddns", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.DHCP_DDNS);
 }
-#line 3236 "dhcp6_parser.cc"
+#line 3272 "dhcp6_parser.cc"
     break;
 
-  case 581:
-#line 2037 "dhcp6_parser.yy"
+  case 595:
+#line 2071 "dhcp6_parser.yy"
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3247 "dhcp6_parser.cc"
+#line 3283 "dhcp6_parser.cc"
     break;
 
-  case 582:
-#line 2044 "dhcp6_parser.yy"
+  case 596:
+#line 2078 "dhcp6_parser.yy"
     {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3257 "dhcp6_parser.cc"
+#line 3293 "dhcp6_parser.cc"
     break;
 
-  case 583:
-#line 2048 "dhcp6_parser.yy"
+  case 597:
+#line 2082 "dhcp6_parser.yy"
     {
     // The enable updates DHCP DDNS parameter is required.
     ctx.require("enable-updates", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 3267 "dhcp6_parser.cc"
+#line 3303 "dhcp6_parser.cc"
     break;
 
-  case 604:
-#line 2078 "dhcp6_parser.yy"
+  case 618:
+#line 2112 "dhcp6_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-updates", b);
 }
-#line 3276 "dhcp6_parser.cc"
+#line 3312 "dhcp6_parser.cc"
     break;
 
-  case 605:
-#line 2083 "dhcp6_parser.yy"
+  case 619:
+#line 2117 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3284 "dhcp6_parser.cc"
+#line 3320 "dhcp6_parser.cc"
     break;
 
-  case 606:
-#line 2085 "dhcp6_parser.yy"
+  case 620:
+#line 2119 "dhcp6_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("qualifying-suffix", s);
     ctx.leave();
 }
-#line 3294 "dhcp6_parser.cc"
+#line 3330 "dhcp6_parser.cc"
     break;
 
-  case 607:
-#line 2091 "dhcp6_parser.yy"
+  case 621:
+#line 2125 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3302 "dhcp6_parser.cc"
+#line 3338 "dhcp6_parser.cc"
     break;
 
-  case 608:
-#line 2093 "dhcp6_parser.yy"
+  case 622:
+#line 2127 "dhcp6_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-ip", s);
     ctx.leave();
 }
-#line 3312 "dhcp6_parser.cc"
+#line 3348 "dhcp6_parser.cc"
     break;
 
-  case 609:
-#line 2099 "dhcp6_parser.yy"
+  case 623:
+#line 2133 "dhcp6_parser.yy"
     {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("server-port", i);
 }
-#line 3321 "dhcp6_parser.cc"
+#line 3357 "dhcp6_parser.cc"
     break;
 
-  case 610:
-#line 2104 "dhcp6_parser.yy"
+  case 624:
+#line 2138 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3329 "dhcp6_parser.cc"
+#line 3365 "dhcp6_parser.cc"
     break;
 
-  case 611:
-#line 2106 "dhcp6_parser.yy"
+  case 625:
+#line 2140 "dhcp6_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-ip", s);
     ctx.leave();
 }
-#line 3339 "dhcp6_parser.cc"
+#line 3375 "dhcp6_parser.cc"
     break;
 
-  case 612:
-#line 2112 "dhcp6_parser.yy"
+  case 626:
+#line 2146 "dhcp6_parser.yy"
     {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("sender-port", i);
 }
-#line 3348 "dhcp6_parser.cc"
+#line 3384 "dhcp6_parser.cc"
     break;
 
-  case 613:
-#line 2117 "dhcp6_parser.yy"
+  case 627:
+#line 2151 "dhcp6_parser.yy"
     {
     ElementPtr i(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-queue-size", i);
 }
-#line 3357 "dhcp6_parser.cc"
+#line 3393 "dhcp6_parser.cc"
     break;
 
-  case 614:
-#line 2122 "dhcp6_parser.yy"
+  case 628:
+#line 2156 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3365 "dhcp6_parser.cc"
+#line 3401 "dhcp6_parser.cc"
     break;
 
-  case 615:
-#line 2124 "dhcp6_parser.yy"
+  case 629:
+#line 2158 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3374 "dhcp6_parser.cc"
+#line 3410 "dhcp6_parser.cc"
     break;
 
-  case 616:
-#line 2130 "dhcp6_parser.yy"
+  case 630:
+#line 2164 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3380 "dhcp6_parser.cc"
+#line 3416 "dhcp6_parser.cc"
     break;
 
-  case 617:
-#line 2131 "dhcp6_parser.yy"
+  case 631:
+#line 2165 "dhcp6_parser.yy"
     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3386 "dhcp6_parser.cc"
+#line 3422 "dhcp6_parser.cc"
     break;
 
-  case 618:
-#line 2134 "dhcp6_parser.yy"
+  case 632:
+#line 2168 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3394 "dhcp6_parser.cc"
+#line 3430 "dhcp6_parser.cc"
     break;
 
-  case 619:
-#line 2136 "dhcp6_parser.yy"
+  case 633:
+#line 2170 "dhcp6_parser.yy"
     {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3404 "dhcp6_parser.cc"
+#line 3440 "dhcp6_parser.cc"
     break;
 
-  case 620:
-#line 2142 "dhcp6_parser.yy"
+  case 634:
+#line 2176 "dhcp6_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-no-update", b);
 }
-#line 3413 "dhcp6_parser.cc"
+#line 3449 "dhcp6_parser.cc"
     break;
 
-  case 621:
-#line 2147 "dhcp6_parser.yy"
+  case 635:
+#line 2181 "dhcp6_parser.yy"
     {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("override-client-update", b);
 }
-#line 3422 "dhcp6_parser.cc"
+#line 3458 "dhcp6_parser.cc"
     break;
 
-  case 622:
-#line 2152 "dhcp6_parser.yy"
+  case 636:
+#line 2186 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3430 "dhcp6_parser.cc"
+#line 3466 "dhcp6_parser.cc"
     break;
 
-  case 623:
-#line 2154 "dhcp6_parser.yy"
+  case 637:
+#line 2188 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3439 "dhcp6_parser.cc"
+#line 3475 "dhcp6_parser.cc"
     break;
 
-  case 624:
-#line 2160 "dhcp6_parser.yy"
+  case 638:
+#line 2194 "dhcp6_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3447 "dhcp6_parser.cc"
+#line 3483 "dhcp6_parser.cc"
     break;
 
-  case 625:
-#line 2163 "dhcp6_parser.yy"
+  case 639:
+#line 2197 "dhcp6_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3455 "dhcp6_parser.cc"
+#line 3491 "dhcp6_parser.cc"
     break;
 
-  case 626:
-#line 2166 "dhcp6_parser.yy"
+  case 640:
+#line 2200 "dhcp6_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3463 "dhcp6_parser.cc"
+#line 3499 "dhcp6_parser.cc"
     break;
 
-  case 627:
-#line 2169 "dhcp6_parser.yy"
+  case 641:
+#line 2203 "dhcp6_parser.yy"
     {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
-#line 3471 "dhcp6_parser.cc"
+#line 3507 "dhcp6_parser.cc"
     break;
 
-  case 628:
-#line 2172 "dhcp6_parser.yy"
+  case 642:
+#line 2206 "dhcp6_parser.yy"
     {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
       }
-#line 3480 "dhcp6_parser.cc"
+#line 3516 "dhcp6_parser.cc"
     break;
 
-  case 629:
-#line 2178 "dhcp6_parser.yy"
+  case 643:
+#line 2212 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3488 "dhcp6_parser.cc"
+#line 3524 "dhcp6_parser.cc"
     break;
 
-  case 630:
-#line 2180 "dhcp6_parser.yy"
+  case 644:
+#line 2214 "dhcp6_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("generated-prefix", s);
     ctx.leave();
 }
-#line 3498 "dhcp6_parser.cc"
+#line 3534 "dhcp6_parser.cc"
     break;
 
-  case 631:
-#line 2186 "dhcp6_parser.yy"
+  case 645:
+#line 2220 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3506 "dhcp6_parser.cc"
+#line 3542 "dhcp6_parser.cc"
     break;
 
-  case 632:
-#line 2188 "dhcp6_parser.yy"
+  case 646:
+#line 2222 "dhcp6_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-set", s);
     ctx.leave();
 }
-#line 3516 "dhcp6_parser.cc"
+#line 3552 "dhcp6_parser.cc"
     break;
 
-  case 633:
-#line 2194 "dhcp6_parser.yy"
+  case 647:
+#line 2228 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3524 "dhcp6_parser.cc"
+#line 3560 "dhcp6_parser.cc"
     break;
 
-  case 634:
-#line 2196 "dhcp6_parser.yy"
+  case 648:
+#line 2230 "dhcp6_parser.yy"
     {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("hostname-char-replacement", s);
     ctx.leave();
 }
-#line 3534 "dhcp6_parser.cc"
+#line 3570 "dhcp6_parser.cc"
     break;
 
-  case 635:
-#line 2204 "dhcp6_parser.yy"
+  case 649:
+#line 2238 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3542 "dhcp6_parser.cc"
+#line 3578 "dhcp6_parser.cc"
     break;
 
-  case 636:
-#line 2206 "dhcp6_parser.yy"
+  case 650:
+#line 2240 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("Dhcp4", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3551 "dhcp6_parser.cc"
+#line 3587 "dhcp6_parser.cc"
     break;
 
-  case 637:
-#line 2211 "dhcp6_parser.yy"
+  case 651:
+#line 2245 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3559 "dhcp6_parser.cc"
+#line 3595 "dhcp6_parser.cc"
     break;
 
-  case 638:
-#line 2213 "dhcp6_parser.yy"
+  case 652:
+#line 2247 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("DhcpDdns", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3568 "dhcp6_parser.cc"
+#line 3604 "dhcp6_parser.cc"
     break;
 
-  case 639:
-#line 2218 "dhcp6_parser.yy"
+  case 653:
+#line 2252 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3576 "dhcp6_parser.cc"
+#line 3612 "dhcp6_parser.cc"
     break;
 
-  case 640:
-#line 2220 "dhcp6_parser.yy"
+  case 654:
+#line 2254 "dhcp6_parser.yy"
     {
     ctx.stack_.back()->set("Control-agent", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3585 "dhcp6_parser.cc"
+#line 3621 "dhcp6_parser.cc"
     break;
 
-  case 641:
-#line 2227 "dhcp6_parser.yy"
+  case 655:
+#line 2261 "dhcp6_parser.yy"
     {
     ElementPtr i(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-control", i);
     ctx.stack_.push_back(i);
     ctx.enter(ctx.CONFIG_CONTROL);
 }
-#line 3596 "dhcp6_parser.cc"
+#line 3632 "dhcp6_parser.cc"
     break;
 
-  case 642:
-#line 2232 "dhcp6_parser.yy"
+  case 656:
+#line 2266 "dhcp6_parser.yy"
     {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3606 "dhcp6_parser.cc"
+#line 3642 "dhcp6_parser.cc"
     break;
 
-  case 643:
-#line 2238 "dhcp6_parser.yy"
+  case 657:
+#line 2272 "dhcp6_parser.yy"
     {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3616 "dhcp6_parser.cc"
+#line 3652 "dhcp6_parser.cc"
     break;
 
-  case 644:
-#line 2242 "dhcp6_parser.yy"
+  case 658:
+#line 2276 "dhcp6_parser.yy"
     {
     // No config_control params are required
     // parsing completed
 }
-#line 3625 "dhcp6_parser.cc"
+#line 3661 "dhcp6_parser.cc"
     break;
 
-  case 649:
-#line 2257 "dhcp6_parser.yy"
+  case 663:
+#line 2291 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-databases", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.CONFIG_DATABASE);
 }
-#line 3636 "dhcp6_parser.cc"
+#line 3672 "dhcp6_parser.cc"
     break;
 
-  case 650:
-#line 2262 "dhcp6_parser.yy"
+  case 664:
+#line 2296 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3645 "dhcp6_parser.cc"
+#line 3681 "dhcp6_parser.cc"
     break;
 
-  case 651:
-#line 2267 "dhcp6_parser.yy"
+  case 665:
+#line 2301 "dhcp6_parser.yy"
     {
     ElementPtr value(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("config-fetch-wait-time", value);
 }
-#line 3654 "dhcp6_parser.cc"
+#line 3690 "dhcp6_parser.cc"
     break;
 
-  case 652:
-#line 2277 "dhcp6_parser.yy"
+  case 666:
+#line 2311 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("Logging", m);
     ctx.stack_.push_back(m);
     ctx.enter(ctx.LOGGING);
 }
-#line 3665 "dhcp6_parser.cc"
+#line 3701 "dhcp6_parser.cc"
     break;
 
-  case 653:
-#line 2282 "dhcp6_parser.yy"
+  case 667:
+#line 2316 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3674 "dhcp6_parser.cc"
+#line 3710 "dhcp6_parser.cc"
     break;
 
-  case 654:
-#line 2287 "dhcp6_parser.yy"
+  case 668:
+#line 2321 "dhcp6_parser.yy"
     {
     // Parse the Logging map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3684 "dhcp6_parser.cc"
+#line 3720 "dhcp6_parser.cc"
     break;
 
-  case 655:
-#line 2291 "dhcp6_parser.yy"
+  case 669:
+#line 2325 "dhcp6_parser.yy"
     {
     // parsing completed
 }
-#line 3692 "dhcp6_parser.cc"
+#line 3728 "dhcp6_parser.cc"
     break;
 
-  case 659:
-#line 2307 "dhcp6_parser.yy"
+  case 673:
+#line 2341 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("loggers", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.LOGGERS);
 }
-#line 3703 "dhcp6_parser.cc"
+#line 3739 "dhcp6_parser.cc"
     break;
 
-  case 660:
-#line 2312 "dhcp6_parser.yy"
+  case 674:
+#line 2346 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3712 "dhcp6_parser.cc"
+#line 3748 "dhcp6_parser.cc"
     break;
 
-  case 663:
-#line 2324 "dhcp6_parser.yy"
+  case 677:
+#line 2358 "dhcp6_parser.yy"
     {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3722 "dhcp6_parser.cc"
+#line 3758 "dhcp6_parser.cc"
     break;
 
-  case 664:
-#line 2328 "dhcp6_parser.yy"
+  case 678:
+#line 2362 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
 }
-#line 3730 "dhcp6_parser.cc"
+#line 3766 "dhcp6_parser.cc"
     break;
 
-  case 674:
-#line 2345 "dhcp6_parser.yy"
+  case 688:
+#line 2379 "dhcp6_parser.yy"
     {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("debuglevel", dl);
 }
-#line 3739 "dhcp6_parser.cc"
+#line 3775 "dhcp6_parser.cc"
     break;
 
-  case 675:
-#line 2350 "dhcp6_parser.yy"
+  case 689:
+#line 2384 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3747 "dhcp6_parser.cc"
+#line 3783 "dhcp6_parser.cc"
     break;
 
-  case 676:
-#line 2352 "dhcp6_parser.yy"
+  case 690:
+#line 2386 "dhcp6_parser.yy"
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("severity", sev);
     ctx.leave();
 }
-#line 3757 "dhcp6_parser.cc"
+#line 3793 "dhcp6_parser.cc"
     break;
 
-  case 677:
-#line 2358 "dhcp6_parser.yy"
+  case 691:
+#line 2392 "dhcp6_parser.yy"
     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output_options", l);
     ctx.stack_.push_back(l);
     ctx.enter(ctx.OUTPUT_OPTIONS);
 }
-#line 3768 "dhcp6_parser.cc"
+#line 3804 "dhcp6_parser.cc"
     break;
 
-  case 678:
-#line 2363 "dhcp6_parser.yy"
+  case 692:
+#line 2397 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3777 "dhcp6_parser.cc"
+#line 3813 "dhcp6_parser.cc"
     break;
 
-  case 681:
-#line 2372 "dhcp6_parser.yy"
+  case 695:
+#line 2406 "dhcp6_parser.yy"
     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3787 "dhcp6_parser.cc"
+#line 3823 "dhcp6_parser.cc"
     break;
 
-  case 682:
-#line 2376 "dhcp6_parser.yy"
+  case 696:
+#line 2410 "dhcp6_parser.yy"
     {
     ctx.stack_.pop_back();
 }
-#line 3795 "dhcp6_parser.cc"
+#line 3831 "dhcp6_parser.cc"
     break;
 
-  case 689:
-#line 2390 "dhcp6_parser.yy"
+  case 703:
+#line 2424 "dhcp6_parser.yy"
     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3803 "dhcp6_parser.cc"
+#line 3839 "dhcp6_parser.cc"
     break;
 
-  case 690:
-#line 2392 "dhcp6_parser.yy"
+  case 704:
+#line 2426 "dhcp6_parser.yy"
     {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("output", sev);
     ctx.leave();
 }
-#line 3813 "dhcp6_parser.cc"
+#line 3849 "dhcp6_parser.cc"
     break;
 
-  case 691:
-#line 2398 "dhcp6_parser.yy"
+  case 705:
+#line 2432 "dhcp6_parser.yy"
     {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3822 "dhcp6_parser.cc"
+#line 3858 "dhcp6_parser.cc"
     break;
 
-  case 692:
-#line 2403 "dhcp6_parser.yy"
+  case 706:
+#line 2437 "dhcp6_parser.yy"
     {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxsize", maxsize);
 }
-#line 3831 "dhcp6_parser.cc"
+#line 3867 "dhcp6_parser.cc"
     break;
 
-  case 693:
-#line 2408 "dhcp6_parser.yy"
+  case 707:
+#line 2442 "dhcp6_parser.yy"
     {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("maxver", maxver);
 }
-#line 3840 "dhcp6_parser.cc"
+#line 3876 "dhcp6_parser.cc"
     break;
 
 
-#line 3844 "dhcp6_parser.cc"
+#line 3880 "dhcp6_parser.cc"
 
             default:
               break;
@@ -4111,126 +4147,128 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -855;
+  const short Dhcp6Parser::yypact_ninf_ = -873;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     317,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,    46,    70,    63,    65,
-      71,   100,   169,   170,   201,   212,   217,   245,   270,   271,
-     280,   298,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,    70,   -33,    32,    74,    27,   216,   249,   229,
-     377,   149,    76,   398,   -10,   391,   105,   138,  -855,   252,
-     303,   311,   305,   313,  -855,  -855,  -855,  -855,  -855,   321,
-    -855,    37,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,   322,   330,   331,   343,   347,   351,
-     365,   367,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   368,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,    73,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   375,  -855,
-     127,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,   385,   397,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,   133,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,   137,  -855,  -855,  -855,
-    -855,  -855,   407,  -855,   428,   438,  -855,  -855,  -855,  -855,
-    -855,  -855,   160,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-     346,   378,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-     440,  -855,  -855,   442,  -855,  -855,  -855,   447,  -855,  -855,
-     451,   457,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,   461,   462,  -855,  -855,  -855,
-    -855,   460,   466,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,   171,  -855,  -855,  -855,   468,
-    -855,  -855,   490,  -855,   491,   492,  -855,  -855,   493,   494,
-    -855,  -855,  -855,  -855,  -855,   172,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,   181,  -855,  -855,  -855,   495,   182,  -855,  -855,
-    -855,  -855,    70,    70,  -855,   323,   497,   498,   499,   500,
-     501,  -855,    32,  -855,   502,   504,   507,   508,   509,   510,
-     337,   339,   340,   356,   336,   354,   357,   360,   531,   537,
-     538,   539,   544,   545,   546,   547,   548,   549,   551,   552,
-     553,   554,   555,   556,   557,   384,   559,   562,   563,   567,
-     570,   572,    74,  -855,   573,   399,    27,  -855,   574,   576,
-     577,   578,   579,   406,   405,   582,   583,   584,   216,  -855,
-     588,   249,  -855,   590,   418,   593,   420,   421,   229,  -855,
-     596,   597,   598,   599,   600,   601,   602,  -855,   377,  -855,
-     603,   604,   431,   606,   607,   608,   433,  -855,    76,   612,
-     439,   441,  -855,   398,   614,   616,   -18,  -855,   443,   618,
-     620,   448,   621,   449,   450,   625,   626,   452,   453,   630,
-     631,   391,  -855,   105,  -855,   632,   459,   138,  -855,  -855,
-    -855,   634,   633,   635,    70,    70,    70,  -855,   464,   636,
-     637,   638,   639,   642,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,   471,   644,   645,   647,   646,   477,    33,   650,
-     651,   652,   653,   654,   655,   657,   658,   659,   660,  -855,
-     661,   646,   662,   482,   487,   665,  -855,   666,  -855,  -855,
-     667,   668,   488,   503,   505,  -855,  -855,   666,   506,   669,
-    -855,   511,  -855,   512,  -855,   513,  -855,  -855,  -855,   666,
-     666,   666,   514,   515,   516,   517,  -855,   518,   519,  -855,
-     520,   521,   522,  -855,  -855,   523,  -855,  -855,  -855,   524,
-      70,  -855,  -855,   525,   526,  -855,   527,  -855,  -855,    24,
-     496,  -855,  -855,    26,   528,  -855,  -855,   670,  -855,  -855,
-      70,    74,   105,  -855,  -855,  -855,  -855,   138,    27,   200,
-     200,   671,  -855,   672,   674,   677,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,   678,   -27,    70,   324,   585,   679,
-     680,   699,   163,    36,    18,  -855,   391,  -855,  -855,   700,
-    -855,  -855,   701,   702,  -855,  -855,  -855,  -855,  -855,   -44,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,   671,  -855,   191,   195,   202,   208,  -855,  -855,
-    -855,  -855,   673,   706,   707,   708,   709,  -855,   710,   711,
-    -855,  -855,  -855,   712,   713,   714,  -855,   276,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   278,  -855,
-     715,   716,  -855,  -855,   717,   719,  -855,  -855,   718,   722,
-    -855,  -855,   720,   724,  -855,  -855,   723,   725,  -855,  -855,
-    -855,   126,  -855,  -855,  -855,   726,  -855,  -855,  -855,   180,
-    -855,  -855,  -855,  -855,   301,  -855,  -855,  -855,   214,  -855,
-    -855,   727,   728,  -855,  -855,   729,   731,  -855,   732,   733,
-     734,   735,   736,   737,   309,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,   738,   739,   740,  -855,  -855,  -855,
-    -855,   316,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,   334,  -855,  -855,  -855,   338,  -855,   251,
-    -855,   543,  -855,   741,   742,  -855,  -855,   743,   745,  -855,
-    -855,  -855,   744,  -855,   747,  -855,  -855,  -855,  -855,   746,
-     750,   751,   752,   568,   550,   580,   571,   581,   753,   586,
-     587,   756,   757,   758,   589,   591,   592,   200,  -855,  -855,
-     200,  -855,   671,   216,  -855,   672,    76,  -855,   674,   398,
-    -855,   677,   284,  -855,   678,   -27,  -855,  -855,   324,  -855,
-     759,   585,  -855,    10,   679,  -855,   377,  -855,   680,   -10,
-    -855,   699,   595,   605,   609,   610,   611,   613,   163,  -855,
-     762,   764,   615,   617,   619,    36,  -855,   766,   767,    18,
-    -855,  -855,   355,   700,  -855,  -855,   768,   772,   249,  -855,
-     701,   229,  -855,   702,   773,  -855,  -855,   221,   623,   624,
-     627,  -855,  -855,  -855,  -855,  -855,   629,  -855,  -855,   640,
-     641,   675,  -855,  -855,  -855,  -855,   341,  -855,   342,  -855,
-     770,  -855,   771,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-     350,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   686,
-    -855,  -855,   776,  -855,  -855,  -855,  -855,  -855,   774,   778,
-    -855,  -855,  -855,  -855,  -855,   777,  -855,   358,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,   318,   697,  -855,  -855,
-    -855,  -855,   703,   704,  -855,  -855,   780,  -855,  -855,  -855,
-    -855,  -855,   362,  -855,  -855,  -855,  -855,  -855,  -855,   705,
-     379,  -855,   388,  -855,   721,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,   284,  -855,  -855,   782,   648,  -855,    10,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,   786,   643,   788,
-     355,  -855,  -855,  -855,  -855,  -855,  -855,   730,  -855,  -855,
-     789,  -855,   748,  -855,  -855,   769,  -855,  -855,   263,  -855,
-     -52,   769,  -855,  -855,   792,   794,   803,   400,  -855,  -855,
-    -855,  -855,  -855,  -855,   805,   749,   656,   754,   -52,  -855,
-     760,  -855,  -855,  -855,  -855,  -855
+     486,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,    38,    36,    33,    47,
+      49,    62,   114,   118,   149,   161,   162,   175,   195,   199,
+     203,   205,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,    36,  -133,    24,   181,    42,   448,    81,    72,
+      59,    31,    61,   261,   -57,   214,    40,   127,  -873,   235,
+     253,   299,   257,   281,  -873,  -873,  -873,  -873,  -873,   313,
+    -873,    41,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,   338,   339,   355,   357,   367,   368,
+     369,   371,   377,   383,   387,   395,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,   404,  -873,  -873,  -873,  -873,  -873,    84,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   405,  -873,   172,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,   406,   409,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   178,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,   182,  -873,  -873,  -873,  -873,  -873,
+     411,  -873,   414,   417,  -873,  -873,  -873,  -873,  -873,  -873,
+     251,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,   298,   382,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,   333,  -873,
+    -873,   418,  -873,  -873,  -873,   428,  -873,  -873,   393,   400,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,   432,   433,  -873,  -873,  -873,  -873,   435,
+     437,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,   273,  -873,  -873,  -873,   440,  -873,  -873,
+     444,  -873,   449,   450,  -873,  -873,   452,   454,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,   279,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   290,  -873,  -873,  -873,   456,   292,  -873,  -873,
+    -873,  -873,    36,    36,  -873,   271,   457,   462,   465,   467,
+     469,  -873,    24,  -873,   470,   472,   473,   474,   480,   481,
+     259,   304,   305,   306,   307,   320,   321,   322,   328,   334,
+     340,   329,   501,   503,   504,   505,   506,   515,   516,   517,
+     518,   528,   529,   530,   531,   532,   533,   534,   535,   358,
+     537,   538,   540,   541,   181,  -873,   544,   365,    42,  -873,
+     546,   547,   548,   549,   552,   375,   374,   555,   556,   557,
+     448,  -873,   559,    81,  -873,   560,   384,   561,   385,   386,
+      72,  -873,   566,   567,   568,   569,   570,   571,   572,  -873,
+      59,  -873,   573,   574,   401,   575,   577,   578,   402,  -873,
+      61,   580,   407,   408,  -873,   261,   581,   585,   112,  -873,
+     410,   589,   591,   415,   594,   420,   421,   595,   596,   412,
+     423,   600,   605,   606,   607,   214,  -873,    40,  -873,   608,
+     431,   127,  -873,  -873,  -873,   610,   609,   611,    36,    36,
+      36,  -873,   434,   612,   613,   615,   617,   620,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+     436,   621,   622,   623,   624,   451,   341,   625,   628,   629,
+     662,   663,   668,   671,   672,   673,   674,  -873,   675,   624,
+     676,   679,  -873,   680,  -873,  -873,   681,   683,   497,   498,
+     508,  -873,  -873,   680,   510,   685,  -873,   512,  -873,   513,
+    -873,   514,  -873,  -873,  -873,   680,   680,   680,   519,   520,
+     521,   522,  -873,   523,   524,  -873,   525,   526,   527,  -873,
+    -873,   536,  -873,  -873,  -873,   539,    36,  -873,  -873,   542,
+     543,  -873,   545,  -873,  -873,   170,   550,  -873,  -873,    23,
+     551,   553,   554,  -873,  -873,   691,  -873,  -873,    36,   181,
+      40,  -873,  -873,  -873,  -873,   127,    42,    74,    74,   692,
+    -873,   702,   703,   704,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   705,   -52,    36,    29,   626,   706,   707,   708,
+     135,   121,   132,  -873,   214,   709,  -873,  -873,   711,   714,
+    -873,  -873,  -873,  -873,  -873,   -65,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+     692,  -873,   293,   301,   302,   311,  -873,  -873,  -873,  -873,
+     718,   721,   723,   724,   725,  -873,   726,   727,  -873,  -873,
+    -873,   729,   732,   733,  -873,   323,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,   324,  -873,   734,   735,
+    -873,  -873,   736,   738,  -873,  -873,   737,   741,  -873,  -873,
+     739,   743,  -873,  -873,   742,   744,  -873,  -873,  -873,    93,
+    -873,  -873,  -873,   745,  -873,  -873,  -873,   188,  -873,  -873,
+    -873,  -873,   325,  -873,  -873,  -873,   260,  -873,  -873,   746,
+     747,  -873,  -873,   748,   750,  -873,   751,   752,   753,   754,
+     755,   756,   326,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   757,   758,   759,  -873,  -873,  -873,  -873,   327,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,   336,  -873,  -873,  -873,   337,  -873,   280,  -873,   558,
+    -873,   760,   761,  -873,  -873,   762,   764,  -873,  -873,  -873,
+     763,  -873,   766,  -873,  -873,  -873,  -873,   765,   770,   771,
+     772,   583,   565,   588,   593,   597,   774,   598,   599,   778,
+     779,   780,   603,   604,   614,    74,  -873,  -873,    74,  -873,
+     692,   448,  -873,   702,    61,  -873,   703,   261,  -873,   704,
+     592,  -873,   705,   -52,  -873,  -873,    29,  -873,   783,   626,
+    -873,   107,   706,  -873,    59,  -873,   707,   -57,  -873,   708,
+     618,   619,   627,   630,   631,   632,   135,  -873,   784,   785,
+     633,   634,   636,   121,  -873,   786,   787,   132,  -873,  -873,
+      -4,   709,  -873,  -873,   788,   789,    81,  -873,   711,    72,
+    -873,   714,   791,  -873,  -873,   458,   616,   638,   641,  -873,
+    -873,  -873,  -873,  -873,   643,  -873,  -873,   644,   646,   651,
+    -873,  -873,  -873,  -873,   360,  -873,   362,  -873,   794,  -873,
+     795,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   366,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,   653,  -873,  -873,   792,  -873,  -873,  -873,  -873,  -873,
+     796,   790,  -873,  -873,  -873,  -873,  -873,   797,  -873,   380,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,   -40,   655,
+    -873,  -873,  -873,  -873,   658,   664,  -873,  -873,   802,  -873,
+    -873,  -873,  -873,  -873,   381,  -873,  -873,  -873,  -873,  -873,
+    -873,   665,   390,  -873,   397,  -873,   666,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,   592,  -873,  -873,   803,   684,  -873,   107,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,   804,
+     667,   806,    -4,  -873,  -873,  -873,  -873,  -873,  -873,   669,
+    -873,  -873,   847,  -873,   686,  -873,  -873,   849,  -873,  -873,
+     291,  -873,   117,   849,  -873,  -873,   807,   853,   860,   399,
+    -873,  -873,  -873,  -873,  -873,  -873,   869,   694,   713,   716,
+     117,  -873,   710,  -873,  -873,  -873,  -873,  -873
   };
 
   const unsigned short
@@ -4240,160 +4278,163 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,    28,    30,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     1,    47,    40,    36,    35,    32,    33,    34,
-      39,     3,    37,    38,    60,     5,    72,     7,   129,     9,
-     276,    11,   428,    13,   453,    15,   483,    17,   353,    19,
-     361,    21,   398,    23,   241,    25,   582,    27,   654,    29,
-     643,    31,    49,    43,     0,     0,     0,     0,     0,     0,
-     485,     0,   363,   400,     0,     0,     0,     0,    51,     0,
-      50,     0,     0,    44,    70,   652,   635,   637,   639,     0,
-      69,     0,    62,    64,    66,    67,    68,    65,   115,   641,
-     127,   141,   143,   145,     0,     0,     0,     0,     0,     0,
-       0,     0,   125,   268,   351,   390,   441,   443,   313,   321,
-     214,   231,   222,   207,   520,   475,   233,   252,   541,     0,
-     565,   578,   580,   631,   633,   659,   114,     0,    74,    76,
-      77,    78,    79,    80,   108,   109,   110,    81,   106,    84,
-      85,    86,    87,   103,    88,    90,    89,    94,    95,    82,
-     107,    83,    92,    93,   101,   102,   104,    91,    96,    97,
-      98,    99,   100,   112,   113,   105,   111,   138,     0,   137,
-       0,   131,   133,   134,   135,   136,   420,   445,   303,   305,
-     307,     0,     0,   311,   309,   514,   302,   280,   281,   282,
-     283,   299,   300,   301,     0,   278,   287,   288,   289,   292,
-     293,   295,   290,   291,   284,   285,   297,   298,   286,   294,
-     296,   439,   438,   434,   435,   433,     0,   430,   432,   436,
-     437,   468,     0,   471,     0,     0,   467,   461,   462,   460,
-     465,   466,     0,   455,   457,   458,   463,   464,   459,   512,
-     500,   502,   504,   506,   508,   510,   499,   496,   497,   498,
-       0,   486,   487,   491,   492,   489,   493,   494,   495,   490,
-       0,   380,   188,     0,   384,   382,   387,     0,   376,   377,
-       0,   364,   365,   367,   379,   368,   369,   370,   386,   371,
-     372,   373,   374,   375,   414,     0,     0,   412,   413,   416,
-     417,     0,   401,   402,   404,   405,   406,   407,   408,   409,
-     410,   411,   248,   250,   245,     0,   243,   246,   247,     0,
-     605,   607,     0,   610,     0,     0,   614,   618,     0,     0,
-     622,   629,   603,   601,   602,     0,   584,   586,   587,   588,
-     589,   590,   591,   592,   593,   594,   595,   596,   597,   598,
-     599,   600,     0,   656,   658,   649,     0,     0,   645,   647,
-     648,    48,     0,     0,    41,     0,     0,     0,     0,     0,
+      39,     3,    37,    38,    60,     5,    72,     7,   135,     9,
+     282,    11,   442,    13,   467,    15,   497,    17,   367,    19,
+     375,    21,   412,    23,   247,    25,   596,    27,   668,    29,
+     657,    31,    49,    43,     0,     0,     0,     0,     0,     0,
+     499,     0,   377,   414,     0,     0,     0,     0,    51,     0,
+      50,     0,     0,    44,    70,   666,   649,   651,   653,     0,
+      69,     0,    62,    64,    66,    67,    68,    65,   117,   655,
+     133,   147,   149,   151,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   131,   274,   365,   404,
+     455,   457,   323,   331,   220,   237,   228,   213,   534,   489,
+     239,   258,   555,     0,   579,   592,   594,   673,   116,     0,
+      74,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+     112,   113,   114,    85,   110,    88,    89,    90,    91,   107,
+      92,    94,    93,    98,    99,    86,   111,    87,    96,    97,
+     105,   106,   108,    95,   100,   101,   102,   103,   104,   109,
+     115,   144,     0,   143,     0,   137,   139,   140,   141,   142,
+     434,   459,   313,   315,   317,     0,     0,   321,   319,   528,
+     312,   286,   287,   288,   289,   290,   291,   292,   293,   309,
+     310,   311,     0,   284,   297,   298,   299,   302,   303,   305,
+     300,   301,   294,   295,   307,   308,   296,   304,   306,   453,
+     452,   448,   449,   447,     0,   444,   446,   450,   451,   482,
+       0,   485,     0,     0,   481,   475,   476,   474,   479,   480,
+       0,   469,   471,   472,   477,   478,   473,   526,   514,   516,
+     518,   520,   522,   524,   513,   510,   511,   512,     0,   500,
+     501,   505,   506,   503,   507,   508,   509,   504,     0,   394,
+     194,     0,   398,   396,   401,     0,   390,   391,     0,   378,
+     379,   381,   393,   382,   383,   384,   400,   385,   386,   387,
+     388,   389,   428,     0,     0,   426,   427,   430,   431,     0,
+     415,   416,   418,   419,   420,   421,   422,   423,   424,   425,
+     254,   256,   251,     0,   249,   252,   253,     0,   619,   621,
+       0,   624,     0,     0,   628,   632,     0,     0,   636,   643,
+     645,   647,   617,   615,   616,     0,   598,   600,   601,   602,
+     603,   604,   605,   606,   607,   608,   609,   610,   611,   612,
+     613,   614,     0,   670,   672,   663,     0,     0,   659,   661,
+     662,    48,     0,     0,    41,     0,     0,     0,     0,     0,
        0,    59,     0,    61,     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,    73,     0,     0,     0,   130,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   277,
-       0,     0,   429,     0,     0,     0,     0,     0,     0,   454,
-       0,     0,     0,     0,     0,     0,     0,   484,     0,   354,
-       0,     0,     0,     0,     0,     0,     0,   362,     0,     0,
-       0,     0,   399,     0,     0,     0,     0,   242,     0,     0,
+       0,     0,     0,     0,     0,    73,     0,     0,     0,   136,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   283,     0,     0,   443,     0,     0,     0,     0,     0,
+       0,   468,     0,     0,     0,     0,     0,     0,     0,   498,
+       0,   368,     0,     0,     0,     0,     0,     0,     0,   376,
+       0,     0,     0,     0,   413,     0,     0,     0,     0,   248,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   583,     0,   655,     0,     0,     0,   644,    52,
-      45,     0,     0,     0,     0,     0,     0,    63,     0,     0,
-       0,     0,     0,     0,   117,   118,   119,   120,   121,   122,
-     123,   124,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   564,
-       0,     0,     0,     0,     0,     0,    75,     0,   140,   132,
-       0,     0,     0,     0,     0,   319,   320,     0,     0,     0,
-     279,     0,   431,     0,   470,     0,   473,   474,   456,     0,
-       0,     0,     0,     0,     0,     0,   488,     0,     0,   378,
-       0,     0,     0,   389,   366,     0,   418,   419,   403,     0,
-       0,   244,   604,     0,     0,   609,     0,   612,   613,     0,
-       0,   620,   621,     0,     0,   585,   657,     0,   651,   646,
-       0,     0,     0,   636,   638,   640,   116,     0,     0,     0,
-       0,   147,   126,   270,   355,   392,    42,   442,   444,   315,
-     316,   317,   318,   314,   323,     0,    49,     0,     0,     0,
-     477,   235,     0,     0,     0,   579,     0,   632,   634,     0,
-      53,   139,   422,   447,   304,   306,   308,   312,   310,     0,
-     440,   469,   472,   513,   501,   503,   505,   507,   509,   511,
-     381,   189,   385,   383,   388,   415,   249,   251,   606,   608,
-     611,   616,   617,   615,   619,   624,   625,   626,   627,   628,
-     623,   630,   147,    46,     0,     0,     0,     0,   175,   181,
-     183,   185,     0,     0,     0,     0,     0,   198,     0,     0,
-     201,   203,   205,     0,     0,     0,   174,     0,   153,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   167,
-     168,   169,   170,   165,   166,   171,   172,   173,     0,   151,
-       0,   148,   149,   274,     0,   271,   272,   359,     0,   356,
-     357,   396,     0,   393,   394,   327,     0,   324,   325,   220,
-     221,     0,   216,   218,   219,     0,   229,   230,   226,     0,
-     224,   227,   228,   212,     0,   209,   211,   524,     0,   522,
-     481,     0,   478,   479,   239,     0,   236,   237,     0,     0,
-       0,     0,     0,     0,     0,   254,   256,   257,   258,   259,
-     260,   261,   554,   560,     0,     0,     0,   553,   550,   551,
-     552,     0,   543,   545,   548,   546,   547,   549,   574,   576,
-     573,   571,   572,     0,   567,   569,   570,     0,   663,     0,
-     661,    55,   426,     0,   423,   424,   451,     0,   448,   449,
-     518,   517,     0,   516,     0,    71,   653,   642,   128,     0,
+       0,     0,     0,     0,     0,     0,   597,     0,   669,     0,
+       0,     0,   658,    52,    45,     0,     0,     0,     0,     0,
+       0,    63,     0,     0,     0,     0,     0,     0,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   142,   144,
-       0,   146,     0,     0,   269,     0,   363,   352,     0,   400,
-     391,     0,     0,   322,     0,     0,   215,   232,     0,   223,
-       0,     0,   208,   526,     0,   521,   485,   476,     0,     0,
-     234,     0,     0,     0,     0,     0,     0,     0,     0,   253,
-       0,     0,     0,     0,     0,     0,   542,     0,     0,     0,
-     566,   581,     0,     0,   660,    57,     0,    56,     0,   421,
-       0,     0,   446,     0,     0,   515,   650,     0,     0,     0,
-       0,   187,   190,   191,   192,   193,     0,   200,   194,     0,
-       0,     0,   195,   196,   197,   154,     0,   150,     0,   273,
-       0,   358,     0,   395,   350,   342,   344,   335,   336,   347,
-     348,   349,   331,   332,   333,   334,   340,   341,   339,   343,
-       0,   329,   337,   345,   346,   338,   326,   217,   225,     0,
-     210,   538,     0,   536,   537,   533,   534,   535,     0,   527,
-     528,   530,   531,   532,   523,     0,   480,     0,   238,   262,
-     263,   264,   265,   266,   267,   255,     0,     0,   559,   562,
-     563,   544,     0,     0,   568,   677,     0,   675,   673,   667,
-     671,   672,     0,   665,   669,   670,   668,   662,    54,     0,
-       0,   425,     0,   450,     0,   177,   178,   179,   180,   176,
-     182,   184,   186,   199,   202,   204,   206,   152,   275,   360,
-     397,     0,   328,   213,     0,     0,   525,     0,   482,   240,
-     556,   557,   558,   555,   561,   575,   577,     0,     0,     0,
-       0,   664,    58,   427,   452,   519,   330,     0,   540,   529,
-       0,   674,     0,   666,   539,     0,   676,   681,     0,   679,
-       0,     0,   678,   689,     0,     0,     0,     0,   683,   685,
-     686,   687,   688,   680,     0,     0,     0,     0,     0,   682,
-       0,   691,   692,   693,   684,   690
+       0,     0,     0,     0,     0,     0,     0,   578,     0,     0,
+       0,     0,    75,     0,   146,   138,     0,     0,     0,     0,
+       0,   329,   330,     0,     0,     0,   285,     0,   445,     0,
+     484,     0,   487,   488,   470,     0,     0,     0,     0,     0,
+       0,     0,   502,     0,     0,   392,     0,     0,     0,   403,
+     380,     0,   432,   433,   417,     0,     0,   250,   618,     0,
+       0,   623,     0,   626,   627,     0,     0,   634,   635,     0,
+       0,     0,     0,   599,   671,     0,   665,   660,     0,     0,
+       0,   650,   652,   654,   118,     0,     0,     0,     0,   153,
+     132,   276,   369,   406,    42,   456,   458,   325,   326,   327,
+     328,   324,   333,     0,    49,     0,     0,     0,   491,   241,
+       0,     0,     0,   593,     0,     0,    53,   145,   436,   461,
+     314,   316,   318,   322,   320,     0,   454,   483,   486,   527,
+     515,   517,   519,   521,   523,   525,   395,   195,   399,   397,
+     402,   429,   255,   257,   620,   622,   625,   630,   631,   629,
+     633,   638,   639,   640,   641,   642,   637,   644,   646,   648,
+     153,    46,     0,     0,     0,     0,   181,   187,   189,   191,
+       0,     0,     0,     0,     0,   204,     0,     0,   207,   209,
+     211,     0,     0,     0,   180,     0,   159,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   173,   174,   175,
+     176,   171,   172,   177,   178,   179,     0,   157,     0,   154,
+     155,   280,     0,   277,   278,   373,     0,   370,   371,   410,
+       0,   407,   408,   337,     0,   334,   335,   226,   227,     0,
+     222,   224,   225,     0,   235,   236,   232,     0,   230,   233,
+     234,   218,     0,   215,   217,   538,     0,   536,   495,     0,
+     492,   493,   245,     0,   242,   243,     0,     0,     0,     0,
+       0,     0,     0,   260,   262,   263,   264,   265,   266,   267,
+     568,   574,     0,     0,     0,   567,   564,   565,   566,     0,
+     557,   559,   562,   560,   561,   563,   588,   590,   587,   585,
+     586,     0,   581,   583,   584,     0,   677,     0,   675,    55,
+     440,     0,   437,   438,   465,     0,   462,   463,   532,   531,
+       0,   530,     0,    71,   667,   656,   134,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   148,   150,     0,   152,
+       0,     0,   275,     0,   377,   366,     0,   414,   405,     0,
+       0,   332,     0,     0,   221,   238,     0,   229,     0,     0,
+     214,   540,     0,   535,   499,   490,     0,     0,   240,     0,
+       0,     0,     0,     0,     0,     0,     0,   259,     0,     0,
+       0,     0,     0,     0,   556,     0,     0,     0,   580,   595,
+       0,     0,   674,    57,     0,    56,     0,   435,     0,     0,
+     460,     0,     0,   529,   664,     0,     0,     0,     0,   193,
+     196,   197,   198,   199,     0,   206,   200,     0,     0,     0,
+     201,   202,   203,   160,     0,   156,     0,   279,     0,   372,
+       0,   409,   364,   352,   353,   354,   356,   357,   358,   345,
+     346,   361,   362,   363,   341,   342,   343,   344,   350,   351,
+     349,   355,     0,   339,   347,   359,   360,   348,   336,   223,
+     231,     0,   216,   552,     0,   550,   551,   547,   548,   549,
+       0,   541,   542,   544,   545,   546,   537,     0,   494,     0,
+     244,   268,   269,   270,   271,   272,   273,   261,     0,     0,
+     573,   576,   577,   558,     0,     0,   582,   691,     0,   689,
+     687,   681,   685,   686,     0,   679,   683,   684,   682,   676,
+      54,     0,     0,   439,     0,   464,     0,   183,   184,   185,
+     186,   182,   188,   190,   192,   205,   208,   210,   212,   158,
+     281,   374,   411,     0,   338,   219,     0,     0,   539,     0,
+     496,   246,   570,   571,   572,   569,   575,   589,   591,     0,
+       0,     0,     0,   678,    58,   441,   466,   533,   340,     0,
+     554,   543,     0,   688,     0,   680,   553,     0,   690,   695,
+       0,   693,     0,     0,   692,   703,     0,     0,     0,     0,
+     697,   699,   700,   701,   702,   694,     0,     0,     0,     0,
+       0,   696,     0,   705,   706,   707,   698,   704
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,    41,  -855,  -457,
-    -855,   273,  -855,  -855,  -855,  -855,   194,  -855,  -459,  -855,
-    -855,  -855,   -74,  -855,  -855,  -855,   434,  -855,  -855,  -855,
-    -855,   220,   410,  -855,  -855,   -70,   -46,   -40,   -36,   -22,
-     -17,   -14,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   231,
-     413,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-     187,  -855,    11,  -855,  -602,    17,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,   -21,  -855,  -630,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,    -4,  -855,
-    -855,  -855,  -855,  -855,     4,  -621,  -855,  -855,  -855,  -855,
-       0,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,    -9,
-    -855,  -855,  -855,    -8,   419,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,   -12,  -855,  -855,  -855,  -855,  -855,  -855,  -854,
-    -855,  -855,  -855,    19,  -855,  -855,  -855,    30,   467,  -855,
-    -855,  -849,  -855,  -847,  -855,   -11,  -855,    -5,  -855,     3,
-    -855,  -855,  -855,  -846,  -855,  -855,  -855,  -855,    13,  -855,
-    -855,  -161,   823,  -855,  -855,  -855,  -855,  -855,    28,  -855,
-    -855,  -855,    34,  -855,   444,  -855,   -69,  -855,  -855,  -855,
-    -855,  -855,   -66,  -855,  -855,  -855,  -855,  -855,   -58,  -855,
-    -855,  -855,    35,  -855,  -855,  -855,    29,  -855,   436,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-     -19,  -855,  -855,  -855,   -15,   473,  -855,  -855,   -53,  -855,
-     -29,  -855,  -855,  -855,  -855,  -855,    -6,  -855,  -855,  -855,
-     -16,   470,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   -62,
-    -855,  -855,  -855,    21,  -855,  -855,  -855,    25,  -855,   472,
-     265,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -843,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,    39,  -855,  -855,  -855,  -145,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,    16,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,     9,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,   288,   445,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,   -73,  -855,   -51,  -855,  -855,  -855,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,  -855,   325,   446,  -855,  -855,
-    -855,  -855,  -855,  -855,  -855,   326,   454,   -48,  -855,  -855,
-      12,  -855,  -855,  -141,  -855,  -855,  -855,  -855,  -855,  -855,
-    -160,  -855,  -855,  -178,  -855,  -855,  -855,  -855,  -855
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,    -5,  -873,  -493,
+    -873,   240,  -873,  -873,  -873,  -873,   232,  -873,  -502,  -873,
+    -873,  -873,   -74,  -873,  -873,  -873,   495,  -873,  -873,  -873,
+    -873,   277,   455,  -873,  -873,   -70,   -58,   -38,   -31,   -30,
+     -20,   -17,     1,     9,    12,    13,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,   266,   478,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,   197,  -873,    20,  -873,  -620,    32,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+     -46,  -873,  -648,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,    11,  -873,  -873,  -873,  -873,  -873,    18,  -639,
+    -873,  -873,  -873,  -873,    17,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,     5,  -873,  -873,  -873,    10,   438,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,     2,  -873,  -873,  -873,
+    -873,  -873,  -873,  -872,  -873,  -873,  -873,    37,  -873,  -873,
+    -873,    44,   479,  -873,  -873,  -870,  -873,  -869,  -873,    15,
+    -873,    19,  -873,    14,  -873,  -873,  -873,  -868,  -873,  -873,
+    -873,  -873,    30,  -873,  -873,  -150,   855,  -873,  -873,  -873,
+    -873,  -873,    43,  -873,  -873,  -873,    46,  -873,   461,  -873,
+     -69,  -873,  -873,  -873,  -873,  -873,   -68,  -873,  -873,  -873,
+    -873,  -873,    -3,  -873,  -873,  -873,    39,  -873,  -873,  -873,
+      45,  -873,   459,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,   -11,  -873,  -873,  -873,    -1,   494,
+    -873,  -873,   -56,  -873,   -15,  -873,  -873,  -873,  -873,  -873,
+      -2,  -873,  -873,  -873,     3,   488,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,   -60,  -873,  -873,  -873,    34,  -873,  -873,
+    -873,    48,  -873,   483,   276,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -867,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,    51,  -873,  -873,  -873,
+    -135,  -873,  -873,  -873,  -873,  -873,  -873,  -873,    22,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,    21,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,   295,   464,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+    -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,  -873,
+     331,   445,  -873,  -873,  -873,  -873,  -873,  -873,  -873,   330,
+     460,   -61,  -873,  -873,    16,  -873,  -873,  -132,  -873,  -873,
+    -873,  -873,  -873,  -873,  -152,  -873,  -873,  -168,  -873,  -873,
+    -873,  -873,  -873
   };
 
   const short
@@ -4401,461 +4442,473 @@ namespace isc { namespace dhcp {
   {
       -1,    16,    17,    18,    19,    20,    21,    22,    23,    24,
       25,    26,    27,    28,    29,    30,    31,    88,    41,    42,
-      73,   627,    92,    93,    43,    72,    89,    90,   651,   831,
-     926,   927,   716,    45,    74,   101,   102,   103,   376,    47,
-      75,   147,   148,   149,   384,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   398,   159,   386,    49,    76,   190,
-     191,   192,   424,   193,   160,   387,   161,   388,   162,   389,
-     740,   741,   742,   870,   717,   718,   719,   849,  1049,   720,
-     850,   721,   851,   722,   852,   723,   724,   461,   725,   726,
-     727,   728,   729,   730,   731,   732,   733,   858,   734,   735,
-     861,   736,   862,   737,   863,   163,   409,   774,   775,   776,
-     890,   164,   406,   761,   762,   763,   764,   165,   408,   769,
-     770,   771,   772,   166,   407,   167,   412,   785,   786,   787,
-     899,    65,    84,   325,   326,   327,   474,   328,   475,   168,
-     413,   794,   795,   796,   797,   798,   799,   800,   801,   169,
-     399,   744,   745,   746,   873,    51,    77,   214,   215,   216,
-     430,   217,   431,   218,   432,   219,   436,   220,   435,   170,
-     404,   633,   222,   223,   171,   405,   756,   757,   758,   882,
-     980,   981,   172,   400,    59,    81,   748,   749,   750,   876,
-      61,    82,   290,   291,   292,   293,   294,   295,   296,   460,
-     297,   464,   298,   463,   299,   300,   465,   301,   173,   401,
-     752,   753,   754,   879,    63,    83,   311,   312,   313,   314,
-     315,   469,   316,   317,   318,   319,   225,   428,   833,   834,
-     835,   928,    53,    78,   236,   237,   238,   440,   174,   402,
-     175,   403,   228,   429,   837,   838,   839,   931,    55,    79,
-     252,   253,   254,   443,   255,   256,   445,   257,   258,   176,
-     411,   781,   782,   783,   896,    57,    80,   270,   271,   272,
-     273,   451,   274,   452,   275,   453,   276,   454,   277,   455,
-     278,   456,   279,   450,   230,   437,   842,   843,   934,   177,
-     410,   778,   779,   893,   998,   999,  1000,  1001,  1002,  1064,
-    1003,   178,   414,   811,   812,   813,   910,  1073,   814,   815,
-     911,   816,   817,   179,   180,   416,   823,   824,   825,   917,
-     826,   918,   181,   417,   182,   418,    67,    85,   345,   346,
-     347,   348,   479,   349,   480,   350,   351,   482,   352,   353,
-     354,   485,   683,   355,   486,   356,   357,   358,   489,   690,
-     359,   490,   183,   419,   184,   420,   104,   378,   105,   379,
-     106,   380,   185,   385,    71,    87,   367,   368,   369,   495,
-     370,   107,   377,    69,    86,   362,   363,   186,   421,   829,
-     830,   922,  1032,  1033,  1034,  1035,  1079,  1036,  1077,  1098,
-    1099,  1100,  1107,  1108,  1109,  1114,  1110,  1111,  1112
+      73,   645,    92,    93,    43,    72,    89,    90,   667,   849,
+     944,   945,   734,    45,    74,   101,   102,   103,   386,    47,
+      75,   149,   150,   151,   394,   152,   153,   154,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   412,   165,
+     396,    49,    76,   194,   195,   196,   436,   197,   166,   397,
+     167,   398,   168,   399,   758,   759,   760,   888,   735,   736,
+     737,   867,  1071,   738,   868,   739,   869,   740,   870,   741,
+     742,   473,   743,   744,   745,   746,   747,   748,   749,   750,
+     751,   876,   752,   753,   879,   754,   880,   755,   881,   169,
+     423,   792,   793,   794,   908,   170,   420,   779,   780,   781,
+     782,   171,   422,   787,   788,   789,   790,   172,   421,   173,
+     426,   803,   804,   805,   917,    65,    84,   333,   334,   335,
+     486,   336,   487,   174,   427,   812,   813,   814,   815,   816,
+     817,   818,   819,   175,   413,   762,   763,   764,   891,    51,
+      77,   222,   223,   224,   442,   225,   443,   226,   444,   227,
+     448,   228,   447,   176,   418,   651,   230,   231,   177,   419,
+     774,   775,   776,   900,  1002,  1003,   178,   414,    59,    81,
+     766,   767,   768,   894,    61,    82,   298,   299,   300,   301,
+     302,   303,   304,   472,   305,   476,   306,   475,   307,   308,
+     477,   309,   179,   415,   770,   771,   772,   897,    63,    83,
+     319,   320,   321,   322,   323,   481,   324,   325,   326,   327,
+     233,   440,   851,   852,   853,   946,    53,    78,   244,   245,
+     246,   452,   180,   416,   181,   417,   236,   441,   855,   856,
+     857,   949,    55,    79,   260,   261,   262,   455,   263,   264,
+     457,   265,   266,   182,   425,   799,   800,   801,   914,    57,
+      80,   278,   279,   280,   281,   463,   282,   464,   283,   465,
+     284,   466,   285,   467,   286,   468,   287,   462,   238,   449,
+     860,   861,   952,   183,   424,   796,   797,   911,  1020,  1021,
+    1022,  1023,  1024,  1086,  1025,   184,   428,   829,   830,   831,
+     928,  1095,   832,   833,   929,   834,   835,   185,   186,   430,
+     841,   842,   843,   935,   844,   936,   187,   431,   188,   432,
+      67,    85,   355,   356,   357,   358,   491,   359,   492,   360,
+     361,   494,   362,   363,   364,   497,   699,   365,   498,   366,
+     367,   368,   501,   706,   369,   502,   370,   503,   371,   504,
+     104,   388,   105,   389,   106,   390,   189,   395,    71,    87,
+     377,   378,   379,   509,   380,   107,   387,    69,    86,   372,
+     373,   190,   433,   847,   848,   940,  1054,  1055,  1056,  1057,
+    1101,  1058,  1099,  1120,  1121,  1122,  1129,  1130,  1131,  1136,
+    1132,  1133,  1134
   };
 
   const unsigned short
   Dhcp6Parser::yytable_[] =
   {
-     100,   146,   189,   206,   232,   246,   266,   207,   288,   307,
-     324,   342,   360,   808,   309,   229,   768,   310,   738,   224,
-     235,   249,   267,   194,   226,   239,   250,   268,   973,   302,
-     320,   208,   343,   974,   361,   975,   979,   209,   364,   985,
-     382,   210,    94,   187,   188,   383,    32,   195,   227,   240,
-     251,   269,   260,   303,   321,   211,   344,   802,    40,   840,
-     212,   289,   308,   213,   125,   282,   703,   233,   247,   626,
-      44,   759,    46,   234,   248,    33,   422,    34,    48,    35,
-     221,   423,   126,   127,   626,   108,   109,   322,   323,   110,
-     126,   127,   111,   112,   113,   322,   323,   281,   657,   126,
-     127,  1103,   991,   992,  1104,  1105,  1106,    50,   126,   127,
-     663,   664,   665,   629,   630,   631,   632,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   885,
-     426,   282,   886,   283,   284,   427,   438,   285,   286,   287,
-     441,   439,   818,   819,    91,   442,   126,   127,   126,   127,
-     760,   365,   366,   128,   803,   804,   805,   806,   129,   130,
-     131,   132,   133,   448,   134,   681,   682,    99,   449,   135,
-     685,   686,   687,   688,   476,   491,    52,    54,   136,   477,
-     492,   137,    95,   888,   493,   497,   889,    99,   138,   494,
-     498,    96,    97,    98,   422,    99,   139,   140,   493,   845,
-     141,   142,   124,   846,    99,   497,   689,   973,    56,    99,
-     847,   426,   974,    99,   975,   979,   848,   894,   985,    58,
-     895,   698,   143,   144,    60,   145,   699,   700,   701,   702,
-     703,   704,   705,   706,   707,   708,   709,   710,   711,   712,
-     713,   714,   715,  1045,  1046,  1047,  1048,    36,    37,    38,
-      39,    99,    62,    99,   923,   282,   145,   924,   371,   114,
-     115,   116,   117,   118,   119,   120,  1101,   768,   956,  1102,
-     125,   788,   789,   790,   791,   792,   793,    64,    66,   867,
-     196,   867,   197,   125,   868,   808,   869,    68,   126,   127,
-     198,   199,   200,   201,   202,   128,   241,   242,   243,   244,
-     245,   126,   127,   125,   891,    70,   372,   203,   100,   892,
-     204,   135,   908,   374,   231,   373,   375,   909,   205,   915,
-     203,   126,   127,   204,   916,   381,   390,   114,   115,   116,
-     117,   118,   119,   120,   391,   392,   123,   919,   125,   282,
-     203,   491,   920,   204,   867,   438,   921,   393,   146,  1057,
-    1058,   394,   189,  1061,   457,   395,   126,   127,  1062,   199,
-     200,   476,   202,   128,   206,  1080,  1069,   232,   207,   396,
-    1081,   397,   415,   194,   246,   203,   229,    99,   204,   425,
-     224,   458,   441,   235,   266,   226,   205,  1083,   239,   433,
-     249,   448,   208,    99,   288,   250,  1084,   195,   209,   307,
-     267,   434,   210,  1118,   309,   268,    99,   310,  1119,   227,
-     282,   444,   240,   499,   500,   302,   211,   342,   360,   251,
-     320,   212,   759,   766,   213,   767,    99,   126,   127,   269,
-     233,   125,   446,  1070,  1071,  1072,   234,   247,   343,   303,
-     361,   221,   447,   248,   321,   364,   462,   289,   459,   126,
-     127,   466,   308,   282,   304,   283,   284,   305,   306,   467,
-     468,    99,   344,   126,   127,   470,   471,   259,   472,   473,
-     126,   127,   478,   260,   261,   262,   263,   264,   265,     1,
-       2,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-      12,    13,    14,    15,   481,   483,   484,   487,   488,   496,
-     501,   502,   503,   504,   505,   506,   508,  1025,   509,  1026,
-    1027,   510,   511,   512,   513,   514,   518,   515,   516,   329,
-     330,   331,   332,   333,   334,   335,   336,   337,   338,   339,
-     340,   341,    99,   519,   517,   522,   520,   146,   521,   143,
-     144,   523,   524,   525,   189,   613,   614,   615,   526,   527,
-     528,   529,   530,   531,    99,   532,   533,   534,   535,   536,
-     537,   538,   539,   540,   364,   194,   541,   542,    99,   807,
-     820,   543,   342,   360,   544,    99,   545,   547,   550,   548,
-     551,   552,   553,   554,   555,   556,   557,   558,   559,   195,
-     809,   821,   561,   343,   563,   361,   564,   565,   566,   567,
-     569,   570,   571,   572,   573,   574,   575,   577,   578,   579,
-     580,   581,   582,   583,   810,   822,   585,   344,   589,   586,
-     590,   587,   593,   592,   594,   596,   595,   597,   598,   599,
-     600,   677,   601,   602,   603,   604,   607,   608,   610,   684,
-     611,   616,   612,   617,   618,   619,   620,   621,   622,   623,
-     624,   693,   625,    34,   628,   634,   635,   636,   637,   647,
-     639,   638,   640,   641,   648,   654,   642,   643,   644,   646,
-     649,   650,   652,   653,   773,   692,   659,   853,   739,   743,
-     655,   747,   656,   658,   751,   755,   777,   780,   660,   661,
-     662,   666,   667,   668,   669,   670,   671,   672,   673,   674,
-     675,   676,   678,   679,   680,   691,   784,   828,   832,   836,
-     854,   855,   856,   857,   859,   860,   864,   865,   866,   872,
-     925,   871,   875,   874,   877,   878,   880,   881,   884,   883,
-     942,   898,   887,   897,   901,   900,   902,   903,   904,   905,
-     906,   907,   912,   913,   914,   930,   941,   929,   933,   932,
-     937,   944,   935,   936,   938,   939,   940,   946,   943,   945,
-     949,   950,   951,   989,   947,   948,  1016,   952,  1017,   953,
-    1022,  1023,   954,  1009,  1038,  1039,  1097,  1044,  1059,  1060,
-    1065,  1067,  1066,  1010,  1078,  1068,  1087,  1011,  1012,  1013,
-    1090,  1014,  1092,  1018,  1095,  1019,  1115,  1020,  1116,   206,
-    1050,  1051,   288,   207,  1052,   307,  1053,  1117,   964,  1120,
-     309,   229,   965,   310,   645,   224,   507,  1054,  1055,   993,
-     226,  1091,   266,   302,   982,   324,   320,   208,  1088,   983,
-     765,   694,   546,   209,  1122,   995,   966,   210,   267,   549,
-     996,   807,   967,   268,   227,   820,   968,   303,  1028,   697,
-     321,   211,  1056,   984,   232,   289,   212,   246,   308,   213,
-     969,   972,   809,  1063,   997,   970,   821,   269,   971,  1030,
-     235,   976,   994,   249,  1074,   239,   221,   977,   250,   844,
-    1075,  1076,  1082,   957,   955,   978,   810,   990,   988,   987,
-     822,  1007,  1008,  1031,   959,   591,  1015,   986,  1085,   240,
-    1086,  1029,   251,   958,   280,   560,   961,  1094,   962,   588,
-     960,  1041,   584,  1040,   562,  1042,   963,   233,   568,  1006,
-     247,  1005,  1089,   234,   841,  1096,   248,  1043,  1024,  1121,
-     576,  1021,  1123,  1004,   827,  1037,   605,  1125,   695,  1093,
-    1124,  1113,   696,   609,     0,     0,     0,   606,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     100,   148,   193,   210,   240,   254,   274,   211,   296,   315,
+     332,   352,    40,   826,   317,   318,   786,   237,   756,   212,
+     198,   234,   247,   258,   276,   374,   310,   328,   995,   353,
+     996,   997,  1001,  1007,    94,   268,   297,   316,    32,   213,
+      44,    33,   858,    34,   392,    35,   214,   215,    91,   393,
+     777,   644,   330,   331,    46,   290,    48,   216,   191,   192,
+     217,   199,   235,   248,   259,   277,   644,   311,   329,    50,
+     354,   673,   130,   131,   232,   243,   257,   275,   218,  1092,
+    1093,  1094,   289,   679,   680,   681,   219,   434,   128,   220,
+     221,   229,   435,   241,   255,   716,   903,   242,   256,   904,
+     717,   718,   719,   720,   721,   722,   723,   724,   725,   726,
+     727,   728,   729,   730,   731,   732,   733,   129,   130,   131,
+     290,    52,   291,   292,    99,    54,   293,   294,   295,   778,
+     129,   777,   784,   290,   785,   130,   131,   130,   131,   129,
+     375,   376,   820,   249,   250,   251,   252,   253,   130,   131,
+     239,   721,  1047,   267,  1048,  1049,    56,   130,   131,   268,
+     269,   270,   271,   272,   273,   129,   290,   207,    58,    60,
+     208,   701,   702,   703,   704,   438,   207,    99,    95,   208,
+     439,   450,    62,   130,   131,   453,   451,    96,    97,    98,
+     454,   906,   108,   109,   907,   147,   110,   130,   131,   111,
+     112,   113,    64,  1013,  1014,    99,    66,   705,   130,   131,
+      68,   995,    70,   996,   997,  1001,  1007,    36,    37,    38,
+      39,   330,   331,    99,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+      99,   381,    99,   821,   822,   823,   824,   806,   807,   808,
+     809,   810,   811,    99,   460,    99,   382,   130,   131,   461,
+     836,   837,    99,   912,   132,   384,   913,   786,   974,   133,
+     134,   135,   136,   137,  1125,   138,   488,  1126,  1127,  1128,
+     139,   489,   505,   941,   385,   826,   942,   506,    99,   140,
+     130,   131,   141,   507,  1123,   511,   434,  1124,   508,   142,
+     512,   863,    99,   383,   507,   511,   469,   143,   144,   864,
+     865,   145,   146,    99,   438,   697,   698,   391,   100,   866,
+     290,   312,   291,   292,   313,   314,   885,   885,   909,   926,
+     933,   886,   887,   910,   927,   934,   147,   130,   131,   937,
+     505,   471,   400,   401,   938,   939,   337,   338,   339,   340,
+     341,   342,   343,   344,   345,   346,   347,   348,   349,   402,
+     148,   403,    99,   885,   193,   450,   350,   351,  1079,  1083,
+    1080,   404,   405,   406,  1084,   407,   210,   513,   514,   240,
+     211,   408,   198,   488,  1102,   470,   254,   409,  1091,  1103,
+     237,   410,   212,   453,   234,    99,   274,   247,  1105,   411,
+     460,   479,  1140,   480,   258,  1106,   296,  1141,   429,   437,
+     445,   315,   213,   446,   276,   456,   317,   318,   458,   214,
+     215,   459,   474,   199,   310,   647,   648,   649,   650,   328,
+     216,   352,   478,   217,   297,   235,   482,   483,   248,   316,
+     485,   528,    99,   484,   490,   259,   374,   232,   493,   353,
+     243,   218,   515,   495,   496,   277,   499,   257,   500,   219,
+     510,   516,   220,   221,   229,   311,   517,   275,   241,   518,
+     329,   519,   242,   520,   522,   255,   523,   524,   525,   256,
+    1067,  1068,  1069,  1070,   526,   527,   529,   530,   531,   532,
+     354,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   533,   534,   535,   540,   129,   541,   542,   543,
+     544,   539,   536,   631,   632,   633,   200,   537,   201,   545,
+     546,   547,   548,   538,   130,   131,   202,   203,   204,   205,
+     206,   132,   549,   550,   551,   552,   553,   554,   555,   556,
+     557,   558,   559,   207,   560,   561,   208,   139,   563,   564,
+     566,   567,   568,   569,   209,   148,   570,   571,   572,   573,
+     574,   575,   193,   577,   579,   581,   580,   582,   583,   374,
+     585,   586,   587,   588,   589,   590,   591,   593,   594,   596,
+     198,   597,   598,   595,   601,   605,   599,   825,   838,   606,
+     352,   602,   603,   609,   608,   610,   617,   611,   612,   615,
+     616,   693,   613,   614,   619,   827,   839,   618,   353,   620,
+     621,   622,   625,   626,   628,   634,   629,   640,   630,   635,
+     636,   199,   637,   711,   638,   639,   641,   642,   643,    99,
+     652,    34,   646,   653,   654,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   828,   840,   127,   354,
+     129,   290,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,   655,   130,   131,
+     656,   203,   204,   657,   206,   132,   658,   659,   670,   671,
+     660,   661,   662,   664,   665,   666,   668,   207,   669,   672,
+     208,   674,   675,   676,   677,   678,   710,   700,   209,   757,
+     682,   683,   684,   685,   686,   687,   688,   689,   690,   761,
+     765,   769,   773,   795,   798,   802,   846,   691,   850,   791,
+     692,   854,   871,   694,   695,   872,   696,   873,   874,   875,
+     877,   878,   707,   882,   708,   709,   883,   884,   890,   943,
+     889,   893,   892,   895,   896,   898,   899,   902,   901,   960,
+     916,   905,   915,   919,   918,   920,   921,   922,   923,   924,
+     925,   930,   931,   932,   948,   959,   947,   951,   950,   955,
+     961,   953,   954,    99,   956,   957,   958,   962,   964,   963,
+     965,   966,   967,   968,   969,   970,   971,  1011,  1038,  1039,
+    1044,  1045,  1061,  1089,  1060,  1066,  1087,  1072,   972,   663,
+    1031,  1032,  1081,  1082,  1088,  1090,  1100,  1109,  1112,  1033,
+    1114,  1137,  1034,  1035,  1036,  1040,  1041,   210,  1042,  1073,
+     296,   211,  1074,   315,  1075,  1076,   982,  1077,   317,   318,
+     983,   237,  1078,   212,  1085,   234,  1096,  1015,   310,  1097,
+     274,   328,   984,   332,  1005,  1098,  1104,  1107,   297,  1113,
+    1116,   316,  1117,   213,   994,  1018,  1119,  1138,   276,   825,
+     214,   215,   985,   838,  1139,  1016,  1050,  1118,  1110,   986,
+     987,   216,   240,  1142,   217,   254,   235,   827,  1143,   311,
+     988,   839,   329,   989,  1052,  1006,   783,   521,   232,   562,
+     247,  1147,   218,   258,  1051,  1144,  1019,  1004,  1145,   277,
+     219,   990,   715,   220,   221,   229,   712,   862,  1017,   991,
+     975,   275,   992,   993,  1000,   998,   565,   973,   828,   999,
+    1012,  1009,   840,  1010,  1030,  1053,   607,  1029,  1037,   576,
+     977,   248,  1008,  1108,   259,   976,   288,  1063,   981,   979,
+     978,   600,   980,   243,   604,  1062,   257,   578,   584,  1065,
+    1028,   859,  1064,   592,  1111,  1043,   627,  1059,  1046,   845,
+     713,   241,  1027,  1026,   255,   242,   714,   624,   256,   623,
+    1115,  1135,  1146,     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,   964,     0,     0,
-       0,   965,     0,   993,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   982,     0,     0,  1028,     0,   983,   995,
-       0,     0,     0,     0,   996,   966,     0,     0,     0,     0,
-       0,   967,     0,     0,     0,   968,     0,  1030,     0,     0,
-       0,     0,   984,     0,     0,     0,     0,     0,   997,   969,
-     972,     0,     0,     0,   970,     0,   994,   971,     0,     0,
-     976,  1031,     0,     0,     0,     0,   977,     0,     0,  1029,
-       0,     0,     0,     0,   978
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   982,
+       0,     0,     0,   983,     0,  1015,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   984,     0,  1005,  1050,     0,
+       0,     0,     0,  1018,     0,     0,     0,   994,     0,     0,
+       0,     0,     0,  1016,     0,   985,  1052,     0,     0,     0,
+       0,     0,   986,   987,     0,     0,  1051,     0,     0,     0,
+       0,     0,     0,   988,     0,     0,   989,     0,  1006,     0,
+       0,     0,     0,     0,  1019,     0,     0,     0,     0,     0,
+    1004,     0,     0,     0,   990,     0,  1017,  1053,     0,     0,
+       0,     0,   991,     0,     0,   992,   993,  1000,   998,     0,
+       0,     0,   999
   };
 
   const short
   Dhcp6Parser::yycheck_[] =
   {
       74,    75,    76,    77,    78,    79,    80,    77,    82,    83,
-      84,    85,    85,   643,    83,    77,   637,    83,   620,    77,
-      78,    79,    80,    76,    77,    78,    79,    80,   882,    82,
-      83,    77,    85,   882,    85,   882,   882,    77,    86,   882,
-       3,    77,    10,    16,    17,     8,     0,    76,    77,    78,
-      79,    80,    96,    82,    83,    77,    85,    21,    17,   103,
-      77,    82,    83,    77,    54,    55,    30,    78,    79,   526,
-       7,    98,     7,    78,    79,     5,     3,     7,     7,     9,
-      77,     8,    72,    73,   541,    11,    12,   105,   106,    15,
-      72,    73,    18,    19,    20,   105,   106,    21,   557,    72,
-      73,   153,    92,    93,   156,   157,   158,     7,    72,    73,
-     569,   570,   571,    80,    81,    82,    83,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,     3,
-       3,    55,     6,    57,    58,     8,     3,    61,    62,    63,
-       3,     8,   124,   125,   177,     8,    72,    73,    72,    73,
-     177,    13,    14,    79,   118,   119,   120,   121,    84,    85,
-      86,    87,    88,     3,    90,   141,   142,   177,     8,    95,
-     144,   145,   146,   147,     3,     3,     7,     7,   104,     8,
-       8,   107,   150,     3,     3,     3,     6,   177,   114,     8,
-       8,   159,   160,   161,     3,   177,   122,   123,     3,     8,
-     126,   127,    53,     8,   177,     3,   180,  1061,     7,   177,
-       8,     3,  1061,   177,  1061,  1061,     8,     3,  1061,     7,
-       6,    21,   148,   149,     7,   151,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    22,    23,    24,    25,   177,   178,   179,
-     180,   177,     7,   177,     3,    55,   151,     6,     6,    43,
-      44,    45,    46,    47,    48,    49,     3,   888,   870,     6,
-      54,   108,   109,   110,   111,   112,   113,     7,     7,     3,
-      64,     3,    66,    54,     8,   915,     8,     7,    72,    73,
-      74,    75,    76,    77,    78,    79,    67,    68,    69,    70,
-      71,    72,    73,    54,     3,     7,     3,    91,   382,     8,
-      94,    95,     3,     8,    65,     4,     3,     8,   102,     3,
-      91,    72,    73,    94,     8,     4,     4,    43,    44,    45,
-      46,    47,    48,    49,     4,     4,    52,     3,    54,    55,
-      91,     3,     8,    94,     3,     3,     8,     4,   422,     8,
-       8,     4,   426,     3,     8,     4,    72,    73,     8,    75,
-      76,     3,    78,    79,   438,     3,     8,   441,   438,     4,
-       8,     4,     4,   426,   448,    91,   438,   177,    94,     4,
-     438,     3,     3,   441,   458,   438,   102,     8,   441,     4,
-     448,     3,   438,   177,   468,   448,     8,   426,   438,   473,
-     458,     4,   438,     3,   473,   458,   177,   473,     8,   438,
-      55,     4,   441,   372,   373,   468,   438,   491,   491,   448,
-     473,   438,    98,    99,   438,   101,   177,    72,    73,   458,
-     441,    54,     4,   115,   116,   117,   441,   448,   491,   468,
-     491,   438,     4,   448,   473,   493,     4,   468,     8,    72,
-      73,     4,   473,    55,    56,    57,    58,    59,    60,     8,
-       3,   177,   491,    72,    73,     4,     4,    90,     8,     3,
-      72,    73,     4,    96,    97,    98,    99,   100,   101,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,     4,     4,     4,     4,     4,     4,
-     177,     4,     4,     4,     4,     4,     4,   152,     4,   154,
-     155,     4,     4,     4,     4,   178,   180,   178,   178,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   177,   179,   178,     4,   179,   611,   178,   148,
-     149,     4,     4,     4,   618,   504,   505,   506,     4,     4,
-       4,     4,     4,     4,   177,     4,     4,     4,     4,     4,
-       4,     4,   178,     4,   612,   618,     4,     4,   177,   643,
-     644,     4,   646,   646,     4,   177,     4,     4,     4,   180,
-       4,     4,     4,     4,   178,   180,     4,     4,     4,   618,
-     643,   644,     4,   646,     4,   646,   178,     4,   178,   178,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   178,
-       4,     4,     4,   180,   643,   644,     4,   646,     4,   180,
-       4,   180,     4,   180,     4,     4,   178,   178,   178,     4,
-       4,   590,   180,   180,     4,     4,     4,   178,     4,   143,
-       7,   177,     7,     7,     7,     7,     7,     5,   177,     5,
-       5,   610,     5,     7,   177,     5,     5,     5,     5,   177,
-       5,     7,     5,     5,   177,   177,     7,     7,     7,     7,
-       5,     5,     5,     5,    89,     5,     7,     4,     7,     7,
-     177,     7,   177,   177,     7,     7,     7,     7,   177,   177,
-     177,   177,   177,   177,   177,   177,   177,   177,   177,   177,
-     177,   177,   177,   177,   177,   177,     7,     7,     7,     7,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     3,
-     177,     6,     3,     6,     6,     3,     6,     3,     3,     6,
-     180,     3,     6,     6,     3,     6,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     3,   178,     6,     3,     6,
-       4,   180,     8,     6,     4,     4,     4,     4,   178,   178,
-       4,     4,     4,     4,   178,   178,     4,   178,     4,   178,
-       4,     4,   180,   178,     6,     3,     7,     4,     8,     8,
-       4,     3,     8,   178,     4,     8,     4,   178,   178,   178,
-       4,   178,     4,   178,     5,   178,     4,   178,     4,   873,
-     177,   177,   876,   873,   177,   879,   177,     4,   882,     4,
-     879,   873,   882,   879,   541,   873,   382,   177,   177,   893,
-     873,   178,   896,   876,   882,   899,   879,   873,   180,   882,
-     636,   611,   422,   873,   178,   893,   882,   873,   896,   426,
-     893,   915,   882,   896,   873,   919,   882,   876,   922,   618,
-     879,   873,   177,   882,   928,   876,   873,   931,   879,   873,
-     882,   882,   915,   177,   893,   882,   919,   896,   882,   922,
-     928,   882,   893,   931,   177,   928,   873,   882,   931,   692,
-     177,   177,   177,   872,   867,   882,   915,   891,   888,   885,
-     919,   899,   901,   922,   875,   476,   908,   884,   177,   928,
-    1061,   922,   931,   873,    81,   438,   878,   177,   879,   473,
-     876,   930,   468,   928,   441,   931,   881,   928,   448,   898,
-     931,   896,  1067,   928,   659,   177,   931,   933,   919,   180,
-     458,   915,   178,   894,   646,   923,   491,   177,   612,  1080,
-    1118,  1101,   617,   497,    -1,    -1,    -1,   493,    -1,    -1,
+      84,    85,    17,   661,    83,    83,   655,    77,   638,    77,
+      76,    77,    78,    79,    80,    86,    82,    83,   900,    85,
+     900,   900,   900,   900,    10,   100,    82,    83,     0,    77,
+       7,     5,   107,     7,     3,     9,    77,    77,   181,     8,
+     102,   544,   109,   110,     7,    59,     7,    77,    16,    17,
+      77,    76,    77,    78,    79,    80,   559,    82,    83,     7,
+      85,   573,    76,    77,    77,    78,    79,    80,    77,   119,
+     120,   121,    21,   585,   586,   587,    77,     3,    57,    77,
+      77,    77,     8,    78,    79,    21,     3,    78,    79,     6,
+      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
+      36,    37,    38,    39,    40,    41,    42,    58,    76,    77,
+      59,     7,    61,    62,   181,     7,    65,    66,    67,   181,
+      58,   102,   103,    59,   105,    76,    77,    76,    77,    58,
+      13,    14,    21,    71,    72,    73,    74,    75,    76,    77,
+      69,    30,   156,    94,   158,   159,     7,    76,    77,   100,
+     101,   102,   103,   104,   105,    58,    59,    95,     7,     7,
+      98,   148,   149,   150,   151,     3,    95,   181,   154,    98,
+       8,     3,     7,    76,    77,     3,     8,   163,   164,   165,
+       8,     3,    11,    12,     6,   155,    15,    76,    77,    18,
+      19,    20,     7,    96,    97,   181,     7,   184,    76,    77,
+       7,  1083,     7,  1083,  1083,  1083,  1083,   181,   182,   183,
+     184,   109,   110,   181,    43,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+     181,     6,   181,   122,   123,   124,   125,   112,   113,   114,
+     115,   116,   117,   181,     3,   181,     3,    76,    77,     8,
+     128,   129,   181,     3,    83,     8,     6,   906,   888,    88,
+      89,    90,    91,    92,   157,    94,     3,   160,   161,   162,
+      99,     8,     3,     3,     3,   933,     6,     8,   181,   108,
+      76,    77,   111,     3,     3,     3,     3,     6,     8,   118,
+       8,     8,   181,     4,     3,     3,     8,   126,   127,     8,
+       8,   130,   131,   181,     3,   145,   146,     4,   392,     8,
+      59,    60,    61,    62,    63,    64,     3,     3,     3,     3,
+       3,     8,     8,     8,     8,     8,   155,    76,    77,     3,
+       3,     8,     4,     4,     8,     8,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,     4,
+     434,     4,   181,     3,   438,     3,   152,   153,     8,     3,
+       8,     4,     4,     4,     8,     4,   450,   382,   383,   453,
+     450,     4,   438,     3,     3,     3,   460,     4,     8,     8,
+     450,     4,   450,     3,   450,   181,   470,   453,     8,     4,
+       3,     8,     3,     3,   460,     8,   480,     8,     4,     4,
+       4,   485,   450,     4,   470,     4,   485,   485,     4,   450,
+     450,     4,     4,   438,   480,    84,    85,    86,    87,   485,
+     450,   505,     4,   450,   480,   450,     4,     4,   453,   485,
+       3,   182,   181,     8,     4,   460,   507,   450,     4,   505,
+     453,   450,   181,     4,     4,   470,     4,   460,     4,   450,
+       4,     4,   450,   450,   450,   480,     4,   470,   453,     4,
+     485,     4,   453,     4,     4,   460,     4,     4,     4,   460,
+      22,    23,    24,    25,     4,     4,   182,   182,   182,   182,
+     505,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,   182,   182,   182,     4,    58,     4,     4,     4,
+       4,   182,   184,   518,   519,   520,    68,   183,    70,     4,
+       4,     4,     4,   183,    76,    77,    78,    79,    80,    81,
+      82,    83,     4,     4,     4,     4,     4,     4,     4,     4,
+     182,     4,     4,    95,     4,     4,    98,    99,     4,   184,
+       4,     4,     4,     4,   106,   629,     4,   182,   184,     4,
+       4,     4,   636,     4,     4,     4,   182,   182,   182,   630,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     636,     4,     4,   182,     4,     4,   184,   661,   662,     4,
+     664,   184,   184,     4,   184,     4,   184,   182,     4,     4,
+       4,   606,   182,   182,     4,   661,   662,   184,   664,     4,
+       4,     4,     4,   182,     4,   181,     7,   181,     7,     7,
+       7,   636,     7,   628,     7,     5,     5,     5,     5,   181,
+       5,     7,   181,     5,     5,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,   661,   662,    56,   664,
+      58,    59,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,     5,    76,    77,
+       7,    79,    80,     5,    82,    83,     5,     5,   181,   181,
+       7,     7,     7,     7,     5,     5,     5,    95,     5,   181,
+      98,   181,     7,   181,   181,   181,     5,   147,   106,     7,
+     181,   181,   181,   181,   181,   181,   181,   181,   181,     7,
+       7,     7,     7,     7,     7,     7,     7,   181,     7,    93,
+     181,     7,     4,   181,   181,     4,   181,     4,     4,     4,
+       4,     4,   181,     4,   181,   181,     4,     4,     3,   181,
+       6,     3,     6,     6,     3,     6,     3,     3,     6,   184,
+       3,     6,     6,     3,     6,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     3,   182,     6,     3,     6,     4,
+     182,     8,     6,   181,     4,     4,     4,   184,     4,   182,
+     182,   182,     4,     4,     4,   182,   182,     4,     4,     4,
+       4,     4,     3,     3,     6,     4,     4,   181,   184,   559,
+     182,   182,     8,     8,     8,     8,     4,     4,     4,   182,
+       4,     4,   182,   182,   182,   182,   182,   891,   182,   181,
+     894,   891,   181,   897,   181,   181,   900,   181,   897,   897,
+     900,   891,   181,   891,   181,   891,   181,   911,   894,   181,
+     914,   897,   900,   917,   900,   181,   181,   181,   894,   182,
+     181,   897,     5,   891,   900,   911,     7,     4,   914,   933,
+     891,   891,   900,   937,     4,   911,   940,   181,   184,   900,
+     900,   891,   946,     4,   891,   949,   891,   933,   184,   894,
+     900,   937,   897,   900,   940,   900,   654,   392,   891,   434,
+     946,   181,   891,   949,   940,   182,   911,   900,   182,   914,
+     891,   900,   636,   891,   891,   891,   629,   710,   911,   900,
+     890,   914,   900,   900,   900,   900,   438,   885,   933,   900,
+     909,   903,   937,   906,   919,   940,   488,   917,   926,   450,
+     893,   946,   902,  1083,   949,   891,    81,   948,   899,   896,
+     894,   480,   897,   946,   485,   946,   949,   453,   460,   951,
+     916,   675,   949,   470,  1089,   933,   511,   941,   937,   664,
+     630,   946,   914,   912,   949,   946,   635,   507,   949,   505,
+    1102,  1123,  1140,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1061,    -1,    -1,
-      -1,  1061,    -1,  1067,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,  1061,    -1,    -1,  1080,    -1,  1061,  1067,
-      -1,    -1,    -1,    -1,  1067,  1061,    -1,    -1,    -1,    -1,
-      -1,  1061,    -1,    -1,    -1,  1061,    -1,  1080,    -1,    -1,
-      -1,    -1,  1061,    -1,    -1,    -1,    -1,    -1,  1067,  1061,
-    1061,    -1,    -1,    -1,  1061,    -1,  1067,  1061,    -1,    -1,
-    1061,  1080,    -1,    -1,    -1,    -1,  1061,    -1,    -1,  1080,
-      -1,    -1,    -1,    -1,  1061
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1083,
+      -1,    -1,    -1,  1083,    -1,  1089,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1083,    -1,  1083,  1102,    -1,
+      -1,    -1,    -1,  1089,    -1,    -1,    -1,  1083,    -1,    -1,
+      -1,    -1,    -1,  1089,    -1,  1083,  1102,    -1,    -1,    -1,
+      -1,    -1,  1083,  1083,    -1,    -1,  1102,    -1,    -1,    -1,
+      -1,    -1,    -1,  1083,    -1,    -1,  1083,    -1,  1083,    -1,
+      -1,    -1,    -1,    -1,  1089,    -1,    -1,    -1,    -1,    -1,
+    1083,    -1,    -1,    -1,  1083,    -1,  1089,  1102,    -1,    -1,
+      -1,    -1,  1083,    -1,    -1,  1083,  1083,  1083,  1083,    -1,
+      -1,    -1,  1083
   };
 
   const unsigned short
   Dhcp6Parser::yystos_[] =
   {
-       0,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   175,   176,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
-     196,   197,     0,     5,     7,     9,   177,   178,   179,   180,
-     198,   199,   200,   205,     7,   214,     7,   220,     7,   238,
-       7,   336,     7,   413,     7,   429,     7,   446,     7,   365,
-       7,   371,     7,   395,     7,   312,     7,   507,     7,   554,
-       7,   545,   206,   201,   215,   221,   239,   337,   414,   430,
-     447,   366,   372,   396,   313,   508,   555,   546,   198,   207,
-     208,   177,   203,   204,    10,   150,   159,   160,   161,   177,
-     213,   216,   217,   218,   537,   539,   541,   552,    11,    12,
+       0,   166,   167,   168,   169,   170,   171,   172,   173,   174,
+     175,   176,   177,   178,   179,   180,   186,   187,   188,   189,
+     190,   191,   192,   193,   194,   195,   196,   197,   198,   199,
+     200,   201,     0,     5,     7,     9,   181,   182,   183,   184,
+     202,   203,   204,   209,     7,   218,     7,   224,     7,   246,
+       7,   344,     7,   421,     7,   437,     7,   454,     7,   373,
+       7,   379,     7,   403,     7,   320,     7,   515,     7,   562,
+       7,   553,   210,   205,   219,   225,   247,   345,   422,   438,
+     455,   374,   380,   404,   321,   516,   563,   554,   202,   211,
+     212,   181,   207,   208,    10,   154,   163,   164,   165,   181,
+     217,   220,   221,   222,   545,   547,   549,   560,    11,    12,
       15,    18,    19,    20,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    72,    73,    79,    84,
-      85,    86,    87,    88,    90,    95,   104,   107,   114,   122,
-     123,   126,   127,   148,   149,   151,   213,   222,   223,   224,
-     226,   227,   228,   229,   230,   231,   232,   233,   234,   236,
-     245,   247,   249,   286,   292,   298,   304,   306,   320,   330,
-     350,   355,   363,   389,   419,   421,   440,   470,   482,   494,
-     495,   503,   505,   533,   535,   543,   558,    16,    17,   213,
-     240,   241,   242,   244,   419,   421,    64,    66,    74,    75,
-      76,    77,    78,    91,    94,   102,   213,   226,   227,   228,
-     229,   230,   231,   232,   338,   339,   340,   342,   344,   346,
-     348,   350,   353,   354,   389,   407,   419,   421,   423,   440,
-     465,    65,   213,   346,   348,   389,   415,   416,   417,   419,
-     421,    67,    68,    69,    70,    71,   213,   346,   348,   389,
-     419,   421,   431,   432,   433,   435,   436,   438,   439,    90,
-      96,    97,    98,    99,   100,   101,   213,   389,   419,   421,
-     448,   449,   450,   451,   453,   455,   457,   459,   461,   463,
-     363,    21,    55,    57,    58,    61,    62,    63,   213,   267,
-     373,   374,   375,   376,   377,   378,   379,   381,   383,   385,
-     386,   388,   419,   421,    56,    59,    60,   213,   267,   377,
-     383,   397,   398,   399,   400,   401,   403,   404,   405,   406,
-     419,   421,   105,   106,   213,   314,   315,   316,   318,   128,
-     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
-     139,   140,   213,   419,   421,   509,   510,   511,   512,   514,
-     516,   517,   519,   520,   521,   524,   526,   527,   528,   531,
-     533,   535,   556,   557,   558,    13,    14,   547,   548,   549,
-     551,     6,     3,     4,     8,     3,   219,   553,   538,   540,
-     542,     4,     3,     8,   225,   544,   237,   246,   248,   250,
-       4,     4,     4,     4,     4,     4,     4,     4,   235,   331,
-     364,   390,   420,   422,   351,   356,   293,   305,   299,   287,
-     471,   441,   307,   321,   483,     4,   496,   504,   506,   534,
-     536,   559,     3,     8,   243,     4,     3,     8,   408,   424,
-     341,   343,   345,     4,     4,   349,   347,   466,     3,     8,
-     418,     3,     8,   434,     4,   437,     4,     4,     3,     8,
-     464,   452,   454,   456,   458,   460,   462,     8,     3,     8,
-     380,   268,     4,   384,   382,   387,     4,     8,     3,   402,
-       4,     4,     8,     3,   317,   319,     3,     8,     4,   513,
-     515,     4,   518,     4,     4,   522,   525,     4,     4,   529,
-     532,     3,     8,     3,     8,   550,     4,     3,     8,   198,
-     198,   177,     4,     4,     4,     4,     4,   217,     4,     4,
-       4,     4,     4,     4,   178,   178,   178,   178,   180,   179,
-     179,   178,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,   178,
-       4,     4,     4,     4,     4,     4,   223,     4,   180,   241,
-       4,     4,     4,     4,     4,   178,   180,     4,     4,     4,
-     339,     4,   416,     4,   178,     4,   178,   178,   432,     4,
-       4,     4,     4,     4,     4,     4,   450,     4,     4,   178,
-       4,     4,     4,   180,   375,     4,   180,   180,   399,     4,
-       4,   315,   180,     4,     4,   178,     4,   178,   178,     4,
-       4,   180,   180,     4,     4,   510,   557,     4,   178,   548,
-       4,     7,     7,   198,   198,   198,   177,     7,     7,     7,
-       7,     5,   177,     5,     5,     5,   200,   202,   177,    80,
-      81,    82,    83,   352,     5,     5,     5,     5,     7,     5,
-       5,     5,     7,     7,     7,   202,     7,   177,   177,     5,
-       5,   209,     5,     5,   177,   177,   177,   209,   177,     7,
-     177,   177,   177,   209,   209,   209,   177,   177,   177,   177,
-     177,   177,   177,   177,   177,   177,   177,   198,   177,   177,
-     177,   141,   142,   523,   143,   144,   145,   146,   147,   180,
-     530,   177,     5,   198,   222,   556,   547,   240,    21,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    40,    41,    42,   213,   255,   256,   257,
-     260,   262,   264,   266,   267,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   279,   280,   282,   284,   255,     7,
-     251,   252,   253,     7,   332,   333,   334,     7,   367,   368,
-     369,     7,   391,   392,   393,     7,   357,   358,   359,    98,
-     177,   294,   295,   296,   297,   207,    99,   101,   296,   300,
-     301,   302,   303,    89,   288,   289,   290,     7,   472,   473,
-       7,   442,   443,   444,     7,   308,   309,   310,   108,   109,
-     110,   111,   112,   113,   322,   323,   324,   325,   326,   327,
-     328,   329,    21,   118,   119,   120,   121,   213,   269,   419,
-     421,   484,   485,   486,   489,   490,   492,   493,   124,   125,
-     213,   419,   421,   497,   498,   499,   501,   509,     7,   560,
-     561,   210,     7,   409,   410,   411,     7,   425,   426,   427,
-     103,   451,   467,   468,   251,     8,     8,     8,     8,   258,
-     261,   263,   265,     4,     4,     4,     4,     4,   278,     4,
-       4,   281,   283,   285,     4,     4,     4,     3,     8,     8,
-     254,     6,     3,   335,     6,     3,   370,     6,     3,   394,
-       6,     3,   360,     6,     3,     3,     6,     6,     3,     6,
-     291,     3,     8,   474,     3,     6,   445,     6,     3,   311,
-       6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
-     487,   491,     4,     4,     4,     3,     8,   500,   502,     3,
-       8,     8,   562,     3,     6,   177,   211,   212,   412,     6,
-       3,   428,     6,     3,   469,     8,     6,     4,     4,     4,
-       4,   178,   180,   178,   180,   178,     4,   178,   178,     4,
-       4,     4,   178,   178,   180,   256,   255,   253,   338,   334,
-     373,   369,   397,   393,   213,   226,   227,   228,   229,   230,
-     231,   232,   267,   330,   342,   344,   346,   348,   350,   354,
-     361,   362,   389,   419,   421,   465,   359,   295,   301,     4,
-     289,    92,    93,   213,   267,   389,   419,   421,   475,   476,
-     477,   478,   479,   481,   473,   448,   444,   314,   310,   178,
-     178,   178,   178,   178,   178,   323,     4,     4,   178,   178,
-     178,   485,     4,     4,   498,   152,   154,   155,   213,   267,
-     419,   421,   563,   564,   565,   566,   568,   561,     6,     3,
-     415,   411,   431,   427,     4,    22,    23,    24,    25,   259,
-     177,   177,   177,   177,   177,   177,   177,     8,     8,     8,
-       8,     3,     8,   177,   480,     4,     8,     3,     8,     8,
-     115,   116,   117,   488,   177,   177,   177,   569,     4,   567,
-       3,     8,   177,     8,     8,   177,   362,     4,   180,   477,
-       4,   178,     4,   564,   177,     5,   177,     7,   570,   571,
-     572,     3,     6,   153,   156,   157,   158,   573,   574,   575,
-     577,   578,   579,   571,   576,     4,     4,     4,     3,     8,
-       4,   180,   178,   178,   574,   177
+      49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
+      76,    77,    83,    88,    89,    90,    91,    92,    94,    99,
+     108,   111,   118,   126,   127,   130,   131,   155,   217,   226,
+     227,   228,   230,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   244,   253,   255,   257,   294,
+     300,   306,   312,   314,   328,   338,   358,   363,   371,   397,
+     427,   429,   448,   478,   490,   502,   503,   511,   513,   551,
+     566,    16,    17,   217,   248,   249,   250,   252,   427,   429,
+      68,    70,    78,    79,    80,    81,    82,    95,    98,   106,
+     217,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   346,   347,   348,   350,   352,   354,   356,   358,
+     361,   362,   397,   415,   427,   429,   431,   448,   473,    69,
+     217,   354,   356,   397,   423,   424,   425,   427,   429,    71,
+      72,    73,    74,    75,   217,   354,   356,   397,   427,   429,
+     439,   440,   441,   443,   444,   446,   447,    94,   100,   101,
+     102,   103,   104,   105,   217,   397,   427,   429,   456,   457,
+     458,   459,   461,   463,   465,   467,   469,   471,   371,    21,
+      59,    61,    62,    65,    66,    67,   217,   275,   381,   382,
+     383,   384,   385,   386,   387,   389,   391,   393,   394,   396,
+     427,   429,    60,    63,    64,   217,   275,   385,   391,   405,
+     406,   407,   408,   409,   411,   412,   413,   414,   427,   429,
+     109,   110,   217,   322,   323,   324,   326,   132,   133,   134,
+     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
+     152,   153,   217,   427,   429,   517,   518,   519,   520,   522,
+     524,   525,   527,   528,   529,   532,   534,   535,   536,   539,
+     541,   543,   564,   565,   566,    13,    14,   555,   556,   557,
+     559,     6,     3,     4,     8,     3,   223,   561,   546,   548,
+     550,     4,     3,     8,   229,   552,   245,   254,   256,   258,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,   243,   339,   372,   398,   428,   430,   359,   364,
+     301,   313,   307,   295,   479,   449,   315,   329,   491,     4,
+     504,   512,   514,   567,     3,     8,   251,     4,     3,     8,
+     416,   432,   349,   351,   353,     4,     4,   357,   355,   474,
+       3,     8,   426,     3,     8,   442,     4,   445,     4,     4,
+       3,     8,   472,   460,   462,   464,   466,   468,   470,     8,
+       3,     8,   388,   276,     4,   392,   390,   395,     4,     8,
+       3,   410,     4,     4,     8,     3,   325,   327,     3,     8,
+       4,   521,   523,     4,   526,     4,     4,   530,   533,     4,
+       4,   537,   540,   542,   544,     3,     8,     3,     8,   558,
+       4,     3,     8,   202,   202,   181,     4,     4,     4,     4,
+       4,   221,     4,     4,     4,     4,     4,     4,   182,   182,
+     182,   182,   182,   182,   182,   182,   184,   183,   183,   182,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,   182,     4,     4,
+       4,     4,   227,     4,   184,   249,     4,     4,     4,     4,
+       4,   182,   184,     4,     4,     4,   347,     4,   424,     4,
+     182,     4,   182,   182,   440,     4,     4,     4,     4,     4,
+       4,     4,   458,     4,     4,   182,     4,     4,     4,   184,
+     383,     4,   184,   184,   407,     4,     4,   323,   184,     4,
+       4,   182,     4,   182,   182,     4,     4,   184,   184,     4,
+       4,     4,     4,   518,   565,     4,   182,   556,     4,     7,
+       7,   202,   202,   202,   181,     7,     7,     7,     7,     5,
+     181,     5,     5,     5,   204,   206,   181,    84,    85,    86,
+      87,   360,     5,     5,     5,     5,     7,     5,     5,     5,
+       7,     7,     7,   206,     7,     5,     5,   213,     5,     5,
+     181,   181,   181,   213,   181,     7,   181,   181,   181,   213,
+     213,   213,   181,   181,   181,   181,   181,   181,   181,   181,
+     181,   181,   181,   202,   181,   181,   181,   145,   146,   531,
+     147,   148,   149,   150,   151,   184,   538,   181,   181,   181,
+       5,   202,   226,   564,   555,   248,    21,    26,    27,    28,
+      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    40,    41,    42,   217,   263,   264,   265,   268,   270,
+     272,   274,   275,   277,   278,   279,   280,   281,   282,   283,
+     284,   285,   287,   288,   290,   292,   263,     7,   259,   260,
+     261,     7,   340,   341,   342,     7,   375,   376,   377,     7,
+     399,   400,   401,     7,   365,   366,   367,   102,   181,   302,
+     303,   304,   305,   211,   103,   105,   304,   308,   309,   310,
+     311,    93,   296,   297,   298,     7,   480,   481,     7,   450,
+     451,   452,     7,   316,   317,   318,   112,   113,   114,   115,
+     116,   117,   330,   331,   332,   333,   334,   335,   336,   337,
+      21,   122,   123,   124,   125,   217,   277,   427,   429,   492,
+     493,   494,   497,   498,   500,   501,   128,   129,   217,   427,
+     429,   505,   506,   507,   509,   517,     7,   568,   569,   214,
+       7,   417,   418,   419,     7,   433,   434,   435,   107,   459,
+     475,   476,   259,     8,     8,     8,     8,   266,   269,   271,
+     273,     4,     4,     4,     4,     4,   286,     4,     4,   289,
+     291,   293,     4,     4,     4,     3,     8,     8,   262,     6,
+       3,   343,     6,     3,   378,     6,     3,   402,     6,     3,
+     368,     6,     3,     3,     6,     6,     3,     6,   299,     3,
+       8,   482,     3,     6,   453,     6,     3,   319,     6,     3,
+       4,     4,     4,     4,     4,     4,     3,     8,   495,   499,
+       4,     4,     4,     3,     8,   508,   510,     3,     8,     8,
+     570,     3,     6,   181,   215,   216,   420,     6,     3,   436,
+       6,     3,   477,     8,     6,     4,     4,     4,     4,   182,
+     184,   182,   184,   182,     4,   182,   182,     4,     4,     4,
+     182,   182,   184,   264,   263,   261,   346,   342,   381,   377,
+     405,   401,   217,   230,   231,   232,   233,   234,   235,   236,
+     237,   238,   239,   240,   275,   338,   350,   352,   354,   356,
+     358,   362,   369,   370,   397,   427,   429,   473,   367,   303,
+     309,     4,   297,    96,    97,   217,   275,   397,   427,   429,
+     483,   484,   485,   486,   487,   489,   481,   456,   452,   322,
+     318,   182,   182,   182,   182,   182,   182,   331,     4,     4,
+     182,   182,   182,   493,     4,     4,   506,   156,   158,   159,
+     217,   275,   427,   429,   571,   572,   573,   574,   576,   569,
+       6,     3,   423,   419,   439,   435,     4,    22,    23,    24,
+      25,   267,   181,   181,   181,   181,   181,   181,   181,     8,
+       8,     8,     8,     3,     8,   181,   488,     4,     8,     3,
+       8,     8,   119,   120,   121,   496,   181,   181,   181,   577,
+       4,   575,     3,     8,   181,     8,     8,   181,   370,     4,
+     184,   485,     4,   182,     4,   572,   181,     5,   181,     7,
+     578,   579,   580,     3,     6,   157,   160,   161,   162,   581,
+     582,   583,   585,   586,   587,   579,   584,     4,     4,     4,
+       3,     8,     4,   184,   182,   182,   582,   181
   };
 
   const unsigned short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   181,   183,   182,   184,   182,   185,   182,   186,   182,
-     187,   182,   188,   182,   189,   182,   190,   182,   191,   182,
-     192,   182,   193,   182,   194,   182,   195,   182,   196,   182,
-     197,   182,   198,   198,   198,   198,   198,   198,   198,   199,
-     201,   200,   202,   203,   203,   204,   204,   206,   205,   207,
-     207,   208,   208,   210,   209,   211,   211,   212,   212,   213,
-     215,   214,   216,   216,   217,   217,   217,   217,   217,   217,
-     219,   218,   221,   220,   222,   222,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   223,   223,   223,   223,   223,
-     223,   223,   223,   223,   223,   225,   224,   226,   227,   228,
-     229,   230,   231,   232,   233,   235,   234,   237,   236,   239,
-     238,   240,   240,   241,   241,   241,   241,   241,   243,   242,
-     244,   246,   245,   248,   247,   250,   249,   251,   251,   252,
-     252,   254,   253,   255,   255,   256,   256,   256,   256,   256,
-     256,   256,   256,   256,   256,   256,   256,   256,   256,   256,
-     256,   256,   256,   256,   256,   258,   257,   259,   259,   259,
-     259,   261,   260,   263,   262,   265,   264,   266,   268,   267,
-     269,   270,   271,   272,   273,   274,   275,   276,   278,   277,
-     279,   281,   280,   283,   282,   285,   284,   287,   286,   288,
-     288,   289,   291,   290,   293,   292,   294,   294,   295,   295,
-     296,   297,   299,   298,   300,   300,   301,   301,   301,   302,
-     303,   305,   304,   307,   306,   308,   308,   309,   309,   311,
-     310,   313,   312,   314,   314,   314,   315,   315,   317,   316,
-     319,   318,   321,   320,   322,   322,   323,   323,   323,   323,
-     323,   323,   324,   325,   326,   327,   328,   329,   331,   330,
-     332,   332,   333,   333,   335,   334,   337,   336,   338,   338,
-     339,   339,   339,   339,   339,   339,   339,   339,   339,   339,
-     339,   339,   339,   339,   339,   339,   339,   339,   339,   339,
-     339,   339,   339,   341,   340,   343,   342,   345,   344,   347,
-     346,   349,   348,   351,   350,   352,   352,   352,   352,   353,
-     354,   356,   355,   357,   357,   358,   358,   360,   359,   361,
-     361,   362,   362,   362,   362,   362,   362,   362,   362,   362,
-     362,   362,   362,   362,   362,   362,   362,   362,   362,   362,
-     362,   364,   363,   366,   365,   367,   367,   368,   368,   370,
-     369,   372,   371,   373,   373,   374,   374,   375,   375,   375,
-     375,   375,   375,   375,   375,   375,   375,   376,   377,   378,
-     380,   379,   382,   381,   384,   383,   385,   387,   386,   388,
-     390,   389,   391,   391,   392,   392,   394,   393,   396,   395,
-     397,   397,   398,   398,   399,   399,   399,   399,   399,   399,
-     399,   399,   399,   400,   402,   401,   403,   404,   405,   406,
-     408,   407,   409,   409,   410,   410,   412,   411,   414,   413,
-     415,   415,   416,   416,   416,   416,   416,   416,   416,   418,
-     417,   420,   419,   422,   421,   424,   423,   425,   425,   426,
-     426,   428,   427,   430,   429,   431,   431,   432,   432,   432,
-     432,   432,   432,   432,   432,   432,   432,   432,   434,   433,
-     435,   437,   436,   438,   439,   441,   440,   442,   442,   443,
-     443,   445,   444,   447,   446,   448,   448,   449,   449,   450,
-     450,   450,   450,   450,   450,   450,   450,   450,   450,   450,
-     452,   451,   454,   453,   456,   455,   458,   457,   460,   459,
-     462,   461,   464,   463,   466,   465,   467,   467,   469,   468,
-     471,   470,   472,   472,   474,   473,   475,   475,   476,   476,
-     477,   477,   477,   477,   477,   477,   477,   478,   480,   479,
-     481,   483,   482,   484,   484,   485,   485,   485,   485,   485,
-     485,   485,   485,   485,   487,   486,   488,   488,   488,   489,
-     491,   490,   492,   493,   494,   496,   495,   497,   497,   498,
-     498,   498,   498,   498,   500,   499,   502,   501,   504,   503,
-     506,   505,   508,   507,   509,   509,   510,   510,   510,   510,
-     510,   510,   510,   510,   510,   510,   510,   510,   510,   510,
-     510,   510,   510,   510,   511,   513,   512,   515,   514,   516,
-     518,   517,   519,   520,   522,   521,   523,   523,   525,   524,
-     526,   527,   529,   528,   530,   530,   530,   530,   530,   532,
-     531,   534,   533,   536,   535,   538,   537,   540,   539,   542,
-     541,   544,   543,   546,   545,   547,   547,   548,   548,   550,
-     549,   551,   553,   552,   555,   554,   556,   556,   557,   559,
-     558,   560,   560,   562,   561,   563,   563,   564,   564,   564,
-     564,   564,   564,   564,   565,   567,   566,   569,   568,   570,
-     570,   572,   571,   573,   573,   574,   574,   574,   574,   576,
-     575,   577,   578,   579
+       0,   185,   187,   186,   188,   186,   189,   186,   190,   186,
+     191,   186,   192,   186,   193,   186,   194,   186,   195,   186,
+     196,   186,   197,   186,   198,   186,   199,   186,   200,   186,
+     201,   186,   202,   202,   202,   202,   202,   202,   202,   203,
+     205,   204,   206,   207,   207,   208,   208,   210,   209,   211,
+     211,   212,   212,   214,   213,   215,   215,   216,   216,   217,
+     219,   218,   220,   220,   221,   221,   221,   221,   221,   221,
+     223,   222,   225,   224,   226,   226,   227,   227,   227,   227,
+     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
+     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
+     227,   227,   227,   227,   227,   227,   227,   227,   227,   227,
+     227,   227,   227,   227,   227,   227,   227,   229,   228,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   243,   242,   245,   244,   247,   246,   248,   248,   249,
+     249,   249,   249,   249,   251,   250,   252,   254,   253,   256,
+     255,   258,   257,   259,   259,   260,   260,   262,   261,   263,
+     263,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   264,   264,   264,   264,   264,   264,   264,   264,   264,
+     264,   266,   265,   267,   267,   267,   267,   269,   268,   271,
+     270,   273,   272,   274,   276,   275,   277,   278,   279,   280,
+     281,   282,   283,   284,   286,   285,   287,   289,   288,   291,
+     290,   293,   292,   295,   294,   296,   296,   297,   299,   298,
+     301,   300,   302,   302,   303,   303,   304,   305,   307,   306,
+     308,   308,   309,   309,   309,   310,   311,   313,   312,   315,
+     314,   316,   316,   317,   317,   319,   318,   321,   320,   322,
+     322,   322,   323,   323,   325,   324,   327,   326,   329,   328,
+     330,   330,   331,   331,   331,   331,   331,   331,   332,   333,
+     334,   335,   336,   337,   339,   338,   340,   340,   341,   341,
+     343,   342,   345,   344,   346,   346,   347,   347,   347,   347,
+     347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
+     347,   347,   347,   347,   347,   347,   347,   347,   347,   347,
+     347,   347,   347,   349,   348,   351,   350,   353,   352,   355,
+     354,   357,   356,   359,   358,   360,   360,   360,   360,   361,
+     362,   364,   363,   365,   365,   366,   366,   368,   367,   369,
+     369,   370,   370,   370,   370,   370,   370,   370,   370,   370,
+     370,   370,   370,   370,   370,   370,   370,   370,   370,   370,
+     370,   370,   370,   370,   370,   372,   371,   374,   373,   375,
+     375,   376,   376,   378,   377,   380,   379,   381,   381,   382,
+     382,   383,   383,   383,   383,   383,   383,   383,   383,   383,
+     383,   384,   385,   386,   388,   387,   390,   389,   392,   391,
+     393,   395,   394,   396,   398,   397,   399,   399,   400,   400,
+     402,   401,   404,   403,   405,   405,   406,   406,   407,   407,
+     407,   407,   407,   407,   407,   407,   407,   408,   410,   409,
+     411,   412,   413,   414,   416,   415,   417,   417,   418,   418,
+     420,   419,   422,   421,   423,   423,   424,   424,   424,   424,
+     424,   424,   424,   426,   425,   428,   427,   430,   429,   432,
+     431,   433,   433,   434,   434,   436,   435,   438,   437,   439,
+     439,   440,   440,   440,   440,   440,   440,   440,   440,   440,
+     440,   440,   442,   441,   443,   445,   444,   446,   447,   449,
+     448,   450,   450,   451,   451,   453,   452,   455,   454,   456,
+     456,   457,   457,   458,   458,   458,   458,   458,   458,   458,
+     458,   458,   458,   458,   460,   459,   462,   461,   464,   463,
+     466,   465,   468,   467,   470,   469,   472,   471,   474,   473,
+     475,   475,   477,   476,   479,   478,   480,   480,   482,   481,
+     483,   483,   484,   484,   485,   485,   485,   485,   485,   485,
+     485,   486,   488,   487,   489,   491,   490,   492,   492,   493,
+     493,   493,   493,   493,   493,   493,   493,   493,   495,   494,
+     496,   496,   496,   497,   499,   498,   500,   501,   502,   504,
+     503,   505,   505,   506,   506,   506,   506,   506,   508,   507,
+     510,   509,   512,   511,   514,   513,   516,   515,   517,   517,
+     518,   518,   518,   518,   518,   518,   518,   518,   518,   518,
+     518,   518,   518,   518,   518,   518,   518,   518,   519,   521,
+     520,   523,   522,   524,   526,   525,   527,   528,   530,   529,
+     531,   531,   533,   532,   534,   535,   537,   536,   538,   538,
+     538,   538,   538,   540,   539,   542,   541,   544,   543,   546,
+     545,   548,   547,   550,   549,   552,   551,   554,   553,   555,
+     555,   556,   556,   558,   557,   559,   561,   560,   563,   562,
+     564,   564,   565,   567,   566,   568,   568,   570,   569,   571,
+     571,   572,   572,   572,   572,   572,   572,   572,   573,   575,
+     574,   577,   576,   578,   578,   580,   579,   581,   581,   582,
+     582,   582,   582,   584,   583,   585,   586,   587
   };
 
   const unsigned char
@@ -4872,23 +4925,24 @@ namespace isc { namespace dhcp {
        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,     0,     4,     3,     3,     3,
-       3,     3,     3,     3,     3,     0,     4,     0,     6,     0,
-       4,     1,     3,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     6,     0,     6,     0,     6,     0,     1,     1,
-       3,     0,     4,     1,     3,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     0,     4,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     0,     4,     0,     6,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     0,     4,     3,     0,     6,     0,
+       6,     0,     6,     0,     1,     1,     3,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
-       1,     0,     4,     0,     4,     0,     4,     3,     0,     4,
-       3,     3,     3,     3,     3,     3,     3,     3,     0,     4,
-       3,     0,     4,     0,     4,     0,     4,     0,     6,     1,
-       3,     1,     0,     4,     0,     6,     1,     3,     1,     1,
-       1,     1,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     0,     6,     0,     6,     0,     1,     1,     3,     0,
-       4,     0,     4,     1,     3,     1,     1,     1,     0,     4,
-       0,     4,     0,     6,     1,     3,     1,     1,     1,     1,
-       1,     1,     3,     3,     3,     3,     3,     3,     0,     6,
-       0,     1,     1,     3,     0,     4,     0,     4,     1,     3,
+       1,     0,     4,     1,     1,     1,     1,     0,     4,     0,
+       4,     0,     4,     3,     0,     4,     3,     3,     3,     3,
+       3,     3,     3,     3,     0,     4,     3,     0,     4,     0,
+       4,     0,     4,     0,     6,     1,     3,     1,     0,     4,
+       0,     6,     1,     3,     1,     1,     1,     1,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     0,     6,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     0,     4,     0,     4,     0,     6,
+       1,     3,     1,     1,     1,     1,     1,     1,     3,     3,
+       3,     3,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
@@ -4896,41 +4950,41 @@ namespace isc { namespace dhcp {
        3,     0,     6,     0,     1,     1,     3,     0,     4,     1,
        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     0,     6,     0,     4,     0,     1,     1,     3,     0,
-       4,     0,     4,     0,     1,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
-       0,     4,     0,     4,     0,     4,     1,     0,     4,     3,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
-       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     1,     1,     3,     3,
-       0,     6,     0,     1,     1,     3,     0,     4,     0,     4,
-       1,     3,     1,     1,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     4,     3,     3,     0,     6,     0,     1,     1,
-       3,     0,     4,     0,     4,     0,     1,     1,     3,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       0,     4,     0,     4,     0,     4,     0,     4,     0,     4,
-       0,     4,     0,     4,     0,     6,     1,     1,     0,     4,
-       0,     6,     1,     3,     0,     4,     0,     1,     1,     3,
+       1,     1,     1,     1,     1,     0,     6,     0,     4,     0,
+       1,     1,     3,     0,     4,     0,     4,     0,     1,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     3,     1,     0,     4,     0,     4,     0,     4,
+       1,     0,     4,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     0,     1,     1,     3,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
-       3,     0,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     0,     4,     1,     1,     1,     3,
-       0,     4,     3,     3,     3,     0,     6,     1,     3,     1,
+       1,     1,     3,     3,     0,     6,     0,     1,     1,     3,
+       0,     4,     0,     4,     1,     3,     1,     1,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     3,     0,     4,     3,     3,     0,
+       6,     0,     1,     1,     3,     0,     4,     0,     4,     0,
+       1,     1,     3,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
-       0,     6,     0,     4,     1,     3,     1,     1,     1,     1,
+       0,     4,     0,     4,     0,     4,     0,     4,     0,     6,
+       1,     1,     0,     4,     0,     6,     1,     3,     0,     4,
+       0,     1,     1,     3,     1,     1,     1,     1,     1,     1,
+       1,     1,     0,     4,     3,     0,     6,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     0,     4,
+       1,     1,     1,     3,     0,     4,     3,     3,     3,     0,
+       6,     1,     3,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     0,     4,     0,     6,     0,     4,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     3,     0,     4,     0,     4,     3,
-       0,     4,     3,     3,     0,     4,     1,     1,     0,     4,
-       3,     3,     0,     4,     1,     1,     1,     1,     1,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     6,     0,     4,     1,     3,     1,     1,     0,
-       6,     3,     0,     6,     0,     4,     1,     3,     1,     0,
-       6,     1,     3,     0,     4,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     3,     0,     4,     0,     6,     1,
-       3,     0,     4,     1,     3,     1,     1,     1,     1,     0,
-       4,     3,     3,     3
+       1,     1,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     0,     4,     3,     0,     4,     3,     3,     0,     4,
+       1,     1,     0,     4,     3,     3,     0,     4,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     4,     0,     6,     0,     4,     1,
+       3,     1,     1,     0,     6,     3,     0,     6,     0,     4,
+       1,     3,     1,     0,     6,     1,     3,     0,     4,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     3,     0,
+       4,     0,     6,     1,     3,     0,     4,     1,     3,     1,
+       1,     1,     1,     0,     4,     3,     3,     3
   };
 
 
@@ -4951,7 +5005,9 @@ namespace isc { namespace dhcp {
   "\"connect-timeout\"", "\"contact-points\"", "\"max-reconnect-tries\"",
   "\"reconnect-wait-time\"", "\"keyspace\"", "\"consistency\"",
   "\"serial-consistency\"", "\"request-timeout\"", "\"tcp-keepalive\"",
-  "\"tcp-nodelay\"", "\"preferred-lifetime\"", "\"valid-lifetime\"",
+  "\"tcp-nodelay\"", "\"preferred-lifetime\"",
+  "\"min-preferred-lifetime\"", "\"max-preferred-lifetime\"",
+  "\"valid-lifetime\"", "\"min-valid-lifetime\"", "\"max-valid-lifetime\"",
   "\"renew-timer\"", "\"rebind-timer\"", "\"calculate-tee-times\"",
   "\"t1-percent\"", "\"t2-percent\"", "\"decline-probation-period\"",
   "\"server-tag\"", "\"subnet6\"", "\"option-def\"", "\"option-data\"",
@@ -4999,21 +5055,23 @@ namespace isc { namespace dhcp {
   "not_empty_list_strings", "unknown_map_entry", "syntax_map", "$@19",
   "global_objects", "global_object", "dhcp6_object", "$@20", "sub_dhcp6",
   "$@21", "global_params", "global_param", "data_directory", "$@22",
-  "preferred_lifetime", "valid_lifetime", "renew_timer", "rebind_timer",
-  "calculate_tee_times", "t1_percent", "t2_percent",
-  "decline_probation_period", "server_tag", "$@23", "interfaces_config",
-  "$@24", "sub_interfaces6", "$@25", "interfaces_config_params",
-  "interfaces_config_param", "interfaces_list", "$@26", "re_detect",
-  "lease_database", "$@27", "hosts_database", "$@28", "hosts_databases",
-  "$@29", "database_list", "not_empty_database_list", "database", "$@30",
-  "database_map_params", "database_map_param", "database_type", "$@31",
-  "db_type", "user", "$@32", "password", "$@33", "host", "$@34", "port",
-  "name", "$@35", "persist", "lfc_interval", "readonly", "connect_timeout",
-  "reconnect_wait_time", "request_timeout", "tcp_keepalive", "tcp_nodelay",
-  "contact_points", "$@36", "max_reconnect_tries", "keyspace", "$@37",
-  "consistency", "$@38", "serial_consistency", "$@39", "sanity_checks",
-  "$@40", "sanity_checks_params", "sanity_checks_param", "lease_checks",
-  "$@41", "mac_sources", "$@42", "mac_sources_list", "mac_sources_value",
+  "preferred_lifetime", "min_preferred_lifetime", "max_preferred_lifetime",
+  "valid_lifetime", "min_valid_lifetime", "max_valid_lifetime",
+  "renew_timer", "rebind_timer", "calculate_tee_times", "t1_percent",
+  "t2_percent", "decline_probation_period", "server_tag", "$@23",
+  "interfaces_config", "$@24", "sub_interfaces6", "$@25",
+  "interfaces_config_params", "interfaces_config_param", "interfaces_list",
+  "$@26", "re_detect", "lease_database", "$@27", "hosts_database", "$@28",
+  "hosts_databases", "$@29", "database_list", "not_empty_database_list",
+  "database", "$@30", "database_map_params", "database_map_param",
+  "database_type", "$@31", "db_type", "user", "$@32", "password", "$@33",
+  "host", "$@34", "port", "name", "$@35", "persist", "lfc_interval",
+  "readonly", "connect_timeout", "reconnect_wait_time", "request_timeout",
+  "tcp_keepalive", "tcp_nodelay", "contact_points", "$@36",
+  "max_reconnect_tries", "keyspace", "$@37", "consistency", "$@38",
+  "serial_consistency", "$@39", "sanity_checks", "$@40",
+  "sanity_checks_params", "sanity_checks_param", "lease_checks", "$@41",
+  "mac_sources", "$@42", "mac_sources_list", "mac_sources_value",
   "duid_id", "string_id", "host_reservation_identifiers", "$@43",
   "host_reservation_identifiers_list", "host_reservation_identifier",
   "hw_address_id", "flex_id", "relay_supplied_options", "$@44",
@@ -5091,76 +5149,77 @@ namespace isc { namespace dhcp {
   const unsigned short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   265,   265,   265,   266,   266,   267,   267,   268,   268,
-     269,   269,   270,   270,   271,   271,   272,   272,   273,   273,
-     274,   274,   275,   275,   276,   276,   277,   277,   278,   278,
-     279,   279,   287,   288,   289,   290,   291,   292,   293,   296,
-     301,   301,   312,   315,   316,   319,   323,   330,   330,   337,
-     338,   341,   345,   352,   352,   359,   360,   363,   367,   378,
-     388,   388,   403,   404,   408,   409,   410,   411,   412,   413,
-     416,   416,   431,   431,   440,   441,   446,   447,   448,   449,
-     450,   451,   452,   453,   454,   455,   456,   457,   458,   459,
-     460,   461,   462,   463,   464,   465,   466,   467,   468,   469,
-     470,   471,   472,   473,   474,   475,   476,   477,   478,   479,
-     480,   481,   482,   483,   484,   487,   487,   495,   500,   505,
-     510,   515,   520,   525,   530,   535,   535,   543,   543,   554,
-     554,   563,   564,   567,   568,   569,   570,   571,   574,   574,
-     584,   590,   590,   602,   602,   614,   614,   624,   625,   628,
-     629,   632,   632,   642,   643,   646,   647,   648,   649,   650,
-     651,   652,   653,   654,   655,   656,   657,   658,   659,   660,
-     661,   662,   663,   664,   665,   668,   668,   675,   676,   677,
-     678,   681,   681,   689,   689,   697,   697,   705,   710,   710,
-     718,   723,   728,   733,   738,   743,   748,   753,   758,   758,
-     766,   771,   771,   779,   779,   787,   787,   795,   795,   805,
-     806,   808,   810,   810,   828,   828,   838,   839,   842,   843,
-     846,   851,   856,   856,   866,   867,   870,   871,   872,   875,
-     880,   887,   887,   897,   897,   907,   908,   911,   912,   915,
-     915,   925,   925,   935,   936,   937,   940,   941,   944,   944,
-     952,   952,   960,   960,   971,   972,   975,   976,   977,   978,
-     979,   980,   983,   988,   993,   998,  1003,  1008,  1016,  1016,
-    1029,  1030,  1033,  1034,  1041,  1041,  1067,  1067,  1078,  1079,
-    1083,  1084,  1085,  1086,  1087,  1088,  1089,  1090,  1091,  1092,
-    1093,  1094,  1095,  1096,  1097,  1098,  1099,  1100,  1101,  1102,
-    1103,  1104,  1105,  1108,  1108,  1116,  1116,  1124,  1124,  1132,
-    1132,  1140,  1140,  1150,  1150,  1157,  1158,  1159,  1160,  1163,
-    1168,  1176,  1176,  1187,  1188,  1192,  1193,  1196,  1196,  1204,
-    1205,  1208,  1209,  1210,  1211,  1212,  1213,  1214,  1215,  1216,
-    1217,  1218,  1219,  1220,  1221,  1222,  1223,  1224,  1225,  1226,
-    1227,  1234,  1234,  1247,  1247,  1256,  1257,  1260,  1261,  1266,
-    1266,  1281,  1281,  1295,  1296,  1299,  1300,  1303,  1304,  1305,
-    1306,  1307,  1308,  1309,  1310,  1311,  1312,  1315,  1317,  1322,
-    1324,  1324,  1332,  1332,  1340,  1340,  1348,  1350,  1350,  1358,
-    1367,  1367,  1379,  1380,  1385,  1386,  1391,  1391,  1403,  1403,
-    1415,  1416,  1421,  1422,  1427,  1428,  1429,  1430,  1431,  1432,
-    1433,  1434,  1435,  1438,  1440,  1440,  1448,  1450,  1452,  1457,
-    1465,  1465,  1477,  1478,  1481,  1482,  1485,  1485,  1495,  1495,
-    1504,  1505,  1508,  1509,  1510,  1511,  1512,  1513,  1514,  1517,
-    1517,  1525,  1525,  1550,  1550,  1580,  1580,  1592,  1593,  1596,
-    1597,  1600,  1600,  1612,  1612,  1624,  1625,  1628,  1629,  1630,
-    1631,  1632,  1633,  1634,  1635,  1636,  1637,  1638,  1641,  1641,
-    1649,  1654,  1654,  1662,  1667,  1675,  1675,  1685,  1686,  1689,
-    1690,  1693,  1693,  1702,  1702,  1711,  1712,  1715,  1716,  1720,
-    1721,  1722,  1723,  1724,  1725,  1726,  1727,  1728,  1729,  1730,
-    1733,  1733,  1743,  1743,  1753,  1753,  1761,  1761,  1769,  1769,
-    1777,  1777,  1785,  1785,  1798,  1798,  1808,  1809,  1812,  1812,
-    1823,  1823,  1833,  1834,  1837,  1837,  1847,  1848,  1851,  1852,
-    1855,  1856,  1857,  1858,  1859,  1860,  1861,  1864,  1866,  1866,
-    1874,  1882,  1882,  1894,  1895,  1898,  1899,  1900,  1901,  1902,
-    1903,  1904,  1905,  1906,  1909,  1909,  1916,  1917,  1918,  1921,
-    1926,  1926,  1934,  1939,  1946,  1953,  1953,  1963,  1964,  1967,
-    1968,  1969,  1970,  1971,  1974,  1974,  1982,  1982,  1992,  1992,
-    2032,  2032,  2044,  2044,  2054,  2055,  2058,  2059,  2060,  2061,
-    2062,  2063,  2064,  2065,  2066,  2067,  2068,  2069,  2070,  2071,
-    2072,  2073,  2074,  2075,  2078,  2083,  2083,  2091,  2091,  2099,
-    2104,  2104,  2112,  2117,  2122,  2122,  2130,  2131,  2134,  2134,
-    2142,  2147,  2152,  2152,  2160,  2163,  2166,  2169,  2172,  2178,
-    2178,  2186,  2186,  2194,  2194,  2204,  2204,  2211,  2211,  2218,
-    2218,  2227,  2227,  2238,  2238,  2248,  2249,  2253,  2254,  2257,
-    2257,  2267,  2277,  2277,  2287,  2287,  2298,  2299,  2303,  2307,
-    2307,  2319,  2320,  2324,  2324,  2332,  2333,  2336,  2337,  2338,
-    2339,  2340,  2341,  2342,  2345,  2350,  2350,  2358,  2358,  2368,
-    2369,  2372,  2372,  2380,  2381,  2384,  2385,  2386,  2387,  2390,
-    2390,  2398,  2403,  2408
+       0,   269,   269,   269,   270,   270,   271,   271,   272,   272,
+     273,   273,   274,   274,   275,   275,   276,   276,   277,   277,
+     278,   278,   279,   279,   280,   280,   281,   281,   282,   282,
+     283,   283,   291,   292,   293,   294,   295,   296,   297,   300,
+     305,   305,   316,   319,   320,   323,   327,   334,   334,   341,
+     342,   345,   349,   356,   356,   363,   364,   367,   371,   382,
+     392,   392,   407,   408,   412,   413,   414,   415,   416,   417,
+     420,   420,   435,   435,   444,   445,   450,   451,   452,   453,
+     454,   455,   456,   457,   458,   459,   460,   461,   462,   463,
+     464,   465,   466,   467,   468,   469,   470,   471,   472,   473,
+     474,   475,   476,   477,   478,   479,   480,   481,   482,   483,
+     484,   485,   486,   487,   488,   489,   490,   493,   493,   501,
+     506,   511,   516,   521,   526,   531,   536,   541,   546,   551,
+     556,   561,   561,   569,   569,   580,   580,   589,   590,   593,
+     594,   595,   596,   597,   600,   600,   610,   616,   616,   628,
+     628,   640,   640,   650,   651,   654,   655,   658,   658,   668,
+     669,   672,   673,   674,   675,   676,   677,   678,   679,   680,
+     681,   682,   683,   684,   685,   686,   687,   688,   689,   690,
+     691,   694,   694,   701,   702,   703,   704,   707,   707,   715,
+     715,   723,   723,   731,   736,   736,   744,   749,   754,   759,
+     764,   769,   774,   779,   784,   784,   792,   797,   797,   805,
+     805,   813,   813,   821,   821,   831,   832,   834,   836,   836,
+     854,   854,   864,   865,   868,   869,   872,   877,   882,   882,
+     892,   893,   896,   897,   898,   901,   906,   913,   913,   923,
+     923,   933,   934,   937,   938,   941,   941,   951,   951,   961,
+     962,   963,   966,   967,   970,   970,   978,   978,   986,   986,
+     997,   998,  1001,  1002,  1003,  1004,  1005,  1006,  1009,  1014,
+    1019,  1024,  1029,  1034,  1042,  1042,  1055,  1056,  1059,  1060,
+    1067,  1067,  1093,  1093,  1104,  1105,  1109,  1110,  1111,  1112,
+    1113,  1114,  1115,  1116,  1117,  1118,  1119,  1120,  1121,  1122,
+    1123,  1124,  1125,  1126,  1127,  1128,  1129,  1130,  1131,  1132,
+    1133,  1134,  1135,  1138,  1138,  1146,  1146,  1154,  1154,  1162,
+    1162,  1170,  1170,  1180,  1180,  1187,  1188,  1189,  1190,  1193,
+    1198,  1206,  1206,  1217,  1218,  1222,  1223,  1226,  1226,  1234,
+    1235,  1238,  1239,  1240,  1241,  1242,  1243,  1244,  1245,  1246,
+    1247,  1248,  1249,  1250,  1251,  1252,  1253,  1254,  1255,  1256,
+    1257,  1258,  1259,  1260,  1261,  1268,  1268,  1281,  1281,  1290,
+    1291,  1294,  1295,  1300,  1300,  1315,  1315,  1329,  1330,  1333,
+    1334,  1337,  1338,  1339,  1340,  1341,  1342,  1343,  1344,  1345,
+    1346,  1349,  1351,  1356,  1358,  1358,  1366,  1366,  1374,  1374,
+    1382,  1384,  1384,  1392,  1401,  1401,  1413,  1414,  1419,  1420,
+    1425,  1425,  1437,  1437,  1449,  1450,  1455,  1456,  1461,  1462,
+    1463,  1464,  1465,  1466,  1467,  1468,  1469,  1472,  1474,  1474,
+    1482,  1484,  1486,  1491,  1499,  1499,  1511,  1512,  1515,  1516,
+    1519,  1519,  1529,  1529,  1538,  1539,  1542,  1543,  1544,  1545,
+    1546,  1547,  1548,  1551,  1551,  1559,  1559,  1584,  1584,  1614,
+    1614,  1626,  1627,  1630,  1631,  1634,  1634,  1646,  1646,  1658,
+    1659,  1662,  1663,  1664,  1665,  1666,  1667,  1668,  1669,  1670,
+    1671,  1672,  1675,  1675,  1683,  1688,  1688,  1696,  1701,  1709,
+    1709,  1719,  1720,  1723,  1724,  1727,  1727,  1736,  1736,  1745,
+    1746,  1749,  1750,  1754,  1755,  1756,  1757,  1758,  1759,  1760,
+    1761,  1762,  1763,  1764,  1767,  1767,  1777,  1777,  1787,  1787,
+    1795,  1795,  1803,  1803,  1811,  1811,  1819,  1819,  1832,  1832,
+    1842,  1843,  1846,  1846,  1857,  1857,  1867,  1868,  1871,  1871,
+    1881,  1882,  1885,  1886,  1889,  1890,  1891,  1892,  1893,  1894,
+    1895,  1898,  1900,  1900,  1908,  1916,  1916,  1928,  1929,  1932,
+    1933,  1934,  1935,  1936,  1937,  1938,  1939,  1940,  1943,  1943,
+    1950,  1951,  1952,  1955,  1960,  1960,  1968,  1973,  1980,  1987,
+    1987,  1997,  1998,  2001,  2002,  2003,  2004,  2005,  2008,  2008,
+    2016,  2016,  2026,  2026,  2066,  2066,  2078,  2078,  2088,  2089,
+    2092,  2093,  2094,  2095,  2096,  2097,  2098,  2099,  2100,  2101,
+    2102,  2103,  2104,  2105,  2106,  2107,  2108,  2109,  2112,  2117,
+    2117,  2125,  2125,  2133,  2138,  2138,  2146,  2151,  2156,  2156,
+    2164,  2165,  2168,  2168,  2176,  2181,  2186,  2186,  2194,  2197,
+    2200,  2203,  2206,  2212,  2212,  2220,  2220,  2228,  2228,  2238,
+    2238,  2245,  2245,  2252,  2252,  2261,  2261,  2272,  2272,  2282,
+    2283,  2287,  2288,  2291,  2291,  2301,  2311,  2311,  2321,  2321,
+    2332,  2333,  2337,  2341,  2341,  2353,  2354,  2358,  2358,  2366,
+    2367,  2370,  2371,  2372,  2373,  2374,  2375,  2376,  2379,  2384,
+    2384,  2392,  2392,  2402,  2403,  2406,  2406,  2414,  2415,  2418,
+    2419,  2420,  2421,  2424,  2424,  2432,  2437,  2442
   };
 
   // Print the state stack on the debug stream.
@@ -5195,9 +5254,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5199 "dhcp6_parser.cc"
+#line 5258 "dhcp6_parser.cc"
 
-#line 2413 "dhcp6_parser.yy"
+#line 2447 "dhcp6_parser.yy"
 
 
 void
index 6b224c4b6beb01397e4d3d4e8fe2155a3fe14de3..4c8de5488c2baab6e018b3bef3278302299f4fa3 100644 (file)
@@ -493,143 +493,147 @@ namespace isc { namespace dhcp {
         TOKEN_TCP_KEEPALIVE = 296,
         TOKEN_TCP_NODELAY = 297,
         TOKEN_PREFERRED_LIFETIME = 298,
-        TOKEN_VALID_LIFETIME = 299,
-        TOKEN_RENEW_TIMER = 300,
-        TOKEN_REBIND_TIMER = 301,
-        TOKEN_CALCULATE_TEE_TIMES = 302,
-        TOKEN_T1_PERCENT = 303,
-        TOKEN_T2_PERCENT = 304,
-        TOKEN_DECLINE_PROBATION_PERIOD = 305,
-        TOKEN_SERVER_TAG = 306,
-        TOKEN_SUBNET6 = 307,
-        TOKEN_OPTION_DEF = 308,
-        TOKEN_OPTION_DATA = 309,
-        TOKEN_NAME = 310,
-        TOKEN_DATA = 311,
-        TOKEN_CODE = 312,
-        TOKEN_SPACE = 313,
-        TOKEN_CSV_FORMAT = 314,
-        TOKEN_ALWAYS_SEND = 315,
-        TOKEN_RECORD_TYPES = 316,
-        TOKEN_ENCAPSULATE = 317,
-        TOKEN_ARRAY = 318,
-        TOKEN_POOLS = 319,
-        TOKEN_POOL = 320,
-        TOKEN_PD_POOLS = 321,
-        TOKEN_PREFIX = 322,
-        TOKEN_PREFIX_LEN = 323,
-        TOKEN_EXCLUDED_PREFIX = 324,
-        TOKEN_EXCLUDED_PREFIX_LEN = 325,
-        TOKEN_DELEGATED_LEN = 326,
-        TOKEN_USER_CONTEXT = 327,
-        TOKEN_COMMENT = 328,
-        TOKEN_SUBNET = 329,
-        TOKEN_INTERFACE = 330,
-        TOKEN_INTERFACE_ID = 331,
-        TOKEN_ID = 332,
-        TOKEN_RAPID_COMMIT = 333,
-        TOKEN_RESERVATION_MODE = 334,
-        TOKEN_DISABLED = 335,
-        TOKEN_OUT_OF_POOL = 336,
-        TOKEN_GLOBAL = 337,
-        TOKEN_ALL = 338,
-        TOKEN_SHARED_NETWORKS = 339,
-        TOKEN_MAC_SOURCES = 340,
-        TOKEN_RELAY_SUPPLIED_OPTIONS = 341,
-        TOKEN_HOST_RESERVATION_IDENTIFIERS = 342,
-        TOKEN_SANITY_CHECKS = 343,
-        TOKEN_LEASE_CHECKS = 344,
-        TOKEN_CLIENT_CLASSES = 345,
-        TOKEN_REQUIRE_CLIENT_CLASSES = 346,
-        TOKEN_TEST = 347,
-        TOKEN_ONLY_IF_REQUIRED = 348,
-        TOKEN_CLIENT_CLASS = 349,
-        TOKEN_RESERVATIONS = 350,
-        TOKEN_IP_ADDRESSES = 351,
-        TOKEN_PREFIXES = 352,
-        TOKEN_DUID = 353,
-        TOKEN_HW_ADDRESS = 354,
-        TOKEN_HOSTNAME = 355,
-        TOKEN_FLEX_ID = 356,
-        TOKEN_RELAY = 357,
-        TOKEN_IP_ADDRESS = 358,
-        TOKEN_HOOKS_LIBRARIES = 359,
-        TOKEN_LIBRARY = 360,
-        TOKEN_PARAMETERS = 361,
-        TOKEN_EXPIRED_LEASES_PROCESSING = 362,
-        TOKEN_RECLAIM_TIMER_WAIT_TIME = 363,
-        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 364,
-        TOKEN_HOLD_RECLAIMED_TIME = 365,
-        TOKEN_MAX_RECLAIM_LEASES = 366,
-        TOKEN_MAX_RECLAIM_TIME = 367,
-        TOKEN_UNWARNED_RECLAIM_CYCLES = 368,
-        TOKEN_SERVER_ID = 369,
-        TOKEN_LLT = 370,
-        TOKEN_EN = 371,
-        TOKEN_LL = 372,
-        TOKEN_IDENTIFIER = 373,
-        TOKEN_HTYPE = 374,
-        TOKEN_TIME = 375,
-        TOKEN_ENTERPRISE_ID = 376,
-        TOKEN_DHCP4O6_PORT = 377,
-        TOKEN_CONTROL_SOCKET = 378,
-        TOKEN_SOCKET_TYPE = 379,
-        TOKEN_SOCKET_NAME = 380,
-        TOKEN_DHCP_QUEUE_CONTROL = 381,
-        TOKEN_DHCP_DDNS = 382,
-        TOKEN_ENABLE_UPDATES = 383,
-        TOKEN_QUALIFYING_SUFFIX = 384,
-        TOKEN_SERVER_IP = 385,
-        TOKEN_SERVER_PORT = 386,
-        TOKEN_SENDER_IP = 387,
-        TOKEN_SENDER_PORT = 388,
-        TOKEN_MAX_QUEUE_SIZE = 389,
-        TOKEN_NCR_PROTOCOL = 390,
-        TOKEN_NCR_FORMAT = 391,
-        TOKEN_OVERRIDE_NO_UPDATE = 392,
-        TOKEN_OVERRIDE_CLIENT_UPDATE = 393,
-        TOKEN_REPLACE_CLIENT_NAME = 394,
-        TOKEN_GENERATED_PREFIX = 395,
-        TOKEN_UDP = 396,
-        TOKEN_TCP = 397,
-        TOKEN_JSON = 398,
-        TOKEN_WHEN_PRESENT = 399,
-        TOKEN_NEVER = 400,
-        TOKEN_ALWAYS = 401,
-        TOKEN_WHEN_NOT_PRESENT = 402,
-        TOKEN_HOSTNAME_CHAR_SET = 403,
-        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 404,
-        TOKEN_LOGGING = 405,
-        TOKEN_LOGGERS = 406,
-        TOKEN_OUTPUT_OPTIONS = 407,
-        TOKEN_OUTPUT = 408,
-        TOKEN_DEBUGLEVEL = 409,
-        TOKEN_SEVERITY = 410,
-        TOKEN_FLUSH = 411,
-        TOKEN_MAXSIZE = 412,
-        TOKEN_MAXVER = 413,
-        TOKEN_DHCP4 = 414,
-        TOKEN_DHCPDDNS = 415,
-        TOKEN_CONTROL_AGENT = 416,
-        TOKEN_TOPLEVEL_JSON = 417,
-        TOKEN_TOPLEVEL_DHCP6 = 418,
-        TOKEN_SUB_DHCP6 = 419,
-        TOKEN_SUB_INTERFACES6 = 420,
-        TOKEN_SUB_SUBNET6 = 421,
-        TOKEN_SUB_POOL6 = 422,
-        TOKEN_SUB_PD_POOL = 423,
-        TOKEN_SUB_RESERVATION = 424,
-        TOKEN_SUB_OPTION_DEFS = 425,
-        TOKEN_SUB_OPTION_DEF = 426,
-        TOKEN_SUB_OPTION_DATA = 427,
-        TOKEN_SUB_HOOKS_LIBRARY = 428,
-        TOKEN_SUB_DHCP_DDNS = 429,
-        TOKEN_SUB_LOGGING = 430,
-        TOKEN_SUB_CONFIG_CONTROL = 431,
-        TOKEN_STRING = 432,
-        TOKEN_INTEGER = 433,
-        TOKEN_FLOAT = 434,
-        TOKEN_BOOLEAN = 435
+        TOKEN_MIN_PREFERRED_LIFETIME = 299,
+        TOKEN_MAX_PREFERRED_LIFETIME = 300,
+        TOKEN_VALID_LIFETIME = 301,
+        TOKEN_MIN_VALID_LIFETIME = 302,
+        TOKEN_MAX_VALID_LIFETIME = 303,
+        TOKEN_RENEW_TIMER = 304,
+        TOKEN_REBIND_TIMER = 305,
+        TOKEN_CALCULATE_TEE_TIMES = 306,
+        TOKEN_T1_PERCENT = 307,
+        TOKEN_T2_PERCENT = 308,
+        TOKEN_DECLINE_PROBATION_PERIOD = 309,
+        TOKEN_SERVER_TAG = 310,
+        TOKEN_SUBNET6 = 311,
+        TOKEN_OPTION_DEF = 312,
+        TOKEN_OPTION_DATA = 313,
+        TOKEN_NAME = 314,
+        TOKEN_DATA = 315,
+        TOKEN_CODE = 316,
+        TOKEN_SPACE = 317,
+        TOKEN_CSV_FORMAT = 318,
+        TOKEN_ALWAYS_SEND = 319,
+        TOKEN_RECORD_TYPES = 320,
+        TOKEN_ENCAPSULATE = 321,
+        TOKEN_ARRAY = 322,
+        TOKEN_POOLS = 323,
+        TOKEN_POOL = 324,
+        TOKEN_PD_POOLS = 325,
+        TOKEN_PREFIX = 326,
+        TOKEN_PREFIX_LEN = 327,
+        TOKEN_EXCLUDED_PREFIX = 328,
+        TOKEN_EXCLUDED_PREFIX_LEN = 329,
+        TOKEN_DELEGATED_LEN = 330,
+        TOKEN_USER_CONTEXT = 331,
+        TOKEN_COMMENT = 332,
+        TOKEN_SUBNET = 333,
+        TOKEN_INTERFACE = 334,
+        TOKEN_INTERFACE_ID = 335,
+        TOKEN_ID = 336,
+        TOKEN_RAPID_COMMIT = 337,
+        TOKEN_RESERVATION_MODE = 338,
+        TOKEN_DISABLED = 339,
+        TOKEN_OUT_OF_POOL = 340,
+        TOKEN_GLOBAL = 341,
+        TOKEN_ALL = 342,
+        TOKEN_SHARED_NETWORKS = 343,
+        TOKEN_MAC_SOURCES = 344,
+        TOKEN_RELAY_SUPPLIED_OPTIONS = 345,
+        TOKEN_HOST_RESERVATION_IDENTIFIERS = 346,
+        TOKEN_SANITY_CHECKS = 347,
+        TOKEN_LEASE_CHECKS = 348,
+        TOKEN_CLIENT_CLASSES = 349,
+        TOKEN_REQUIRE_CLIENT_CLASSES = 350,
+        TOKEN_TEST = 351,
+        TOKEN_ONLY_IF_REQUIRED = 352,
+        TOKEN_CLIENT_CLASS = 353,
+        TOKEN_RESERVATIONS = 354,
+        TOKEN_IP_ADDRESSES = 355,
+        TOKEN_PREFIXES = 356,
+        TOKEN_DUID = 357,
+        TOKEN_HW_ADDRESS = 358,
+        TOKEN_HOSTNAME = 359,
+        TOKEN_FLEX_ID = 360,
+        TOKEN_RELAY = 361,
+        TOKEN_IP_ADDRESS = 362,
+        TOKEN_HOOKS_LIBRARIES = 363,
+        TOKEN_LIBRARY = 364,
+        TOKEN_PARAMETERS = 365,
+        TOKEN_EXPIRED_LEASES_PROCESSING = 366,
+        TOKEN_RECLAIM_TIMER_WAIT_TIME = 367,
+        TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 368,
+        TOKEN_HOLD_RECLAIMED_TIME = 369,
+        TOKEN_MAX_RECLAIM_LEASES = 370,
+        TOKEN_MAX_RECLAIM_TIME = 371,
+        TOKEN_UNWARNED_RECLAIM_CYCLES = 372,
+        TOKEN_SERVER_ID = 373,
+        TOKEN_LLT = 374,
+        TOKEN_EN = 375,
+        TOKEN_LL = 376,
+        TOKEN_IDENTIFIER = 377,
+        TOKEN_HTYPE = 378,
+        TOKEN_TIME = 379,
+        TOKEN_ENTERPRISE_ID = 380,
+        TOKEN_DHCP4O6_PORT = 381,
+        TOKEN_CONTROL_SOCKET = 382,
+        TOKEN_SOCKET_TYPE = 383,
+        TOKEN_SOCKET_NAME = 384,
+        TOKEN_DHCP_QUEUE_CONTROL = 385,
+        TOKEN_DHCP_DDNS = 386,
+        TOKEN_ENABLE_UPDATES = 387,
+        TOKEN_QUALIFYING_SUFFIX = 388,
+        TOKEN_SERVER_IP = 389,
+        TOKEN_SERVER_PORT = 390,
+        TOKEN_SENDER_IP = 391,
+        TOKEN_SENDER_PORT = 392,
+        TOKEN_MAX_QUEUE_SIZE = 393,
+        TOKEN_NCR_PROTOCOL = 394,
+        TOKEN_NCR_FORMAT = 395,
+        TOKEN_OVERRIDE_NO_UPDATE = 396,
+        TOKEN_OVERRIDE_CLIENT_UPDATE = 397,
+        TOKEN_REPLACE_CLIENT_NAME = 398,
+        TOKEN_GENERATED_PREFIX = 399,
+        TOKEN_UDP = 400,
+        TOKEN_TCP = 401,
+        TOKEN_JSON = 402,
+        TOKEN_WHEN_PRESENT = 403,
+        TOKEN_NEVER = 404,
+        TOKEN_ALWAYS = 405,
+        TOKEN_WHEN_NOT_PRESENT = 406,
+        TOKEN_HOSTNAME_CHAR_SET = 407,
+        TOKEN_HOSTNAME_CHAR_REPLACEMENT = 408,
+        TOKEN_LOGGING = 409,
+        TOKEN_LOGGERS = 410,
+        TOKEN_OUTPUT_OPTIONS = 411,
+        TOKEN_OUTPUT = 412,
+        TOKEN_DEBUGLEVEL = 413,
+        TOKEN_SEVERITY = 414,
+        TOKEN_FLUSH = 415,
+        TOKEN_MAXSIZE = 416,
+        TOKEN_MAXVER = 417,
+        TOKEN_DHCP4 = 418,
+        TOKEN_DHCPDDNS = 419,
+        TOKEN_CONTROL_AGENT = 420,
+        TOKEN_TOPLEVEL_JSON = 421,
+        TOKEN_TOPLEVEL_DHCP6 = 422,
+        TOKEN_SUB_DHCP6 = 423,
+        TOKEN_SUB_INTERFACES6 = 424,
+        TOKEN_SUB_SUBNET6 = 425,
+        TOKEN_SUB_POOL6 = 426,
+        TOKEN_SUB_PD_POOL = 427,
+        TOKEN_SUB_RESERVATION = 428,
+        TOKEN_SUB_OPTION_DEFS = 429,
+        TOKEN_SUB_OPTION_DEF = 430,
+        TOKEN_SUB_OPTION_DATA = 431,
+        TOKEN_SUB_HOOKS_LIBRARY = 432,
+        TOKEN_SUB_DHCP_DDNS = 433,
+        TOKEN_SUB_LOGGING = 434,
+        TOKEN_SUB_CONFIG_CONTROL = 435,
+        TOKEN_STRING = 436,
+        TOKEN_INTEGER = 437,
+        TOKEN_FLOAT = 438,
+        TOKEN_BOOLEAN = 439
       };
     };
 
@@ -771,29 +775,29 @@ namespace isc { namespace dhcp {
         // Type destructor.
 switch (yytype)
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -876,13 +880,13 @@ switch (yytype)
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
       {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
       {
-        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
+        YYASSERT (tok == token::TOKEN_END || tok == token::TOKEN_COMMA || tok == token::TOKEN_COLON || tok == token::TOKEN_LSQUARE_BRACKET || tok == token::TOKEN_RSQUARE_BRACKET || tok == token::TOKEN_LCURLY_BRACKET || tok == token::TOKEN_RCURLY_BRACKET || tok == token::TOKEN_NULL_TYPE || tok == token::TOKEN_DHCP6 || tok == token::TOKEN_DATA_DIRECTORY || tok == token::TOKEN_CONFIG_CONTROL || tok == token::TOKEN_CONFIG_DATABASES || tok == token::TOKEN_CONFIG_FETCH_WAIT_TIME || tok == token::TOKEN_INTERFACES_CONFIG || tok == token::TOKEN_INTERFACES || tok == token::TOKEN_RE_DETECT || tok == token::TOKEN_LEASE_DATABASE || tok == token::TOKEN_HOSTS_DATABASE || tok == token::TOKEN_HOSTS_DATABASES || tok == token::TOKEN_TYPE || tok == token::TOKEN_MEMFILE || tok == token::TOKEN_MYSQL || tok == token::TOKEN_POSTGRESQL || tok == token::TOKEN_CQL || tok == token::TOKEN_USER || tok == token::TOKEN_PASSWORD || tok == token::TOKEN_HOST || tok == token::TOKEN_PORT || tok == token::TOKEN_PERSIST || tok == token::TOKEN_LFC_INTERVAL || tok == token::TOKEN_READONLY || tok == token::TOKEN_CONNECT_TIMEOUT || tok == token::TOKEN_CONTACT_POINTS || tok == token::TOKEN_MAX_RECONNECT_TRIES || tok == token::TOKEN_RECONNECT_WAIT_TIME || tok == token::TOKEN_KEYSPACE || tok == token::TOKEN_CONSISTENCY || tok == token::TOKEN_SERIAL_CONSISTENCY || tok == token::TOKEN_REQUEST_TIMEOUT || tok == token::TOKEN_TCP_KEEPALIVE || tok == token::TOKEN_TCP_NODELAY || tok == token::TOKEN_PREFERRED_LIFETIME || tok == token::TOKEN_MIN_PREFERRED_LIFETIME || tok == token::TOKEN_MAX_PREFERRED_LIFETIME || tok == token::TOKEN_VALID_LIFETIME || tok == token::TOKEN_MIN_VALID_LIFETIME || tok == token::TOKEN_MAX_VALID_LIFETIME || tok == token::TOKEN_RENEW_TIMER || tok == token::TOKEN_REBIND_TIMER || tok == token::TOKEN_CALCULATE_TEE_TIMES || tok == token::TOKEN_T1_PERCENT || tok == token::TOKEN_T2_PERCENT || tok == token::TOKEN_DECLINE_PROBATION_PERIOD || tok == token::TOKEN_SERVER_TAG || tok == token::TOKEN_SUBNET6 || tok == token::TOKEN_OPTION_DEF || tok == token::TOKEN_OPTION_DATA || tok == token::TOKEN_NAME || tok == token::TOKEN_DATA || tok == token::TOKEN_CODE || tok == token::TOKEN_SPACE || tok == token::TOKEN_CSV_FORMAT || tok == token::TOKEN_ALWAYS_SEND || tok == token::TOKEN_RECORD_TYPES || tok == token::TOKEN_ENCAPSULATE || tok == token::TOKEN_ARRAY || tok == token::TOKEN_POOLS || tok == token::TOKEN_POOL || tok == token::TOKEN_PD_POOLS || tok == token::TOKEN_PREFIX || tok == token::TOKEN_PREFIX_LEN || tok == token::TOKEN_EXCLUDED_PREFIX || tok == token::TOKEN_EXCLUDED_PREFIX_LEN || tok == token::TOKEN_DELEGATED_LEN || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_SUBNET || tok == token::TOKEN_INTERFACE || tok == token::TOKEN_INTERFACE_ID || tok == token::TOKEN_ID || tok == token::TOKEN_RAPID_COMMIT || tok == token::TOKEN_RESERVATION_MODE || tok == token::TOKEN_DISABLED || tok == token::TOKEN_OUT_OF_POOL || tok == token::TOKEN_GLOBAL || tok == token::TOKEN_ALL || tok == token::TOKEN_SHARED_NETWORKS || tok == token::TOKEN_MAC_SOURCES || tok == token::TOKEN_RELAY_SUPPLIED_OPTIONS || tok == token::TOKEN_HOST_RESERVATION_IDENTIFIERS || tok == token::TOKEN_SANITY_CHECKS || tok == token::TOKEN_LEASE_CHECKS || tok == token::TOKEN_CLIENT_CLASSES || tok == token::TOKEN_REQUIRE_CLIENT_CLASSES || tok == token::TOKEN_TEST || tok == token::TOKEN_ONLY_IF_REQUIRED || tok == token::TOKEN_CLIENT_CLASS || tok == token::TOKEN_RESERVATIONS || tok == token::TOKEN_IP_ADDRESSES || tok == token::TOKEN_PREFIXES || tok == token::TOKEN_DUID || tok == token::TOKEN_HW_ADDRESS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_FLEX_ID || tok == token::TOKEN_RELAY || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_EXPIRED_LEASES_PROCESSING || tok == token::TOKEN_RECLAIM_TIMER_WAIT_TIME || tok == token::TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME || tok == token::TOKEN_HOLD_RECLAIMED_TIME || tok == token::TOKEN_MAX_RECLAIM_LEASES || tok == token::TOKEN_MAX_RECLAIM_TIME || tok == token::TOKEN_UNWARNED_RECLAIM_CYCLES || tok == token::TOKEN_SERVER_ID || tok == token::TOKEN_LLT || tok == token::TOKEN_EN || tok == token::TOKEN_LL || tok == token::TOKEN_IDENTIFIER || tok == token::TOKEN_HTYPE || tok == token::TOKEN_TIME || tok == token::TOKEN_ENTERPRISE_ID || tok == token::TOKEN_DHCP4O6_PORT || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_DHCP_DDNS || tok == token::TOKEN_ENABLE_UPDATES || tok == token::TOKEN_QUALIFYING_SUFFIX || tok == token::TOKEN_SERVER_IP || tok == token::TOKEN_SERVER_PORT || tok == token::TOKEN_SENDER_IP || tok == token::TOKEN_SENDER_PORT || tok == token::TOKEN_MAX_QUEUE_SIZE || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_OVERRIDE_NO_UPDATE || tok == token::TOKEN_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_REPLACE_CLIENT_NAME || tok == token::TOKEN_GENERATED_PREFIX || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_JSON || tok == token::TOKEN_WHEN_PRESENT || tok == token::TOKEN_NEVER || tok == token::TOKEN_ALWAYS || tok == token::TOKEN_WHEN_NOT_PRESENT || tok == token::TOKEN_HOSTNAME_CHAR_SET || tok == token::TOKEN_HOSTNAME_CHAR_REPLACEMENT || tok == token::TOKEN_LOGGING || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_OUTPUT_OPTIONS || tok == token::TOKEN_OUTPUT || tok == token::TOKEN_DEBUGLEVEL || tok == token::TOKEN_SEVERITY || tok == token::TOKEN_FLUSH || tok == token::TOKEN_MAXSIZE || tok == token::TOKEN_MAXVER || tok == token::TOKEN_DHCP4 || tok == token::TOKEN_DHCPDDNS || tok == token::TOKEN_CONTROL_AGENT || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCP6 || tok == token::TOKEN_SUB_DHCP6 || tok == token::TOKEN_SUB_INTERFACES6 || tok == token::TOKEN_SUB_SUBNET6 || tok == token::TOKEN_SUB_POOL6 || tok == token::TOKEN_SUB_PD_POOL || tok == token::TOKEN_SUB_RESERVATION || tok == token::TOKEN_SUB_OPTION_DEFS || tok == token::TOKEN_SUB_OPTION_DEF || tok == token::TOKEN_SUB_OPTION_DATA || tok == token::TOKEN_SUB_HOOKS_LIBRARY || tok == token::TOKEN_SUB_DHCP_DDNS || tok == token::TOKEN_SUB_LOGGING || tok == token::TOKEN_SUB_CONFIG_CONTROL);
       }
 #endif
 #if 201103L <= YY_CPLUSPLUS
@@ -1604,6 +1608,36 @@ switch (yytype)
         return symbol_type (token::TOKEN_PREFERRED_LIFETIME, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_MIN_PREFERRED_LIFETIME (location_type l)
+      {
+        return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_MIN_PREFERRED_LIFETIME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_MIN_PREFERRED_LIFETIME, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_MAX_PREFERRED_LIFETIME (location_type l)
+      {
+        return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_MAX_PREFERRED_LIFETIME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_MAX_PREFERRED_LIFETIME, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -1619,6 +1653,36 @@ switch (yytype)
         return symbol_type (token::TOKEN_VALID_LIFETIME, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_MIN_VALID_LIFETIME (location_type l)
+      {
+        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_MIN_VALID_LIFETIME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_MIN_VALID_LIFETIME, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_MAX_VALID_LIFETIME (location_type l)
+      {
+        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_MAX_VALID_LIFETIME (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_MAX_VALID_LIFETIME, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -3965,12 +4029,12 @@ switch (yytype)
     enum
     {
       yyeof_ = 0,
-      yylast_ = 1064,     ///< Last index in yytable_.
-      yynnts_ = 399,  ///< Number of nonterminal symbols.
+      yylast_ = 1102,     ///< Last index in yytable_.
+      yynnts_ = 403,  ///< Number of nonterminal symbols.
       yyfinal_ = 32, ///< Termination state number.
       yyterror_ = 1,
       yyerrcode_ = 256,
-      yyntokens_ = 181  ///< Number of tokens.
+      yyntokens_ = 185  ///< Number of tokens.
     };
 
 
@@ -4031,9 +4095,9 @@ switch (yytype)
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177,   178,   179,   180
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184
     };
-    const unsigned user_token_number_max_ = 435;
+    const unsigned user_token_number_max_ = 439;
     const token_number_type undef_token_ = 2;
 
     if (static_cast<int> (t) <= yyeof_)
@@ -4054,29 +4118,29 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -4095,29 +4159,29 @@ switch (yytype)
   {
     switch (this->type_get ())
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -4143,29 +4207,29 @@ switch (yytype)
     super_type::move (s);
     switch (this->type_get ())
     {
-      case 198: // value
-      case 202: // map_value
-      case 259: // db_type
-      case 352: // hr_mode
-      case 488: // duid_type
-      case 523: // ncr_protocol_value
-      case 530: // replace_client_name_value
+      case 202: // value
+      case 206: // map_value
+      case 267: // db_type
+      case 360: // hr_mode
+      case 496: // duid_type
+      case 531: // ncr_protocol_value
+      case 538: // replace_client_name_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 180: // "boolean"
+      case 184: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 179: // "floating point"
+      case 183: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 178: // "integer"
+      case 182: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 177: // "constant string"
+      case 181: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -4251,14 +4315,14 @@ switch (yytype)
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
-     435
+     435,   436,   437,   438,   439
     };
     return token_type (yytoken_number_[type]);
   }
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 4262 "dhcp6_parser.h"
+#line 4326 "dhcp6_parser.h"