]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
regenerate parsers v1_8_0+1385+1386
authorAndrei Pavel <andrei@isc.org>
Sat, 21 Aug 2021 02:40:24 +0000 (05:40 +0300)
committerAndrei Pavel <andrei@isc.org>
Sat, 21 Aug 2021 02:40:24 +0000 (05:40 +0300)
32 files changed:
src/bin/agent/agent_parser.cc
src/bin/agent/agent_parser.h
src/bin/agent/location.hh
src/bin/agent/position.hh
src/bin/agent/stack.hh
src/bin/d2/d2_parser.cc
src/bin/d2/d2_parser.h
src/bin/d2/location.hh
src/bin/d2/position.hh
src/bin/d2/stack.hh
src/bin/dhcp4/dhcp4_lexer.cc
src/bin/dhcp4/dhcp4_parser.cc
src/bin/dhcp4/dhcp4_parser.h
src/bin/dhcp4/location.hh
src/bin/dhcp4/position.hh
src/bin/dhcp4/stack.hh
src/bin/dhcp6/dhcp6_lexer.cc
src/bin/dhcp6/dhcp6_parser.cc
src/bin/dhcp6/dhcp6_parser.h
src/bin/dhcp6/location.hh
src/bin/dhcp6/position.hh
src/bin/dhcp6/stack.hh
src/bin/netconf/location.hh
src/bin/netconf/netconf_parser.cc
src/bin/netconf/netconf_parser.h
src/bin/netconf/position.hh
src/bin/netconf/stack.hh
src/lib/eval/location.hh
src/lib/eval/parser.cc
src/lib/eval/parser.h
src/lib/eval/position.hh
src/lib/eval/stack.hh

index fb76d47b03c9cabc17debedad43b2faafcbf8600..405651e386b14425ab6622dda156a871625dc3bf 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 #else // !AGENT_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
@@ -209,25 +209,25 @@ namespace isc { namespace agent {
   {
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace agent {
   {
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace agent {
     state = that.state;
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace agent {
     state = that.state;
     switch (that.kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -366,7 +366,7 @@ namespace isc { namespace agent {
   AgentParser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YYUSE (yyoutput);
+    YY_USE (yyoutput);
     if (yysym.empty ())
       yyo << "empty symbol";
     else
@@ -377,43 +377,43 @@ namespace isc { namespace agent {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "agent_parser.cc"
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "agent_parser.cc"
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "agent_parser.cc"
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "agent_parser.cc"
         break;
 
-      case 50: // value
+      case symbol_kind::S_value: // value
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "agent_parser.cc"
         break;
 
-      case 53: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "agent_parser.cc"
         break;
 
-      case 104: // socket_type_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
 #line 99 "agent_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "agent_parser.cc"
@@ -646,25 +646,25 @@ namespace isc { namespace agent {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -688,25 +688,25 @@ namespace isc { namespace agent {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 110 "agent_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 695 "agent_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 111 "agent_parser.yy"
                        { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "agent_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 112 "agent_parser.yy"
                        { ctx.ctx_ = ctx.AGENT; }
 #line 707 "agent_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 120 "agent_parser.yy"
                           {
     // Parse the Control-agent map
@@ -716,7 +716,7 @@ namespace isc { namespace agent {
 #line 717 "agent_parser.cc"
     break;
 
-  case 9:
+  case 9: // sub_agent: "{" $@4 global_params "}"
 #line 124 "agent_parser.yy"
                                {
     // parsing completed
@@ -724,7 +724,7 @@ namespace isc { namespace agent {
 #line 725 "agent_parser.cc"
     break;
 
-  case 10:
+  case 10: // json: value
 #line 131 "agent_parser.yy"
             {
     // Push back the JSON value on the stack
@@ -733,49 +733,49 @@ namespace isc { namespace agent {
 #line 734 "agent_parser.cc"
     break;
 
-  case 11:
+  case 11: // value: "integer"
 #line 137 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 740 "agent_parser.cc"
     break;
 
-  case 12:
+  case 12: // value: "floating point"
 #line 138 "agent_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 746 "agent_parser.cc"
     break;
 
-  case 13:
+  case 13: // value: "boolean"
 #line 139 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "agent_parser.cc"
     break;
 
-  case 14:
+  case 14: // value: "constant string"
 #line 140 "agent_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "agent_parser.cc"
     break;
 
-  case 15:
+  case 15: // value: "null"
 #line 141 "agent_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 764 "agent_parser.cc"
     break;
 
-  case 16:
+  case 16: // value: map
 #line 142 "agent_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 770 "agent_parser.cc"
     break;
 
-  case 17:
+  case 17: // value: list_generic
 #line 143 "agent_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "agent_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@5: %empty
 #line 147 "agent_parser.yy"
                     {
     // This code is executed when we're about to start parsing
@@ -786,7 +786,7 @@ namespace isc { namespace agent {
 #line 787 "agent_parser.cc"
     break;
 
-  case 19:
+  case 19: // map: "{" $@5 map_content "}"
 #line 152 "agent_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -796,13 +796,13 @@ namespace isc { namespace agent {
 #line 797 "agent_parser.cc"
     break;
 
-  case 20:
+  case 20: // map_value: map
 #line 158 "agent_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 803 "agent_parser.cc"
     break;
 
-  case 23:
+  case 23: // not_empty_map: "constant string" ":" value
 #line 172 "agent_parser.yy"
                                   {
                   // map containing a single entry
@@ -811,7 +811,7 @@ namespace isc { namespace agent {
 #line 812 "agent_parser.cc"
     break;
 
-  case 24:
+  case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 176 "agent_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -821,7 +821,7 @@ namespace isc { namespace agent {
 #line 822 "agent_parser.cc"
     break;
 
-  case 25:
+  case 25: // $@6: %empty
 #line 183 "agent_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -830,14 +830,14 @@ namespace isc { namespace agent {
 #line 831 "agent_parser.cc"
     break;
 
-  case 26:
+  case 26: // list_generic: "[" $@6 list_content "]"
 #line 186 "agent_parser.yy"
                                {
 }
 #line 838 "agent_parser.cc"
     break;
 
-  case 29:
+  case 29: // not_empty_list: value
 #line 193 "agent_parser.yy"
                       {
                   // List consisting of a single element.
@@ -846,7 +846,7 @@ namespace isc { namespace agent {
 #line 847 "agent_parser.cc"
     break;
 
-  case 30:
+  case 30: // not_empty_list: not_empty_list "," value
 #line 197 "agent_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -855,7 +855,7 @@ namespace isc { namespace agent {
 #line 856 "agent_parser.cc"
     break;
 
-  case 31:
+  case 31: // unknown_map_entry: "constant string" ":"
 #line 210 "agent_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -866,7 +866,7 @@ namespace isc { namespace agent {
 #line 867 "agent_parser.cc"
     break;
 
-  case 32:
+  case 32: // $@7: %empty
 #line 218 "agent_parser.yy"
                                  {
     // This code is executed when we're about to start parsing
@@ -877,7 +877,7 @@ namespace isc { namespace agent {
 #line 878 "agent_parser.cc"
     break;
 
-  case 33:
+  case 33: // agent_syntax_map: "{" $@7 global_objects "}"
 #line 223 "agent_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -887,7 +887,7 @@ namespace isc { namespace agent {
 #line 888 "agent_parser.cc"
     break;
 
-  case 36:
+  case 36: // $@8: %empty
 #line 238 "agent_parser.yy"
                             {
 
@@ -903,7 +903,7 @@ namespace isc { namespace agent {
 #line 904 "agent_parser.cc"
     break;
 
-  case 37:
+  case 37: // agent_object: "Control-agent" $@8 ":" "{" global_params "}"
 #line 248 "agent_parser.yy"
                                                     {
     // Ok, we're done with parsing control-agent. Let's take the map
@@ -914,7 +914,7 @@ namespace isc { namespace agent {
 #line 915 "agent_parser.cc"
     break;
 
-  case 48:
+  case 48: // $@9: %empty
 #line 271 "agent_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -922,7 +922,7 @@ namespace isc { namespace agent {
 #line 923 "agent_parser.cc"
     break;
 
-  case 49:
+  case 49: // http_host: "http-host" $@9 ":" "constant string"
 #line 273 "agent_parser.yy"
                {
     ElementPtr host(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -932,7 +932,7 @@ namespace isc { namespace agent {
 #line 933 "agent_parser.cc"
     break;
 
-  case 50:
+  case 50: // http_port: "http-port" ":" "integer"
 #line 279 "agent_parser.yy"
                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -941,7 +941,7 @@ namespace isc { namespace agent {
 #line 942 "agent_parser.cc"
     break;
 
-  case 51:
+  case 51: // $@10: %empty
 #line 284 "agent_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -949,7 +949,7 @@ namespace isc { namespace agent {
 #line 950 "agent_parser.cc"
     break;
 
-  case 52:
+  case 52: // user_context: "user-context" $@10 ":" map_value
 #line 286 "agent_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -976,7 +976,7 @@ namespace isc { namespace agent {
 #line 977 "agent_parser.cc"
     break;
 
-  case 53:
+  case 53: // $@11: %empty
 #line 309 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -984,7 +984,7 @@ namespace isc { namespace agent {
 #line 985 "agent_parser.cc"
     break;
 
-  case 54:
+  case 54: // comment: "comment" $@11 ":" "constant string"
 #line 311 "agent_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -1013,7 +1013,7 @@ namespace isc { namespace agent {
 #line 1014 "agent_parser.cc"
     break;
 
-  case 55:
+  case 55: // $@12: %empty
 #line 337 "agent_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1024,7 +1024,7 @@ namespace isc { namespace agent {
 #line 1025 "agent_parser.cc"
     break;
 
-  case 56:
+  case 56: // hooks_libraries: "hooks-libraries" $@12 ":" "[" hooks_libraries_list "]"
 #line 342 "agent_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -1033,7 +1033,7 @@ namespace isc { namespace agent {
 #line 1034 "agent_parser.cc"
     break;
 
-  case 61:
+  case 61: // $@13: %empty
 #line 355 "agent_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1043,7 +1043,7 @@ namespace isc { namespace agent {
 #line 1044 "agent_parser.cc"
     break;
 
-  case 62:
+  case 62: // hooks_library: "{" $@13 hooks_params "}"
 #line 359 "agent_parser.yy"
                               {
     ctx.stack_.pop_back();
@@ -1051,7 +1051,7 @@ namespace isc { namespace agent {
 #line 1052 "agent_parser.cc"
     break;
 
-  case 68:
+  case 68: // $@14: %empty
 #line 372 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1059,7 +1059,7 @@ namespace isc { namespace agent {
 #line 1060 "agent_parser.cc"
     break;
 
-  case 69:
+  case 69: // library: "library" $@14 ":" "constant string"
 #line 374 "agent_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1069,7 +1069,7 @@ namespace isc { namespace agent {
 #line 1070 "agent_parser.cc"
     break;
 
-  case 70:
+  case 70: // $@15: %empty
 #line 380 "agent_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1077,7 +1077,7 @@ namespace isc { namespace agent {
 #line 1078 "agent_parser.cc"
     break;
 
-  case 71:
+  case 71: // parameters: "parameters" $@15 ":" map_value
 #line 382 "agent_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
@@ -1086,7 +1086,7 @@ namespace isc { namespace agent {
 #line 1087 "agent_parser.cc"
     break;
 
-  case 72:
+  case 72: // $@16: %empty
 #line 390 "agent_parser.yy"
                                                       {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
@@ -1097,7 +1097,7 @@ namespace isc { namespace agent {
 #line 1098 "agent_parser.cc"
     break;
 
-  case 73:
+  case 73: // control_sockets: "control-sockets" ":" "{" $@16 control_sockets_params "}"
 #line 395 "agent_parser.yy"
                                         {
     ctx.stack_.pop_back();
@@ -1106,7 +1106,7 @@ namespace isc { namespace agent {
 #line 1107 "agent_parser.cc"
     break;
 
-  case 80:
+  case 80: // $@17: %empty
 #line 416 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1117,7 +1117,7 @@ namespace isc { namespace agent {
 #line 1118 "agent_parser.cc"
     break;
 
-  case 81:
+  case 81: // dhcp4_server_socket: "dhcp4" $@17 ":" "{" control_socket_params "}"
 #line 421 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1126,7 +1126,7 @@ namespace isc { namespace agent {
 #line 1127 "agent_parser.cc"
     break;
 
-  case 82:
+  case 82: // $@18: %empty
 #line 427 "agent_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1137,7 +1137,7 @@ namespace isc { namespace agent {
 #line 1138 "agent_parser.cc"
     break;
 
-  case 83:
+  case 83: // dhcp6_server_socket: "dhcp6" $@18 ":" "{" control_socket_params "}"
 #line 432 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1146,7 +1146,7 @@ namespace isc { namespace agent {
 #line 1147 "agent_parser.cc"
     break;
 
-  case 84:
+  case 84: // $@19: %empty
 #line 438 "agent_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1157,7 +1157,7 @@ namespace isc { namespace agent {
 #line 1158 "agent_parser.cc"
     break;
 
-  case 85:
+  case 85: // d2_server_socket: "d2" $@19 ":" "{" control_socket_params "}"
 #line 443 "agent_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1166,7 +1166,7 @@ namespace isc { namespace agent {
 #line 1167 "agent_parser.cc"
     break;
 
-  case 93:
+  case 93: // $@20: %empty
 #line 462 "agent_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1174,7 +1174,7 @@ namespace isc { namespace agent {
 #line 1175 "agent_parser.cc"
     break;
 
-  case 94:
+  case 94: // socket_name: "socket-name" $@20 ":" "constant string"
 #line 464 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1184,7 +1184,7 @@ namespace isc { namespace agent {
 #line 1185 "agent_parser.cc"
     break;
 
-  case 95:
+  case 95: // $@21: %empty
 #line 471 "agent_parser.yy"
                          {
     ctx.enter(ctx.SOCKET_TYPE);
@@ -1192,7 +1192,7 @@ namespace isc { namespace agent {
 #line 1193 "agent_parser.cc"
     break;
 
-  case 96:
+  case 96: // socket_type: "socket-type" $@21 ":" socket_type_value
 #line 473 "agent_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
@@ -1201,13 +1201,13 @@ namespace isc { namespace agent {
 #line 1202 "agent_parser.cc"
     break;
 
-  case 97:
+  case 97: // socket_type_value: "unix"
 #line 479 "agent_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 1208 "agent_parser.cc"
     break;
 
-  case 98:
+  case 98: // $@22: %empty
 #line 486 "agent_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1218,7 +1218,7 @@ namespace isc { namespace agent {
 #line 1219 "agent_parser.cc"
     break;
 
-  case 99:
+  case 99: // loggers: "loggers" $@22 ":" "[" loggers_entries "]"
 #line 491 "agent_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1227,7 +1227,7 @@ namespace isc { namespace agent {
 #line 1228 "agent_parser.cc"
     break;
 
-  case 102:
+  case 102: // $@23: %empty
 #line 503 "agent_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1237,7 +1237,7 @@ namespace isc { namespace agent {
 #line 1238 "agent_parser.cc"
     break;
 
-  case 103:
+  case 103: // logger_entry: "{" $@23 logger_params "}"
 #line 507 "agent_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -1245,7 +1245,7 @@ namespace isc { namespace agent {
 #line 1246 "agent_parser.cc"
     break;
 
-  case 113:
+  case 113: // $@24: %empty
 #line 524 "agent_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1253,7 +1253,7 @@ namespace isc { namespace agent {
 #line 1254 "agent_parser.cc"
     break;
 
-  case 114:
+  case 114: // name: "name" $@24 ":" "constant string"
 #line 526 "agent_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1263,7 +1263,7 @@ namespace isc { namespace agent {
 #line 1264 "agent_parser.cc"
     break;
 
-  case 115:
+  case 115: // debuglevel: "debuglevel" ":" "integer"
 #line 532 "agent_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1272,7 +1272,7 @@ namespace isc { namespace agent {
 #line 1273 "agent_parser.cc"
     break;
 
-  case 116:
+  case 116: // $@25: %empty
 #line 537 "agent_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1280,7 +1280,7 @@ namespace isc { namespace agent {
 #line 1281 "agent_parser.cc"
     break;
 
-  case 117:
+  case 117: // severity: "severity" $@25 ":" "constant string"
 #line 539 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1290,7 +1290,7 @@ namespace isc { namespace agent {
 #line 1291 "agent_parser.cc"
     break;
 
-  case 118:
+  case 118: // $@26: %empty
 #line 545 "agent_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1301,7 +1301,7 @@ namespace isc { namespace agent {
 #line 1302 "agent_parser.cc"
     break;
 
-  case 119:
+  case 119: // output_options_list: "output_options" $@26 ":" "[" output_options_list_content "]"
 #line 550 "agent_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -1310,7 +1310,7 @@ namespace isc { namespace agent {
 #line 1311 "agent_parser.cc"
     break;
 
-  case 122:
+  case 122: // $@27: %empty
 #line 559 "agent_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1320,7 +1320,7 @@ namespace isc { namespace agent {
 #line 1321 "agent_parser.cc"
     break;
 
-  case 123:
+  case 123: // output_entry: "{" $@27 output_params_list "}"
 #line 563 "agent_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1328,7 +1328,7 @@ namespace isc { namespace agent {
 #line 1329 "agent_parser.cc"
     break;
 
-  case 131:
+  case 131: // $@28: %empty
 #line 578 "agent_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1336,7 +1336,7 @@ namespace isc { namespace agent {
 #line 1337 "agent_parser.cc"
     break;
 
-  case 132:
+  case 132: // output: "output" $@28 ":" "constant string"
 #line 580 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1346,7 +1346,7 @@ namespace isc { namespace agent {
 #line 1347 "agent_parser.cc"
     break;
 
-  case 133:
+  case 133: // flush: "flush" ":" "boolean"
 #line 586 "agent_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1355,7 +1355,7 @@ namespace isc { namespace agent {
 #line 1356 "agent_parser.cc"
     break;
 
-  case 134:
+  case 134: // maxsize: "maxsize" ":" "integer"
 #line 591 "agent_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1364,7 +1364,7 @@ namespace isc { namespace agent {
 #line 1365 "agent_parser.cc"
     break;
 
-  case 135:
+  case 135: // maxver: "maxver" ":" "integer"
 #line 596 "agent_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1373,7 +1373,7 @@ namespace isc { namespace agent {
 #line 1374 "agent_parser.cc"
     break;
 
-  case 136:
+  case 136: // $@29: %empty
 #line 601 "agent_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1381,7 +1381,7 @@ namespace isc { namespace agent {
 #line 1382 "agent_parser.cc"
     break;
 
-  case 137:
+  case 137: // pattern: "pattern" $@29 ":" "constant string"
 #line 603 "agent_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1817,10 +1817,10 @@ namespace isc { namespace agent {
     -128,   -55,  -128,  -128,  -128,  -128,  -128,  -128,  -128
   };
 
-  const short
+  const unsigned char
   AgentParser::yydefgoto_[] =
   {
-      -1,     4,     5,     6,     7,    23,    27,    16,    17,    18,
+       0,     4,     5,     6,     7,    23,    27,    16,    17,    18,
       25,    89,    32,    33,    19,    24,    29,    30,   165,    21,
       26,    35,    36,    37,    61,    47,    48,    49,    63,    50,
      166,    65,   167,    66,    53,    68,   106,   107,   108,   118,
index 225fbd3cc629298fa8cda2cd513608abd6f8d921..b192436af2a914c84dbb514088ee13da4edd8bf5 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -103,9 +103,9 @@ using namespace std;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef YY_ASSERT
+#ifndef AGENT__ASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define AGENT__ASSERT assert
 #endif
 
 
@@ -127,9 +127,9 @@ using namespace std;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -231,7 +231,7 @@ namespace isc { namespace agent {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YY_ASSERT (sizeof (T) <= size);
+      AGENT__ASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
@@ -245,7 +245,7 @@ namespace isc { namespace agent {
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      YY_ASSERT (!yytypeid_);
+      AGENT__ASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -254,8 +254,8 @@ namespace isc { namespace agent {
     T&
     emplace (U&&... u)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      AGENT__ASSERT (!yytypeid_);
+      AGENT__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -265,8 +265,8 @@ namespace isc { namespace agent {
     T&
     emplace ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      AGENT__ASSERT (!yytypeid_);
+      AGENT__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -276,8 +276,8 @@ namespace isc { namespace agent {
     T&
     emplace (const T& t)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      AGENT__ASSERT (!yytypeid_);
+      AGENT__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -306,9 +306,9 @@ namespace isc { namespace agent {
     T&
     as () YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      AGENT__ASSERT (yytypeid_);
+      AGENT__ASSERT (*yytypeid_ == typeid (T));
+      AGENT__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -317,9 +317,9 @@ namespace isc { namespace agent {
     const T&
     as () const YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      AGENT__ASSERT (yytypeid_);
+      AGENT__ASSERT (*yytypeid_ == typeid (T));
+      AGENT__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -335,8 +335,8 @@ namespace isc { namespace agent {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+      AGENT__ASSERT (yytypeid_);
+      AGENT__ASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -704,25 +704,25 @@ namespace isc { namespace agent {
       {
         switch (this->kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -736,7 +736,7 @@ namespace isc { namespace agent {
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructor for valueless symbols, and symbols from each type.
+      /// Constructors for typed symbols.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -748,6 +748,7 @@ namespace isc { namespace agent {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
         : Base (t)
@@ -761,6 +762,7 @@ namespace isc { namespace agent {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
         : Base (t)
@@ -774,6 +776,7 @@ namespace isc { namespace agent {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
         : Base (t)
@@ -787,6 +790,7 @@ namespace isc { namespace agent {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
         : Base (t)
@@ -800,6 +804,7 @@ namespace isc { namespace agent {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -821,7 +826,7 @@ namespace isc { namespace agent {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear ()
+      void clear () YY_NOEXCEPT
       {
         // User destructor.
         symbol_kind_type yykind = this->kind ();
@@ -836,25 +841,25 @@ namespace isc { namespace agent {
         // Value type destructor.
 switch (yykind)
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -914,7 +919,7 @@ switch (yykind)
       by_kind (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear ();
+      void clear () YY_NOEXCEPT;
 
       /// Steal the symbol kind from \a that.
       void move (by_kind& that);
@@ -947,68 +952,54 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || 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_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
-      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_AGENT_error || tok == token::TOKEN_AGENT_UNDEF || 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_CONTROL_AGENT || tok == token::TOKEN_HTTP_HOST || tok == token::TOKEN_HTTP_PORT || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_CONTROL_SOCKETS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_AGENT || tok == token::TOKEN_START_SUB_AGENT);
+        AGENT__ASSERT (tok == token::TOKEN_END
+                   || (token::TOKEN_AGENT_error <= tok && tok <= token::TOKEN_START_SUB_AGENT));
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, bool v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
 #else
       symbol_type (int tok, const bool& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+        AGENT__ASSERT (tok == token::TOKEN_BOOLEAN);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, double v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
 #else
       symbol_type (int tok, const double& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
+        AGENT__ASSERT (tok == token::TOKEN_FLOAT);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, int64_t v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
 #else
       symbol_type (int tok, const int64_t& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
+        AGENT__ASSERT (tok == token::TOKEN_INTEGER);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_STRING);
+        AGENT__ASSERT (tok == token::TOKEN_STRING);
       }
-#endif
     };
 
     /// Build a parser object.
@@ -1693,9 +1684,9 @@ switch (yykind)
     {
     public:
       context (const AgentParser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
+      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
+      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
 
       /// Put in YYARG at most YYARGN of the expected tokens, and return the
       /// number of tokens stored in YYARG.  If YYARG is null, return the
@@ -1768,7 +1759,7 @@ switch (yykind)
     static const short yypgoto_[];
 
     // YYDEFGOTO[NTERM-NUM].
-    static const short yydefgoto_[];
+    static const unsigned char yydefgoto_[];
 
     // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     // positive, shift that token.  If negative, reduce the rule whose
@@ -1838,7 +1829,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2069,11 +2060,12 @@ switch (yykind)
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41
     };
-    const int user_token_number_max_ = 296;
+    // Last valid token kind.
+    const int code_max = 296;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2088,25 +2080,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2139,25 +2131,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 50: // value
-      case 53: // map_value
-      case 104: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 41: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 40: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 39: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 38: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2195,7 +2187,7 @@ switch (yykind)
 
   inline
   void
-  AgentParser::by_kind::clear ()
+  AgentParser::by_kind::clear () YY_NOEXCEPT
   {
     kind_ = symbol_kind::S_YYEMPTY;
   }
@@ -2224,8 +2216,7 @@ switch (yykind)
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 2228 "agent_parser.h"
-
+#line 2220 "agent_parser.h"
 
 
 
index 499b94c03e22a7754c360b602d3952539625978f..f7d7b1b1040bf591fe4ed645ab64ac6a35106d36 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -16,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -62,11 +61,13 @@ namespace isc { namespace agent {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +77,7 @@ namespace isc { namespace agent {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +106,7 @@ namespace isc { namespace agent {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +149,6 @@ namespace isc { namespace agent {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +166,8 @@ namespace isc { namespace agent {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +184,7 @@ namespace isc { namespace agent {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +193,7 @@ namespace isc { namespace agent {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +275,6 @@ namespace isc { namespace agent {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +301,6 @@ namespace isc { namespace agent {
 
 #line 14 "agent_parser.yy"
 } } // isc::agent
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_AGENT_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..6575075df1ad61270c3f7cd42643f0307b57d944 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6c46cc8d62f44563bfc05d4eb598371b04b58c3 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 22389335c6687b460bcff663a8ebf8704ca67fc0..df6f2e7fabd2fc802dfb3a2683e02b8cd60ffeb1 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 #else // !D2_PARSER_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
@@ -209,25 +209,25 @@ namespace isc { namespace d2 {
   {
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace d2 {
   {
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace d2 {
     state = that.state;
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace d2 {
     state = that.state;
     switch (that.kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -366,7 +366,7 @@ namespace isc { namespace d2 {
   D2Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YYUSE (yyoutput);
+    YY_USE (yyoutput);
     if (yysym.empty ())
       yyo << "empty symbol";
     else
@@ -377,43 +377,43 @@ namespace isc { namespace d2 {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "d2_parser.cc"
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "d2_parser.cc"
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "d2_parser.cc"
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "d2_parser.cc"
         break;
 
-      case 68: // value
+      case symbol_kind::S_value: // value
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "d2_parser.cc"
         break;
 
-      case 72: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "d2_parser.cc"
         break;
 
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
 #line 111 "d2_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "d2_parser.cc"
@@ -646,25 +646,25 @@ namespace isc { namespace d2 {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -688,103 +688,103 @@ namespace isc { namespace d2 {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 120 "d2_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 695 "d2_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 121 "d2_parser.yy"
                          { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "d2_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 122 "d2_parser.yy"
                     { ctx.ctx_ = ctx.DHCPDDNS; }
 #line 707 "d2_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 123 "d2_parser.yy"
                     { ctx.ctx_ = ctx.TSIG_KEY; }
 #line 713 "d2_parser.cc"
     break;
 
-  case 10:
+  case 10: // $@5: %empty
 #line 124 "d2_parser.yy"
                      { ctx.ctx_ = ctx.TSIG_KEYS; }
 #line 719 "d2_parser.cc"
     break;
 
-  case 12:
+  case 12: // $@6: %empty
 #line 125 "d2_parser.yy"
                        { ctx.ctx_ = ctx.DDNS_DOMAIN; }
 #line 725 "d2_parser.cc"
     break;
 
-  case 14:
+  case 14: // $@7: %empty
 #line 126 "d2_parser.yy"
                         { ctx.ctx_ = ctx.DDNS_DOMAINS; }
 #line 731 "d2_parser.cc"
     break;
 
-  case 16:
+  case 16: // $@8: %empty
 #line 127 "d2_parser.yy"
                       { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 737 "d2_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@9: %empty
 #line 128 "d2_parser.yy"
                        { ctx.ctx_ = ctx.DNS_SERVERS; }
 #line 743 "d2_parser.cc"
     break;
 
-  case 20:
+  case 20: // value: "integer"
 #line 136 "d2_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 749 "d2_parser.cc"
     break;
 
-  case 21:
+  case 21: // value: "floating point"
 #line 137 "d2_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 755 "d2_parser.cc"
     break;
 
-  case 22:
+  case 22: // value: "boolean"
 #line 138 "d2_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 761 "d2_parser.cc"
     break;
 
-  case 23:
+  case 23: // value: "constant string"
 #line 139 "d2_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 767 "d2_parser.cc"
     break;
 
-  case 24:
+  case 24: // value: "null"
 #line 140 "d2_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 773 "d2_parser.cc"
     break;
 
-  case 25:
+  case 25: // value: map2
 #line 141 "d2_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 779 "d2_parser.cc"
     break;
 
-  case 26:
+  case 26: // value: list_generic
 #line 142 "d2_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 785 "d2_parser.cc"
     break;
 
-  case 27:
+  case 27: // sub_json: value
 #line 145 "d2_parser.yy"
                 {
     // Push back the JSON value on the stack
@@ -793,7 +793,7 @@ namespace isc { namespace d2 {
 #line 794 "d2_parser.cc"
     break;
 
-  case 28:
+  case 28: // $@10: %empty
 #line 150 "d2_parser.yy"
                      {
     // This code is executed when we're about to start parsing
@@ -804,7 +804,7 @@ namespace isc { namespace d2 {
 #line 805 "d2_parser.cc"
     break;
 
-  case 29:
+  case 29: // map2: "{" $@10 map_content "}"
 #line 155 "d2_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -814,13 +814,13 @@ namespace isc { namespace d2 {
 #line 815 "d2_parser.cc"
     break;
 
-  case 30:
+  case 30: // map_value: map2
 #line 161 "d2_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 821 "d2_parser.cc"
     break;
 
-  case 33:
+  case 33: // not_empty_map: "constant string" ":" value
 #line 168 "d2_parser.yy"
                                   {
                   // map containing a single entry
@@ -829,7 +829,7 @@ namespace isc { namespace d2 {
 #line 830 "d2_parser.cc"
     break;
 
-  case 34:
+  case 34: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 172 "d2_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -839,7 +839,7 @@ namespace isc { namespace d2 {
 #line 840 "d2_parser.cc"
     break;
 
-  case 35:
+  case 35: // $@11: %empty
 #line 179 "d2_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -848,7 +848,7 @@ namespace isc { namespace d2 {
 #line 849 "d2_parser.cc"
     break;
 
-  case 36:
+  case 36: // list_generic: "[" $@11 list_content "]"
 #line 182 "d2_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
@@ -856,7 +856,7 @@ namespace isc { namespace d2 {
 #line 857 "d2_parser.cc"
     break;
 
-  case 39:
+  case 39: // not_empty_list: value
 #line 190 "d2_parser.yy"
                       {
                   // List consisting of a single element.
@@ -865,7 +865,7 @@ namespace isc { namespace d2 {
 #line 866 "d2_parser.cc"
     break;
 
-  case 40:
+  case 40: // not_empty_list: not_empty_list "," value
 #line 194 "d2_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -874,7 +874,7 @@ namespace isc { namespace d2 {
 #line 875 "d2_parser.cc"
     break;
 
-  case 41:
+  case 41: // unknown_map_entry: "constant string" ":"
 #line 205 "d2_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -885,7 +885,7 @@ namespace isc { namespace d2 {
 #line 886 "d2_parser.cc"
     break;
 
-  case 42:
+  case 42: // $@12: %empty
 #line 214 "d2_parser.yy"
                            {
     // This code is executed when we're about to start parsing
@@ -896,7 +896,7 @@ namespace isc { namespace d2 {
 #line 897 "d2_parser.cc"
     break;
 
-  case 43:
+  case 43: // syntax_map: "{" $@12 global_objects "}"
 #line 219 "d2_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -906,7 +906,7 @@ namespace isc { namespace d2 {
 #line 907 "d2_parser.cc"
     break;
 
-  case 46:
+  case 46: // $@13: %empty
 #line 235 "d2_parser.yy"
                           {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -917,7 +917,7 @@ namespace isc { namespace d2 {
 #line 918 "d2_parser.cc"
     break;
 
-  case 47:
+  case 47: // dhcpddns_object: "DhcpDdns" $@13 ":" "{" dhcpddns_params "}"
 #line 240 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -926,7 +926,7 @@ namespace isc { namespace d2 {
 #line 927 "d2_parser.cc"
     break;
 
-  case 48:
+  case 48: // $@14: %empty
 #line 245 "d2_parser.yy"
                              {
     // Parse the dhcpddns map
@@ -936,7 +936,7 @@ namespace isc { namespace d2 {
 #line 937 "d2_parser.cc"
     break;
 
-  case 49:
+  case 49: // sub_dhcpddns: "{" $@14 dhcpddns_params "}"
 #line 249 "d2_parser.yy"
                                  {
     // parsing completed
@@ -944,7 +944,7 @@ namespace isc { namespace d2 {
 #line 945 "d2_parser.cc"
     break;
 
-  case 65:
+  case 65: // $@15: %empty
 #line 273 "d2_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -952,7 +952,7 @@ namespace isc { namespace d2 {
 #line 953 "d2_parser.cc"
     break;
 
-  case 66:
+  case 66: // ip_address: "ip-address" $@15 ":" "constant string"
 #line 275 "d2_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -962,7 +962,7 @@ namespace isc { namespace d2 {
 #line 963 "d2_parser.cc"
     break;
 
-  case 67:
+  case 67: // port: "port" ":" "integer"
 #line 281 "d2_parser.yy"
                          {
     if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
@@ -974,7 +974,7 @@ namespace isc { namespace d2 {
 #line 975 "d2_parser.cc"
     break;
 
-  case 68:
+  case 68: // dns_server_timeout: "dns-server-timeout" ":" "integer"
 #line 289 "d2_parser.yy"
                                                      {
     if (yystack_[0].value.as < int64_t > () <= 0) {
@@ -987,7 +987,7 @@ namespace isc { namespace d2 {
 #line 988 "d2_parser.cc"
     break;
 
-  case 69:
+  case 69: // $@16: %empty
 #line 298 "d2_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
@@ -995,7 +995,7 @@ namespace isc { namespace d2 {
 #line 996 "d2_parser.cc"
     break;
 
-  case 70:
+  case 70: // ncr_protocol: "ncr-protocol" $@16 ":" ncr_protocol_value
 #line 300 "d2_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
@@ -1004,19 +1004,19 @@ namespace isc { namespace d2 {
 #line 1005 "d2_parser.cc"
     break;
 
-  case 71:
+  case 71: // ncr_protocol_value: "UDP"
 #line 306 "d2_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
 #line 1011 "d2_parser.cc"
     break;
 
-  case 72:
+  case 72: // ncr_protocol_value: "TCP"
 #line 307 "d2_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
 #line 1017 "d2_parser.cc"
     break;
 
-  case 73:
+  case 73: // $@17: %empty
 #line 310 "d2_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
@@ -1024,7 +1024,7 @@ namespace isc { namespace d2 {
 #line 1025 "d2_parser.cc"
     break;
 
-  case 74:
+  case 74: // ncr_format: "ncr-format" $@17 ":" "JSON"
 #line 312 "d2_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
@@ -1034,7 +1034,7 @@ namespace isc { namespace d2 {
 #line 1035 "d2_parser.cc"
     break;
 
-  case 75:
+  case 75: // $@18: %empty
 #line 318 "d2_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1042,7 +1042,7 @@ namespace isc { namespace d2 {
 #line 1043 "d2_parser.cc"
     break;
 
-  case 76:
+  case 76: // user_context: "user-context" $@18 ":" map_value
 #line 320 "d2_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -1069,7 +1069,7 @@ namespace isc { namespace d2 {
 #line 1070 "d2_parser.cc"
     break;
 
-  case 77:
+  case 77: // $@19: %empty
 #line 343 "d2_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1077,7 +1077,7 @@ namespace isc { namespace d2 {
 #line 1078 "d2_parser.cc"
     break;
 
-  case 78:
+  case 78: // comment: "comment" $@19 ":" "constant string"
 #line 345 "d2_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -1106,7 +1106,7 @@ namespace isc { namespace d2 {
 #line 1107 "d2_parser.cc"
     break;
 
-  case 79:
+  case 79: // $@20: %empty
 #line 370 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1117,7 +1117,7 @@ namespace isc { namespace d2 {
 #line 1118 "d2_parser.cc"
     break;
 
-  case 80:
+  case 80: // forward_ddns: "forward-ddns" $@20 ":" "{" ddns_mgr_params "}"
 #line 375 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -1126,7 +1126,7 @@ namespace isc { namespace d2 {
 #line 1127 "d2_parser.cc"
     break;
 
-  case 81:
+  case 81: // $@21: %empty
 #line 380 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1137,7 +1137,7 @@ namespace isc { namespace d2 {
 #line 1138 "d2_parser.cc"
     break;
 
-  case 82:
+  case 82: // reverse_ddns: "reverse-ddns" $@21 ":" "{" ddns_mgr_params "}"
 #line 385 "d2_parser.yy"
                                                       {
     ctx.stack_.pop_back();
@@ -1146,7 +1146,7 @@ namespace isc { namespace d2 {
 #line 1147 "d2_parser.cc"
     break;
 
-  case 89:
+  case 89: // $@22: %empty
 #line 404 "d2_parser.yy"
                            {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1157,7 +1157,7 @@ namespace isc { namespace d2 {
 #line 1158 "d2_parser.cc"
     break;
 
-  case 90:
+  case 90: // ddns_domains: "ddns-domains" $@22 ":" "[" ddns_domain_list "]"
 #line 409 "d2_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1166,7 +1166,7 @@ namespace isc { namespace d2 {
 #line 1167 "d2_parser.cc"
     break;
 
-  case 91:
+  case 91: // $@23: %empty
 #line 414 "d2_parser.yy"
                                   {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1175,7 +1175,7 @@ namespace isc { namespace d2 {
 #line 1176 "d2_parser.cc"
     break;
 
-  case 92:
+  case 92: // sub_ddns_domains: "[" $@23 ddns_domain_list "]"
 #line 417 "d2_parser.yy"
                                    {
     // parsing completed
@@ -1183,7 +1183,7 @@ namespace isc { namespace d2 {
 #line 1184 "d2_parser.cc"
     break;
 
-  case 97:
+  case 97: // $@24: %empty
 #line 429 "d2_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1193,7 +1193,7 @@ namespace isc { namespace d2 {
 #line 1194 "d2_parser.cc"
     break;
 
-  case 98:
+  case 98: // ddns_domain: "{" $@24 ddns_domain_params "}"
 #line 433 "d2_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1201,7 +1201,7 @@ namespace isc { namespace d2 {
 #line 1202 "d2_parser.cc"
     break;
 
-  case 99:
+  case 99: // $@25: %empty
 #line 437 "d2_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1210,7 +1210,7 @@ namespace isc { namespace d2 {
 #line 1211 "d2_parser.cc"
     break;
 
-  case 100:
+  case 100: // sub_ddns_domain: "{" $@25 ddns_domain_params "}"
 #line 440 "d2_parser.yy"
                                     {
     // parsing completed
@@ -1218,7 +1218,7 @@ namespace isc { namespace d2 {
 #line 1219 "d2_parser.cc"
     break;
 
-  case 109:
+  case 109: // $@26: %empty
 #line 457 "d2_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1226,7 +1226,7 @@ namespace isc { namespace d2 {
 #line 1227 "d2_parser.cc"
     break;
 
-  case 110:
+  case 110: // ddns_domain_name: "name" $@26 ":" "constant string"
 #line 459 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1240,7 +1240,7 @@ namespace isc { namespace d2 {
 #line 1241 "d2_parser.cc"
     break;
 
-  case 111:
+  case 111: // $@27: %empty
 #line 469 "d2_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1248,7 +1248,7 @@ namespace isc { namespace d2 {
 #line 1249 "d2_parser.cc"
     break;
 
-  case 112:
+  case 112: // ddns_domain_key_name: "key-name" $@27 ":" "constant string"
 #line 471 "d2_parser.yy"
                {
     ElementPtr elem(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1259,7 +1259,7 @@ namespace isc { namespace d2 {
 #line 1260 "d2_parser.cc"
     break;
 
-  case 113:
+  case 113: // $@28: %empty
 #line 481 "d2_parser.yy"
                          {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1270,7 +1270,7 @@ namespace isc { namespace d2 {
 #line 1271 "d2_parser.cc"
     break;
 
-  case 114:
+  case 114: // dns_servers: "dns-servers" $@28 ":" "[" dns_server_list "]"
 #line 486 "d2_parser.yy"
                                                         {
     ctx.stack_.pop_back();
@@ -1279,7 +1279,7 @@ namespace isc { namespace d2 {
 #line 1280 "d2_parser.cc"
     break;
 
-  case 115:
+  case 115: // $@29: %empty
 #line 491 "d2_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1288,7 +1288,7 @@ namespace isc { namespace d2 {
 #line 1289 "d2_parser.cc"
     break;
 
-  case 116:
+  case 116: // sub_dns_servers: "[" $@29 dns_server_list "]"
 #line 494 "d2_parser.yy"
                                   {
     // parsing completed
@@ -1296,7 +1296,7 @@ namespace isc { namespace d2 {
 #line 1297 "d2_parser.cc"
     break;
 
-  case 119:
+  case 119: // $@30: %empty
 #line 502 "d2_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1306,7 +1306,7 @@ namespace isc { namespace d2 {
 #line 1307 "d2_parser.cc"
     break;
 
-  case 120:
+  case 120: // dns_server: "{" $@30 dns_server_params "}"
 #line 506 "d2_parser.yy"
                                    {
     ctx.stack_.pop_back();
@@ -1314,7 +1314,7 @@ namespace isc { namespace d2 {
 #line 1315 "d2_parser.cc"
     break;
 
-  case 121:
+  case 121: // $@31: %empty
 #line 510 "d2_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1323,7 +1323,7 @@ namespace isc { namespace d2 {
 #line 1324 "d2_parser.cc"
     break;
 
-  case 122:
+  case 122: // sub_dns_server: "{" $@31 dns_server_params "}"
 #line 513 "d2_parser.yy"
                                    {
     // parsing completed
@@ -1331,7 +1331,7 @@ namespace isc { namespace d2 {
 #line 1332 "d2_parser.cc"
     break;
 
-  case 131:
+  case 131: // $@32: %empty
 #line 529 "d2_parser.yy"
                               {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1339,7 +1339,7 @@ namespace isc { namespace d2 {
 #line 1340 "d2_parser.cc"
     break;
 
-  case 132:
+  case 132: // dns_server_hostname: "hostname" $@32 ":" "constant string"
 #line 531 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () != "") {
@@ -1353,7 +1353,7 @@ namespace isc { namespace d2 {
 #line 1354 "d2_parser.cc"
     break;
 
-  case 133:
+  case 133: // $@33: %empty
 #line 541 "d2_parser.yy"
                                   {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1361,7 +1361,7 @@ namespace isc { namespace d2 {
 #line 1362 "d2_parser.cc"
     break;
 
-  case 134:
+  case 134: // dns_server_ip_address: "ip-address" $@33 ":" "constant string"
 #line 543 "d2_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1371,7 +1371,7 @@ namespace isc { namespace d2 {
 #line 1372 "d2_parser.cc"
     break;
 
-  case 135:
+  case 135: // dns_server_port: "port" ":" "integer"
 #line 549 "d2_parser.yy"
                                     {
     if (yystack_[0].value.as < int64_t > () <= 0 || yystack_[0].value.as < int64_t > () >= 65536 ) {
@@ -1383,7 +1383,7 @@ namespace isc { namespace d2 {
 #line 1384 "d2_parser.cc"
     break;
 
-  case 136:
+  case 136: // $@34: %empty
 #line 563 "d2_parser.yy"
                      {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1394,7 +1394,7 @@ namespace isc { namespace d2 {
 #line 1395 "d2_parser.cc"
     break;
 
-  case 137:
+  case 137: // tsig_keys: "tsig-keys" $@34 ":" "[" tsig_keys_list "]"
 #line 568 "d2_parser.yy"
                                                        {
     ctx.stack_.pop_back();
@@ -1403,7 +1403,7 @@ namespace isc { namespace d2 {
 #line 1404 "d2_parser.cc"
     break;
 
-  case 138:
+  case 138: // $@35: %empty
 #line 573 "d2_parser.yy"
                                {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1412,7 +1412,7 @@ namespace isc { namespace d2 {
 #line 1413 "d2_parser.cc"
     break;
 
-  case 139:
+  case 139: // sub_tsig_keys: "[" $@35 tsig_keys_list "]"
 #line 576 "d2_parser.yy"
                                  {
     // parsing completed
@@ -1420,7 +1420,7 @@ namespace isc { namespace d2 {
 #line 1421 "d2_parser.cc"
     break;
 
-  case 144:
+  case 144: // $@36: %empty
 #line 588 "d2_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1430,7 +1430,7 @@ namespace isc { namespace d2 {
 #line 1431 "d2_parser.cc"
     break;
 
-  case 145:
+  case 145: // tsig_key: "{" $@36 tsig_key_params "}"
 #line 592 "d2_parser.yy"
                                  {
     ctx.stack_.pop_back();
@@ -1438,7 +1438,7 @@ namespace isc { namespace d2 {
 #line 1439 "d2_parser.cc"
     break;
 
-  case 146:
+  case 146: // $@37: %empty
 #line 596 "d2_parser.yy"
                              {
     // Parse tsig key list entry map
@@ -1448,7 +1448,7 @@ namespace isc { namespace d2 {
 #line 1449 "d2_parser.cc"
     break;
 
-  case 147:
+  case 147: // sub_tsig_key: "{" $@37 tsig_key_params "}"
 #line 600 "d2_parser.yy"
                                  {
     // parsing completed
@@ -1456,7 +1456,7 @@ namespace isc { namespace d2 {
 #line 1457 "d2_parser.cc"
     break;
 
-  case 157:
+  case 157: // $@38: %empty
 #line 618 "d2_parser.yy"
                     {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1464,7 +1464,7 @@ namespace isc { namespace d2 {
 #line 1465 "d2_parser.cc"
     break;
 
-  case 158:
+  case 158: // tsig_key_name: "name" $@38 ":" "constant string"
 #line 620 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1478,7 +1478,7 @@ namespace isc { namespace d2 {
 #line 1479 "d2_parser.cc"
     break;
 
-  case 159:
+  case 159: // $@39: %empty
 #line 630 "d2_parser.yy"
                               {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1486,7 +1486,7 @@ namespace isc { namespace d2 {
 #line 1487 "d2_parser.cc"
     break;
 
-  case 160:
+  case 160: // tsig_key_algorithm: "algorithm" $@39 ":" "constant string"
 #line 632 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1499,7 +1499,7 @@ namespace isc { namespace d2 {
 #line 1500 "d2_parser.cc"
     break;
 
-  case 161:
+  case 161: // tsig_key_digest_bits: "digest-bits" ":" "integer"
 #line 641 "d2_parser.yy"
                                                 {
     if (yystack_[0].value.as < int64_t > () < 0 || (yystack_[0].value.as < int64_t > () > 0  && (yystack_[0].value.as < int64_t > () % 8 != 0))) {
@@ -1511,7 +1511,7 @@ namespace isc { namespace d2 {
 #line 1512 "d2_parser.cc"
     break;
 
-  case 162:
+  case 162: // $@40: %empty
 #line 649 "d2_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1519,7 +1519,7 @@ namespace isc { namespace d2 {
 #line 1520 "d2_parser.cc"
     break;
 
-  case 163:
+  case 163: // tsig_key_secret: "secret" $@40 ":" "constant string"
 #line 651 "d2_parser.yy"
                {
     if (yystack_[0].value.as < std::string > () == "") {
@@ -1532,7 +1532,7 @@ namespace isc { namespace d2 {
 #line 1533 "d2_parser.cc"
     break;
 
-  case 164:
+  case 164: // $@41: %empty
 #line 665 "d2_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1543,7 +1543,7 @@ namespace isc { namespace d2 {
 #line 1544 "d2_parser.cc"
     break;
 
-  case 165:
+  case 165: // control_socket: "control-socket" $@41 ":" "{" control_socket_params "}"
 #line 670 "d2_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1552,7 +1552,7 @@ namespace isc { namespace d2 {
 #line 1553 "d2_parser.cc"
     break;
 
-  case 173:
+  case 173: // $@42: %empty
 #line 686 "d2_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1560,7 +1560,7 @@ namespace isc { namespace d2 {
 #line 1561 "d2_parser.cc"
     break;
 
-  case 174:
+  case 174: // control_socket_type: "socket-type" $@42 ":" "constant string"
 #line 688 "d2_parser.yy"
                {
     ElementPtr stype(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1570,7 +1570,7 @@ namespace isc { namespace d2 {
 #line 1571 "d2_parser.cc"
     break;
 
-  case 175:
+  case 175: // $@43: %empty
 #line 694 "d2_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1578,7 +1578,7 @@ namespace isc { namespace d2 {
 #line 1579 "d2_parser.cc"
     break;
 
-  case 176:
+  case 176: // control_socket_name: "socket-name" $@43 ":" "constant string"
 #line 696 "d2_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1588,7 +1588,7 @@ namespace isc { namespace d2 {
 #line 1589 "d2_parser.cc"
     break;
 
-  case 177:
+  case 177: // $@44: %empty
 #line 704 "d2_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1599,7 +1599,7 @@ namespace isc { namespace d2 {
 #line 1600 "d2_parser.cc"
     break;
 
-  case 178:
+  case 178: // loggers: "loggers" $@44 ":" "[" loggers_entries "]"
 #line 709 "d2_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1608,7 +1608,7 @@ namespace isc { namespace d2 {
 #line 1609 "d2_parser.cc"
     break;
 
-  case 181:
+  case 181: // $@45: %empty
 #line 721 "d2_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1618,7 +1618,7 @@ namespace isc { namespace d2 {
 #line 1619 "d2_parser.cc"
     break;
 
-  case 182:
+  case 182: // logger_entry: "{" $@45 logger_params "}"
 #line 725 "d2_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -1626,7 +1626,7 @@ namespace isc { namespace d2 {
 #line 1627 "d2_parser.cc"
     break;
 
-  case 192:
+  case 192: // $@46: %empty
 #line 742 "d2_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1634,7 +1634,7 @@ namespace isc { namespace d2 {
 #line 1635 "d2_parser.cc"
     break;
 
-  case 193:
+  case 193: // name: "name" $@46 ":" "constant string"
 #line 744 "d2_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1644,7 +1644,7 @@ namespace isc { namespace d2 {
 #line 1645 "d2_parser.cc"
     break;
 
-  case 194:
+  case 194: // debuglevel: "debuglevel" ":" "integer"
 #line 750 "d2_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1653,7 +1653,7 @@ namespace isc { namespace d2 {
 #line 1654 "d2_parser.cc"
     break;
 
-  case 195:
+  case 195: // $@47: %empty
 #line 754 "d2_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1661,7 +1661,7 @@ namespace isc { namespace d2 {
 #line 1662 "d2_parser.cc"
     break;
 
-  case 196:
+  case 196: // severity: "severity" $@47 ":" "constant string"
 #line 756 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1671,7 +1671,7 @@ namespace isc { namespace d2 {
 #line 1672 "d2_parser.cc"
     break;
 
-  case 197:
+  case 197: // $@48: %empty
 #line 762 "d2_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1682,7 +1682,7 @@ namespace isc { namespace d2 {
 #line 1683 "d2_parser.cc"
     break;
 
-  case 198:
+  case 198: // output_options_list: "output_options" $@48 ":" "[" output_options_list_content "]"
 #line 767 "d2_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -1691,7 +1691,7 @@ namespace isc { namespace d2 {
 #line 1692 "d2_parser.cc"
     break;
 
-  case 201:
+  case 201: // $@49: %empty
 #line 776 "d2_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1701,7 +1701,7 @@ namespace isc { namespace d2 {
 #line 1702 "d2_parser.cc"
     break;
 
-  case 202:
+  case 202: // output_entry: "{" $@49 output_params_list "}"
 #line 780 "d2_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1709,7 +1709,7 @@ namespace isc { namespace d2 {
 #line 1710 "d2_parser.cc"
     break;
 
-  case 210:
+  case 210: // $@50: %empty
 #line 795 "d2_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1717,7 +1717,7 @@ namespace isc { namespace d2 {
 #line 1718 "d2_parser.cc"
     break;
 
-  case 211:
+  case 211: // output: "output" $@50 ":" "constant string"
 #line 797 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1727,7 +1727,7 @@ namespace isc { namespace d2 {
 #line 1728 "d2_parser.cc"
     break;
 
-  case 212:
+  case 212: // flush: "flush" ":" "boolean"
 #line 803 "d2_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1736,7 +1736,7 @@ namespace isc { namespace d2 {
 #line 1737 "d2_parser.cc"
     break;
 
-  case 213:
+  case 213: // maxsize: "maxsize" ":" "integer"
 #line 808 "d2_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1745,7 +1745,7 @@ namespace isc { namespace d2 {
 #line 1746 "d2_parser.cc"
     break;
 
-  case 214:
+  case 214: // maxver: "maxver" ":" "integer"
 #line 813 "d2_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1754,7 +1754,7 @@ namespace isc { namespace d2 {
 #line 1755 "d2_parser.cc"
     break;
 
-  case 215:
+  case 215: // $@51: %empty
 #line 818 "d2_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
@@ -1762,7 +1762,7 @@ namespace isc { namespace d2 {
 #line 1763 "d2_parser.cc"
     break;
 
-  case 216:
+  case 216: // pattern: "pattern" $@51 ":" "constant string"
 #line 820 "d2_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -2230,7 +2230,7 @@ namespace isc { namespace d2 {
   const short
   D2Parser::yydefgoto_[] =
   {
-      -1,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+       0,    10,    11,    12,    13,    14,    15,    16,    17,    18,
       19,    28,    29,    30,    49,   233,    62,    63,    31,    48,
       59,    60,    81,    33,    50,    65,    66,    67,   147,    35,
       51,    82,    83,    84,   149,    85,    86,    87,   152,   230,
index aba8a2aaafe4dca361a6ae0660c382a8b2079195..8225120f4c73650f4d5ec3d79de3837fd21ad1ce 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -104,9 +104,9 @@ using namespace std;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef YY_ASSERT
+#ifndef D2_PARSER__ASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define D2_PARSER__ASSERT assert
 #endif
 
 
@@ -128,9 +128,9 @@ using namespace std;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -232,7 +232,7 @@ namespace isc { namespace d2 {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YY_ASSERT (sizeof (T) <= size);
+      D2_PARSER__ASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
@@ -246,7 +246,7 @@ namespace isc { namespace d2 {
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      YY_ASSERT (!yytypeid_);
+      D2_PARSER__ASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -255,8 +255,8 @@ namespace isc { namespace d2 {
     T&
     emplace (U&&... u)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      D2_PARSER__ASSERT (!yytypeid_);
+      D2_PARSER__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -266,8 +266,8 @@ namespace isc { namespace d2 {
     T&
     emplace ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      D2_PARSER__ASSERT (!yytypeid_);
+      D2_PARSER__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -277,8 +277,8 @@ namespace isc { namespace d2 {
     T&
     emplace (const T& t)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      D2_PARSER__ASSERT (!yytypeid_);
+      D2_PARSER__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -307,9 +307,9 @@ namespace isc { namespace d2 {
     T&
     as () YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      D2_PARSER__ASSERT (yytypeid_);
+      D2_PARSER__ASSERT (*yytypeid_ == typeid (T));
+      D2_PARSER__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -318,9 +318,9 @@ namespace isc { namespace d2 {
     const T&
     as () const YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      D2_PARSER__ASSERT (yytypeid_);
+      D2_PARSER__ASSERT (*yytypeid_ == typeid (T));
+      D2_PARSER__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -336,8 +336,8 @@ namespace isc { namespace d2 {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+      D2_PARSER__ASSERT (yytypeid_);
+      D2_PARSER__ASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -784,25 +784,25 @@ namespace isc { namespace d2 {
       {
         switch (this->kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -816,7 +816,7 @@ namespace isc { namespace d2 {
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructor for valueless symbols, and symbols from each type.
+      /// Constructors for typed symbols.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -828,6 +828,7 @@ namespace isc { namespace d2 {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
         : Base (t)
@@ -841,6 +842,7 @@ namespace isc { namespace d2 {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
         : Base (t)
@@ -854,6 +856,7 @@ namespace isc { namespace d2 {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
         : Base (t)
@@ -867,6 +870,7 @@ namespace isc { namespace d2 {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
         : Base (t)
@@ -880,6 +884,7 @@ namespace isc { namespace d2 {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -901,7 +906,7 @@ namespace isc { namespace d2 {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear ()
+      void clear () YY_NOEXCEPT
       {
         // User destructor.
         symbol_kind_type yykind = this->kind ();
@@ -916,25 +921,25 @@ namespace isc { namespace d2 {
         // Value type destructor.
 switch (yykind)
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -994,7 +999,7 @@ switch (yykind)
       by_kind (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear ();
+      void clear () YY_NOEXCEPT;
 
       /// Steal the symbol kind from \a that.
       void move (by_kind& that);
@@ -1027,68 +1032,54 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_D2_PARSER_error || tok == token::TOKEN_D2_PARSER_UNDEF || 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_DHCPDDNS || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_PORT || tok == token::TOKEN_DNS_SERVER_TIMEOUT || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_JSON || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_FORWARD_DDNS || tok == token::TOKEN_REVERSE_DDNS || tok == token::TOKEN_DDNS_DOMAINS || tok == token::TOKEN_KEY_NAME || tok == token::TOKEN_DNS_SERVERS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_TSIG_KEYS || tok == token::TOKEN_ALGORITHM || tok == token::TOKEN_DIGEST_BITS || tok == token::TOKEN_SECRET || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCPDDNS || tok == token::TOKEN_SUB_DHCPDDNS || tok == token::TOKEN_SUB_TSIG_KEY || tok == token::TOKEN_SUB_TSIG_KEYS || tok == token::TOKEN_SUB_DDNS_DOMAIN || tok == token::TOKEN_SUB_DDNS_DOMAINS || tok == token::TOKEN_SUB_DNS_SERVER || tok == token::TOKEN_SUB_DNS_SERVERS);
-      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_D2_PARSER_error || tok == token::TOKEN_D2_PARSER_UNDEF || 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_DHCPDDNS || tok == token::TOKEN_IP_ADDRESS || tok == token::TOKEN_PORT || tok == token::TOKEN_DNS_SERVER_TIMEOUT || tok == token::TOKEN_NCR_PROTOCOL || tok == token::TOKEN_UDP || tok == token::TOKEN_TCP || tok == token::TOKEN_NCR_FORMAT || tok == token::TOKEN_JSON || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_FORWARD_DDNS || tok == token::TOKEN_REVERSE_DDNS || tok == token::TOKEN_DDNS_DOMAINS || tok == token::TOKEN_KEY_NAME || tok == token::TOKEN_DNS_SERVERS || tok == token::TOKEN_HOSTNAME || tok == token::TOKEN_TSIG_KEYS || tok == token::TOKEN_ALGORITHM || tok == token::TOKEN_DIGEST_BITS || tok == token::TOKEN_SECRET || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_PATTERN || tok == token::TOKEN_TOPLEVEL_JSON || tok == token::TOKEN_TOPLEVEL_DHCPDDNS || tok == token::TOKEN_SUB_DHCPDDNS || tok == token::TOKEN_SUB_TSIG_KEY || tok == token::TOKEN_SUB_TSIG_KEYS || tok == token::TOKEN_SUB_DDNS_DOMAIN || tok == token::TOKEN_SUB_DDNS_DOMAINS || tok == token::TOKEN_SUB_DNS_SERVER || tok == token::TOKEN_SUB_DNS_SERVERS);
+        D2_PARSER__ASSERT (tok == token::TOKEN_END
+                   || (token::TOKEN_D2_PARSER_error <= tok && tok <= token::TOKEN_SUB_DNS_SERVERS));
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, bool v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
 #else
       symbol_type (int tok, const bool& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+        D2_PARSER__ASSERT (tok == token::TOKEN_BOOLEAN);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, double v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
 #else
       symbol_type (int tok, const double& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
+        D2_PARSER__ASSERT (tok == token::TOKEN_FLOAT);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, int64_t v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
 #else
       symbol_type (int tok, const int64_t& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
+        D2_PARSER__ASSERT (tok == token::TOKEN_INTEGER);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_STRING);
+        D2_PARSER__ASSERT (tok == token::TOKEN_STRING);
       }
-#endif
     };
 
     /// Build a parser object.
@@ -1998,9 +1989,9 @@ switch (yykind)
     {
     public:
       context (const D2Parser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
+      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
+      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
 
       /// Put in YYARG at most YYARGN of the expected tokens, and return the
       /// number of tokens stored in YYARG.  If YYARG is null, return the
@@ -2143,7 +2134,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2376,11 +2367,12 @@ switch (yykind)
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56
     };
-    const int user_token_number_max_ = 311;
+    // Last valid token kind.
+    const int code_max = 311;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2395,25 +2387,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2446,25 +2438,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 68: // value
-      case 72: // map_value
-      case 96: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 56: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 55: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 54: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 53: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2502,7 +2494,7 @@ switch (yykind)
 
   inline
   void
-  D2Parser::by_kind::clear ()
+  D2Parser::by_kind::clear () YY_NOEXCEPT
   {
     kind_ = symbol_kind::S_YYEMPTY;
   }
@@ -2531,8 +2523,7 @@ switch (yykind)
 
 #line 14 "d2_parser.yy"
 } } // isc::d2
-#line 2535 "d2_parser.h"
-
+#line 2527 "d2_parser.h"
 
 
 
index 3f1c33eae5df260e51819527eaa98d04495345c5..f0842a473a6ca99d341e82ffc7596e9eeb11d740 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -16,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -62,11 +61,13 @@ namespace isc { namespace d2 {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +77,7 @@ namespace isc { namespace d2 {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +106,7 @@ namespace isc { namespace d2 {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +149,6 @@ namespace isc { namespace d2 {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +166,8 @@ namespace isc { namespace d2 {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +184,7 @@ namespace isc { namespace d2 {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +193,7 @@ namespace isc { namespace d2 {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +275,6 @@ namespace isc { namespace d2 {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +301,6 @@ namespace isc { namespace d2 {
 
 #line 14 "d2_parser.yy"
 } } // isc::d2
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_D2_PARSER_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..6575075df1ad61270c3f7cd42643f0307b57d944 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6c46cc8d62f44563bfc05d4eb598371b04b58c3 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index ca6d6055e901b1b67b8b52c9eb7cf56a7abf3b20..7df884de4c5e4a404e6f9cd58152e0043fdf3249 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 197
-#define YY_END_OF_BUFFER 198
+#define YY_NUM_RULES 199
+#define YY_END_OF_BUFFER 200
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1810] =
+static const flex_int16_t yy_accept[1849] =
     {   0,
-      190,  190,    0,    0,    0,    0,    0,    0,    0,    0,
-      198,  196,   10,   11,  196,    1,  190,  187,  190,  190,
-      196,  189,  188,  196,  196,  196,  196,  196,  183,  184,
-      196,  196,  196,  185,  186,    5,    5,    5,  196,  196,
-      196,   10,   11,    0,    0,  179,    0,    0,    0,    0,
+      192,  192,    0,    0,    0,    0,    0,    0,    0,    0,
+      200,  198,   10,   11,  198,    1,  192,  189,  192,  192,
+      198,  191,  190,  198,  198,  198,  198,  198,  185,  186,
+      198,  198,  198,  187,  188,    5,    5,    5,  198,  198,
+      198,   10,   11,    0,    0,  181,    0,    0,    0,    0,
         0,    0,    0,    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,  190,  190,
-        0,  189,  190,    3,    2,    6,    0,  190,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  180,
+        0,    0,    0,    0,    0,    0,    0,    1,  192,  192,
+        0,  191,  192,    3,    2,    6,    0,  192,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  182,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  182,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  184,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -724,10 +724,10 @@ static const flex_int16_t yy_accept[1810] =
         0,    0,    2,    0,    0,    0,    0,    0,    0,    0,
         8,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  181,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  183,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   82,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   84,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -735,172 +735,176 @@ static const flex_int16_t yy_accept[1810] =
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,  195,  193,    0,  192,  191,    0,    0,    0,
-        0,    0,    0,    0,    0,  162,    0,  161,    0,    0,
-       88,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,  197,  195,    0,  194,  193,    0,    0,    0,
+        0,    0,    0,    0,    0,  164,    0,  163,    0,    0,
+       90,    0,    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,    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,    0,   87,    0,    0,    0,    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,    0,    0,    0,
-       18,    0,    0,    0,    0,  194,  191,    0,    0,    0,
-        0,    0,    0,    0,  163,    0,  165,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   89,    0,    0,
-        0,    0,    0,    0,    0,   74,    0,    0,    0,    0,
-        0,    0,  109,    0,    0,    0,    0,    0,    0,    0,
+       18,    0,    0,    0,    0,  196,  193,    0,    0,    0,
+        0,    0,    0,    0,  165,    0,  167,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   91,    0,    0,
+        0,    0,    0,    0,    0,   76,    0,    0,    0,    0,
+        0,    0,  111,    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,    0,    0,    0,   73,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,   75,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       77,    0,   39,    0,    0,    0,    0,    0,    0,    0,
+       79,    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,    0,    0,    0,    0,
-        0,    0,    0,    0,  106,    0,   31,    0,    0,   36,
-        0,    0,    0,    0,    0,    0,    0,   12,  167,  166,
-        0,    0,    0,  119,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  108,    0,   31,    0,    0,   36,
+        0,    0,    0,    0,    0,    0,    0,   12,  169,  168,
+        0,    0,    0,  121,    0,    0,    0,    0,    0,    0,
         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,  100,    0,    0,    0,    0,
 
         0,    0,    0,    0,    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,   76,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
+        0,    0,   33,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   78,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  122,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      115,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    7,    0,    0,  168,    0,    0,    0,
+        0,  117,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    7,    0,    0,  170,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    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,   89,    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,   98,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  100,    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,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   82,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   80,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   79,
 
+        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
+        0,  115,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  127,   96,    0,    0,
+        0,    0,    0,    0,  101,   32,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  125,   94,    0,    0,    0,    0,    0,    0,   99,
-       32,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  101,   40,    0,    0,    0,
+      103,   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,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   68,    0,    0,    0,
 
+        0,   70,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  146,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  144,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   84,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  114,
-        0,    0,    0,    0,    0,   43,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   37,
-        0,    0,    0,    0,   30,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   86,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  116,    0,    0,    0,
+        0,    0,   43,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   37,    0,    0,    0,
+        0,   30,    0,    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,  111,    0,
+      104,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  145,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  113,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   81,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  147,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   83,    0,    0,    0,    0,    0,    0,    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,  150,    0,    0,    0,  148,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  172,    0,    0,    0,
-        0,    0,    0,  112,    0,    0,    0,    0,    0,    0,
-        0,    0,  116,    0,    0,    0,    0,    0,   97,    0,
+
+        0,   23,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  152,    0,    0,    0,  150,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  110,   22,    0,  121,
+        0,    0,    0,    0,    0,  174,    0,    0,    0,    0,
+        0,    0,  114,    0,    0,    0,    0,    0,    0,    0,
+        0,  118,    0,    0,    0,    0,    0,    0,    0,   99,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  154,    0,    0,    0,    0,   71,    0,    0,
-        0,    0,    0,    0,  124,   34,    0,  143,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  112,   22,    0,
+      123,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  156,    0,    0,    0,    0,   73,    0,
 
+        0,    0,    0,    0,    0,  126,   34,    0,  145,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   59,    0,    0,    0,    0,    0,
+       94,   95,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   77,    0,    0,    0,    0,    0,    0,    0,
+        0,   44,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  120,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   59,    0,    0,    0,    0,    0,   92,
-       93,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   75,    0,    0,    0,    0,    0,    0,    0,    0,
-       44,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  118,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
-        0,   72,   86,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   56,    0,    0,    0,    0,    0,    0,
-
-        0,  151,    0,    0,  149,    0,  140,  139,    0,    0,
-        0,   49,    0,    0,   21,    0,    0,    0,    0,  164,
-        0,    0,    0,  105,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  133,
-        0,    0,  142,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  122,   15,    0,   41,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  153,    0,    0,    0,
-        0,    0,    0,    0,   57,    0,    0,  117,    0,    0,
-        0,    0,  108,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   78,    0,  170,    0,    0,  175,    0,
+        0,    0,  178,    0,   74,   88,    0,    0,    0,    0,
 
+        0,    0,    0,    0,    0,    0,   56,    0,    0,    0,
+        0,    0,    0,    0,  153,    0,    0,  151,    0,  142,
+      141,    0,    0,    0,   49,    0,    0,   21,    0,    0,
+        0,    0,  166,    0,    0,    0,  107,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  135,    0,    0,  144,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  124,   15,
+        0,   41,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  155,    0,    0,    0,    0,    0,    0,    0,   57,
+        0,    0,  119,    0,    0,    0,    0,  110,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,   80,    0,
+      172,    0,    0,  177,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   14,
+        0,    0,    0,    0,    0,   48,    0,    0,    0,    0,
+        0,  180,    0,  105,   27,    0,    0,    0,   50,  140,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   14,    0,    0,    0,    0,    0,   48,    0,
-        0,    0,    0,    0,  178,    0,  103,   27,    0,    0,
-        0,   50,  138,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  173,    0,  146,    0,    0,    0,    0,    0,
-        0,    0,    0,   25,    0,    0,   24,    0,  152,    0,
 
-        0,    0,   52,    0,    0,    0,    0,    0,   95,    0,
+        0,  175,    0,  148,    0,    0,    0,    0,    0,    0,
+        0,    0,   25,    0,    0,   24,    0,  154,    0,    0,
+        0,   52,    0,    0,    0,    0,    0,   97,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   53,    0,    0,
-        0,    0,    0,   42,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  123,    0,
-        0,    0,   26,    0,  174,    0,    0,    0,    0,    0,
-      134,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       47,    0,    0,   20,    0,  177,   70,    0,    0,    0,
-        0,  171,  169,    0,   28,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   16,    0,    0,    0,  158,    0,
-
-        0,    0,    0,    0,    0,  131,    0,    0,    0,  107,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   83,
-        0,    0,    0,  136,    0,    0,    0,    0,    0,    0,
-        0,    0,   62,    0,    0,    0,    0,    0,    0,    0,
-        0,  159,   13,    0,    0,    0,    0,    0,    0,    0,
-      137,  147,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  141,    0,
-        0,    0,    0,    0,    0,  130,    0,   55,   54,   19,
-        0,  155,    0,    0,    0,    0,   45,    0,    0,    0,
-       91,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-
-        0,  129,    0,    0,   51,    0,    0,   46,  157,    0,
-        0,   69,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   53,    0,    0,    0,
+        0,    0,   42,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  125,
+        0,    0,    0,   26,    0,  176,    0,    0,    0,    0,
+        0,  136,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   47,    0,    0,   20,    0,  179,   72,    0,    0,
+
+        0,    0,  173,  171,    0,   28,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   16,    0,    0,
+        0,  160,    0,    0,    0,    0,    0,    0,  133,    0,
+        0,    0,  109,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   85,    0,    0,    0,  138,    0,    0,    0,
+        0,    0,    0,    0,    0,   62,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  161,   13,    0,    0,
+        0,    0,    0,    0,    0,  139,  149,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   66,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   29,    0,    0,
-       67,    0,    0,  135,    0,    0,    0,    0,  156,    0,
-      104,    0,    0,    0,   63,    0,    0,    0,    0,    0,
-        0,  127,    0,  132,    0,   65,   58,    0,    0,    0,
-        0,    0,    0,  126,    0,    0,  160,    0,    0,    0,
-        0,    0,    0,    0,   64,    0,    0,    0,    0,    0,
-
-       90,   61,    0,    0,    0,    0,   60,  128,    0
+        0,    0,    0,    0,    0,  143,    0,    0,    0,    0,
+
+        0,    0,  132,    0,   55,   54,   19,    0,  157,    0,
+        0,    0,    0,   45,    0,    0,    0,   93,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      131,    0,    0,   51,    0,    0,   46,  159,    0,    0,
+       71,    0,    0,    0,    0,    0,    0,    0,   68,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   66,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   29,
+        0,    0,   67,    0,    0,    0,  137,    0,    0,    0,
+        0,  158,    0,  106,    0,    0,    0,   63,    0,    0,
+
+        0,    0,    0,    0,    0,  129,    0,  134,    0,   65,
+        0,   58,    0,    0,    0,    0,    0,    0,    0,  128,
+        0,    0,  162,    0,    0,    0,    0,    0,    0,    0,
+        0,   64,    0,    0,    0,    0,    0,   69,    0,   92,
+       61,    0,    0,    0,    0,   60,  130,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -947,239 +951,242 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1822] =
+static const flex_int16_t yy_base[1861] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2210, 2211,   34, 2206,  145,    0,  207, 2211,  214,  221,
-       13,  228, 2211, 2186,  118,   25,    2,    6, 2211, 2211,
-       73,   11,   17, 2211, 2211, 2211,  104, 2194, 2147,    0,
-     2184,  108, 2201,   24,  262, 2211, 2143,   67, 2149,   84,
-       75,   88,  224,   91,   89,  290,  220, 2141,  206,  285,
-      206,  204,  212,   60,  232, 2150,  247,  294,  315,  307,
-      286, 2133,  230,  325,  354,  328, 2152,    0,  366,  382,
-      397,  411,  404, 2211,    0, 2211,  419,  425,  216,  225,
-      229,  227,  319,  329, 2211, 2149, 2190, 2211,  300, 2211,
-
-      438, 2177,  390, 2146,  331,   10,  406,  311,  408,  414,
-      420, 2187,    0,  491,  409, 2129, 2126, 2130,  344, 2126,
-     2134,  401, 2130, 2119, 2120, 2125,   78, 2135, 2118, 2127,
-     2127,   95, 2118,  239, 2119, 2117,  405, 2165, 2169, 2109,
-     2162, 2102, 2125, 2122, 2122, 2116,  387, 2109, 2107, 2108,
-     2100, 2105, 2099,  424, 2110, 2103, 2094, 2093, 2107,  419,
-     2093,  408,  407, 2087,  465,  420,  427, 2108, 2105, 2106,
-      442, 2104, 2139, 2138,  462, 2084, 2084, 2085,  464, 2077,
-     2094, 2086,    0,  428,  464,  460,  464,  489,  503, 2085,
-     2211,    0, 2130,  508, 2079,  496,  502,  506, 2133,  508,
-
-     2132,  504, 2131, 2211,  550, 2130,  524, 2089, 2081, 2068,
-     2084, 2085, 2082, 2079, 2078, 2069,  520, 2120, 2114, 2078,
-     2059, 2056, 2064, 2059, 2073, 2069, 2057, 2069, 2069, 2060,
-     2044, 2048, 2061, 2063, 2060, 2052, 2042, 2060, 2211, 2055,
-     2058, 2039, 2038, 2090, 2037, 2047, 2050,  488, 2046, 2085,
-     2030, 2032, 2043, 2081, 2026, 2084, 2019, 2034,  533, 2024,
-     2030, 2039, 2020, 2018, 2018, 2024, 2015, 2014, 2021, 2011,
-     2070, 2026, 2025, 2019,  488, 2026, 2021, 2013, 2003, 2018,
-     2017, 2012, 2016,  166, 2014, 2000, 2006, 2013, 1995, 1996,
-     1999, 1996, 1995,  341, 1990, 2004, 2003, 2046, 2005,  392,
-
-     1996,  522, 2211, 2211,  532, 2211, 2211, 1983,    0,  527,
-      516, 2031,  542, 2041,  527, 2211, 2040, 2211, 2034,  588,
-     2211,  547, 1974, 1983, 2031, 1975, 1992, 1973, 1979, 2031,
-     1986, 1981, 1984, 1979,  547, 2211, 1981, 2025, 2019, 1977,
-     1974,  572, 1980, 2020, 2014, 1967, 1962, 1959, 2010, 1967,
-     1956, 1972, 2006, 1952,  612, 1966, 1951, 1964, 1951, 1961,
-     1956, 1963, 1958, 1954,  557, 1952, 1955, 1950, 1936, 1948,
-     1944, 1994,  570, 1988, 2211, 1987, 1937, 1936, 1935, 1928,
-     1930, 1942, 1933, 1922, 1939, 1934,  544, 1981, 1934, 1931,
-     1934, 2211, 1933, 1922, 1922, 1934,  563, 1909, 1910, 1931,
-
-      575, 1913, 1964, 1909, 1923, 1926, 1921, 1907, 1919, 1918,
-     1917, 1912, 1915, 1914, 1913, 1912,  571, 1955, 1914, 1953,
-     2211, 1895, 1894,  622, 1907, 2211, 2211, 1906,    0, 1895,
-     1887,  596, 1946, 1945, 2211, 1944, 2211,  608,  663,  608,
-     1943, 1885, 1896, 1889, 1891, 1890, 1878, 2211, 1883, 1889,
-     1892, 1875, 1890, 1877, 1876, 2211,  589, 1878, 1875,  594,
-     1873, 1875, 2211, 1883, 1880, 1865, 1878, 1873,  639, 1880,
-     1868, 1861, 1912, 2211, 1859, 1875, 1909, 1870, 1867, 1868,
-     1870, 1904, 1855, 1850, 1849, 1900, 1844,  597, 1863, 1837,
-     1844, 1849, 1859, 1893, 1897, 2211, 1842, 1838, 1836, 1845,
-
-     1839, 1846, 1830, 1830, 1840, 1828, 1842, 1831, 1827, 1825,
-     2211, 1882, 2211, 1824, 1835, 1874, 1819, 1824, 1833, 1827,
-     1821, 1830, 1872, 1866, 1828, 1811, 1811, 1806, 1826, 1801,
-     1807, 1812, 1805, 1813, 1817, 1800, 1858, 1799, 1851, 1796,
-     1797, 1796, 1808, 1797, 2211, 1807, 2211, 1796, 1794, 2211,
-     1805, 1841, 1801,    0, 1785, 1802, 1842, 2211, 2211, 2211,
-      613,  619,  653, 2211, 1793, 1792, 1799, 1779, 1778, 1831,
-     1776, 1829, 1774, 1773, 1772, 1779, 1772, 1784, 1766, 1766,
-     1781, 1780, 1779, 1778, 1778, 1760, 1765, 1806, 1773, 1765,
-     1810, 1754, 1770, 1769, 2211, 1754, 1751, 1809, 1764, 1756,
-
-     1762, 1753, 1761, 1746, 1762, 1744, 1758,  613, 1740, 1734,
-     1739, 1754, 1751, 1752, 1731, 1741, 1747, 1790, 1745, 1737,
-     1728, 2211, 1729, 1731, 1740, 1738, 1777, 1776, 1727,   16,
-     1736, 1773, 1718, 1719, 1722, 1715, 2211, 1729, 1708, 1712,
-     1726, 1718, 1763, 1715, 1722, 1760, 2211, 1705, 1719, 1703,
-     1717, 1720, 1701, 1753, 1752, 1751, 1750, 1695, 1748, 1747,
-     2211, 1692, 1706,  649, 1707, 1706, 1703, 1703, 1740, 1700,
-     1683, 1688, 1690, 2211, 1696, 1686, 2211,  628,  647, 1680,
-     1678, 1685, 1676, 1670, 1728,  644, 1732,  651, 1726, 1686,
-     1724, 1723, 1675, 1673, 1681, 1684, 1668, 1669, 1660, 1715,
-
-     1666, 1674, 1675, 1711, 1672, 1666,  657, 1662, 1707, 1711,
-     1666, 1665, 2211, 1666, 1659, 1648,  203,  228,  254,  309,
-      309,  360,  427,  497,  501,  581,  589,  550,  543,  644,
-      637,  609,  662, 2211,  664,  621,  630,  626,  620,  631,
-      684,  647,  642,  656, 2211,  646,  657,  646,  666,  668,
-      712,  714,  657,  668,  654,  677,  656,  662,  717,  681,
-      665,  677,  721,  722,  723,  670,  725,  689,  684,  691,
-      687,  672,  684,  685,  692,  678, 2211,  743,  701,  703,
-      693,  705,  695,  708,  693,  700,  706,  698,  712,  752,
-      728,  715,  720,  717,  718,  763,  716,  714,  723, 2211,
-
-      713,  728,  725,  711,  718,  717,  715,  734,  731,  719,
-      726,  727,  736,  736,  726,  724,  723,  734,  730,  787,
-      744,  729,  730,  736,  752,  742, 2211,  752,  752,  745,
-      756,  754,  799,  741,  743,  758,  745,  805,  762,  748,
-      751, 2211, 2211,  761,  766,  771,  759,  769,  771, 2211,
-     2211,  772,  759,  777,  764,  758,  763,  781,  768,  818,
-      769,  821,  767,  771,  829, 2211, 2211,  774,  778,  777,
-      774,  834,  787,  777,  778,  774,  787,  798,  782,  800,
-      795,  796,  798,  791,  793,  794,  795,  795,  797,  812,
-      853,  810,  815,  792,  815,  799, 2211,  806,  807,  821,
-
-      811,  809,  859,  817,  807,  822,  823,  810,  842,  850,
-      819,  814,  869,  870, 2211,  833,  837,  878,  826,  821,
-      822,  834,  841,  830,  831,  827,  830,  831,  841,  850,
-      886,  841,  836,  895,  852,  854,  845, 2211,  847,  850,
-      858,  860,  845,  861,  855,  902,  868,  852,  853, 2211,
-      869,  872,  855,  914,  857, 2211,  874,  877,  857,  875,
-      915,  873,  869,  866,  919,  920,  882,  868,  886,  885,
-      886,  872,  887,  879,  886,  876,  894,  893,  880, 2211,
-      888,  894,  897,  942, 2211,  891,  896,  940,  891,  904,
-      898,  902,  900,  898,  900,  910,  955,  899,  904,  900,
-
-      959,  903,  915, 2211,  903,  911,  909,  960,  922,  908,
-      909,  918,  930,  917,  916,  921,  931,  932,  937,  978,
-      950,  955,  937,  934,  930,  925,  985,  928, 2211,  928,
-      948,  947,  938,  927,  944,  951,  994,  955,  948,  952,
-      956,  939, 1000,  947, 2211,  997,  944,  947,  946,  947,
-      949,  970,  967,  972,  973,  959,  967,  976,  956,  971,
-      978, 1020, 2211, 1021, 1022,  973,  983,  985,  974,  970,
-      977,  986,  974,  981,  982,  994, 1035,  982,  980,  982,
-      999, 1040,  990,  989,  995,  993,  991,  986, 1047, 1048,
-     1044, 1050, 2211, 1007, 1000,  991, 1010,  998, 1008, 1005,
-
-     1010, 1006, 1019, 1019, 2211, 1003, 1005, 1005, 2211, 1006,
-     1067, 1006, 1025, 1026, 1028, 1019, 1073, 1074, 1027, 1012,
-     1026, 1034, 1033, 1017, 1022, 1040, 2211, 1062, 1053, 1085,
-     1025, 1047, 1044, 2211, 1031, 1033, 1050, 1045, 1049, 1094,
-     1042, 1046, 2211, 1038, 1055, 1035, 1056, 1046, 2211, 1061,
-     1061, 1099, 1046, 1102, 1060, 1065, 1051, 1111, 1055, 1066,
-     1058, 1064, 1060, 1078, 1079, 1080, 2211, 2211, 1079, 2211,
-     1064, 1065, 1084, 1074, 1067, 1079, 1123, 1087, 1076, 1083,
-     1084, 1090, 2211, 1083, 1135, 1076, 1137, 2211, 1138, 1080,
-     1086, 1093, 1137, 1099, 2211, 2211, 1086, 2211, 1088, 1102,
-
-     1107, 1090, 1149, 1106, 1107, 1108, 1148, 1100, 1105, 1156,
-     1109, 1105, 1159, 2211, 1106, 1161, 1162, 1119, 1121, 2211,
-     2211, 1104, 1166, 1162, 1126, 1169, 1111, 1123, 1128, 1143,
-     1174, 2211, 1131, 1124, 1133, 1178, 1125, 1140, 1176, 1128,
-     2211, 1124, 1140, 1141, 1142, 1139, 1183, 1146, 1150, 1137,
-     1133, 1193, 1146, 1190, 1196, 1153, 2211, 1154, 1147, 1156,
-     1158, 1155, 1145, 1148, 1149, 1154, 1209, 1210, 1153, 1212,
-     1208, 1149, 1164, 1157, 1160, 1173, 1174, 1172, 1221, 2211,
-     1176, 2211, 2211, 1181, 1173, 1183, 1168, 1224, 1170, 1231,
-     1175, 1185, 1234, 2211, 1182, 1182, 1184, 1186, 1239, 1180,
-
-     1183, 2211, 1184, 1203, 2211, 1187, 2211, 2211, 1200, 1202,
-     1203, 2211, 1190, 1198, 2211, 1250, 1199, 1252, 1232, 2211,
-     1254, 1211, 1251, 2211, 1200, 1208, 1202, 1199, 1202, 1205,
-     1205, 1222, 1261, 1214, 1226, 1229, 1211, 1218, 1208, 2211,
-     1230, 1215, 2211, 1217, 1219, 1234, 1234, 1237, 1237, 1234,
-     1278, 1240, 1232, 2211, 2211, 1242, 2211, 1239, 1244, 1245,
-     1242, 1286, 1234, 1249, 1250, 1242, 2211, 1239, 1240, 1240,
-     1246, 1245, 1243, 1257, 2211, 1298, 1245, 2211, 1246, 1246,
-     1248, 1254, 2211, 1256, 1310, 1252, 1260, 1263, 1274, 1272,
-     1316, 1269, 1278, 2211, 1275, 2211, 1272, 1295, 2211, 1322,
-
-     1264, 1324, 1325, 1282, 1287, 1269, 1329, 1330, 1326, 1290,
-     1287, 1283, 1276, 1288, 1278, 1283, 1339, 1293, 1341, 1337,
-     1301, 1297, 1341, 1289, 1295, 1293, 1352, 1308, 1354, 1312,
-     1356, 1317, 1306, 1300, 1360, 1302, 1303, 1317, 1320, 1320,
-     1366, 1308, 1325, 1321, 1325, 1309, 1367, 1368, 1315, 1370,
-     1333, 1334, 2211, 1334, 1335, 1322, 1321, 1377, 2211, 1318,
-     1336, 1385, 1343, 1356, 2211, 1340, 2211, 2211, 1331, 1342,
-     1391, 2211, 2211, 1337, 1342, 1340, 1390, 1348, 1353, 1344,
-     1342, 1356, 2211, 1344, 2211, 1347, 1398, 1341, 1346, 1406,
-     1354, 1364, 1365, 2211, 1411, 1364, 2211, 1413, 2211, 1356,
-
-     1372, 1360, 2211, 1370, 1371, 1420, 1378, 1382, 2211, 1418,
-     1384, 1360, 1378, 1387, 1369, 1376, 1430, 1389, 1388, 1433,
-     1381, 1435, 1436, 1386, 1390, 1395, 1388, 2211, 1441, 1442,
-     1391, 1444, 1386, 2211, 1389, 1399, 1443, 1391, 1406, 1393,
-     1399, 1399, 1454, 1411, 1399, 1398, 1458, 1411, 2211, 1455,
-     1406, 1403, 2211, 1417, 2211, 1420, 1465, 1418, 1415, 1416,
-     2211, 1469, 1428, 1411, 1413, 1429, 1411, 1427, 1428, 1437,
-     2211, 1427, 1479, 2211, 1438, 2211, 2211, 1422, 1429, 1483,
-     1479, 2211, 2211, 1441, 2211, 1481, 1443, 1444, 1429, 1430,
-     1438, 1492, 1488, 1443, 2211, 1455, 1442, 1449, 2211, 1446,
-
-     1451, 1449, 1501, 1502, 1445, 2211, 1460, 1461, 1462, 2211,
-     1463, 1453, 1465, 1510, 1511, 1453, 1461, 1462, 1475, 2211,
-     1452, 1512, 1473, 2211, 1477, 1462, 1462, 1477, 1470, 1469,
-     1480, 1467, 2211, 1472, 1528, 1486, 1488, 1479, 1488, 1490,
-     1494, 2211, 2211, 1535, 1478, 1537, 1538, 1539, 1497, 1541,
-     2211, 2211, 1537, 1499, 1500, 1487, 1546, 1489, 1494, 1485,
-     1550, 1503, 1504, 1494, 1511, 1510, 1551, 1513, 2211, 1510,
-     1515, 1516, 1561, 1518, 1521, 2211, 1564, 2211, 2211, 2211,
-     1525, 2211, 1507, 1567, 1568, 1511, 2211, 1530, 1571, 1530,
-     2211, 1521, 1511, 1570, 1536, 1529, 1525, 1522, 1527, 1523,
-
-     1525, 2211, 1530, 1540, 2211, 1526, 1538, 2211, 2211, 1543,
-     1536, 2211, 1538, 1546, 1591, 1532, 1534, 1531, 1555, 1548,
-     1551, 1540, 1594, 1541, 1549, 1558, 1551, 1546, 1550, 1562,
-     1607, 2211, 1553, 1565, 1610, 1559, 1558, 1613, 1566, 1553,
-     1568, 1573, 1618, 1575, 1620, 1570, 1564, 2211, 1580, 1624,
-     2211, 1581, 1583, 2211, 1574, 1588, 1584, 1577, 2211, 1631,
-     2211, 1588, 1633, 1594, 2211, 1635, 1636, 1591, 1590, 1591,
-     1581, 2211, 1636, 2211, 1583, 2211, 2211, 1643, 1585, 1601,
-     1646, 1607, 1604, 2211, 1645, 1594, 2211, 1606, 1599, 1654,
-     1596, 1598, 1613, 1598, 2211, 1611, 1660, 1661, 1609, 1611,
-
-     2211, 2211, 1605, 1621, 1666, 1667, 2211, 2211, 2211, 1673,
-     1678, 1683, 1688, 1693, 1698, 1703, 1706, 1680, 1685, 1687,
-     1700
+     2249, 2250,   34, 2245,  145,    0,  207, 2250,  214,  221,
+       13,  228, 2250, 2225,  118,   25,    2,    6, 2250, 2250,
+       73,   11,   17, 2250, 2250, 2250,  104, 2233, 2186,    0,
+     2223,  108, 2240,   24,  262, 2250, 2182,   67, 2188,   84,
+       75,   88,  224,   91,   89,  290,  220, 2180,  206,  285,
+      206,  204,  212,   60,  232, 2189,  247,  294,  315,  307,
+      286, 2172,  230,  325,  354,  328, 2191,    0,  366,  382,
+      397,  411,  404, 2250,    0, 2250,  419,  425,  216,  225,
+      229,  227,  319,  329, 2250, 2188, 2229, 2250,  300, 2250,
+
+      438, 2216,  390, 2185,  331,   10,  406,  311,  408,  414,
+      420, 2226,    0,  491,  409, 2168, 2165, 2169,  344, 2165,
+     2173,  401, 2169, 2158, 2159, 2164,   78, 2174, 2157, 2166,
+     2166,   95, 2157,  239, 2158, 2156,  405, 2204, 2208, 2148,
+     2201, 2141, 2164, 2161, 2161, 2155,  387, 2148, 2146, 2147,
+     2139, 2144, 2138,  424, 2149, 2142, 2133, 2132, 2146,  419,
+     2132,  408,  407, 2126,  465,  420,  427, 2147, 2144, 2145,
+      442, 2143, 2178, 2177,  462, 2123, 2123, 2124,  464, 2116,
+     2133, 2125,    0,  428,  464,  460,  464,  489,  503, 2124,
+     2250,    0, 2169,  508, 2118,  496,  502,  506, 2172,  508,
+
+     2171,  504, 2170, 2250,  550, 2169,  524, 2128, 2120, 2107,
+     2123, 2124, 2121, 2118, 2117, 2108,  520, 2159, 2153, 2117,
+     2098, 2095, 2103, 2098, 2112, 2108, 2096, 2108, 2108, 2099,
+     2083, 2087, 2100, 2102, 2099, 2091, 2081, 2099, 2250, 2094,
+     2097, 2078, 2077, 2129, 2076, 2086, 2089,  488, 2085, 2124,
+     2069, 2071, 2082, 2120, 2065, 2123, 2058, 2073,  533, 2063,
+     2069, 2078, 2059, 2057, 2057, 2063, 2054, 2053, 2060, 2050,
+     2109, 2065, 2064, 2058,  488, 2065, 2060, 2052, 2042, 2057,
+     2056, 2051, 2055,  166, 2053, 2039, 2045, 2052, 2034, 2035,
+     2038, 2035, 2034,  341, 2029, 2043, 2042, 2085, 2044,  392,
+
+     2035,  522, 2250, 2250,  532, 2250, 2250, 2022,    0,  527,
+      516, 2070,  542, 2080,  527, 2250, 2079, 2250, 2073,  588,
+     2250,  547, 2013, 2022, 2070, 2014, 2031, 2012, 2018, 2070,
+     2025, 2020, 2023, 2018,  547, 2250, 2020, 2064, 2058, 2016,
+     2013,  572, 2019, 2059, 2053, 2006, 2001, 1998, 2049, 2006,
+     1995, 2011, 2045, 1991,  612, 2005, 1990, 2003, 1990, 2000,
+     1995, 2002, 1997, 1993,  557, 1991, 1994, 1989, 1975, 1987,
+     1983, 2033,  570, 2027, 2250, 2026, 1976, 1975, 1974, 1967,
+     1969, 1981, 1972, 1961, 1978, 1973,  544, 2020, 1973, 1970,
+     1973, 2250, 1972, 1961, 1961, 1973,  563, 1948, 1949, 1970,
+
+      575, 1952, 2003, 1948, 1962, 1965, 1960, 1946, 1958, 1957,
+     1956, 1951, 1954, 1953, 1952, 1951,  571, 1994, 1953, 1992,
+     2250, 1934, 1933,  622, 1946, 2250, 2250, 1945,    0, 1934,
+     1926,  596, 1985, 1984, 2250, 1983, 2250,  608,  663,  608,
+     1982, 1924, 1935, 1928, 1930, 1929, 1917, 2250, 1922, 1928,
+     1931, 1914, 1929, 1916, 1915, 2250,  589, 1917, 1914,  594,
+     1912, 1914, 2250, 1922, 1919, 1904, 1917, 1912,  639, 1919,
+     1907, 1900, 1951, 2250, 1898, 1914, 1948, 1909, 1906, 1907,
+     1909, 1943, 1894, 1889, 1888, 1939, 1883,  597, 1902, 1876,
+     1883, 1888, 1898, 1932, 1936, 2250, 1881, 1877, 1875, 1884,
+
+     1878, 1885, 1869, 1869, 1879, 1867, 1881, 1870, 1866, 1864,
+     2250, 1921, 2250, 1863, 1874, 1913, 1858, 1863, 1872, 1866,
+     1860, 1869, 1911, 1905, 1867, 1850, 1850, 1845, 1865, 1840,
+     1846, 1851, 1844, 1852, 1856, 1839, 1897, 1838, 1890, 1835,
+     1836, 1835, 1847, 1836, 2250, 1846, 2250, 1835, 1833, 2250,
+     1844, 1880, 1840,    0, 1824, 1841, 1881, 2250, 2250, 2250,
+      613,  619,  653, 2250, 1832, 1831, 1838, 1818, 1817, 1870,
+     1815, 1868, 1813, 1812, 1811, 1818, 1811, 1823, 1805, 1805,
+     1820, 1819,  601, 1818, 1817, 1817, 1799, 1804, 1845, 1812,
+     1804, 1849, 1793, 1809, 1808, 2250, 1793, 1790, 1848, 1803,
+
+     1795, 1801, 1792, 1800, 1785, 1801, 1783, 1797,  626, 1779,
+     1773, 1778, 1793, 1790, 1791, 1770, 1780, 1786, 1829, 1784,
+     1776, 1767, 2250, 1768, 1770, 1779, 1777, 1816, 1815, 1766,
+       16, 1775, 1812, 1757, 1758, 1761, 1754, 2250, 1768, 1747,
+     1751, 1765, 1757, 1802, 1754, 1761, 1799, 2250, 1744, 1758,
+     1742, 1756, 1759, 1740, 1792, 1791, 1790, 1789, 1734, 1787,
+     1786, 2250, 1731, 1745,  677, 1746, 1745, 1742, 1742, 1779,
+     1739, 1722, 1727, 1729, 2250, 1735, 1725, 2250,  631,  634,
+     1719, 1717, 1724, 1715, 1709, 1767,  644, 1771,  651, 1765,
+     1725, 1763, 1762, 1714, 1712, 1720, 1723, 1707, 1708, 1717,
+
+     1715, 1697, 1752, 1703, 1711, 1712, 1748, 1709, 1703,  635,
+     1699, 1744, 1748, 1703, 1702, 2250, 1703,  199,  210,  254,
+      311,  309,  362,  430,  493,  498,  541,  545,  601,  603,
+      591,  597,  646,  655,  616,  679, 2250,  689,  650,  652,
+      649,  643,  652,  705,  668,  657,  670, 2250,  660,  671,
+      660,  673,  675,  719,  720,  663,  674,  659,  682,  661,
+      667,  722,  686,  670,  682,  726,  727,  728,  675,  730,
+      694,  689,  696,  692,  677,  689,  690,  697,  683, 2250,
+      748,  706,  708,  698,  710,  700,  713,  698,  705,  711,
+      703,  717,  757,  733,  720,  725,  722,  723,  768,  721,
+
+      719,  728, 2250,  718,  733,  730,  716,  723,  722,  720,
+      739,  736,  724,  731,  732,  741,  745,  781,  743,  733,
+      731,  730,  742,  738,  794,  751,  736,  737,  743,  759,
+      749, 2250,  759,  759,  752,  763,  761,  806,  748,  750,
+      765,  752,  812,  769,  755,  758, 2250, 2250,  768,  773,
+      778,  766,  776,  778, 2250, 2250,  779,  766,  784,  771,
+      765,  770,  788,  775,  825,  776,  828,  774,  778,  836,
+     2250, 2250,  781,  785,  784,  781,  841,  794,  784,  785,
+      781,  794,  805,  789,  807,  802,  803,  805,  798,  800,
+      801,  802,  802,  804,  819,  860,  817,  822,  799,  822,
+
+      806, 2250,  813,  814,  828,  818,  816,  866,  824,  814,
+      829,  830,  817,  849,  857,  826,  821,  876,  877, 2250,
+      840,  844,  885,  833,  828,  829,  841,  848,  837,  838,
+      834,  837,  838,  848,  857,  893,  840,  858,  851,  846,
+      905,  862,  863,  854, 2250,  856,  859,  867,  869,  854,
+      870,  864,  911,  877,  861,  862, 2250,  878,  881,  864,
+      923,  866, 2250,  883,  886,  866,  884,  924,  882,  878,
+      875,  928,  929,  891,  877,  895,  894,  895,  881,  896,
+      888,  895,  885,  903,  902,  889, 2250,  897,  903,  906,
+      951, 2250,  900,  905,  949,  900,  913,  907,  911,  909,
+
+      907,  909,  919,  964,  908,  913,  909,  968,  912,  924,
+     2250,  912,  920,  918,  969,  931,  917,  918,  927,  939,
+      926,  925,  930,  940,  941,  946,  987,  959,  964,  946,
+      943,  939,  934,  994,  937, 2250,  937,  957,  956,  947,
+      936,  953,  960, 1003,  964,  957,  961,  965,  948,  965,
+      956, 1011,  958, 2250, 1008,  955,  958,  959,  960,  960,
+      981,  978,  983,  984,  970,  978,  987,  967,  982,  989,
+     1031, 2250, 1032, 1033,  984,  994,  996,  985,  981,  988,
+      997,  985,  992,  993, 1005, 1046,  993,  991,  993, 1010,
+     1051, 1001, 1000, 1006, 1004, 1002,  997, 1058, 1059, 1055,
+
+     1061, 2250, 1018, 1011, 1002, 1021, 1009, 1019, 1016, 1021,
+     1017, 1030, 1030, 2250, 1014, 1016, 1016, 2250, 1017, 1078,
+     1017, 1036, 1037, 1039, 1030, 1084, 1085, 1038, 1023, 1037,
+     1045, 1044, 1028, 1033, 1051, 2250, 1073, 1064, 1096, 1036,
+     1058, 1055, 2250, 1042, 1044, 1061, 1056, 1060, 1105, 1053,
+     1057, 2250, 1049, 1066, 1046, 1067, 1057, 1108, 1061, 2250,
+     1074, 1074, 1113, 1060, 1115, 1073, 1078, 1065, 1125, 1068,
+     1079, 1071, 1077, 1073, 1091, 1092, 1093, 2250, 2250, 1092,
+     2250, 1077, 1078, 1097, 1087, 1080, 1092, 1136, 1100, 1089,
+     1096, 1097, 1103, 2250, 1096, 1148, 1089, 1150, 2250, 1151,
+
+     1093, 1099, 1106, 1150, 1112, 2250, 2250, 1099, 2250, 1101,
+     1115, 1120, 1103, 1162, 1119, 1120, 1121, 1161, 1113, 1118,
+     1169, 1122, 1118, 1172, 2250, 1119, 1174, 1175, 1132, 1134,
+     2250, 2250, 1117, 1179, 1175, 1139, 1182, 1124, 1136, 1141,
+     1156, 1187, 2250, 1144, 1137, 1146, 1191, 1138, 1153, 1189,
+     1141, 2250, 1137, 1153, 1154, 1155, 1152, 1196, 1159, 1149,
+     1159, 1165, 1152, 1148, 1208, 1161, 1205, 1211, 1168, 2250,
+     1169, 1163, 1172, 1173, 1170, 1161, 1164, 1164, 1169, 1224,
+     1225, 1168, 1227, 1223, 1164, 1179, 1172, 1175, 1188, 1189,
+     1188, 1237, 2250, 1191, 2250, 2250, 1196, 1188, 1198, 1183,
+
+     1239, 1185, 1246, 1190, 1200, 1249, 2250, 1197, 1197, 1199,
+     1201, 1254, 1195, 1198, 2250, 1199, 1218, 2250, 1202, 2250,
+     2250, 1215, 1217, 1218, 2250, 1205, 1213, 2250, 1265, 1214,
+     1267, 1247, 2250, 1269, 1226, 1266, 2250, 1215, 1223, 1217,
+     1214, 1217, 1220, 1220, 1237, 1276, 1229, 1241, 1244, 1232,
+     1235, 1228, 1235, 1225, 2250, 1247, 1233, 2250, 1235, 1236,
+     1251, 1251, 1254, 1254, 1251, 1295, 1257, 1249, 2250, 2250,
+     1259, 2250, 1256, 1261, 1262, 1259, 1303, 1251, 1266, 1267,
+     1259, 2250, 1256, 1257, 1257, 1263, 1262, 1260, 1274, 2250,
+     1315, 1262, 2250, 1263, 1263, 1265, 1271, 2250, 1273, 1327,
+
+     1269, 1277, 1280, 1291, 1289, 1333, 1286, 1295, 2250, 1292,
+     2250, 1289, 1312, 2250, 1339, 1281, 1341, 1342, 1299, 1304,
+     1286, 1346, 1347, 1343, 1307, 1304, 1300, 1293, 1348, 1306,
+     1307, 1297, 1302, 1358, 1312, 1361, 1357, 1320, 1316, 1361,
+     1309, 1314, 1312, 1371, 1327, 1373, 1331, 1375, 1336, 1325,
+     1319, 1379, 1321, 1322, 1336, 1339, 1339, 1385, 1327, 1344,
+     1340, 1344, 1328, 1386, 1387, 1334, 1389, 1352, 1353, 2250,
+     1353, 1354, 1341, 1340, 1396, 2250, 1337, 1355, 1404, 1362,
+     1375, 2250, 1359, 2250, 2250, 1350, 1361, 1410, 2250, 2250,
+     1356, 1361, 1359, 1409, 1367, 1372, 1360, 1376, 1365, 1363,
+
+     1377, 2250, 1365, 2250, 1368, 1419, 1362, 1367, 1427, 1375,
+     1386, 1387, 2250, 1432, 1385, 2250, 1435, 2250, 1378, 1393,
+     1381, 2250, 1391, 1392, 1441, 1399, 1403, 2250, 1439, 1405,
+     1381, 1399, 1408, 1390, 1397, 1451, 1410, 1409, 1454, 1402,
+     1456, 1457, 1407, 1411, 1416, 1409, 2250, 1462, 1463, 1412,
+     1465, 1407, 2250, 1410, 1420, 1464, 1412, 1427, 1414, 1429,
+     1415, 1422, 1422, 1477, 1434, 1422, 1421, 1481, 1434, 2250,
+     1478, 1429, 1426, 2250, 1440, 2250, 1443, 1488, 1441, 1438,
+     1439, 2250, 1492, 1451, 1434, 1436, 1452, 1434, 1450, 1451,
+     1460, 2250, 1450, 1502, 2250, 1461, 2250, 2250, 1445, 1452,
+
+     1506, 1502, 2250, 2250, 1464, 2250, 1504, 1466, 1467, 1452,
+     1453, 1461, 1515, 1463, 1512, 1513, 1468, 2250, 1480, 1467,
+     1474, 2250, 1471, 1476, 1474, 1526, 1527, 1470, 2250, 1485,
+     1486, 1487, 2250, 1488, 1478, 1490, 1535, 1536, 1478, 1486,
+     1487, 1500, 2250, 1477, 1537, 1498, 2250, 1502, 1487, 1487,
+     1502, 1495, 1494, 1505, 1492, 2250, 1508, 1496, 1499, 1555,
+     1513, 1515, 1506, 1515, 1517, 1521, 2250, 2250, 1562, 1505,
+     1564, 1565, 1566, 1524, 1568, 2250, 2250, 1564, 1526, 1527,
+     1514, 1573, 1516, 1521, 1512, 1577, 1530, 1531, 1521, 1538,
+     1537, 1578, 1522, 1541, 1542, 2250, 1539, 1544, 1545, 1590,
+
+     1547, 1550, 2250, 1593, 2250, 2250, 2250, 1554, 2250, 1536,
+     1596, 1597, 1540, 2250, 1559, 1600, 1559, 2250, 1550, 1540,
+     1599, 1565, 1558, 1554, 1608, 1551, 1553, 1558, 1554, 1556,
+     2250, 1561, 1571, 2250, 1557, 1569, 2250, 2250, 1574, 1567,
+     2250, 1569, 1577, 1622, 1563, 1565, 1562, 1586, 2250, 1573,
+     1580, 1583, 1572, 1626, 1573, 1581, 1590, 1583, 1578, 1582,
+     1594, 1639, 2250, 1585, 1597, 1642, 1591, 1593, 1591, 1646,
+     1599, 1586, 1601, 1606, 1651, 1608, 1653, 1603, 1597, 2250,
+     1613, 1657, 2250, 1614, 1599, 1617, 2250, 1608, 1622, 1618,
+     1611, 2250, 1665, 2250, 1622, 1667, 1628, 2250, 1669, 1611,
+
+     1671, 1626, 1625, 1626, 1616, 2250, 1671, 2250, 1618, 2250,
+     1630, 2250, 1679, 1621, 1637, 1682, 1643, 1640, 1632, 2250,
+     1682, 1631, 2250, 1643, 1636, 1691, 1639, 1634, 1636, 1651,
+     1636, 2250, 1697, 1650, 1699, 1700, 1648, 2250, 1650, 2250,
+     2250, 1644, 1660, 1705, 1706, 2250, 2250, 2250, 1712, 1717,
+     1722, 1727, 1732, 1737, 1742, 1745, 1719, 1724, 1726, 1739
     } ;
 
-static const flex_int16_t yy_def[1822] =
+static const flex_int16_t yy_def[1861] =
     {   0,
-     1810, 1810, 1811, 1811, 1810, 1810, 1810, 1810, 1810, 1810,
-     1809, 1809, 1809, 1809, 1809, 1812, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1813,
-     1809, 1809, 1809, 1814,   15, 1809,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1815,   45,   45,   45,   45,
+     1849, 1849, 1850, 1850, 1849, 1849, 1849, 1849, 1849, 1849,
+     1848, 1848, 1848, 1848, 1848, 1851, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1852,
+     1848, 1848, 1848, 1853,   15, 1848,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1854,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1812, 1809, 1809,
-     1809, 1809, 1809, 1809, 1816, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1813, 1809, 1814, 1809,
+       45,   45,   45,   45,   45,   45,   45, 1851, 1848, 1848,
+     1848, 1848, 1848, 1848, 1855, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1852, 1848, 1853, 1848,
 
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1817,   45, 1815,   45,   45,   45,   45,   45,   45,
+     1848,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1856,   45, 1854,   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,   45,   45,   45,
-       45,   45, 1816, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1818,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1855, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1857,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45, 1817, 1809, 1815,   45,   45,   45,   45,   45,
+       45,   45, 1856, 1848, 1854,   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, 1809,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1848,   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,
@@ -1187,185 +1194,188 @@ static const flex_int16_t yy_def[1822] =
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1819,   45,
-       45,   45,   45,   45,   45, 1809,   45, 1809,   45, 1815,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
+       45, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1858,   45,
+       45,   45,   45,   45,   45, 1848,   45, 1848,   45, 1854,
+     1848,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   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, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   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,
-     1809,   45,   45,   45,   45, 1809, 1809, 1809, 1820,   45,
-       45,   45,   45,   45, 1809,   45, 1809,   45, 1815,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
+     1848,   45,   45,   45,   45, 1848, 1848, 1848, 1859,   45,
+       45,   45,   45,   45, 1848,   45, 1848,   45, 1854,   45,
+       45,   45,   45,   45,   45,   45,   45, 1848,   45,   45,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1848,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
+     1848,   45, 1848,   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, 1809,   45, 1809,   45,   45, 1809,
-       45,   45, 1809, 1821,   45,   45,   45, 1809, 1809, 1809,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45, 1848,   45,   45, 1848,
+       45,   45, 1848, 1860,   45,   45,   45, 1848, 1848, 1848,
+       45,   45,   45, 1848,   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, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   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, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1848,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1848,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45, 1809,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45,   45, 1848,   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, 1809,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1848,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1848,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1848,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
 
+       45,   45, 1848,   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, 1809,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1848, 1848,   45,   45,
+       45,   45,   45,   45, 1848, 1848,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45, 1809,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1809, 1809,   45,   45,   45,
+     1848, 1848,   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, 1809,   45,   45,   45,
 
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1848,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45,   45,   45,   45, 1809,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1848,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1848,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
+     1848,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1848,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-
-       45,   45,   45,   45, 1809,   45,   45,   45, 1809,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45, 1809,   45,
+
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1848,   45,   45,   45, 1848,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809, 1809,   45, 1809,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45, 1848,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45,   45, 1809, 1809,   45, 1809,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1848, 1848,   45,
+     1848,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1848,   45,   45,   45,   45, 1848,   45,
 
+       45,   45,   45,   45,   45, 1848, 1848,   45, 1848,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45,   45,   45,   45,   45,
+     1848, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1848,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45, 1809,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-
-       45, 1809,   45,   45, 1809,   45, 1809, 1809,   45,   45,
-       45, 1809,   45,   45, 1809,   45,   45,   45,   45, 1809,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809, 1809,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45, 1809,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45, 1809,   45,   45, 1809,   45,
+       45,   45, 1848,   45, 1848, 1848,   45,   45,   45,   45,
 
+       45,   45,   45,   45,   45,   45, 1848,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45,   45, 1848,   45, 1848,
+     1848,   45,   45,   45, 1848,   45,   45, 1848,   45,   45,
+       45,   45, 1848,   45,   45,   45, 1848,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1848,   45,   45, 1848,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1848, 1848,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45, 1848,
+       45,   45, 1848,   45,   45,   45,   45, 1848,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45, 1848,   45,
+     1848,   45,   45, 1848,   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, 1848,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
+       45, 1848,   45, 1848, 1848,   45,   45,   45, 1848, 1848,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45, 1809,   45,
-       45,   45,   45,   45, 1809,   45, 1809, 1809,   45,   45,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45, 1809,   45,   45,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45, 1809,   45, 1809,   45,
 
-       45,   45, 1809,   45,   45,   45,   45,   45, 1809,   45,
+       45, 1848,   45, 1848,   45,   45,   45,   45,   45,   45,
+       45,   45, 1848,   45,   45, 1848,   45, 1848,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45, 1848,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
-       45,   45, 1809,   45, 1809,   45,   45,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1809,   45,   45, 1809,   45, 1809, 1809,   45,   45,   45,
-       45, 1809, 1809,   45, 1809,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45, 1809,   45,
-
-       45,   45,   45,   45,   45, 1809,   45,   45,   45, 1809,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1809,
-       45,   45,   45, 1809,   45,   45,   45,   45,   45,   45,
-       45,   45, 1809,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809, 1809,   45,   45,   45,   45,   45,   45,   45,
-     1809, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1809,   45,
-       45,   45,   45,   45,   45, 1809,   45, 1809, 1809, 1809,
-       45, 1809,   45,   45,   45,   45, 1809,   45,   45,   45,
-     1809,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-
-       45, 1809,   45,   45, 1809,   45,   45, 1809, 1809,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1848,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1848,
+       45,   45,   45, 1848,   45, 1848,   45,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   45,   45, 1848,   45, 1848, 1848,   45,   45,
+
+       45,   45, 1848, 1848,   45, 1848,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1848,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45,   45, 1848,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45, 1848,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1848, 1848,   45,   45,
+       45,   45,   45,   45,   45, 1848, 1848,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1848,   45,   45,   45,   45,
+
+       45,   45, 1848,   45, 1848, 1848, 1848,   45, 1848,   45,
+       45,   45,   45, 1848,   45,   45,   45, 1848,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1809,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1809,   45,   45,
-     1809,   45,   45, 1809,   45,   45,   45,   45, 1809,   45,
-     1809,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
-       45, 1809,   45, 1809,   45, 1809, 1809,   45,   45,   45,
-       45,   45,   45, 1809,   45,   45, 1809,   45,   45,   45,
-       45,   45,   45,   45, 1809,   45,   45,   45,   45,   45,
-
-     1809, 1809,   45,   45,   45,   45, 1809, 1809,    0, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809
+     1848,   45,   45, 1848,   45,   45, 1848, 1848,   45,   45,
+     1848,   45,   45,   45,   45,   45,   45,   45, 1848,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1848,
+       45,   45, 1848,   45,   45,   45, 1848,   45,   45,   45,
+       45, 1848,   45, 1848,   45,   45,   45, 1848,   45,   45,
+
+       45,   45,   45,   45,   45, 1848,   45, 1848,   45, 1848,
+       45, 1848,   45,   45,   45,   45,   45,   45,   45, 1848,
+       45,   45, 1848,   45,   45,   45,   45,   45,   45,   45,
+       45, 1848,   45,   45,   45,   45,   45, 1848,   45, 1848,
+     1848,   45,   45,   45,   45, 1848, 1848,    0, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848
     } ;
 
-static const flex_int16_t yy_nxt[2285] =
+static const flex_int16_t yy_nxt[2324] =
     {   0,
-     1809,   13,   14,   13, 1809,   15,   16, 1809,   17,   18,
+     1848,   13,   14,   13, 1848,   15,   16, 1848,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  745,   37,   14,   37,   85,   25,   26,   38,  100,
-     1809,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  748,   37,   14,   37,   85,   25,   26,   38,  100,
+     1848,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  197,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      746,   13,   14,   13,   33,   40,  101,   90,   91,  197,
+      749,   13,   14,   13,   33,   40,  101,   90,   91,  197,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  103,   25,   26,
@@ -1386,31 +1396,31 @@ static const flex_int16_t yy_nxt[2285] =
        80,   80,   80,   80,   80,   79,  105,   82,   82,   82,
        82,   82,  407,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  184,   81,  108,  105,
-      103,  119,  833,  131,   81,  185,   81,  184,  109,  120,
+      103,  119,  836,  131,   81,  185,   81,  184,  109,  120,
       134,  135,  121,   81,  132,  122,  186,  123,  136,  124,
-       81,  108,  184,  834,  133,  164,  115,   81,   45,  165,
+       81,  108,  184,  837,  133,  164,  115,   81,   45,  165,
       139,  185,  116,  187,   45,  117,  109,   45,  231,   45,
       140,   45,  141,   45,  186,  113,  143,  144,   45,   45,
 
-      145,   45,   45,  835,  232,  100,  146,   45,   45,   45,
+      145,   45,   45,  838,  232,  100,  146,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
       125,  160,   45,  126,  127,  161,   45,  128,  129,  147,
        45,  107,  101,  148,  199,  162,  316,  149,   45,  185,
-      130,  417,   45,  110,   45,  114,  836,  155,  837,  150,
+      130,  417,   45,  110,   45,  114,  839,  155,  840,  150,
       152,  196,  153,  151,  154,  156,  186,  157,  173,  174,
       166,  199,  158,  159,  167,  188,  179,  168,  108,   83,
        83,   83,   83,   83,  169,  170,  180,  196,  109,  171,
       172,  181,   81,   79,  189,   80,   80,   80,   80,   80,
 
-      211,  175,  423,  176,  212,   87,  177,   87,   81,  838,
+      211,  175,  423,  176,  212,   87,  177,   87,   81,  841,
        88,   88,   88,   88,   88,   81,  109,   83,   83,   83,
        83,   83,   79,  178,   82,   82,   82,   82,   82,  194,
        81,   81,   88,   88,   88,   88,   88,   81,   88,   88,
        88,   88,   88,   99,  198,  200,  202,  201,  194,  215,
        99,  247,  269,   81,  424,  248,  270,  194,  216,  217,
        81,  235,  198,  302,  236,  206,  261,  266,  237,  202,
-      267,  268,  198,  200,  201,  272,  207,  281,  282,  839,
+      267,  268,  198,  200,  201,  272,  207,  281,  282,  842,
        99,  262,  263,  264,   99,  283,  304,  289,   99,  284,
       198,  302,  255,  285,  303,  199,   99,  201,  365,  302,
 
@@ -1418,105 +1428,105 @@ static const flex_int16_t yy_nxt[2285] =
       273,  274,  275,  205,  205,  205,  205,  205,  205,  303,
       303,  276,  294,  277,  298,  278,  279,  305,  280,  304,
       311,  313,  315,  314,  317,  319,  205,  205,  205,  205,
-      205,  205,  840,  378,  396,  306,  311,  397,  426,  511,
-      841,  366,  307,  311,  367,  315,  432,  317,  426,  313,
+      205,  205,  843,  378,  396,  306,  311,  397,  426,  511,
+      844,  366,  307,  311,  367,  315,  432,  317,  426,  313,
       314,  436,  319,  320,  320,  320,  320,  320,  434,  322,
       332,  426,  320,  320,  320,  320,  320,  320,  333,  379,
-      430,  427,  460,  334,  335,  432,  842,  432,  461,  436,
-      431,  434,  453,  380,  843,  320,  320,  320,  320,  320,
+      430,  427,  460,  334,  335,  432,  845,  432,  461,  436,
+      431,  434,  453,  380,  846,  320,  320,  320,  320,  320,
 
-      320,  439,  439,  439,  439,  439,  844,  512,  845,  454,
+      320,  439,  439,  439,  439,  439,  847,  512,  848,  454,
       439,  439,  439,  439,  439,  439,  440,  474,  487,  488,
       497,  521,  475,  489,  526,  522,  543,  550,  527,  544,
       498,  557,  551,  439,  439,  439,  439,  439,  439,  561,
-      578,  562,  585,  557,  595,  678,  614,  848,  579,  596,
-      580,  581,  582,  679,  777,  586,  615,  587,  677,  557,
-      723,  724,  849,  680,  790,  778,  561,  850,  562,  851,
-      476,  563,  678,  791,  852,  477,   45,   45,   45,   45,
-       45,  679,  853,  854,  855,   45,   45,   45,   45,   45,
-       45,  798,  790,  856,  857,  858,  791,  799,  801,  802,
-
-      846,  803,  859,  847,  860,  861,  862,  863,   45,   45,
-       45,   45,   45,   45,  822,  864,  865,  866,  823,  867,
-      868,  869,  824,  870,  871,  872,  873,  874,  875,  876,
-      877,  878,  879,  880,  881,  882,  883,  884,  886,  887,
-      888,  891,  892,  893,  885,  895,  896,  889,  897,  894,
-      898,  890,  899,  900,  901,  902,  903,  904,  905,  906,
+      578,  562,  586,  557,  596,  679,  615,  849,  579,  597,
+      580,  581,  582,  680,  583,  587,  616,  588,  678,  557,
+      794,  700,  850,  681,  701,  853,  561,  793,  562,  854,
+      476,  563,  679,  726,  727,  477,   45,   45,   45,   45,
+       45,  680,  780,  794,  855,   45,   45,   45,   45,   45,
+       45,  801,  827,  781,  856,  793,  828,  802,  804,  805,
+
+      829,  806,  851,  857,  858,  852,  859,  860,   45,   45,
+       45,   45,   45,   45,  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,
+      887,  888,  889,  891,  892,  893,  896,  897,  898,  890,
+      900,  901,  894,  902,  899,  903,  895,  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,  910,  938,  939,  940,  941,  942,  943,  944,  945,
+      937,  938,  939,  940,  941,  942,  915,  943,  944,  945,
 
-      946,  947,  948,  949,  950,  952,  953,  954,  955,  951,
-      956,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  967,  968,  969,  970,  971,  972,  974,  975,  976,
-      973,  977,  978,  979,  980,  981,  982,  983,  984,  985,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
+      956,  957,  959,  960,  961,  962,  958,  963,  964,  965,
+      966,  967,  968,  969,  970,  971,  972,  973,  974,  975,
+      976,  977,  978,  979,  981,  982,  983,  980,  984,  985,
       986,  987,  988,  989,  990,  991,  992,  993,  994,  995,
       996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004, 1005,
      1006, 1007, 1008, 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,
-     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1022,
+     1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
 
-     1045, 1046, 1021, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+     1046, 1047, 1048, 1049, 1050, 1051, 1029, 1052, 1053, 1028,
      1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
-     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
+     1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1074,
      1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
-     1085, 1086, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
-     1096, 1097, 1087, 1098, 1099, 1100, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
-     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1064, 1122, 1123,
-     1124, 1125, 1126, 1127, 1128, 1130, 1129, 1131, 1132, 1133,
-     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143,
+     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
+     1095, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105,
+     1106, 1096, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
+     1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124,
+     1125, 1126, 1127, 1128, 1129, 1130, 1073, 1131, 1132, 1133,
+     1134, 1135, 1136, 1137, 1139, 1138, 1140, 1141, 1142, 1143,
 
      1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153,
-     1154, 1155, 1128, 1129, 1156, 1157, 1158, 1159, 1160, 1161,
-     1162, 1163, 1164, 1165, 1166, 1167, 1168, 1170, 1172, 1173,
-     1174, 1169, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182,
-     1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192,
+     1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163,
+     1164, 1137, 1138, 1165, 1166, 1167, 1168, 1169, 1170, 1171,
+     1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1181, 1183,
+     1184, 1185, 1180, 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, 1171, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
-     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
+     1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222,
+     1223, 1224, 1182, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
      1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241,
 
      1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
-     1252, 1230, 1253, 1254, 1255, 1256, 1257, 1231, 1258, 1259,
-     1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269,
+     1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261,
+     1262, 1263, 1241, 1264, 1265, 1266, 1267, 1268, 1242, 1269,
      1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279,
      1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289,
-     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 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, 1326, 1327, 1328, 1329, 1330, 1331,
-     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341,
-
-     1342, 1343, 1344, 1345, 1346, 1347, 1319, 1348, 1349, 1350,
-     1351, 1299, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359,
-     1360, 1362, 1363, 1364, 1365, 1366, 1367, 1325, 1361, 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, 1393, 1394, 1395, 1396, 1398, 1399,
-     1400, 1401, 1397, 1402, 1403, 1404, 1405, 1406, 1407, 1408,
-     1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418,
-     1419, 1398, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427,
-     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
+     1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299,
+     1300, 1301, 1302, 1303, 1304, 1305, 1306, 1307, 1308, 1309,
+     1310, 1311, 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,
+
+     1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351,
+     1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1332,
+     1361, 1362, 1363, 1364, 1312, 1365, 1366, 1367, 1368, 1369,
+     1370, 1371, 1372, 1373, 1374, 1375, 1377, 1378, 1379, 1380,
+     1338, 1381, 1382, 1376, 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, 1408,
+     1409, 1410, 1411, 1413, 1414, 1415, 1416, 1412, 1417, 1418,
+     1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428,
+     1429, 1430, 1431, 1432, 1433, 1434, 1413, 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, 1477, 1478,
-     1479, 1480, 1481, 1482, 1483, 1484, 1485, 1486, 1476, 1487,
-     1488, 1489, 1490, 1464, 1491, 1492, 1493, 1494, 1496, 1497,
-     1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507,
-     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1517,
+     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, 1494, 1495, 1496, 1497, 1498,
+     1499, 1500, 1501, 1502, 1503, 1493, 1504, 1505, 1506, 1507,
+     1481, 1508, 1509, 1510, 1511, 1512, 1513, 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, 1495, 1553, 1554, 1555, 1556,
-     1530, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565,
-     1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575,
+     1548, 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557,
+     1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566, 1567,
+     1568, 1569, 1570, 1571, 1514, 1572, 1573, 1574, 1575, 1549,
      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,
@@ -1540,87 +1550,92 @@ static const flex_int16_t yy_nxt[2285] =
      1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765,
      1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775,
      1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785,
-     1786, 1787, 1788, 1790, 1789, 1791, 1792, 1793, 1794, 1795,
+     1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795,
      1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805,
-     1806, 1807, 1808,   12,   12,   12,   12,   12,   36,   36,
-       36,   36,   36,   78,  309,   78,   78,   78,   97,  429,
-       97,  554,   97,   99,   99,   99,   99,   99,  112,  112,
-
-      112,  112,  112,  183,   99,  183,  183,  183,  203,  203,
-      203,  832,  831,  830,  829,  828,  827,  826,  825,  821,
-      820,  819,  818,  817,  816,  815,  814,  813,  812,  811,
-      810,  809,  808,  807,  806,  805,  804,  800,  797,  796,
-      795,  794,  793,  792,  789,  788,  787,  786,  785,  784,
-      783,  782,  781,  780,  779,  776,  775,  774,  773,  772,
-      771,  770,  769,  768,  767,  766,  765,  764,  763,  762,
-      761,  760,  759,  758,  757,  756,  755,  754,  753,  752,
-      751,  750,  749,  748,  747,  744,  743,  742,  741,  740,
-      739,  738,  737,  736,  735,  734,  733,  732,  731,  730,
-
-      729,  728,  727,  726,  725,  722,  721,  720,  719,  718,
-      717,  716,  715,  714,  713,  712,  711,  710,  709,  708,
-      707,  706,  705,  704,  703,  702,  701,  700,  699,  698,
+     1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815,
+     1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1826,
+     1825, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835,
+
+     1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845,
+     1846, 1847,   12,   12,   12,   12,   12,   36,   36,   36,
+       36,   36,   78,  309,   78,   78,   78,   97,  429,   97,
+      554,   97,   99,   99,   99,   99,   99,  112,  112,  112,
+      112,  112,  183,   99,  183,  183,  183,  203,  203,  203,
+      835,  834,  833,  832,  831,  830,  826,  825,  824,  823,
+      822,  821,  820,  819,  818,  817,  816,  815,  814,  813,
+      812,  811,  810,  809,  808,  807,  803,  800,  799,  798,
+      797,  796,  795,  792,  791,  790,  789,  788,  787,  786,
+      785,  784,  783,  782,  779,  778,  777,  776,  775,  774,
+
+      773,  772,  771,  770,  769,  768,  767,  766,  765,  764,
+      763,  762,  761,  760,  759,  758,  757,  756,  755,  754,
+      753,  752,  751,  750,  747,  746,  745,  744,  743,  742,
+      741,  740,  739,  738,  737,  736,  735,  734,  733,  732,
+      731,  730,  729,  728,  725,  724,  723,  722,  721,  720,
+      719,  718,  717,  716,  715,  714,  713,  712,  711,  710,
+      709,  708,  707,  706,  705,  704,  703,  702,  699,  698,
       697,  696,  695,  694,  693,  692,  691,  690,  689,  688,
-      687,  686,  685,  684,  683,  682,  681,  677,  676,  675,
+      687,  686,  685,  684,  683,  682,  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,  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,  613,
+      624,  623,  622,  621,  620,  619,  618,  617,  614,  613,
       612,  611,  610,  609,  608,  607,  606,  605,  604,  603,
-      602,  601,  600,  599,  598,  597,  594,  593,  592,  591,
-      590,  589,  588,  584,  583,  577,  576,  575,  574,  573,
-      572,  571,  570,  569,  568,  567,  566,  565,  564,  560,
-      559,  558,  556,  555,  553,  552,  549,  548,  547,  546,
-      545,  542,  541,  540,  539,  538,  537,  536,  535,  534,
-      533,  532,  531,  530,  529,  528,  525,  524,  523,  520,
-      519,  518,  517,  516,  515,  514,  513,  510,  509,  508,
-      507,  506,  505,  504,  503,  502,  501,  500,  499,  496,
-
-      495,  494,  493,  492,  491,  490,  486,  485,  484,  483,
-      482,  481,  480,  479,  478,  473,  472,  471,  470,  469,
-      468,  467,  466,  465,  464,  463,  462,  459,  458,  457,
-      456,  455,  452,  451,  450,  449,  448,  447,  446,  445,
-      444,  443,  442,  441,  438,  437,  435,  433,  428,  425,
-      422,  421,  420,  419,  418,  416,  415,  414,  413,  412,
-      411,  410,  409,  408,  405,  404,  403,  402,  401,  400,
-      399,  398,  395,  394,  393,  392,  391,  390,  389,  388,
-      387,  386,  385,  384,  383,  382,  381,  377,  376,  375,
-      374,  373,  372,  371,  370,  369,  368,  364,  363,  362,
-
-      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,  331,  330,  329,  328,
-      327,  326,  325,  324,  323,  321,  204,  318,  316,  312,
-      310,  308,  301,  300,  299,  297,  296,  295,  293,  292,
-      291,  288,  287,  286,  271,  265,  260,  259,  258,  257,
-      256,  254,  253,  252,  251,  250,  249,  246,  245,  244,
-      243,  242,  241,  240,  239,  238,  234,  233,  230,  227,
-      226,  225,  224,  221,  220,  219,  218,  214,  213,  210,
-      209,  208,  204,  195,  193,  191,  190,  182,  163,  142,
-
-      118,  104,  102,   43,   98,   96,   95,   86,   43, 1809,
-       11, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809
+      602,  601,  600,  599,  598,  595,  594,  593,  592,  591,
+      590,  589,  585,  584,  577,  576,  575,  574,  573,  572,
+      571,  570,  569,  568,  567,  566,  565,  564,  560,  559,
+      558,  556,  555,  553,  552,  549,  548,  547,  546,  545,
+
+      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
+      532,  531,  530,  529,  528,  525,  524,  523,  520,  519,
+      518,  517,  516,  515,  514,  513,  510,  509,  508,  507,
+      506,  505,  504,  503,  502,  501,  500,  499,  496,  495,
+      494,  493,  492,  491,  490,  486,  485,  484,  483,  482,
+      481,  480,  479,  478,  473,  472,  471,  470,  469,  468,
+      467,  466,  465,  464,  463,  462,  459,  458,  457,  456,
+      455,  452,  451,  450,  449,  448,  447,  446,  445,  444,
+      443,  442,  441,  438,  437,  435,  433,  428,  425,  422,
+      421,  420,  419,  418,  416,  415,  414,  413,  412,  411,
+
+      410,  409,  408,  405,  404,  403,  402,  401,  400,  399,
+      398,  395,  394,  393,  392,  391,  390,  389,  388,  387,
+      386,  385,  384,  383,  382,  381,  377,  376,  375,  374,
+      373,  372,  371,  370,  369,  368,  364,  363,  362,  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,  331,  330,  329,  328,  327,
+      326,  325,  324,  323,  321,  204,  318,  316,  312,  310,
+      308,  301,  300,  299,  297,  296,  295,  293,  292,  291,
+      288,  287,  286,  271,  265,  260,  259,  258,  257,  256,
+
+      254,  253,  252,  251,  250,  249,  246,  245,  244,  243,
+      242,  241,  240,  239,  238,  234,  233,  230,  227,  226,
+      225,  224,  221,  220,  219,  218,  214,  213,  210,  209,
+      208,  204,  195,  193,  191,  190,  182,  163,  142,  118,
+      104,  102,   43,   98,   96,   95,   86,   43, 1848,   11,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848
     } ;
 
-static const flex_int16_t yy_chk[2285] =
+static const flex_int16_t yy_chk[2324] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  630,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  631,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  106,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      630,    8,    8,    8,    1,    8,   44,   27,   28,  106,
+      631,    8,    8,    8,    1,    8,   44,   27,   28,  106,
        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,
@@ -1641,31 +1656,31 @@ static const flex_int16_t yy_chk[2285] =
        17,   17,   17,   17,   17,   19,   62,   19,   19,   19,
        19,   19,  284,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   89,   20,   53,   62,
-       57,   59,  717,   61,   22,   90,   17,   92,   53,   59,
+       57,   59,  718,   61,   22,   90,   17,   92,   53,   59,
        62,   63,   59,   19,   61,   59,   91,   59,   63,   59,
-       20,   53,   89,  718,   61,   73,   57,   22,   45,   73,
+       20,   53,   89,  719,   61,   73,   57,   22,   45,   73,
        65,   90,   57,   92,   45,   57,   53,   45,  134,   45,
        65,   45,   65,   45,   91,   56,   67,   67,   45,   45,
 
-       67,   45,   56,  719,  134,   99,   67,   45,   45,   45,
+       67,   45,   56,  720,  134,   99,   67,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        60,   71,   56,   60,   60,   71,   56,   60,   60,   68,
        56,   69,   99,   68,  108,   71,  294,   68,   56,   93,
-       60,  294,   56,   76,   56,   56,  720,   70,  721,   68,
+       60,  294,   56,   76,   56,   56,  721,   70,  722,   68,
        69,  105,   69,   68,   69,   70,   94,   70,   75,   75,
        74,  108,   70,   70,   74,   93,   76,   74,   75,   79,
        79,   79,   79,   79,   74,   74,   76,  105,   75,   74,
        74,   76,   79,   80,   94,   80,   80,   80,   80,   80,
 
-      119,   75,  300,   75,  119,   81,   75,   81,   80,  722,
+      119,   75,  300,   75,  119,   81,   75,   81,   80,  723,
        81,   81,   81,   81,   81,   79,   75,   83,   83,   83,
        83,   83,   82,   75,   82,   82,   82,   82,   82,  103,
        83,   80,   87,   87,   87,   87,   87,   82,   88,   88,
        88,   88,   88,  101,  107,  109,  111,  110,  115,  122,
       101,  147,  163,   83,  300,  147,  163,  103,  122,  122,
        82,  137,  154,  184,  137,  115,  160,  162,  137,  111,
-      162,  162,  107,  109,  110,  165,  115,  166,  166,  723,
+      162,  162,  107,  109,  110,  165,  115,  166,  166,  724,
       101,  160,  160,  160,  101,  167,  186,  171,  101,  167,
       154,  184,  154,  167,  185,  175,  101,  179,  248,  187,
 
@@ -1673,198 +1688,203 @@ static const flex_int16_t yy_chk[2285] =
       165,  165,  165,  114,  114,  114,  114,  114,  114,  188,
       185,  165,  175,  165,  179,  165,  165,  187,  165,  189,
       194,  196,  198,  197,  200,  202,  114,  114,  114,  114,
-      114,  114,  724,  259,  275,  188,  207,  275,  302,  387,
-      725,  248,  189,  194,  248,  198,  311,  200,  305,  196,
+      114,  114,  725,  259,  275,  188,  207,  275,  302,  387,
+      726,  248,  189,  194,  248,  198,  311,  200,  305,  196,
       197,  315,  202,  205,  205,  205,  205,  205,  313,  207,
       217,  302,  205,  205,  205,  205,  205,  205,  217,  259,
-      310,  305,  342,  217,  217,  311,  726,  322,  342,  315,
-      310,  313,  335,  259,  727,  205,  205,  205,  205,  205,
+      310,  305,  342,  217,  217,  311,  727,  322,  342,  315,
+      310,  313,  335,  259,  728,  205,  205,  205,  205,  205,
 
-      205,  320,  320,  320,  320,  320,  728,  387,  729,  335,
+      205,  320,  320,  320,  320,  320,  729,  387,  730,  335,
       320,  320,  320,  320,  320,  320,  322,  355,  365,  365,
       373,  397,  355,  365,  401,  397,  417,  424,  401,  417,
       373,  432,  424,  320,  320,  320,  320,  320,  320,  438,
       457,  438,  460,  440,  469,  561,  488,  731,  457,  469,
-      457,  457,  457,  562,  664,  460,  488,  460,  563,  432,
-      608,  608,  732,  563,  678,  664,  438,  733,  438,  735,
-      355,  440,  561,  679,  736,  355,  439,  439,  439,  439,
-      439,  562,  737,  738,  739,  439,  439,  439,  439,  439,
-      439,  686,  678,  740,  741,  742,  679,  686,  688,  688,
-
-      730,  688,  743,  730,  744,  746,  747,  748,  439,  439,
-      439,  439,  439,  439,  707,  749,  750,  751,  707,  752,
-      753,  754,  707,  755,  756,  757,  758,  759,  760,  761,
-      762,  763,  764,  765,  766,  767,  768,  769,  770,  771,
-      771,  772,  773,  774,  769,  775,  776,  771,  778,  774,
-      779,  771,  780,  781,  782,  783,  784,  785,  786,  787,
-      788,  789,  790,  791,  792,  793,  794,  795,  796,  797,
-      798,  799,  801,  802,  803,  804,  805,  806,  807,  808,
-      809,  810,  811,  812,  813,  814,  815,  816,  817,  818,
-      819,  791,  820,  821,  822,  823,  824,  825,  826,  828,
-
-      829,  830,  831,  832,  833,  834,  835,  836,  837,  833,
-      838,  839,  840,  841,  844,  845,  846,  847,  848,  849,
-      852,  853,  854,  855,  856,  857,  858,  859,  860,  861,
-      858,  862,  863,  864,  865,  868,  869,  870,  871,  872,
-      873,  874,  875,  876,  877,  878,  879,  880,  881,  882,
-      883,  884,  885,  886,  887,  888,  889,  890,  891,  892,
-      893,  894,  895,  896,  898,  899,  900,  901,  902,  903,
-      904,  905,  906,  907,  908,  909,  910,  911,  912,  913,
-      914,  916,  917,  918,  919,  920,  921,  922,  923,  924,
-      925,  926,  927,  928,  929,  930,  931,  932,  933,  910,
-
-      934,  935,  909,  936,  937,  939,  940,  941,  942,  943,
-      944,  945,  946,  947,  948,  949,  951,  952,  953,  954,
-      955,  957,  958,  959,  960,  961,  962,  963,  964,  965,
-      966,  967,  968,  969,  970,  971,  972,  973,  974,  975,
-      976,  977,  978,  979,  981,  982,  983,  984,  986,  987,
-      988,  989,  977,  990,  991,  992,  993,  994,  995,  996,
-      997,  998,  999, 1000, 1001, 1002, 1003, 1005, 1006, 1007,
-     1008, 1009, 1010, 1011, 1012, 1013, 1014,  954, 1015, 1016,
-     1017, 1018, 1019, 1020, 1021, 1023, 1022, 1024, 1025, 1026,
-     1027, 1028, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
-
-     1038, 1039, 1040, 1041, 1042, 1043, 1044, 1046, 1047, 1048,
-     1049, 1050, 1021, 1022, 1051, 1052, 1053, 1054, 1055, 1056,
-     1057, 1058, 1059, 1060, 1061, 1062, 1064, 1065, 1066, 1067,
-     1068, 1064, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076,
-     1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
-     1087, 1088, 1089, 1090, 1091, 1092, 1094, 1095, 1096, 1097,
-     1098, 1099, 1100, 1101, 1102, 1103, 1104, 1106, 1107, 1108,
-     1110, 1065, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118,
-     1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1128, 1129,
-     1130, 1131, 1132, 1133, 1135, 1136, 1137, 1138, 1139, 1140,
-
-     1141, 1142, 1144, 1145, 1146, 1147, 1148, 1150, 1151, 1152,
-     1153, 1128, 1154, 1155, 1156, 1157, 1158, 1129, 1159, 1160,
-     1161, 1162, 1163, 1164, 1165, 1166, 1169, 1171, 1172, 1173,
-     1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1184,
-     1185, 1186, 1187, 1189, 1190, 1191, 1192, 1193, 1194, 1197,
-     1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208,
-     1209, 1210, 1211, 1212, 1213, 1215, 1216, 1217, 1218, 1219,
-     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
-     1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1242, 1243,
-     1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253,
-
-     1254, 1255, 1256, 1258, 1259, 1260, 1230, 1261, 1262, 1263,
-     1264, 1207, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272,
-     1273, 1274, 1275, 1276, 1277, 1278, 1279, 1236, 1273, 1281,
-     1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291, 1292, 1293,
-     1295, 1296, 1297, 1298, 1299, 1300, 1301, 1303, 1304, 1306,
-     1309, 1310, 1311, 1313, 1314, 1316, 1317, 1318, 1319, 1321,
-     1322, 1323, 1318, 1325, 1326, 1327, 1328, 1329, 1330, 1331,
-     1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1342,
-     1344, 1319, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352,
-     1353, 1356, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365,
-
-     1366, 1368, 1369, 1370, 1371, 1372, 1373, 1374, 1376, 1377,
-     1379, 1380, 1381, 1382, 1384, 1385, 1386, 1387, 1388, 1389,
-     1390, 1391, 1392, 1393, 1395, 1397, 1398, 1400, 1401, 1402,
-     1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412,
-     1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1410, 1421,
-     1422, 1423, 1424, 1398, 1425, 1426, 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, 1454, 1455, 1456, 1457, 1458, 1460, 1461,
-     1462, 1463, 1464, 1466, 1469, 1470, 1471, 1474, 1475, 1476,
-
-     1477, 1478, 1479, 1480, 1481, 1482, 1484, 1486, 1487, 1488,
-     1489, 1490, 1491, 1492, 1493, 1427, 1495, 1496, 1498, 1500,
-     1464, 1501, 1502, 1504, 1505, 1506, 1507, 1508, 1510, 1511,
-     1512, 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521,
-     1522, 1523, 1524, 1525, 1526, 1527, 1529, 1530, 1531, 1532,
-     1533, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543,
-     1544, 1545, 1546, 1547, 1548, 1550, 1551, 1552, 1554, 1556,
-     1557, 1558, 1559, 1560, 1562, 1563, 1564, 1565, 1566, 1567,
-     1568, 1569, 1570, 1572, 1573, 1575, 1578, 1579, 1580, 1581,
-     1584, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594,
-
-     1596, 1597, 1598, 1600, 1601, 1602, 1603, 1604, 1605, 1607,
-     1608, 1609, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618,
-     1619, 1621, 1622, 1623, 1625, 1626, 1627, 1628, 1629, 1630,
-     1631, 1632, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641,
-     1644, 1645, 1646, 1647, 1648, 1649, 1650, 1653, 1654, 1655,
-     1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665,
-     1666, 1667, 1668, 1670, 1671, 1672, 1673, 1674, 1675, 1677,
-     1681, 1683, 1684, 1685, 1686, 1688, 1689, 1690, 1692, 1693,
-     1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1703, 1704,
-     1706, 1707, 1710, 1711, 1713, 1714, 1715, 1716, 1717, 1718,
-
-     1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, 1728,
-     1729, 1730, 1731, 1733, 1734, 1735, 1736, 1737, 1738, 1739,
-     1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, 1749, 1750,
-     1752, 1753, 1755, 1756, 1757, 1758, 1760, 1762, 1763, 1764,
-     1766, 1767, 1768, 1769, 1770, 1771, 1773, 1775, 1778, 1779,
-     1780, 1781, 1782, 1783, 1782, 1785, 1786, 1788, 1789, 1790,
-     1791, 1792, 1793, 1794, 1796, 1797, 1798, 1799, 1800, 1803,
-     1804, 1805, 1806, 1810, 1810, 1810, 1810, 1810, 1811, 1811,
-     1811, 1811, 1811, 1812, 1818, 1812, 1812, 1812, 1813, 1819,
-     1813, 1820, 1813, 1814, 1814, 1814, 1814, 1814, 1815, 1815,
-
-     1815, 1815, 1815, 1816, 1821, 1816, 1816, 1816, 1817, 1817,
-     1817,  716,  715,  714,  712,  711,  710,  709,  708,  706,
+      457,  457,  457,  562,  457,  460,  488,  460,  563,  432,
+      680,  583,  732,  563,  583,  734,  438,  679,  438,  735,
+      355,  440,  561,  609,  609,  355,  439,  439,  439,  439,
+      439,  562,  665,  680,  736,  439,  439,  439,  439,  439,
+      439,  687,  710,  665,  738,  679,  710,  687,  689,  689,
+
+      710,  689,  733,  739,  740,  733,  741,  742,  439,  439,
+      439,  439,  439,  439,  743,  744,  745,  746,  747,  749,
+      750,  751,  752,  753,  754,  755,  756,  757,  758,  759,
+      760,  761,  762,  763,  764,  765,  766,  767,  768,  769,
+      770,  771,  772,  773,  774,  774,  775,  776,  777,  772,
+      778,  779,  774,  781,  777,  782,  774,  783,  784,  785,
+      786,  787,  788,  789,  790,  791,  792,  793,  794,  795,
+      796,  797,  798,  799,  800,  801,  802,  804,  805,  806,
+      807,  808,  809,  810,  811,  812,  813,  814,  815,  816,
+      817,  818,  819,  820,  821,  822,  794,  823,  824,  825,
+
+      826,  827,  828,  829,  830,  831,  833,  834,  835,  836,
+      837,  838,  839,  840,  841,  842,  838,  843,  844,  845,
+      846,  849,  850,  851,  852,  853,  854,  857,  858,  859,
+      860,  861,  862,  863,  864,  865,  866,  863,  867,  868,
+      869,  870,  873,  874,  875,  876,  877,  878,  879,  880,
+      881,  882,  883,  884,  885,  886,  887,  888,  889,  890,
+      891,  892,  893,  894,  895,  896,  897,  898,  899,  900,
+      901,  903,  904,  905,  906,  907,  908,  909,  910,  911,
+      912,  913,  914,  915,  916,  917,  918,  919,  921,  922,
+      923,  924,  925,  926,  927,  928,  929,  930,  931,  932,
+
+      933,  934,  935,  936,  937,  938,  915,  939,  940,  914,
+      941,  942,  943,  944,  946,  947,  948,  949,  950,  951,
+      952,  953,  954,  955,  956,  958,  959,  960,  961,  962,
+      964,  965,  966,  967,  968,  969,  970,  971,  972,  973,
+      974,  975,  976,  977,  978,  979,  980,  981,  982,  983,
+      984,  985,  986,  988,  989,  990,  991,  993,  994,  995,
+      996,  984,  997,  998,  999, 1000, 1001, 1002, 1003, 1004,
+     1005, 1006, 1007, 1008, 1009, 1010, 1012, 1013, 1014, 1015,
+     1016, 1017, 1018, 1019, 1020, 1021,  961, 1022, 1023, 1024,
+     1025, 1026, 1027, 1028, 1030, 1029, 1031, 1032, 1033, 1034,
+
+     1035, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1055, 1056,
+     1057, 1028, 1029, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1073, 1074, 1075,
+     1076, 1077, 1073, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+     1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
+     1095, 1096, 1097, 1098, 1099, 1100, 1101, 1103, 1104, 1105,
+     1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1115, 1116,
+     1117, 1119, 1074, 1120, 1121, 1122, 1123, 1124, 1125, 1126,
+     1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1137,
+
+     1138, 1139, 1140, 1141, 1142, 1144, 1145, 1146, 1147, 1148,
+     1149, 1150, 1151, 1153, 1154, 1155, 1156, 1157, 1158, 1159,
+     1161, 1162, 1137, 1163, 1164, 1165, 1166, 1167, 1138, 1168,
+     1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1180,
+     1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
+     1192, 1193, 1195, 1196, 1197, 1198, 1200, 1201, 1202, 1203,
+     1204, 1205, 1208, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
+     1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1226, 1227,
+     1228, 1229, 1230, 1233, 1234, 1235, 1236, 1237, 1238, 1239,
+     1240, 1241, 1242, 1244, 1245, 1246, 1247, 1248, 1249, 1250,
+
+     1251, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261,
+     1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1241,
+     1272, 1273, 1274, 1275, 1218, 1276, 1277, 1278, 1279, 1280,
+     1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290,
+     1247, 1291, 1292, 1286, 1294, 1297, 1298, 1299, 1300, 1301,
+     1302, 1303, 1304, 1305, 1306, 1308, 1309, 1310, 1311, 1312,
+     1313, 1314, 1316, 1317, 1319, 1322, 1323, 1324, 1326, 1327,
+     1329, 1330, 1331, 1332, 1334, 1335, 1336, 1331, 1338, 1339,
+     1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349,
+     1350, 1351, 1352, 1353, 1354, 1356, 1332, 1357, 1359, 1360,
+
+     1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1371, 1373,
+     1374, 1375, 1376, 1377, 1378, 1379, 1380, 1381, 1383, 1384,
+     1385, 1386, 1387, 1388, 1389, 1391, 1392, 1394, 1395, 1396,
+     1397, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407,
+     1408, 1410, 1412, 1413, 1415, 1416, 1417, 1418, 1419, 1420,
+     1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430,
+     1431, 1432, 1433, 1434, 1435, 1425, 1436, 1437, 1438, 1439,
+     1413, 1440, 1441, 1442, 1443, 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, 1471, 1472, 1473, 1474, 1475, 1477, 1478, 1479,
+     1480, 1481, 1483, 1486, 1487, 1488, 1491, 1492, 1493, 1494,
+     1495, 1496, 1497, 1498, 1499, 1500, 1501, 1503, 1505, 1506,
+     1507, 1508, 1509, 1510, 1444, 1511, 1512, 1514, 1515, 1481,
+     1517, 1519, 1520, 1521, 1523, 1524, 1525, 1526, 1527, 1529,
+     1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539,
+     1540, 1541, 1542, 1543, 1544, 1545, 1546, 1548, 1549, 1550,
+     1551, 1552, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561,
+     1562, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1571, 1572,
+     1573, 1575, 1577, 1578, 1579, 1580, 1581, 1583, 1584, 1585,
+
+     1586, 1587, 1588, 1589, 1590, 1591, 1593, 1594, 1596, 1599,
+     1600, 1601, 1602, 1605, 1607, 1608, 1609, 1610, 1611, 1612,
+     1613, 1614, 1615, 1616, 1617, 1619, 1620, 1621, 1623, 1624,
+     1625, 1626, 1627, 1628, 1630, 1631, 1632, 1634, 1635, 1636,
+     1637, 1638, 1639, 1640, 1641, 1642, 1644, 1645, 1646, 1648,
+     1649, 1650, 1651, 1652, 1653, 1654, 1655, 1657, 1658, 1659,
+     1660, 1661, 1662, 1663, 1664, 1665, 1666, 1669, 1670, 1671,
+     1672, 1673, 1674, 1675, 1678, 1679, 1680, 1681, 1682, 1683,
+     1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693,
+     1694, 1695, 1697, 1698, 1699, 1700, 1701, 1702, 1704, 1708,
+
+     1710, 1711, 1712, 1713, 1715, 1716, 1717, 1719, 1720, 1721,
+     1722, 1723, 1724, 1725, 1726, 1727, 1728, 1729, 1730, 1732,
+     1733, 1735, 1736, 1739, 1740, 1742, 1743, 1744, 1745, 1746,
+     1747, 1748, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757,
+     1758, 1759, 1760, 1761, 1762, 1764, 1765, 1766, 1767, 1768,
+     1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, 1778,
+     1779, 1781, 1782, 1784, 1785, 1786, 1788, 1789, 1790, 1791,
+     1793, 1795, 1796, 1797, 1799, 1800, 1801, 1802, 1803, 1804,
+     1805, 1807, 1809, 1811, 1813, 1814, 1815, 1816, 1817, 1818,
+     1817, 1819, 1821, 1822, 1824, 1825, 1826, 1827, 1828, 1829,
+
+     1830, 1831, 1833, 1834, 1835, 1836, 1837, 1839, 1842, 1843,
+     1844, 1845, 1849, 1849, 1849, 1849, 1849, 1850, 1850, 1850,
+     1850, 1850, 1851, 1857, 1851, 1851, 1851, 1852, 1858, 1852,
+     1859, 1852, 1853, 1853, 1853, 1853, 1853, 1854, 1854, 1854,
+     1854, 1854, 1855, 1860, 1855, 1855, 1855, 1856, 1856, 1856,
+      717,  715,  714,  713,  712,  711,  709,  708,  707,  706,
       705,  704,  703,  702,  701,  700,  699,  698,  697,  696,
-      695,  694,  693,  692,  691,  690,  689,  687,  685,  684,
-      683,  682,  681,  680,  676,  675,  673,  672,  671,  670,
-      669,  668,  667,  666,  665,  663,  662,  660,  659,  658,
-      657,  656,  655,  654,  653,  652,  651,  650,  649,  648,
-      646,  645,  644,  643,  642,  641,  640,  639,  638,  636,
-      635,  634,  633,  632,  631,  629,  628,  627,  626,  625,
-      624,  623,  621,  620,  619,  618,  617,  616,  615,  614,
-
-      613,  612,  611,  610,  609,  607,  606,  605,  604,  603,
-      602,  601,  600,  599,  598,  597,  596,  594,  593,  592,
-      591,  590,  589,  588,  587,  586,  585,  584,  583,  582,
-      581,  580,  579,  578,  577,  576,  575,  574,  573,  572,
-      571,  570,  569,  568,  567,  566,  565,  557,  556,  555,
-      553,  552,  551,  549,  548,  546,  544,  543,  542,  541,
-      540,  539,  538,  537,  536,  535,  534,  533,  532,  531,
-      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
-      520,  519,  518,  517,  516,  515,  514,  512,  510,  509,
-      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
-
-      498,  497,  495,  494,  493,  492,  491,  490,  489,  487,
-      486,  485,  484,  483,  482,  481,  480,  479,  478,  477,
-      476,  475,  473,  472,  471,  470,  468,  467,  466,  465,
-      464,  462,  461,  459,  458,  455,  454,  453,  452,  451,
-      450,  449,  447,  446,  445,  444,  443,  442,  441,  436,
-      434,  433,  431,  430,  428,  425,  423,  422,  420,  419,
-      418,  416,  415,  414,  413,  412,  411,  410,  409,  408,
-      407,  406,  405,  404,  403,  402,  400,  399,  398,  396,
-      395,  394,  393,  391,  390,  389,  388,  386,  385,  384,
-      383,  382,  381,  380,  379,  378,  377,  376,  374,  372,
-
-      371,  370,  369,  368,  367,  366,  364,  363,  362,  361,
-      360,  359,  358,  357,  356,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  344,  343,  341,  340,  339,
-      338,  337,  334,  333,  332,  331,  330,  329,  328,  327,
-      326,  325,  324,  323,  319,  317,  314,  312,  308,  301,
-      299,  298,  297,  296,  295,  293,  292,  291,  290,  289,
-      288,  287,  286,  285,  283,  282,  281,  280,  279,  278,
-      277,  276,  274,  273,  272,  271,  270,  269,  268,  267,
-      266,  265,  264,  263,  262,  261,  260,  258,  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,  218,  216,  215,  214,  213,
-      212,  211,  210,  209,  208,  206,  203,  201,  199,  195,
-      193,  190,  182,  181,  180,  178,  177,  176,  174,  173,
-      172,  170,  169,  168,  164,  161,  159,  158,  157,  156,
-      155,  153,  152,  151,  150,  149,  148,  146,  145,  144,
-      143,  142,  141,  140,  139,  138,  136,  135,  133,  131,
-      130,  129,  128,  126,  125,  124,  123,  121,  120,  118,
-      117,  116,  112,  104,  102,   97,   96,   77,   72,   66,
-
-       58,   49,   47,   43,   41,   39,   38,   24,   14,   11,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809, 1809,
-     1809, 1809, 1809, 1809
+      695,  694,  693,  692,  691,  690,  688,  686,  685,  684,
+      683,  682,  681,  677,  676,  674,  673,  672,  671,  670,
+      669,  668,  667,  666,  664,  663,  661,  660,  659,  658,
+
+      657,  656,  655,  654,  653,  652,  651,  650,  649,  647,
+      646,  645,  644,  643,  642,  641,  640,  639,  637,  636,
+      635,  634,  633,  632,  630,  629,  628,  627,  626,  625,
+      624,  622,  621,  620,  619,  618,  617,  616,  615,  614,
+      613,  612,  611,  610,  608,  607,  606,  605,  604,  603,
+      602,  601,  600,  599,  598,  597,  595,  594,  593,  592,
+      591,  590,  589,  588,  587,  586,  585,  584,  582,  581,
+      580,  579,  578,  577,  576,  575,  574,  573,  572,  571,
+      570,  569,  568,  567,  566,  565,  557,  556,  555,  553,
+      552,  551,  549,  548,  546,  544,  543,  542,  541,  540,
+
+      539,  538,  537,  536,  535,  534,  533,  532,  531,  530,
+      529,  528,  527,  526,  525,  524,  523,  522,  521,  520,
+      519,  518,  517,  516,  515,  514,  512,  510,  509,  508,
+      507,  506,  505,  504,  503,  502,  501,  500,  499,  498,
+      497,  495,  494,  493,  492,  491,  490,  489,  487,  486,
+      485,  484,  483,  482,  481,  480,  479,  478,  477,  476,
+      475,  473,  472,  471,  470,  468,  467,  466,  465,  464,
+      462,  461,  459,  458,  455,  454,  453,  452,  451,  450,
+      449,  447,  446,  445,  444,  443,  442,  441,  436,  434,
+      433,  431,  430,  428,  425,  423,  422,  420,  419,  418,
+
+      416,  415,  414,  413,  412,  411,  410,  409,  408,  407,
+      406,  405,  404,  403,  402,  400,  399,  398,  396,  395,
+      394,  393,  391,  390,  389,  388,  386,  385,  384,  383,
+      382,  381,  380,  379,  378,  377,  376,  374,  372,  371,
+      370,  369,  368,  367,  366,  364,  363,  362,  361,  360,
+      359,  358,  357,  356,  354,  353,  352,  351,  350,  349,
+      348,  347,  346,  345,  344,  343,  341,  340,  339,  338,
+      337,  334,  333,  332,  331,  330,  329,  328,  327,  326,
+      325,  324,  323,  319,  317,  314,  312,  308,  301,  299,
+      298,  297,  296,  295,  293,  292,  291,  290,  289,  288,
+
+      287,  286,  285,  283,  282,  281,  280,  279,  278,  277,
+      276,  274,  273,  272,  271,  270,  269,  268,  267,  266,
+      265,  264,  263,  262,  261,  260,  258,  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,  218,  216,  215,  214,  213,  212,
+      211,  210,  209,  208,  206,  203,  201,  199,  195,  193,
+      190,  182,  181,  180,  178,  177,  176,  174,  173,  172,
+      170,  169,  168,  164,  161,  159,  158,  157,  156,  155,
+
+      153,  152,  151,  150,  149,  148,  146,  145,  144,  143,
+      142,  141,  140,  139,  138,  136,  135,  133,  131,  130,
+      129,  128,  126,  125,  124,  123,  121,  120,  118,  117,
+      116,  112,  104,  102,   97,   96,   77,   72,   66,   58,
+       49,   47,   43,   41,   39,   38,   24,   14,   11, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848, 1848,
+     1848, 1848, 1848
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1873,7 +1893,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[197] =
+static const flex_int16_t yy_rule_linenum[199] =
     {   0,
       145,  147,  149,  154,  155,  160,  161,  162,  174,  177,
       182,  189,  198,  207,  216,  225,  234,  243,  253,  262,
@@ -1881,21 +1901,21 @@ static const flex_int16_t yy_rule_linenum[197] =
       361,  373,  382,  391,  400,  409,  420,  431,  442,  453,
       464,  475,  486,  497,  508,  519,  530,  541,  552,  563,
       574,  585,  594,  605,  616,  627,  638,  649,  658,  667,
-      676,  685,  696,  707,  718,  729,  740,  751,  761,  772,
-      781,  791,  805,  821,  830,  839,  848,  857,  879,  901,
-      910,  920,  929,  940,  949,  958,  967,  976,  985,  995,
-     1004, 1015, 1026, 1038, 1047, 1056, 1065, 1074, 1083, 1092,
-
-     1101, 1110, 1119, 1129, 1140, 1152, 1161, 1170, 1180, 1190,
-     1200, 1210, 1220, 1230, 1239, 1249, 1258, 1267, 1276, 1285,
-     1295, 1305, 1314, 1324, 1333, 1342, 1351, 1360, 1369, 1378,
-     1387, 1396, 1405, 1414, 1423, 1432, 1441, 1450, 1459, 1468,
-     1477, 1486, 1495, 1504, 1513, 1522, 1531, 1540, 1549, 1558,
-     1567, 1576, 1585, 1594, 1603, 1612, 1621, 1630, 1639, 1651,
-     1663, 1673, 1683, 1693, 1703, 1713, 1723, 1733, 1743, 1753,
-     1762, 1771, 1780, 1789, 1800, 1811, 1824, 1837, 1850, 1949,
-     1954, 1959, 1964, 1965, 1966, 1967, 1968, 1969, 1971, 1989,
-     2002, 2007, 2011, 2013, 2015, 2017
+      676,  685,  696,  707,  718,  729,  740,  751,  762,  773,
+      783,  794,  803,  813,  827,  843,  852,  861,  870,  879,
+      901,  923,  932,  942,  951,  962,  971,  980,  989,  998,
+     1007, 1017, 1026, 1037, 1048, 1060, 1069, 1078, 1087, 1096,
+
+     1105, 1114, 1123, 1132, 1141, 1151, 1162, 1174, 1183, 1192,
+     1202, 1212, 1222, 1232, 1242, 1252, 1261, 1271, 1280, 1289,
+     1298, 1307, 1317, 1327, 1336, 1346, 1355, 1364, 1373, 1382,
+     1391, 1400, 1409, 1418, 1427, 1436, 1445, 1454, 1463, 1472,
+     1481, 1490, 1499, 1508, 1517, 1526, 1535, 1544, 1553, 1562,
+     1571, 1580, 1589, 1598, 1607, 1616, 1625, 1634, 1643, 1652,
+     1661, 1673, 1685, 1695, 1705, 1715, 1725, 1735, 1745, 1755,
+     1765, 1775, 1784, 1793, 1802, 1811, 1822, 1833, 1846, 1859,
+     1872, 1971, 1976, 1981, 1986, 1987, 1988, 1989, 1990, 1991,
+     1993, 2011, 2024, 2029, 2033, 2035, 2037, 2039
 
     } ;
 
@@ -1949,7 +1969,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser4Context::fatal(msg)
-#line 1952 "dhcp4_lexer.cc"
+#line 1972 "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
@@ -1975,8 +1995,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 1978 "dhcp4_lexer.cc"
-#line 1979 "dhcp4_lexer.cc"
+#line 1998 "dhcp4_lexer.cc"
+#line 1999 "dhcp4_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2304,7 +2324,7 @@ YY_DECL
     }
 
 
-#line 2307 "dhcp4_lexer.cc"
+#line 2327 "dhcp4_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2333,13 +2353,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 >= 1810 )
+                               if ( yy_current_state >= 1849 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1809 );
+               while ( yy_current_state != 1848 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2358,13 +2378,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 < 197 )
+                       else if ( yy_act < 199 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 197 )
+                       else if ( yy_act == 199 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 198 )
+                       else if ( yy_act == 200 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3201,6 +3221,34 @@ YY_RULE_SETUP
 case 68:
 YY_RULE_SETUP
 #line 751 "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_DDNS_UPDATE_ON_RENEW(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("ddns-update-on-renew", driver.loc_);
+    }
+}
+       YY_BREAK
+case 69:
+YY_RULE_SETUP
+#line 762 "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_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp4Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
+    }
+}
+       YY_BREAK
+case 70:
+YY_RULE_SETUP
+#line 773 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3211,9 +3259,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 69:
+case 71:
 YY_RULE_SETUP
-#line 761 "dhcp4_lexer.ll"
+#line 783 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3225,9 +3273,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 70:
+case 72:
 YY_RULE_SETUP
-#line 772 "dhcp4_lexer.ll"
+#line 794 "dhcp4_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3237,9 +3285,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 71:
+case 73:
 YY_RULE_SETUP
-#line 781 "dhcp4_lexer.ll"
+#line 803 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3250,9 +3298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 72:
+case 74:
 YY_RULE_SETUP
-#line 791 "dhcp4_lexer.ll"
+#line 813 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3267,9 +3315,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 73:
+case 75:
 YY_RULE_SETUP
-#line 805 "dhcp4_lexer.ll"
+#line 827 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LEASE_DATABASE:
@@ -3286,9 +3334,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 74:
+case 76:
 YY_RULE_SETUP
-#line 821 "dhcp4_lexer.ll"
+#line 843 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3298,9 +3346,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 75:
+case 77:
 YY_RULE_SETUP
-#line 830 "dhcp4_lexer.ll"
+#line 852 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3310,9 +3358,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 76:
+case 78:
 YY_RULE_SETUP
-#line 839 "dhcp4_lexer.ll"
+#line 861 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3322,9 +3370,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 77:
+case 79:
 YY_RULE_SETUP
-#line 848 "dhcp4_lexer.ll"
+#line 870 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::POOLS:
@@ -3334,9 +3382,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 78:
+case 80:
 YY_RULE_SETUP
-#line 857 "dhcp4_lexer.ll"
+#line 879 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3359,9 +3407,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 79:
+case 81:
 YY_RULE_SETUP
-#line 879 "dhcp4_lexer.ll"
+#line 901 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3384,9 +3432,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 80:
+case 82:
 YY_RULE_SETUP
-#line 901 "dhcp4_lexer.ll"
+#line 923 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3396,9 +3444,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 81:
+case 83:
 YY_RULE_SETUP
-#line 910 "dhcp4_lexer.ll"
+#line 932 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3409,9 +3457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 82:
+case 84:
 YY_RULE_SETUP
-#line 920 "dhcp4_lexer.ll"
+#line 942 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3421,9 +3469,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 83:
+case 85:
 YY_RULE_SETUP
-#line 929 "dhcp4_lexer.ll"
+#line 951 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3435,9 +3483,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 84:
+case 86:
 YY_RULE_SETUP
-#line 940 "dhcp4_lexer.ll"
+#line 962 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3447,9 +3495,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 85:
+case 87:
 YY_RULE_SETUP
-#line 949 "dhcp4_lexer.ll"
+#line 971 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3459,9 +3507,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 86:
+case 88:
 YY_RULE_SETUP
-#line 958 "dhcp4_lexer.ll"
+#line 980 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3471,9 +3519,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 87:
+case 89:
 YY_RULE_SETUP
-#line 967 "dhcp4_lexer.ll"
+#line 989 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3483,9 +3531,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 88:
+case 90:
 YY_RULE_SETUP
-#line 976 "dhcp4_lexer.ll"
+#line 998 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATION_MODE:
@@ -3495,9 +3543,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 89:
+case 91:
 YY_RULE_SETUP
-#line 985 "dhcp4_lexer.ll"
+#line 1007 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3508,9 +3556,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 90:
+case 92:
 YY_RULE_SETUP
-#line 995 "dhcp4_lexer.ll"
+#line 1017 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3520,9 +3568,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 91:
+case 93:
 YY_RULE_SETUP
-#line 1004 "dhcp4_lexer.ll"
+#line 1026 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3534,9 +3582,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 94:
 YY_RULE_SETUP
-#line 1015 "dhcp4_lexer.ll"
+#line 1037 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3548,9 +3596,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 95:
 YY_RULE_SETUP
-#line 1026 "dhcp4_lexer.ll"
+#line 1048 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3562,9 +3610,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 96:
 YY_RULE_SETUP
-#line 1038 "dhcp4_lexer.ll"
+#line 1060 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3574,9 +3622,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1047 "dhcp4_lexer.ll"
+#line 1069 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3586,9 +3634,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1056 "dhcp4_lexer.ll"
+#line 1078 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3598,9 +3646,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1065 "dhcp4_lexer.ll"
+#line 1087 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3610,9 +3658,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1074 "dhcp4_lexer.ll"
+#line 1096 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3622,9 +3670,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1083 "dhcp4_lexer.ll"
+#line 1105 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3634,9 +3682,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1092 "dhcp4_lexer.ll"
+#line 1114 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3646,9 +3694,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1101 "dhcp4_lexer.ll"
+#line 1123 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OUTPUT_OPTIONS:
@@ -3658,9 +3706,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1110 "dhcp4_lexer.ll"
+#line 1132 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::LOGGERS:
@@ -3670,9 +3718,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1119 "dhcp4_lexer.ll"
+#line 1141 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3683,9 +3731,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1129 "dhcp4_lexer.ll"
+#line 1151 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3697,9 +3745,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1140 "dhcp4_lexer.ll"
+#line 1162 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3712,9 +3760,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1152 "dhcp4_lexer.ll"
+#line 1174 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3724,9 +3772,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1161 "dhcp4_lexer.ll"
+#line 1183 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CLIENT_CLASSES:
@@ -3736,9 +3784,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1170 "dhcp4_lexer.ll"
+#line 1192 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3749,9 +3797,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 1180 "dhcp4_lexer.ll"
+#line 1202 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3762,9 +3810,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 1190 "dhcp4_lexer.ll"
+#line 1212 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3775,9 +3823,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 113:
 YY_RULE_SETUP
-#line 1200 "dhcp4_lexer.ll"
+#line 1222 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3788,9 +3836,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 114:
 YY_RULE_SETUP
-#line 1210 "dhcp4_lexer.ll"
+#line 1232 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3801,9 +3849,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 115:
 YY_RULE_SETUP
-#line 1220 "dhcp4_lexer.ll"
+#line 1242 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOST_RESERVATION_IDENTIFIERS:
@@ -3814,9 +3862,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 1230 "dhcp4_lexer.ll"
+#line 1252 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RESERVATIONS:
@@ -3826,9 +3874,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 1239 "dhcp4_lexer.ll"
+#line 1261 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3839,9 +3887,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 1249 "dhcp4_lexer.ll"
+#line 1271 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DATA:
@@ -3851,9 +3899,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 119:
 YY_RULE_SETUP
-#line 1258 "dhcp4_lexer.ll"
+#line 1280 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3863,9 +3911,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 120:
 YY_RULE_SETUP
-#line 1267 "dhcp4_lexer.ll"
+#line 1289 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3875,9 +3923,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 121:
 YY_RULE_SETUP
-#line 1276 "dhcp4_lexer.ll"
+#line 1298 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::OPTION_DEF:
@@ -3887,9 +3935,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 122:
 YY_RULE_SETUP
-#line 1285 "dhcp4_lexer.ll"
+#line 1307 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -3900,9 +3948,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 1295 "dhcp4_lexer.ll"
+#line 1317 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3913,9 +3961,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 1305 "dhcp4_lexer.ll"
+#line 1327 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::RELAY:
@@ -3925,9 +3973,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 125:
 YY_RULE_SETUP
-#line 1314 "dhcp4_lexer.ll"
+#line 1336 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3937,9 +3985,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 1324 "dhcp4_lexer.ll"
+#line 1346 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3949,9 +3997,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 1333 "dhcp4_lexer.ll"
+#line 1355 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::HOOKS_LIBRARIES:
@@ -3961,9 +4009,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 1342 "dhcp4_lexer.ll"
+#line 1364 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -3973,9 +4021,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 129:
 YY_RULE_SETUP
-#line 1351 "dhcp4_lexer.ll"
+#line 1373 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3985,9 +4033,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1360 "dhcp4_lexer.ll"
+#line 1382 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -3997,9 +4045,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1369 "dhcp4_lexer.ll"
+#line 1391 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4009,9 +4057,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1378 "dhcp4_lexer.ll"
+#line 1400 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4021,9 +4069,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1387 "dhcp4_lexer.ll"
+#line 1409 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4033,9 +4081,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1396 "dhcp4_lexer.ll"
+#line 1418 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::EXPIRED_LEASES_PROCESSING:
@@ -4045,9 +4093,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1405 "dhcp4_lexer.ll"
+#line 1427 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4057,9 +4105,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1414 "dhcp4_lexer.ll"
+#line 1436 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4069,9 +4117,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1423 "dhcp4_lexer.ll"
+#line 1445 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4081,9 +4129,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1432 "dhcp4_lexer.ll"
+#line 1454 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4093,9 +4141,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1441 "dhcp4_lexer.ll"
+#line 1463 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_MULTI_THREADING:
@@ -4105,9 +4153,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1450 "dhcp4_lexer.ll"
+#line 1472 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4117,9 +4165,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1459 "dhcp4_lexer.ll"
+#line 1481 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -4129,9 +4177,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1468 "dhcp4_lexer.ll"
+#line 1490 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::CONTROL_SOCKET:
@@ -4141,9 +4189,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1477 "dhcp4_lexer.ll"
+#line 1499 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4153,9 +4201,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1486 "dhcp4_lexer.ll"
+#line 1508 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4165,9 +4213,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1495 "dhcp4_lexer.ll"
+#line 1517 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4177,9 +4225,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1504 "dhcp4_lexer.ll"
+#line 1526 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_QUEUE_CONTROL:
@@ -4189,9 +4237,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1513 "dhcp4_lexer.ll"
+#line 1535 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4201,9 +4249,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1522 "dhcp4_lexer.ll"
+#line 1544 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4213,9 +4261,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1531 "dhcp4_lexer.ll"
+#line 1553 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4225,9 +4273,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1540 "dhcp4_lexer.ll"
+#line 1562 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4237,9 +4285,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1549 "dhcp4_lexer.ll"
+#line 1571 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4249,9 +4297,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1558 "dhcp4_lexer.ll"
+#line 1580 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4261,9 +4309,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1567 "dhcp4_lexer.ll"
+#line 1589 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4273,9 +4321,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1576 "dhcp4_lexer.ll"
+#line 1598 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4285,9 +4333,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1585 "dhcp4_lexer.ll"
+#line 1607 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4297,9 +4345,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1594 "dhcp4_lexer.ll"
+#line 1616 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4309,9 +4357,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1603 "dhcp4_lexer.ll"
+#line 1625 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4321,9 +4369,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1612 "dhcp4_lexer.ll"
+#line 1634 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4333,9 +4381,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1621 "dhcp4_lexer.ll"
+#line 1643 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4345,9 +4393,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1630 "dhcp4_lexer.ll"
+#line 1652 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP_DDNS:
@@ -4357,9 +4405,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1639 "dhcp4_lexer.ll"
+#line 1661 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4372,9 +4420,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1651 "dhcp4_lexer.ll"
+#line 1673 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4387,9 +4435,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 163:
 YY_RULE_SETUP
-#line 1663 "dhcp4_lexer.ll"
+#line 1685 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4400,9 +4448,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 162:
+case 164:
 YY_RULE_SETUP
-#line 1673 "dhcp4_lexer.ll"
+#line 1695 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_PROTOCOL) {
@@ -4413,9 +4461,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 163:
+case 165:
 YY_RULE_SETUP
-#line 1683 "dhcp4_lexer.ll"
+#line 1705 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::NCR_FORMAT) {
@@ -4426,9 +4474,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 164:
+case 166:
 YY_RULE_SETUP
-#line 1693 "dhcp4_lexer.ll"
+#line 1715 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4439,9 +4487,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 165:
+case 167:
 YY_RULE_SETUP
-#line 1703 "dhcp4_lexer.ll"
+#line 1725 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4452,9 +4500,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 166:
+case 168:
 YY_RULE_SETUP
-#line 1713 "dhcp4_lexer.ll"
+#line 1735 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4465,9 +4513,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1723 "dhcp4_lexer.ll"
+#line 1745 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4478,9 +4526,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1733 "dhcp4_lexer.ll"
+#line 1755 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4491,9 +4539,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1743 "dhcp4_lexer.ll"
+#line 1765 "dhcp4_lexer.ll"
 {
     /* dhcp-ddns value keywords are case insensitive */
     if (driver.ctx_ == isc::dhcp::Parser4Context::REPLACE_CLIENT_NAME) {
@@ -4504,9 +4552,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(tmp, driver.loc_);
 }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1753 "dhcp4_lexer.ll"
+#line 1775 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4516,9 +4564,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1762 "dhcp4_lexer.ll"
+#line 1784 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4528,9 +4576,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1771 "dhcp4_lexer.ll"
+#line 1793 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::SUBNET4:
@@ -4540,9 +4588,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1780 "dhcp4_lexer.ll"
+#line 1802 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4552,9 +4600,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1789 "dhcp4_lexer.ll"
+#line 1811 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4566,9 +4614,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1800 "dhcp4_lexer.ll"
+#line 1822 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4580,9 +4628,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1811 "dhcp4_lexer.ll"
+#line 1833 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4596,9 +4644,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1824 "dhcp4_lexer.ll"
+#line 1846 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4612,9 +4660,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1837 "dhcp4_lexer.ll"
+#line 1859 "dhcp4_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser4Context::DHCP4:
@@ -4628,9 +4676,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 181:
 YY_RULE_SETUP
-#line 1850 "dhcp4_lexer.ll"
+#line 1872 "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.
@@ -4730,65 +4778,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 180:
-/* rule 180 can match eol */
+case 182:
+/* rule 182 can match eol */
 YY_RULE_SETUP
-#line 1949 "dhcp4_lexer.ll"
+#line 1971 "dhcp4_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 181:
-/* rule 181 can match eol */
+case 183:
+/* rule 183 can match eol */
 YY_RULE_SETUP
-#line 1954 "dhcp4_lexer.ll"
+#line 1976 "dhcp4_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 182:
+case 184:
 YY_RULE_SETUP
-#line 1959 "dhcp4_lexer.ll"
+#line 1981 "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 183:
+case 185:
 YY_RULE_SETUP
-#line 1964 "dhcp4_lexer.ll"
+#line 1986 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 184:
+case 186:
 YY_RULE_SETUP
-#line 1965 "dhcp4_lexer.ll"
+#line 1987 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 185:
+case 187:
 YY_RULE_SETUP
-#line 1966 "dhcp4_lexer.ll"
+#line 1988 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 186:
+case 188:
 YY_RULE_SETUP
-#line 1967 "dhcp4_lexer.ll"
+#line 1989 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 187:
+case 189:
 YY_RULE_SETUP
-#line 1968 "dhcp4_lexer.ll"
+#line 1990 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 188:
+case 190:
 YY_RULE_SETUP
-#line 1969 "dhcp4_lexer.ll"
+#line 1991 "dhcp4_lexer.ll"
 { return isc::dhcp::Dhcp4Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 189:
+case 191:
 YY_RULE_SETUP
-#line 1971 "dhcp4_lexer.ll"
+#line 1993 "dhcp4_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4807,9 +4855,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 190:
+case 192:
 YY_RULE_SETUP
-#line 1989 "dhcp4_lexer.ll"
+#line 2011 "dhcp4_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4823,43 +4871,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp4Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 191:
+case 193:
 YY_RULE_SETUP
-#line 2002 "dhcp4_lexer.ll"
+#line 2024 "dhcp4_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp4Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 192:
+case 194:
 YY_RULE_SETUP
-#line 2007 "dhcp4_lexer.ll"
+#line 2029 "dhcp4_lexer.ll"
 {
    return isc::dhcp::Dhcp4Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 193:
+case 195:
 YY_RULE_SETUP
-#line 2011 "dhcp4_lexer.ll"
+#line 2033 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 194:
+case 196:
 YY_RULE_SETUP
-#line 2013 "dhcp4_lexer.ll"
+#line 2035 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 195:
+case 197:
 YY_RULE_SETUP
-#line 2015 "dhcp4_lexer.ll"
+#line 2037 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 196:
+case 198:
 YY_RULE_SETUP
-#line 2017 "dhcp4_lexer.ll"
+#line 2039 "dhcp4_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2019 "dhcp4_lexer.ll"
+#line 2041 "dhcp4_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp4Parser::make_END(driver.loc_);
@@ -4883,12 +4931,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 197:
+case 199:
 YY_RULE_SETUP
-#line 2042 "dhcp4_lexer.ll"
+#line 2064 "dhcp4_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4891 "dhcp4_lexer.cc"
+#line 4939 "dhcp4_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5207,7 +5255,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 >= 1810 )
+                       if ( yy_current_state >= 1849 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5240,11 +5288,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 >= 1810 )
+               if ( yy_current_state >= 1849 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1809);
+       yy_is_jam = (yy_current_state == 1848);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -5993,7 +6041,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2042 "dhcp4_lexer.ll"
+#line 2064 "dhcp4_lexer.ll"
 
 
 using namespace isc::dhcp;
index a149cb8e018959dd7f40350fa328c9a32ca8a893..be51961ad75ea25ba0744e33cafce60366c1e545 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 #else // !PARSER4_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
@@ -209,30 +209,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -251,30 +251,30 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -293,30 +293,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -334,30 +334,30 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -386,7 +386,7 @@ namespace isc { namespace dhcp {
   Dhcp4Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YYUSE (yyoutput);
+    YY_USE (yyoutput);
     if (yysym.empty ())
       yyo << "empty symbol";
     else
@@ -397,74 +397,74 @@ namespace isc { namespace dhcp {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 186: // "constant string"
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_STRING: // "constant string"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 404 "dhcp4_parser.cc"
         break;
 
-      case 187: // "integer"
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_INTEGER: // "integer"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 410 "dhcp4_parser.cc"
         break;
 
-      case 188: // "floating point"
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_FLOAT: // "floating point"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 416 "dhcp4_parser.cc"
         break;
 
-      case 189: // "boolean"
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_BOOLEAN: // "boolean"
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 422 "dhcp4_parser.cc"
         break;
 
-      case 205: // value
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_value: // value
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 428 "dhcp4_parser.cc"
         break;
 
-      case 209: // map_value
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_map_value: // map_value
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 434 "dhcp4_parser.cc"
         break;
 
-      case 250: // ddns_replace_client_name_value
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 440 "dhcp4_parser.cc"
         break;
 
-      case 272: // socket_type
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_socket_type: // socket_type
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 446 "dhcp4_parser.cc"
         break;
 
-      case 275: // outbound_interface_value
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 452 "dhcp4_parser.cc"
         break;
 
-      case 297: // db_type
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_db_type: // db_type
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 458 "dhcp4_parser.cc"
         break;
 
-      case 391: // hr_mode
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_hr_mode: // hr_mode
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 464 "dhcp4_parser.cc"
         break;
 
-      case 546: // ncr_protocol_value
-#line 268 "dhcp4_parser.yy"
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+#line 270 "dhcp4_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 470 "dhcp4_parser.cc"
         break;
@@ -696,30 +696,30 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -743,128 +743,128 @@ namespace isc { namespace dhcp {
         {
           switch (yyn)
             {
-  case 2:
-#line 277 "dhcp4_parser.yy"
+  case 2: // $@1: %empty
+#line 279 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 750 "dhcp4_parser.cc"
     break;
 
-  case 4:
-#line 278 "dhcp4_parser.yy"
+  case 4: // $@2: %empty
+#line 280 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 756 "dhcp4_parser.cc"
     break;
 
-  case 6:
-#line 279 "dhcp4_parser.yy"
+  case 6: // $@3: %empty
+#line 281 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.DHCP4; }
 #line 762 "dhcp4_parser.cc"
     break;
 
-  case 8:
-#line 280 "dhcp4_parser.yy"
+  case 8: // $@4: %empty
+#line 282 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 768 "dhcp4_parser.cc"
     break;
 
-  case 10:
-#line 281 "dhcp4_parser.yy"
+  case 10: // $@5: %empty
+#line 283 "dhcp4_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET4; }
 #line 774 "dhcp4_parser.cc"
     break;
 
-  case 12:
-#line 282 "dhcp4_parser.yy"
+  case 12: // $@6: %empty
+#line 284 "dhcp4_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 780 "dhcp4_parser.cc"
     break;
 
-  case 14:
-#line 283 "dhcp4_parser.yy"
+  case 14: // $@7: %empty
+#line 285 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 786 "dhcp4_parser.cc"
     break;
 
-  case 16:
-#line 284 "dhcp4_parser.yy"
+  case 16: // $@8: %empty
+#line 286 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.DHCP4; }
 #line 792 "dhcp4_parser.cc"
     break;
 
-  case 18:
-#line 285 "dhcp4_parser.yy"
+  case 18: // $@9: %empty
+#line 287 "dhcp4_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 798 "dhcp4_parser.cc"
     break;
 
-  case 20:
-#line 286 "dhcp4_parser.yy"
+  case 20: // $@10: %empty
+#line 288 "dhcp4_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 804 "dhcp4_parser.cc"
     break;
 
-  case 22:
-#line 287 "dhcp4_parser.yy"
+  case 22: // $@11: %empty
+#line 289 "dhcp4_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 810 "dhcp4_parser.cc"
     break;
 
-  case 24:
-#line 288 "dhcp4_parser.yy"
+  case 24: // $@12: %empty
+#line 290 "dhcp4_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 816 "dhcp4_parser.cc"
     break;
 
-  case 26:
-#line 289 "dhcp4_parser.yy"
+  case 26: // $@13: %empty
+#line 291 "dhcp4_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 822 "dhcp4_parser.cc"
     break;
 
-  case 28:
-#line 297 "dhcp4_parser.yy"
+  case 28: // value: "integer"
+#line 299 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 828 "dhcp4_parser.cc"
     break;
 
-  case 29:
-#line 298 "dhcp4_parser.yy"
+  case 29: // value: "floating point"
+#line 300 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 834 "dhcp4_parser.cc"
     break;
 
-  case 30:
-#line 299 "dhcp4_parser.yy"
+  case 30: // value: "boolean"
+#line 301 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 840 "dhcp4_parser.cc"
     break;
 
-  case 31:
-#line 300 "dhcp4_parser.yy"
+  case 31: // value: "constant string"
+#line 302 "dhcp4_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 846 "dhcp4_parser.cc"
     break;
 
-  case 32:
-#line 301 "dhcp4_parser.yy"
+  case 32: // value: "null"
+#line 303 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 852 "dhcp4_parser.cc"
     break;
 
-  case 33:
-#line 302 "dhcp4_parser.yy"
+  case 33: // value: map2
+#line 304 "dhcp4_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 858 "dhcp4_parser.cc"
     break;
 
-  case 34:
-#line 303 "dhcp4_parser.yy"
+  case 34: // value: list_generic
+#line 305 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 864 "dhcp4_parser.cc"
     break;
 
-  case 35:
-#line 306 "dhcp4_parser.yy"
+  case 35: // sub_json: value
+#line 308 "dhcp4_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -872,8 +872,8 @@ namespace isc { namespace dhcp {
 #line 873 "dhcp4_parser.cc"
     break;
 
-  case 36:
-#line 311 "dhcp4_parser.yy"
+  case 36: // $@14: %empty
+#line 313 "dhcp4_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -883,8 +883,8 @@ namespace isc { namespace dhcp {
 #line 884 "dhcp4_parser.cc"
     break;
 
-  case 37:
-#line 316 "dhcp4_parser.yy"
+  case 37: // map2: "{" $@14 map_content "}"
+#line 318 "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
@@ -893,14 +893,14 @@ namespace isc { namespace dhcp {
 #line 894 "dhcp4_parser.cc"
     break;
 
-  case 38:
-#line 322 "dhcp4_parser.yy"
+  case 38: // map_value: map2
+#line 324 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 900 "dhcp4_parser.cc"
     break;
 
-  case 41:
-#line 329 "dhcp4_parser.yy"
+  case 41: // not_empty_map: "constant string" ":" value
+#line 331 "dhcp4_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -908,8 +908,8 @@ namespace isc { namespace dhcp {
 #line 909 "dhcp4_parser.cc"
     break;
 
-  case 42:
-#line 333 "dhcp4_parser.yy"
+  case 42: // not_empty_map: not_empty_map "," "constant string" ":" value
+#line 335 "dhcp4_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -918,8 +918,8 @@ namespace isc { namespace dhcp {
 #line 919 "dhcp4_parser.cc"
     break;
 
-  case 43:
-#line 340 "dhcp4_parser.yy"
+  case 43: // $@15: %empty
+#line 342 "dhcp4_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -927,16 +927,16 @@ namespace isc { namespace dhcp {
 #line 928 "dhcp4_parser.cc"
     break;
 
-  case 44:
-#line 343 "dhcp4_parser.yy"
+  case 44: // list_generic: "[" $@15 list_content "]"
+#line 345 "dhcp4_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
 #line 936 "dhcp4_parser.cc"
     break;
 
-  case 47:
-#line 351 "dhcp4_parser.yy"
+  case 47: // not_empty_list: value
+#line 353 "dhcp4_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -944,8 +944,8 @@ namespace isc { namespace dhcp {
 #line 945 "dhcp4_parser.cc"
     break;
 
-  case 48:
-#line 355 "dhcp4_parser.yy"
+  case 48: // not_empty_list: not_empty_list "," value
+#line 357 "dhcp4_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -953,16 +953,16 @@ namespace isc { namespace dhcp {
 #line 954 "dhcp4_parser.cc"
     break;
 
-  case 49:
-#line 362 "dhcp4_parser.yy"
+  case 49: // $@16: %empty
+#line 364 "dhcp4_parser.yy"
                               {
     // List parsing about to start
 }
 #line 962 "dhcp4_parser.cc"
     break;
 
-  case 50:
-#line 364 "dhcp4_parser.yy"
+  case 50: // list_strings: "[" $@16 list_strings_content "]"
+#line 366 "dhcp4_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -970,8 +970,8 @@ namespace isc { namespace dhcp {
 #line 971 "dhcp4_parser.cc"
     break;
 
-  case 53:
-#line 373 "dhcp4_parser.yy"
+  case 53: // not_empty_list_strings: "constant string"
+#line 375 "dhcp4_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -979,8 +979,8 @@ namespace isc { namespace dhcp {
 #line 980 "dhcp4_parser.cc"
     break;
 
-  case 54:
-#line 377 "dhcp4_parser.yy"
+  case 54: // not_empty_list_strings: not_empty_list_strings "," "constant string"
+#line 379 "dhcp4_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -988,8 +988,8 @@ namespace isc { namespace dhcp {
 #line 989 "dhcp4_parser.cc"
     break;
 
-  case 55:
-#line 388 "dhcp4_parser.yy"
+  case 55: // unknown_map_entry: "constant string" ":"
+#line 390 "dhcp4_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -999,8 +999,8 @@ namespace isc { namespace dhcp {
 #line 1000 "dhcp4_parser.cc"
     break;
 
-  case 56:
-#line 397 "dhcp4_parser.yy"
+  case 56: // $@17: %empty
+#line 399 "dhcp4_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1010,8 +1010,8 @@ namespace isc { namespace dhcp {
 #line 1011 "dhcp4_parser.cc"
     break;
 
-  case 57:
-#line 402 "dhcp4_parser.yy"
+  case 57: // syntax_map: "{" $@17 global_objects "}"
+#line 404 "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
@@ -1023,8 +1023,8 @@ namespace isc { namespace dhcp {
 #line 1024 "dhcp4_parser.cc"
     break;
 
-  case 61:
-#line 420 "dhcp4_parser.yy"
+  case 61: // $@18: %empty
+#line 422 "dhcp4_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1038,8 +1038,8 @@ namespace isc { namespace dhcp {
 #line 1039 "dhcp4_parser.cc"
     break;
 
-  case 62:
-#line 429 "dhcp4_parser.yy"
+  case 62: // dhcp4_object: "Dhcp4" $@18 ":" "{" global_params "}"
+#line 431 "dhcp4_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1048,8 +1048,8 @@ namespace isc { namespace dhcp {
 #line 1049 "dhcp4_parser.cc"
     break;
 
-  case 63:
-#line 437 "dhcp4_parser.yy"
+  case 63: // $@19: %empty
+#line 439 "dhcp4_parser.yy"
                           {
     // Parse the Dhcp4 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1058,8 +1058,8 @@ namespace isc { namespace dhcp {
 #line 1059 "dhcp4_parser.cc"
     break;
 
-  case 64:
-#line 441 "dhcp4_parser.yy"
+  case 64: // sub_dhcp4: "{" $@19 global_params "}"
+#line 443 "dhcp4_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1067,8 +1067,8 @@ namespace isc { namespace dhcp {
 #line 1068 "dhcp4_parser.cc"
     break;
 
-  case 119:
-#line 506 "dhcp4_parser.yy"
+  case 121: // valid_lifetime: "valid-lifetime" ":" "integer"
+#line 510 "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);
@@ -1076,8 +1076,8 @@ namespace isc { namespace dhcp {
 #line 1077 "dhcp4_parser.cc"
     break;
 
-  case 120:
-#line 511 "dhcp4_parser.yy"
+  case 122: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
+#line 515 "dhcp4_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);
@@ -1085,8 +1085,8 @@ namespace isc { namespace dhcp {
 #line 1086 "dhcp4_parser.cc"
     break;
 
-  case 121:
-#line 516 "dhcp4_parser.yy"
+  case 123: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
+#line 520 "dhcp4_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);
@@ -1094,8 +1094,8 @@ namespace isc { namespace dhcp {
 #line 1095 "dhcp4_parser.cc"
     break;
 
-  case 122:
-#line 521 "dhcp4_parser.yy"
+  case 124: // renew_timer: "renew-timer" ":" "integer"
+#line 525 "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);
@@ -1103,8 +1103,8 @@ namespace isc { namespace dhcp {
 #line 1104 "dhcp4_parser.cc"
     break;
 
-  case 123:
-#line 526 "dhcp4_parser.yy"
+  case 125: // rebind_timer: "rebind-timer" ":" "integer"
+#line 530 "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);
@@ -1112,8 +1112,8 @@ namespace isc { namespace dhcp {
 #line 1113 "dhcp4_parser.cc"
     break;
 
-  case 124:
-#line 531 "dhcp4_parser.yy"
+  case 126: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
+#line 535 "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);
@@ -1121,8 +1121,8 @@ namespace isc { namespace dhcp {
 #line 1122 "dhcp4_parser.cc"
     break;
 
-  case 125:
-#line 536 "dhcp4_parser.yy"
+  case 127: // t1_percent: "t1-percent" ":" "floating point"
+#line 540 "dhcp4_parser.yy"
                                    {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
@@ -1130,8 +1130,8 @@ namespace isc { namespace dhcp {
 #line 1131 "dhcp4_parser.cc"
     break;
 
-  case 126:
-#line 541 "dhcp4_parser.yy"
+  case 128: // t2_percent: "t2-percent" ":" "floating point"
+#line 545 "dhcp4_parser.yy"
                                    {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
@@ -1139,8 +1139,8 @@ namespace isc { namespace dhcp {
 #line 1140 "dhcp4_parser.cc"
     break;
 
-  case 127:
-#line 546 "dhcp4_parser.yy"
+  case 129: // decline_probation_period: "decline-probation-period" ":" "integer"
+#line 550 "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);
@@ -1148,16 +1148,16 @@ namespace isc { namespace dhcp {
 #line 1149 "dhcp4_parser.cc"
     break;
 
-  case 128:
-#line 551 "dhcp4_parser.yy"
+  case 130: // $@20: %empty
+#line 555 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1157 "dhcp4_parser.cc"
     break;
 
-  case 129:
-#line 553 "dhcp4_parser.yy"
+  case 131: // server_tag: "server-tag" $@20 ":" "constant string"
+#line 557 "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);
@@ -1166,8 +1166,8 @@ namespace isc { namespace dhcp {
 #line 1167 "dhcp4_parser.cc"
     break;
 
-  case 130:
-#line 559 "dhcp4_parser.yy"
+  case 132: // echo_client_id: "echo-client-id" ":" "boolean"
+#line 563 "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);
@@ -1175,8 +1175,8 @@ namespace isc { namespace dhcp {
 #line 1176 "dhcp4_parser.cc"
     break;
 
-  case 131:
-#line 564 "dhcp4_parser.yy"
+  case 133: // match_client_id: "match-client-id" ":" "boolean"
+#line 568 "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);
@@ -1184,8 +1184,8 @@ namespace isc { namespace dhcp {
 #line 1185 "dhcp4_parser.cc"
     break;
 
-  case 132:
-#line 569 "dhcp4_parser.yy"
+  case 134: // authoritative: "authoritative" ":" "boolean"
+#line 573 "dhcp4_parser.yy"
                                            {
     ElementPtr prf(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("authoritative", prf);
@@ -1193,8 +1193,8 @@ namespace isc { namespace dhcp {
 #line 1194 "dhcp4_parser.cc"
     break;
 
-  case 133:
-#line 574 "dhcp4_parser.yy"
+  case 135: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
+#line 578 "dhcp4_parser.yy"
                                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
@@ -1202,8 +1202,8 @@ namespace isc { namespace dhcp {
 #line 1203 "dhcp4_parser.cc"
     break;
 
-  case 134:
-#line 579 "dhcp4_parser.yy"
+  case 136: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
+#line 583 "dhcp4_parser.yy"
                                                                {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
@@ -1211,8 +1211,8 @@ namespace isc { namespace dhcp {
 #line 1212 "dhcp4_parser.cc"
     break;
 
-  case 135:
-#line 584 "dhcp4_parser.yy"
+  case 137: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
+#line 588 "dhcp4_parser.yy"
                                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
@@ -1220,16 +1220,16 @@ namespace isc { namespace dhcp {
 #line 1221 "dhcp4_parser.cc"
     break;
 
-  case 136:
-#line 589 "dhcp4_parser.yy"
+  case 138: // $@21: %empty
+#line 593 "dhcp4_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 1229 "dhcp4_parser.cc"
     break;
 
-  case 137:
-#line 591 "dhcp4_parser.yy"
+  case 139: // ddns_replace_client_name: "ddns-replace-client-name" $@21 ":" ddns_replace_client_name_value
+#line 595 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1237,40 +1237,40 @@ namespace isc { namespace dhcp {
 #line 1238 "dhcp4_parser.cc"
     break;
 
-  case 138:
-#line 597 "dhcp4_parser.yy"
+  case 140: // ddns_replace_client_name_value: "when-present"
+#line 601 "dhcp4_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1246 "dhcp4_parser.cc"
     break;
 
-  case 139:
-#line 600 "dhcp4_parser.yy"
+  case 141: // ddns_replace_client_name_value: "never"
+#line 604 "dhcp4_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1254 "dhcp4_parser.cc"
     break;
 
-  case 140:
-#line 603 "dhcp4_parser.yy"
+  case 142: // ddns_replace_client_name_value: "always"
+#line 607 "dhcp4_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1262 "dhcp4_parser.cc"
     break;
 
-  case 141:
-#line 606 "dhcp4_parser.yy"
+  case 143: // ddns_replace_client_name_value: "when-not-present"
+#line 610 "dhcp4_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1270 "dhcp4_parser.cc"
     break;
 
-  case 142:
-#line 609 "dhcp4_parser.yy"
+  case 144: // ddns_replace_client_name_value: "boolean"
+#line 613 "dhcp4_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -1278,16 +1278,16 @@ namespace isc { namespace dhcp {
 #line 1279 "dhcp4_parser.cc"
     break;
 
-  case 143:
-#line 615 "dhcp4_parser.yy"
+  case 145: // $@22: %empty
+#line 619 "dhcp4_parser.yy"
                                              {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1287 "dhcp4_parser.cc"
     break;
 
-  case 144:
-#line 617 "dhcp4_parser.yy"
+  case 146: // ddns_generated_prefix: "ddns-generated-prefix" $@22 ":" "constant string"
+#line 621 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1296,16 +1296,16 @@ namespace isc { namespace dhcp {
 #line 1297 "dhcp4_parser.cc"
     break;
 
-  case 145:
-#line 623 "dhcp4_parser.yy"
+  case 147: // $@23: %empty
+#line 627 "dhcp4_parser.yy"
                                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1305 "dhcp4_parser.cc"
     break;
 
-  case 146:
-#line 625 "dhcp4_parser.yy"
+  case 148: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@23 ":" "constant string"
+#line 629 "dhcp4_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1314,252 +1314,272 @@ namespace isc { namespace dhcp {
 #line 1315 "dhcp4_parser.cc"
     break;
 
-  case 147:
-#line 631 "dhcp4_parser.yy"
+  case 149: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
+#line 635 "dhcp4_parser.yy"
+                                                         {
+    ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ddns-update-on-renew", b);
+}
+#line 1325 "dhcp4_parser.cc"
+    break;
+
+  case 150: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
+#line 641 "dhcp4_parser.yy"
+                                                                         {
+    ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+}
+#line 1335 "dhcp4_parser.cc"
+    break;
+
+  case 151: // $@24: %empty
+#line 647 "dhcp4_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1323 "dhcp4_parser.cc"
+#line 1343 "dhcp4_parser.cc"
     break;
 
-  case 148:
-#line 633 "dhcp4_parser.yy"
+  case 152: // hostname_char_set: "hostname-char-set" $@24 ":" "constant string"
+#line 649 "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 1333 "dhcp4_parser.cc"
+#line 1353 "dhcp4_parser.cc"
     break;
 
-  case 149:
-#line 639 "dhcp4_parser.yy"
+  case 153: // $@25: %empty
+#line 655 "dhcp4_parser.yy"
                                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1341 "dhcp4_parser.cc"
+#line 1361 "dhcp4_parser.cc"
     break;
 
-  case 150:
-#line 641 "dhcp4_parser.yy"
+  case 154: // hostname_char_replacement: "hostname-char-replacement" $@25 ":" "constant string"
+#line 657 "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 1351 "dhcp4_parser.cc"
+#line 1371 "dhcp4_parser.cc"
     break;
 
-  case 151:
-#line 647 "dhcp4_parser.yy"
+  case 155: // store_extended_info: "store-extended-info" ":" "boolean"
+#line 663 "dhcp4_parser.yy"
                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("store-extended-info", b);
 }
-#line 1360 "dhcp4_parser.cc"
+#line 1380 "dhcp4_parser.cc"
     break;
 
-  case 152:
-#line 652 "dhcp4_parser.yy"
+  case 156: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
+#line 668 "dhcp4_parser.yy"
                                                                              {
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1369 "dhcp4_parser.cc"
+#line 1389 "dhcp4_parser.cc"
     break;
 
-  case 153:
-#line 657 "dhcp4_parser.yy"
+  case 157: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
+#line 673 "dhcp4_parser.yy"
                                                                          {
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1378 "dhcp4_parser.cc"
+#line 1398 "dhcp4_parser.cc"
     break;
 
-  case 154:
-#line 662 "dhcp4_parser.yy"
+  case 158: // $@26: %empty
+#line 678 "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 1389 "dhcp4_parser.cc"
+#line 1409 "dhcp4_parser.cc"
     break;
 
-  case 155:
-#line 667 "dhcp4_parser.yy"
+  case 159: // interfaces_config: "interfaces-config" $@26 ":" "{" interfaces_config_params "}"
+#line 683 "dhcp4_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1399 "dhcp4_parser.cc"
+#line 1419 "dhcp4_parser.cc"
     break;
 
-  case 165:
-#line 686 "dhcp4_parser.yy"
+  case 169: // $@27: %empty
+#line 702 "dhcp4_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1409 "dhcp4_parser.cc"
+#line 1429 "dhcp4_parser.cc"
     break;
 
-  case 166:
-#line 690 "dhcp4_parser.yy"
+  case 170: // sub_interfaces4: "{" $@27 interfaces_config_params "}"
+#line 706 "dhcp4_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1418 "dhcp4_parser.cc"
+#line 1438 "dhcp4_parser.cc"
     break;
 
-  case 167:
-#line 695 "dhcp4_parser.yy"
+  case 171: // $@28: %empty
+#line 711 "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 1429 "dhcp4_parser.cc"
+#line 1449 "dhcp4_parser.cc"
     break;
 
-  case 168:
-#line 700 "dhcp4_parser.yy"
+  case 172: // interfaces_list: "interfaces" $@28 ":" list_strings
+#line 716 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1438 "dhcp4_parser.cc"
+#line 1458 "dhcp4_parser.cc"
     break;
 
-  case 169:
-#line 705 "dhcp4_parser.yy"
+  case 173: // $@29: %empty
+#line 721 "dhcp4_parser.yy"
                                    {
     ctx.enter(ctx.DHCP_SOCKET_TYPE);
 }
-#line 1446 "dhcp4_parser.cc"
+#line 1466 "dhcp4_parser.cc"
     break;
 
-  case 170:
-#line 707 "dhcp4_parser.yy"
+  case 174: // dhcp_socket_type: "dhcp-socket-type" $@29 ":" socket_type
+#line 723 "dhcp4_parser.yy"
                     {
     ctx.stack_.back()->set("dhcp-socket-type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1455 "dhcp4_parser.cc"
+#line 1475 "dhcp4_parser.cc"
     break;
 
-  case 171:
-#line 712 "dhcp4_parser.yy"
+  case 175: // socket_type: "raw"
+#line 728 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("raw", ctx.loc2pos(yystack_[0].location))); }
-#line 1461 "dhcp4_parser.cc"
+#line 1481 "dhcp4_parser.cc"
     break;
 
-  case 172:
-#line 713 "dhcp4_parser.yy"
+  case 176: // socket_type: "udp"
+#line 729 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("udp", ctx.loc2pos(yystack_[0].location))); }
-#line 1467 "dhcp4_parser.cc"
+#line 1487 "dhcp4_parser.cc"
     break;
 
-  case 173:
-#line 716 "dhcp4_parser.yy"
+  case 177: // $@30: %empty
+#line 732 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.OUTBOUND_INTERFACE);
 }
-#line 1475 "dhcp4_parser.cc"
+#line 1495 "dhcp4_parser.cc"
     break;
 
-  case 174:
-#line 718 "dhcp4_parser.yy"
+  case 178: // outbound_interface: "outbound-interface" $@30 ":" outbound_interface_value
+#line 734 "dhcp4_parser.yy"
                                  {
     ctx.stack_.back()->set("outbound-interface", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1484 "dhcp4_parser.cc"
+#line 1504 "dhcp4_parser.cc"
     break;
 
-  case 175:
-#line 723 "dhcp4_parser.yy"
+  case 179: // outbound_interface_value: "same-as-inbound"
+#line 739 "dhcp4_parser.yy"
                                           {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("same-as-inbound", ctx.loc2pos(yystack_[0].location)));
 }
-#line 1492 "dhcp4_parser.cc"
+#line 1512 "dhcp4_parser.cc"
     break;
 
-  case 176:
-#line 725 "dhcp4_parser.yy"
+  case 180: // outbound_interface_value: "use-routing"
+#line 741 "dhcp4_parser.yy"
                 {
     yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("use-routing", ctx.loc2pos(yystack_[0].location)));
     }
-#line 1500 "dhcp4_parser.cc"
+#line 1520 "dhcp4_parser.cc"
     break;
 
-  case 177:
-#line 729 "dhcp4_parser.yy"
+  case 181: // re_detect: "re-detect" ":" "boolean"
+#line 745 "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 1509 "dhcp4_parser.cc"
+#line 1529 "dhcp4_parser.cc"
     break;
 
-  case 178:
-#line 735 "dhcp4_parser.yy"
+  case 182: // $@31: %empty
+#line 751 "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 1520 "dhcp4_parser.cc"
+#line 1540 "dhcp4_parser.cc"
     break;
 
-  case 179:
-#line 740 "dhcp4_parser.yy"
+  case 183: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
+#line 756 "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 1531 "dhcp4_parser.cc"
+#line 1551 "dhcp4_parser.cc"
     break;
 
-  case 180:
-#line 747 "dhcp4_parser.yy"
+  case 184: // $@32: %empty
+#line 763 "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 1542 "dhcp4_parser.cc"
+#line 1562 "dhcp4_parser.cc"
     break;
 
-  case 181:
-#line 752 "dhcp4_parser.yy"
+  case 185: // sanity_checks: "sanity-checks" $@32 ":" "{" sanity_checks_params "}"
+#line 768 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1551 "dhcp4_parser.cc"
+#line 1571 "dhcp4_parser.cc"
     break;
 
-  case 185:
-#line 762 "dhcp4_parser.yy"
+  case 189: // $@33: %empty
+#line 778 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1559 "dhcp4_parser.cc"
+#line 1579 "dhcp4_parser.cc"
     break;
 
-  case 186:
-#line 764 "dhcp4_parser.yy"
+  case 190: // lease_checks: "lease-checks" $@33 ":" "constant string"
+#line 780 "dhcp4_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1575,671 +1595,671 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1579 "dhcp4_parser.cc"
+#line 1599 "dhcp4_parser.cc"
     break;
 
-  case 187:
-#line 780 "dhcp4_parser.yy"
+  case 191: // $@34: %empty
+#line 796 "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 1590 "dhcp4_parser.cc"
+#line 1610 "dhcp4_parser.cc"
     break;
 
-  case 188:
-#line 785 "dhcp4_parser.yy"
+  case 192: // hosts_database: "hosts-database" $@34 ":" "{" database_map_params "}"
+#line 801 "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 1601 "dhcp4_parser.cc"
+#line 1621 "dhcp4_parser.cc"
     break;
 
-  case 189:
-#line 792 "dhcp4_parser.yy"
+  case 193: // $@35: %empty
+#line 808 "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 1612 "dhcp4_parser.cc"
+#line 1632 "dhcp4_parser.cc"
     break;
 
-  case 190:
-#line 797 "dhcp4_parser.yy"
+  case 194: // hosts_databases: "hosts-databases" $@35 ":" "[" database_list "]"
+#line 813 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1621 "dhcp4_parser.cc"
+#line 1641 "dhcp4_parser.cc"
     break;
 
-  case 195:
-#line 810 "dhcp4_parser.yy"
+  case 199: // $@36: %empty
+#line 826 "dhcp4_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1631 "dhcp4_parser.cc"
+#line 1651 "dhcp4_parser.cc"
     break;
 
-  case 196:
-#line 814 "dhcp4_parser.yy"
+  case 200: // database: "{" $@36 database_map_params "}"
+#line 830 "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 1641 "dhcp4_parser.cc"
+#line 1661 "dhcp4_parser.cc"
     break;
 
-  case 220:
-#line 847 "dhcp4_parser.yy"
+  case 224: // $@37: %empty
+#line 863 "dhcp4_parser.yy"
                     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1649 "dhcp4_parser.cc"
+#line 1669 "dhcp4_parser.cc"
     break;
 
-  case 221:
-#line 849 "dhcp4_parser.yy"
+  case 225: // database_type: "type" $@37 ":" db_type
+#line 865 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1658 "dhcp4_parser.cc"
+#line 1678 "dhcp4_parser.cc"
     break;
 
-  case 222:
-#line 854 "dhcp4_parser.yy"
+  case 226: // db_type: "memfile"
+#line 870 "dhcp4_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1664 "dhcp4_parser.cc"
+#line 1684 "dhcp4_parser.cc"
     break;
 
-  case 223:
-#line 855 "dhcp4_parser.yy"
+  case 227: // db_type: "mysql"
+#line 871 "dhcp4_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1670 "dhcp4_parser.cc"
+#line 1690 "dhcp4_parser.cc"
     break;
 
-  case 224:
-#line 856 "dhcp4_parser.yy"
+  case 228: // db_type: "postgresql"
+#line 872 "dhcp4_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1676 "dhcp4_parser.cc"
+#line 1696 "dhcp4_parser.cc"
     break;
 
-  case 225:
-#line 857 "dhcp4_parser.yy"
+  case 229: // db_type: "cql"
+#line 873 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1682 "dhcp4_parser.cc"
+#line 1702 "dhcp4_parser.cc"
     break;
 
-  case 226:
-#line 860 "dhcp4_parser.yy"
+  case 230: // $@38: %empty
+#line 876 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1690 "dhcp4_parser.cc"
+#line 1710 "dhcp4_parser.cc"
     break;
 
-  case 227:
-#line 862 "dhcp4_parser.yy"
+  case 231: // user: "user" $@38 ":" "constant string"
+#line 878 "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 1700 "dhcp4_parser.cc"
+#line 1720 "dhcp4_parser.cc"
     break;
 
-  case 228:
-#line 868 "dhcp4_parser.yy"
+  case 232: // $@39: %empty
+#line 884 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1708 "dhcp4_parser.cc"
+#line 1728 "dhcp4_parser.cc"
     break;
 
-  case 229:
-#line 870 "dhcp4_parser.yy"
+  case 233: // password: "password" $@39 ":" "constant string"
+#line 886 "dhcp4_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 1718 "dhcp4_parser.cc"
+#line 1738 "dhcp4_parser.cc"
     break;
 
-  case 230:
-#line 876 "dhcp4_parser.yy"
+  case 234: // $@40: %empty
+#line 892 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1726 "dhcp4_parser.cc"
+#line 1746 "dhcp4_parser.cc"
     break;
 
-  case 231:
-#line 878 "dhcp4_parser.yy"
+  case 235: // host: "host" $@40 ":" "constant string"
+#line 894 "dhcp4_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 1736 "dhcp4_parser.cc"
+#line 1756 "dhcp4_parser.cc"
     break;
 
-  case 232:
-#line 884 "dhcp4_parser.yy"
+  case 236: // port: "port" ":" "integer"
+#line 900 "dhcp4_parser.yy"
                          {
     ElementPtr p(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("port", p);
 }
-#line 1745 "dhcp4_parser.cc"
+#line 1765 "dhcp4_parser.cc"
     break;
 
-  case 233:
-#line 889 "dhcp4_parser.yy"
+  case 237: // $@41: %empty
+#line 905 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1753 "dhcp4_parser.cc"
+#line 1773 "dhcp4_parser.cc"
     break;
 
-  case 234:
-#line 891 "dhcp4_parser.yy"
+  case 238: // name: "name" $@41 ":" "constant string"
+#line 907 "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();
 }
-#line 1763 "dhcp4_parser.cc"
+#line 1783 "dhcp4_parser.cc"
     break;
 
-  case 235:
-#line 897 "dhcp4_parser.yy"
+  case 239: // persist: "persist" ":" "boolean"
+#line 913 "dhcp4_parser.yy"
                                {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1772 "dhcp4_parser.cc"
+#line 1792 "dhcp4_parser.cc"
     break;
 
-  case 236:
-#line 902 "dhcp4_parser.yy"
+  case 240: // lfc_interval: "lfc-interval" ":" "integer"
+#line 918 "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);
 }
-#line 1781 "dhcp4_parser.cc"
+#line 1801 "dhcp4_parser.cc"
     break;
 
-  case 237:
-#line 907 "dhcp4_parser.yy"
+  case 241: // readonly: "readonly" ":" "boolean"
+#line 923 "dhcp4_parser.yy"
                                  {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1790 "dhcp4_parser.cc"
+#line 1810 "dhcp4_parser.cc"
     break;
 
-  case 238:
-#line 912 "dhcp4_parser.yy"
+  case 242: // connect_timeout: "connect-timeout" ":" "integer"
+#line 928 "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);
 }
-#line 1799 "dhcp4_parser.cc"
+#line 1819 "dhcp4_parser.cc"
     break;
 
-  case 239:
-#line 917 "dhcp4_parser.yy"
+  case 243: // request_timeout: "request-timeout" ":" "integer"
+#line 933 "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);
 }
-#line 1808 "dhcp4_parser.cc"
+#line 1828 "dhcp4_parser.cc"
     break;
 
-  case 240:
-#line 922 "dhcp4_parser.yy"
+  case 244: // tcp_keepalive: "tcp-keepalive" ":" "integer"
+#line 938 "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);
 }
-#line 1817 "dhcp4_parser.cc"
+#line 1837 "dhcp4_parser.cc"
     break;
 
-  case 241:
-#line 927 "dhcp4_parser.yy"
+  case 245: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
+#line 943 "dhcp4_parser.yy"
                                        {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("tcp-nodelay", n);
 }
-#line 1826 "dhcp4_parser.cc"
+#line 1846 "dhcp4_parser.cc"
     break;
 
-  case 242:
-#line 932 "dhcp4_parser.yy"
+  case 246: // $@42: %empty
+#line 948 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1834 "dhcp4_parser.cc"
+#line 1854 "dhcp4_parser.cc"
     break;
 
-  case 243:
-#line 934 "dhcp4_parser.yy"
+  case 247: // contact_points: "contact-points" $@42 ":" "constant string"
+#line 950 "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();
 }
-#line 1844 "dhcp4_parser.cc"
+#line 1864 "dhcp4_parser.cc"
     break;
 
-  case 244:
-#line 940 "dhcp4_parser.yy"
+  case 248: // $@43: %empty
+#line 956 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1852 "dhcp4_parser.cc"
+#line 1872 "dhcp4_parser.cc"
     break;
 
-  case 245:
-#line 942 "dhcp4_parser.yy"
+  case 249: // keyspace: "keyspace" $@43 ":" "constant string"
+#line 958 "dhcp4_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 1862 "dhcp4_parser.cc"
+#line 1882 "dhcp4_parser.cc"
     break;
 
-  case 246:
-#line 948 "dhcp4_parser.yy"
+  case 250: // $@44: %empty
+#line 964 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1870 "dhcp4_parser.cc"
+#line 1890 "dhcp4_parser.cc"
     break;
 
-  case 247:
-#line 950 "dhcp4_parser.yy"
+  case 251: // consistency: "consistency" $@44 ":" "constant string"
+#line 966 "dhcp4_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 1880 "dhcp4_parser.cc"
+#line 1900 "dhcp4_parser.cc"
     break;
 
-  case 248:
-#line 956 "dhcp4_parser.yy"
+  case 252: // $@45: %empty
+#line 972 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1888 "dhcp4_parser.cc"
+#line 1908 "dhcp4_parser.cc"
     break;
 
-  case 249:
-#line 958 "dhcp4_parser.yy"
+  case 253: // serial_consistency: "serial-consistency" $@45 ":" "constant string"
+#line 974 "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.leave();
 }
-#line 1898 "dhcp4_parser.cc"
+#line 1918 "dhcp4_parser.cc"
     break;
 
-  case 250:
-#line 964 "dhcp4_parser.yy"
+  case 254: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
+#line 980 "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);
 }
-#line 1907 "dhcp4_parser.cc"
+#line 1927 "dhcp4_parser.cc"
     break;
 
-  case 251:
-#line 969 "dhcp4_parser.yy"
+  case 255: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
+#line 985 "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);
 }
-#line 1916 "dhcp4_parser.cc"
+#line 1936 "dhcp4_parser.cc"
     break;
 
-  case 252:
-#line 974 "dhcp4_parser.yy"
+  case 256: // max_row_errors: "max-row-errors" ":" "integer"
+#line 990 "dhcp4_parser.yy"
                                              {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-row-errors", n);
 }
-#line 1925 "dhcp4_parser.cc"
+#line 1945 "dhcp4_parser.cc"
     break;
 
-  case 253:
-#line 980 "dhcp4_parser.yy"
+  case 257: // $@46: %empty
+#line 996 "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);
 }
-#line 1936 "dhcp4_parser.cc"
+#line 1956 "dhcp4_parser.cc"
     break;
 
-  case 254:
-#line 985 "dhcp4_parser.yy"
+  case 258: // host_reservation_identifiers: "host-reservation-identifiers" $@46 ":" "[" host_reservation_identifiers_list "]"
+#line 1001 "dhcp4_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1945 "dhcp4_parser.cc"
+#line 1965 "dhcp4_parser.cc"
     break;
 
-  case 262:
-#line 1001 "dhcp4_parser.yy"
+  case 266: // duid_id: "duid"
+#line 1017 "dhcp4_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1954 "dhcp4_parser.cc"
+#line 1974 "dhcp4_parser.cc"
     break;
 
-  case 263:
-#line 1006 "dhcp4_parser.yy"
+  case 267: // hw_address_id: "hw-address"
+#line 1022 "dhcp4_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1963 "dhcp4_parser.cc"
+#line 1983 "dhcp4_parser.cc"
     break;
 
-  case 264:
-#line 1011 "dhcp4_parser.yy"
+  case 268: // circuit_id: "circuit-id"
+#line 1027 "dhcp4_parser.yy"
                         {
     ElementPtr circuit(new StringElement("circuit-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(circuit);
 }
-#line 1972 "dhcp4_parser.cc"
+#line 1992 "dhcp4_parser.cc"
     break;
 
-  case 265:
-#line 1016 "dhcp4_parser.yy"
+  case 269: // client_id: "client-id"
+#line 1032 "dhcp4_parser.yy"
                       {
     ElementPtr client(new StringElement("client-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(client);
 }
-#line 1981 "dhcp4_parser.cc"
+#line 2001 "dhcp4_parser.cc"
     break;
 
-  case 266:
-#line 1021 "dhcp4_parser.yy"
+  case 270: // flex_id: "flex-id"
+#line 1037 "dhcp4_parser.yy"
                  {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1990 "dhcp4_parser.cc"
+#line 2010 "dhcp4_parser.cc"
     break;
 
-  case 267:
-#line 1028 "dhcp4_parser.yy"
+  case 271: // $@47: %empty
+#line 1044 "dhcp4_parser.yy"
                                            {
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("multi-threading", mt);
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 2001 "dhcp4_parser.cc"
+#line 2021 "dhcp4_parser.cc"
     break;
 
-  case 268:
-#line 1033 "dhcp4_parser.yy"
+  case 272: // dhcp_multi_threading: "multi-threading" $@47 ":" "{" multi_threading_params "}"
+#line 1049 "dhcp4_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2012 "dhcp4_parser.cc"
+#line 2032 "dhcp4_parser.cc"
     break;
 
-  case 277:
-#line 1052 "dhcp4_parser.yy"
+  case 281: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
+#line 1068 "dhcp4_parser.yy"
                                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-multi-threading", b);
 }
-#line 2021 "dhcp4_parser.cc"
+#line 2041 "dhcp4_parser.cc"
     break;
 
-  case 278:
-#line 1057 "dhcp4_parser.yy"
+  case 282: // thread_pool_size: "thread-pool-size" ":" "integer"
+#line 1073 "dhcp4_parser.yy"
                                                  {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("thread-pool-size", prf);
 }
-#line 2030 "dhcp4_parser.cc"
+#line 2050 "dhcp4_parser.cc"
     break;
 
-  case 279:
-#line 1062 "dhcp4_parser.yy"
+  case 283: // packet_queue_size: "packet-queue-size" ":" "integer"
+#line 1078 "dhcp4_parser.yy"
                                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("packet-queue-size", prf);
 }
-#line 2039 "dhcp4_parser.cc"
+#line 2059 "dhcp4_parser.cc"
     break;
 
-  case 280:
-#line 1067 "dhcp4_parser.yy"
+  case 284: // $@48: %empty
+#line 1083 "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 2050 "dhcp4_parser.cc"
+#line 2070 "dhcp4_parser.cc"
     break;
 
-  case 281:
-#line 1072 "dhcp4_parser.yy"
+  case 285: // hooks_libraries: "hooks-libraries" $@48 ":" "[" hooks_libraries_list "]"
+#line 1088 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2059 "dhcp4_parser.cc"
+#line 2079 "dhcp4_parser.cc"
     break;
 
-  case 286:
-#line 1085 "dhcp4_parser.yy"
+  case 290: // $@49: %empty
+#line 1101 "dhcp4_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2069 "dhcp4_parser.cc"
+#line 2089 "dhcp4_parser.cc"
     break;
 
-  case 287:
-#line 1089 "dhcp4_parser.yy"
+  case 291: // hooks_library: "{" $@49 hooks_params "}"
+#line 1105 "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 2079 "dhcp4_parser.cc"
+#line 2099 "dhcp4_parser.cc"
     break;
 
-  case 288:
-#line 1095 "dhcp4_parser.yy"
+  case 292: // $@50: %empty
+#line 1111 "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 2089 "dhcp4_parser.cc"
+#line 2109 "dhcp4_parser.cc"
     break;
 
-  case 289:
-#line 1099 "dhcp4_parser.yy"
+  case 293: // sub_hooks_library: "{" $@50 hooks_params "}"
+#line 1115 "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 2099 "dhcp4_parser.cc"
+#line 2119 "dhcp4_parser.cc"
     break;
 
-  case 295:
-#line 1114 "dhcp4_parser.yy"
+  case 299: // $@51: %empty
+#line 1130 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2107 "dhcp4_parser.cc"
+#line 2127 "dhcp4_parser.cc"
     break;
 
-  case 296:
-#line 1116 "dhcp4_parser.yy"
+  case 300: // library: "library" $@51 ":" "constant string"
+#line 1132 "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 2117 "dhcp4_parser.cc"
+#line 2137 "dhcp4_parser.cc"
     break;
 
-  case 297:
-#line 1122 "dhcp4_parser.yy"
+  case 301: // $@52: %empty
+#line 1138 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2125 "dhcp4_parser.cc"
+#line 2145 "dhcp4_parser.cc"
     break;
 
-  case 298:
-#line 1124 "dhcp4_parser.yy"
+  case 302: // parameters: "parameters" $@52 ":" map_value
+#line 1140 "dhcp4_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2134 "dhcp4_parser.cc"
+#line 2154 "dhcp4_parser.cc"
     break;
 
-  case 299:
-#line 1130 "dhcp4_parser.yy"
+  case 303: // $@53: %empty
+#line 1146 "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 2145 "dhcp4_parser.cc"
+#line 2165 "dhcp4_parser.cc"
     break;
 
-  case 300:
-#line 1135 "dhcp4_parser.yy"
+  case 304: // expired_leases_processing: "expired-leases-processing" $@53 ":" "{" expired_leases_params "}"
+#line 1151 "dhcp4_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2155 "dhcp4_parser.cc"
+#line 2175 "dhcp4_parser.cc"
     break;
 
-  case 309:
-#line 1153 "dhcp4_parser.yy"
+  case 313: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
+#line 1169 "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 2164 "dhcp4_parser.cc"
+#line 2184 "dhcp4_parser.cc"
     break;
 
-  case 310:
-#line 1158 "dhcp4_parser.yy"
+  case 314: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
+#line 1174 "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 2173 "dhcp4_parser.cc"
+#line 2193 "dhcp4_parser.cc"
     break;
 
-  case 311:
-#line 1163 "dhcp4_parser.yy"
+  case 315: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
+#line 1179 "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 2182 "dhcp4_parser.cc"
+#line 2202 "dhcp4_parser.cc"
     break;
 
-  case 312:
-#line 1168 "dhcp4_parser.yy"
+  case 316: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
+#line 1184 "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 2191 "dhcp4_parser.cc"
+#line 2211 "dhcp4_parser.cc"
     break;
 
-  case 313:
-#line 1173 "dhcp4_parser.yy"
+  case 317: // max_reclaim_time: "max-reclaim-time" ":" "integer"
+#line 1189 "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 2200 "dhcp4_parser.cc"
+#line 2220 "dhcp4_parser.cc"
     break;
 
-  case 314:
-#line 1178 "dhcp4_parser.yy"
+  case 318: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
+#line 1194 "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 2209 "dhcp4_parser.cc"
+#line 2229 "dhcp4_parser.cc"
     break;
 
-  case 315:
-#line 1186 "dhcp4_parser.yy"
+  case 319: // $@54: %empty
+#line 1202 "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 2220 "dhcp4_parser.cc"
+#line 2240 "dhcp4_parser.cc"
     break;
 
-  case 316:
-#line 1191 "dhcp4_parser.yy"
+  case 320: // subnet4_list: "subnet4" $@54 ":" "[" subnet4_list_content "]"
+#line 1207 "dhcp4_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2229 "dhcp4_parser.cc"
+#line 2249 "dhcp4_parser.cc"
     break;
 
-  case 321:
-#line 1211 "dhcp4_parser.yy"
+  case 325: // $@55: %empty
+#line 1227 "dhcp4_parser.yy"
                         {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2239 "dhcp4_parser.cc"
+#line 2259 "dhcp4_parser.cc"
     break;
 
-  case 322:
-#line 1215 "dhcp4_parser.yy"
+  case 326: // subnet4: "{" $@55 subnet4_params "}"
+#line 1231 "dhcp4_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2261,294 +2281,294 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2265 "dhcp4_parser.cc"
+#line 2285 "dhcp4_parser.cc"
     break;
 
-  case 323:
-#line 1237 "dhcp4_parser.yy"
+  case 327: // $@56: %empty
+#line 1253 "dhcp4_parser.yy"
                             {
     // Parse the subnet4 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2275 "dhcp4_parser.cc"
+#line 2295 "dhcp4_parser.cc"
     break;
 
-  case 324:
-#line 1241 "dhcp4_parser.yy"
+  case 328: // sub_subnet4: "{" $@56 subnet4_params "}"
+#line 1257 "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 2285 "dhcp4_parser.cc"
+#line 2305 "dhcp4_parser.cc"
     break;
 
-  case 365:
-#line 1293 "dhcp4_parser.yy"
+  case 371: // $@57: %empty
+#line 1311 "dhcp4_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2293 "dhcp4_parser.cc"
+#line 2313 "dhcp4_parser.cc"
     break;
 
-  case 366:
-#line 1295 "dhcp4_parser.yy"
+  case 372: // subnet: "subnet" $@57 ":" "constant string"
+#line 1313 "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 2303 "dhcp4_parser.cc"
+#line 2323 "dhcp4_parser.cc"
     break;
 
-  case 367:
-#line 1301 "dhcp4_parser.yy"
+  case 373: // $@58: %empty
+#line 1319 "dhcp4_parser.yy"
                                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2311 "dhcp4_parser.cc"
+#line 2331 "dhcp4_parser.cc"
     break;
 
-  case 368:
-#line 1303 "dhcp4_parser.yy"
+  case 374: // subnet_4o6_interface: "4o6-interface" $@58 ":" "constant string"
+#line 1321 "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 2321 "dhcp4_parser.cc"
+#line 2341 "dhcp4_parser.cc"
     break;
 
-  case 369:
-#line 1309 "dhcp4_parser.yy"
+  case 375: // $@59: %empty
+#line 1327 "dhcp4_parser.yy"
                                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2329 "dhcp4_parser.cc"
+#line 2349 "dhcp4_parser.cc"
     break;
 
-  case 370:
-#line 1311 "dhcp4_parser.yy"
+  case 376: // subnet_4o6_interface_id: "4o6-interface-id" $@59 ":" "constant string"
+#line 1329 "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 2339 "dhcp4_parser.cc"
+#line 2359 "dhcp4_parser.cc"
     break;
 
-  case 371:
-#line 1317 "dhcp4_parser.yy"
+  case 377: // $@60: %empty
+#line 1335 "dhcp4_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2347 "dhcp4_parser.cc"
+#line 2367 "dhcp4_parser.cc"
     break;
 
-  case 372:
-#line 1319 "dhcp4_parser.yy"
+  case 378: // subnet_4o6_subnet: "4o6-subnet" $@60 ":" "constant string"
+#line 1337 "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 2357 "dhcp4_parser.cc"
+#line 2377 "dhcp4_parser.cc"
     break;
 
-  case 373:
-#line 1325 "dhcp4_parser.yy"
+  case 379: // $@61: %empty
+#line 1343 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2365 "dhcp4_parser.cc"
+#line 2385 "dhcp4_parser.cc"
     break;
 
-  case 374:
-#line 1327 "dhcp4_parser.yy"
+  case 380: // interface: "interface" $@61 ":" "constant string"
+#line 1345 "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 2375 "dhcp4_parser.cc"
+#line 2395 "dhcp4_parser.cc"
     break;
 
-  case 375:
-#line 1333 "dhcp4_parser.yy"
+  case 381: // $@62: %empty
+#line 1351 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2383 "dhcp4_parser.cc"
+#line 2403 "dhcp4_parser.cc"
     break;
 
-  case 376:
-#line 1335 "dhcp4_parser.yy"
+  case 382: // client_class: "client-class" $@62 ":" "constant string"
+#line 1353 "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 2393 "dhcp4_parser.cc"
+#line 2413 "dhcp4_parser.cc"
     break;
 
-  case 377:
-#line 1341 "dhcp4_parser.yy"
+  case 383: // $@63: %empty
+#line 1359 "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 2404 "dhcp4_parser.cc"
+#line 2424 "dhcp4_parser.cc"
     break;
 
-  case 378:
-#line 1346 "dhcp4_parser.yy"
+  case 384: // require_client_classes: "require-client-classes" $@63 ":" list_strings
+#line 1364 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2413 "dhcp4_parser.cc"
+#line 2433 "dhcp4_parser.cc"
     break;
 
-  case 379:
-#line 1351 "dhcp4_parser.yy"
+  case 385: // $@64: %empty
+#line 1369 "dhcp4_parser.yy"
                                    {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2421 "dhcp4_parser.cc"
+#line 2441 "dhcp4_parser.cc"
     break;
 
-  case 380:
-#line 1353 "dhcp4_parser.yy"
+  case 386: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
+#line 1371 "dhcp4_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2430 "dhcp4_parser.cc"
+#line 2450 "dhcp4_parser.cc"
     break;
 
-  case 381:
-#line 1358 "dhcp4_parser.yy"
+  case 387: // hr_mode: "disabled"
+#line 1376 "dhcp4_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2436 "dhcp4_parser.cc"
+#line 2456 "dhcp4_parser.cc"
     break;
 
-  case 382:
-#line 1359 "dhcp4_parser.yy"
+  case 388: // hr_mode: "out-of-pool"
+#line 1377 "dhcp4_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2442 "dhcp4_parser.cc"
+#line 2462 "dhcp4_parser.cc"
     break;
 
-  case 383:
-#line 1360 "dhcp4_parser.yy"
+  case 389: // hr_mode: "global"
+#line 1378 "dhcp4_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2448 "dhcp4_parser.cc"
+#line 2468 "dhcp4_parser.cc"
     break;
 
-  case 384:
-#line 1361 "dhcp4_parser.yy"
+  case 390: // hr_mode: "all"
+#line 1379 "dhcp4_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2454 "dhcp4_parser.cc"
+#line 2474 "dhcp4_parser.cc"
     break;
 
-  case 385:
-#line 1364 "dhcp4_parser.yy"
+  case 391: // id: "id" ":" "integer"
+#line 1382 "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 2463 "dhcp4_parser.cc"
+#line 2483 "dhcp4_parser.cc"
     break;
 
-  case 386:
-#line 1371 "dhcp4_parser.yy"
+  case 392: // $@65: %empty
+#line 1389 "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 2474 "dhcp4_parser.cc"
+#line 2494 "dhcp4_parser.cc"
     break;
 
-  case 387:
-#line 1376 "dhcp4_parser.yy"
+  case 393: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
+#line 1394 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2483 "dhcp4_parser.cc"
+#line 2503 "dhcp4_parser.cc"
     break;
 
-  case 392:
-#line 1391 "dhcp4_parser.yy"
+  case 398: // $@66: %empty
+#line 1409 "dhcp4_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2493 "dhcp4_parser.cc"
+#line 2513 "dhcp4_parser.cc"
     break;
 
-  case 393:
-#line 1395 "dhcp4_parser.yy"
+  case 399: // shared_network: "{" $@66 shared_network_params "}"
+#line 1413 "dhcp4_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
-#line 2501 "dhcp4_parser.cc"
+#line 2521 "dhcp4_parser.cc"
     break;
 
-  case 429:
-#line 1442 "dhcp4_parser.yy"
+  case 437: // $@67: %empty
+#line 1462 "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 2512 "dhcp4_parser.cc"
+#line 2532 "dhcp4_parser.cc"
     break;
 
-  case 430:
-#line 1447 "dhcp4_parser.yy"
+  case 438: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
+#line 1467 "dhcp4_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2521 "dhcp4_parser.cc"
+#line 2541 "dhcp4_parser.cc"
     break;
 
-  case 431:
-#line 1455 "dhcp4_parser.yy"
+  case 439: // $@68: %empty
+#line 1475 "dhcp4_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2530 "dhcp4_parser.cc"
+#line 2550 "dhcp4_parser.cc"
     break;
 
-  case 432:
-#line 1458 "dhcp4_parser.yy"
+  case 440: // sub_option_def_list: "{" $@68 option_def_list "}"
+#line 1478 "dhcp4_parser.yy"
                                  {
     // parsing completed
 }
-#line 2538 "dhcp4_parser.cc"
+#line 2558 "dhcp4_parser.cc"
     break;
 
-  case 437:
-#line 1474 "dhcp4_parser.yy"
+  case 445: // $@69: %empty
+#line 1494 "dhcp4_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2548 "dhcp4_parser.cc"
+#line 2568 "dhcp4_parser.cc"
     break;
 
-  case 438:
-#line 1478 "dhcp4_parser.yy"
+  case 446: // option_def_entry: "{" $@69 option_def_params "}"
+#line 1498 "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));
@@ -2556,21 +2576,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2560 "dhcp4_parser.cc"
+#line 2580 "dhcp4_parser.cc"
     break;
 
-  case 439:
-#line 1489 "dhcp4_parser.yy"
+  case 447: // $@70: %empty
+#line 1509 "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 2570 "dhcp4_parser.cc"
+#line 2590 "dhcp4_parser.cc"
     break;
 
-  case 440:
-#line 1493 "dhcp4_parser.yy"
+  case 448: // sub_option_def: "{" $@70 option_def_params "}"
+#line 1513 "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));
@@ -2578,281 +2598,281 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2582 "dhcp4_parser.cc"
+#line 2602 "dhcp4_parser.cc"
     break;
 
-  case 456:
-#line 1525 "dhcp4_parser.yy"
+  case 464: // code: "code" ":" "integer"
+#line 1545 "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 2591 "dhcp4_parser.cc"
+#line 2611 "dhcp4_parser.cc"
     break;
 
-  case 458:
-#line 1532 "dhcp4_parser.yy"
+  case 466: // $@71: %empty
+#line 1552 "dhcp4_parser.yy"
                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2599 "dhcp4_parser.cc"
+#line 2619 "dhcp4_parser.cc"
     break;
 
-  case 459:
-#line 1534 "dhcp4_parser.yy"
+  case 467: // option_def_type: "type" $@71 ":" "constant string"
+#line 1554 "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 2609 "dhcp4_parser.cc"
+#line 2629 "dhcp4_parser.cc"
     break;
 
-  case 460:
-#line 1540 "dhcp4_parser.yy"
+  case 468: // $@72: %empty
+#line 1560 "dhcp4_parser.yy"
                                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2617 "dhcp4_parser.cc"
+#line 2637 "dhcp4_parser.cc"
     break;
 
-  case 461:
-#line 1542 "dhcp4_parser.yy"
+  case 469: // option_def_record_types: "record-types" $@72 ":" "constant string"
+#line 1562 "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 2627 "dhcp4_parser.cc"
+#line 2647 "dhcp4_parser.cc"
     break;
 
-  case 462:
-#line 1548 "dhcp4_parser.yy"
+  case 470: // $@73: %empty
+#line 1568 "dhcp4_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2635 "dhcp4_parser.cc"
+#line 2655 "dhcp4_parser.cc"
     break;
 
-  case 463:
-#line 1550 "dhcp4_parser.yy"
+  case 471: // space: "space" $@73 ":" "constant string"
+#line 1570 "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 2645 "dhcp4_parser.cc"
+#line 2665 "dhcp4_parser.cc"
     break;
 
-  case 465:
-#line 1558 "dhcp4_parser.yy"
+  case 473: // $@74: %empty
+#line 1578 "dhcp4_parser.yy"
                                     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2653 "dhcp4_parser.cc"
+#line 2673 "dhcp4_parser.cc"
     break;
 
-  case 466:
-#line 1560 "dhcp4_parser.yy"
+  case 474: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
+#line 1580 "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 2663 "dhcp4_parser.cc"
+#line 2683 "dhcp4_parser.cc"
     break;
 
-  case 467:
-#line 1566 "dhcp4_parser.yy"
+  case 475: // option_def_array: "array" ":" "boolean"
+#line 1586 "dhcp4_parser.yy"
                                       {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2672 "dhcp4_parser.cc"
+#line 2692 "dhcp4_parser.cc"
     break;
 
-  case 468:
-#line 1575 "dhcp4_parser.yy"
+  case 476: // $@75: %empty
+#line 1595 "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 2683 "dhcp4_parser.cc"
+#line 2703 "dhcp4_parser.cc"
     break;
 
-  case 469:
-#line 1580 "dhcp4_parser.yy"
+  case 477: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
+#line 1600 "dhcp4_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2692 "dhcp4_parser.cc"
+#line 2712 "dhcp4_parser.cc"
     break;
 
-  case 474:
-#line 1599 "dhcp4_parser.yy"
+  case 482: // $@76: %empty
+#line 1619 "dhcp4_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2702 "dhcp4_parser.cc"
+#line 2722 "dhcp4_parser.cc"
     break;
 
-  case 475:
-#line 1603 "dhcp4_parser.yy"
+  case 483: // option_data_entry: "{" $@76 option_data_params "}"
+#line 1623 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2711 "dhcp4_parser.cc"
+#line 2731 "dhcp4_parser.cc"
     break;
 
-  case 476:
-#line 1611 "dhcp4_parser.yy"
+  case 484: // $@77: %empty
+#line 1631 "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 2721 "dhcp4_parser.cc"
+#line 2741 "dhcp4_parser.cc"
     break;
 
-  case 477:
-#line 1615 "dhcp4_parser.yy"
+  case 485: // sub_option_data: "{" $@77 option_data_params "}"
+#line 1635 "dhcp4_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2730 "dhcp4_parser.cc"
+#line 2750 "dhcp4_parser.cc"
     break;
 
-  case 492:
-#line 1648 "dhcp4_parser.yy"
+  case 500: // $@78: %empty
+#line 1668 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2738 "dhcp4_parser.cc"
+#line 2758 "dhcp4_parser.cc"
     break;
 
-  case 493:
-#line 1650 "dhcp4_parser.yy"
+  case 501: // option_data_data: "data" $@78 ":" "constant string"
+#line 1670 "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 2748 "dhcp4_parser.cc"
+#line 2768 "dhcp4_parser.cc"
     break;
 
-  case 496:
-#line 1660 "dhcp4_parser.yy"
+  case 504: // option_data_csv_format: "csv-format" ":" "boolean"
+#line 1680 "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 2757 "dhcp4_parser.cc"
+#line 2777 "dhcp4_parser.cc"
     break;
 
-  case 497:
-#line 1665 "dhcp4_parser.yy"
+  case 505: // option_data_always_send: "always-send" ":" "boolean"
+#line 1685 "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 2766 "dhcp4_parser.cc"
+#line 2786 "dhcp4_parser.cc"
     break;
 
-  case 498:
-#line 1673 "dhcp4_parser.yy"
+  case 506: // $@79: %empty
+#line 1693 "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 2777 "dhcp4_parser.cc"
+#line 2797 "dhcp4_parser.cc"
     break;
 
-  case 499:
-#line 1678 "dhcp4_parser.yy"
+  case 507: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
+#line 1698 "dhcp4_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2786 "dhcp4_parser.cc"
+#line 2806 "dhcp4_parser.cc"
     break;
 
-  case 504:
-#line 1693 "dhcp4_parser.yy"
+  case 512: // $@80: %empty
+#line 1713 "dhcp4_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2796 "dhcp4_parser.cc"
+#line 2816 "dhcp4_parser.cc"
     break;
 
-  case 505:
-#line 1697 "dhcp4_parser.yy"
+  case 513: // pool_list_entry: "{" $@80 pool_params "}"
+#line 1717 "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 2806 "dhcp4_parser.cc"
+#line 2826 "dhcp4_parser.cc"
     break;
 
-  case 506:
-#line 1703 "dhcp4_parser.yy"
+  case 514: // $@81: %empty
+#line 1723 "dhcp4_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2816 "dhcp4_parser.cc"
+#line 2836 "dhcp4_parser.cc"
     break;
 
-  case 507:
-#line 1707 "dhcp4_parser.yy"
+  case 515: // sub_pool4: "{" $@81 pool_params "}"
+#line 1727 "dhcp4_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2826 "dhcp4_parser.cc"
+#line 2846 "dhcp4_parser.cc"
     break;
 
-  case 517:
-#line 1726 "dhcp4_parser.yy"
+  case 525: // $@82: %empty
+#line 1746 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2834 "dhcp4_parser.cc"
+#line 2854 "dhcp4_parser.cc"
     break;
 
-  case 518:
-#line 1728 "dhcp4_parser.yy"
+  case 526: // pool_entry: "pool" $@82 ":" "constant string"
+#line 1748 "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 2844 "dhcp4_parser.cc"
+#line 2864 "dhcp4_parser.cc"
     break;
 
-  case 519:
-#line 1734 "dhcp4_parser.yy"
+  case 527: // $@83: %empty
+#line 1754 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2852 "dhcp4_parser.cc"
+#line 2872 "dhcp4_parser.cc"
     break;
 
-  case 520:
-#line 1736 "dhcp4_parser.yy"
+  case 528: // user_context: "user-context" $@83 ":" map_value
+#line 1756 "dhcp4_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2875,19 +2895,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2879 "dhcp4_parser.cc"
+#line 2899 "dhcp4_parser.cc"
     break;
 
-  case 521:
-#line 1759 "dhcp4_parser.yy"
+  case 529: // $@84: %empty
+#line 1779 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2887 "dhcp4_parser.cc"
+#line 2907 "dhcp4_parser.cc"
     break;
 
-  case 522:
-#line 1761 "dhcp4_parser.yy"
+  case 530: // comment: "comment" $@84 ":" "constant string"
+#line 1781 "dhcp4_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2912,1019 +2932,1019 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2916 "dhcp4_parser.cc"
+#line 2936 "dhcp4_parser.cc"
     break;
 
-  case 523:
-#line 1789 "dhcp4_parser.yy"
+  case 531: // $@85: %empty
+#line 1809 "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 2927 "dhcp4_parser.cc"
+#line 2947 "dhcp4_parser.cc"
     break;
 
-  case 524:
-#line 1794 "dhcp4_parser.yy"
+  case 532: // reservations: "reservations" $@85 ":" "[" reservations_list "]"
+#line 1814 "dhcp4_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2936 "dhcp4_parser.cc"
+#line 2956 "dhcp4_parser.cc"
     break;
 
-  case 529:
-#line 1807 "dhcp4_parser.yy"
+  case 537: // $@86: %empty
+#line 1827 "dhcp4_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2946 "dhcp4_parser.cc"
+#line 2966 "dhcp4_parser.cc"
     break;
 
-  case 530:
-#line 1811 "dhcp4_parser.yy"
+  case 538: // reservation: "{" $@86 reservation_params "}"
+#line 1831 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 2955 "dhcp4_parser.cc"
+#line 2975 "dhcp4_parser.cc"
     break;
 
-  case 531:
-#line 1816 "dhcp4_parser.yy"
+  case 539: // $@87: %empty
+#line 1836 "dhcp4_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2965 "dhcp4_parser.cc"
+#line 2985 "dhcp4_parser.cc"
     break;
 
-  case 532:
-#line 1820 "dhcp4_parser.yy"
+  case 540: // sub_reservation: "{" $@87 reservation_params "}"
+#line 1840 "dhcp4_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 2974 "dhcp4_parser.cc"
+#line 2994 "dhcp4_parser.cc"
     break;
 
-  case 552:
-#line 1851 "dhcp4_parser.yy"
+  case 560: // $@88: %empty
+#line 1871 "dhcp4_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2982 "dhcp4_parser.cc"
+#line 3002 "dhcp4_parser.cc"
     break;
 
-  case 553:
-#line 1853 "dhcp4_parser.yy"
+  case 561: // next_server: "next-server" $@88 ":" "constant string"
+#line 1873 "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 2992 "dhcp4_parser.cc"
+#line 3012 "dhcp4_parser.cc"
     break;
 
-  case 554:
-#line 1859 "dhcp4_parser.yy"
+  case 562: // $@89: %empty
+#line 1879 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3000 "dhcp4_parser.cc"
+#line 3020 "dhcp4_parser.cc"
     break;
 
-  case 555:
-#line 1861 "dhcp4_parser.yy"
+  case 563: // server_hostname: "server-hostname" $@89 ":" "constant string"
+#line 1881 "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 3010 "dhcp4_parser.cc"
+#line 3030 "dhcp4_parser.cc"
     break;
 
-  case 556:
-#line 1867 "dhcp4_parser.yy"
+  case 564: // $@90: %empty
+#line 1887 "dhcp4_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3018 "dhcp4_parser.cc"
+#line 3038 "dhcp4_parser.cc"
     break;
 
-  case 557:
-#line 1869 "dhcp4_parser.yy"
+  case 565: // boot_file_name: "boot-file-name" $@90 ":" "constant string"
+#line 1889 "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 3028 "dhcp4_parser.cc"
+#line 3048 "dhcp4_parser.cc"
     break;
 
-  case 558:
-#line 1875 "dhcp4_parser.yy"
+  case 566: // $@91: %empty
+#line 1895 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3036 "dhcp4_parser.cc"
+#line 3056 "dhcp4_parser.cc"
     break;
 
-  case 559:
-#line 1877 "dhcp4_parser.yy"
+  case 567: // ip_address: "ip-address" $@91 ":" "constant string"
+#line 1897 "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 3046 "dhcp4_parser.cc"
+#line 3066 "dhcp4_parser.cc"
     break;
 
-  case 560:
-#line 1883 "dhcp4_parser.yy"
+  case 568: // $@92: %empty
+#line 1903 "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 3057 "dhcp4_parser.cc"
+#line 3077 "dhcp4_parser.cc"
     break;
 
-  case 561:
-#line 1888 "dhcp4_parser.yy"
+  case 569: // ip_addresses: "ip-addresses" $@92 ":" list_strings
+#line 1908 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3066 "dhcp4_parser.cc"
+#line 3086 "dhcp4_parser.cc"
     break;
 
-  case 562:
-#line 1893 "dhcp4_parser.yy"
+  case 570: // $@93: %empty
+#line 1913 "dhcp4_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3074 "dhcp4_parser.cc"
+#line 3094 "dhcp4_parser.cc"
     break;
 
-  case 563:
-#line 1895 "dhcp4_parser.yy"
+  case 571: // duid: "duid" $@93 ":" "constant string"
+#line 1915 "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 3084 "dhcp4_parser.cc"
+#line 3104 "dhcp4_parser.cc"
     break;
 
-  case 564:
-#line 1901 "dhcp4_parser.yy"
+  case 572: // $@94: %empty
+#line 1921 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3092 "dhcp4_parser.cc"
+#line 3112 "dhcp4_parser.cc"
     break;
 
-  case 565:
-#line 1903 "dhcp4_parser.yy"
+  case 573: // hw_address: "hw-address" $@94 ":" "constant string"
+#line 1923 "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 3102 "dhcp4_parser.cc"
+#line 3122 "dhcp4_parser.cc"
     break;
 
-  case 566:
-#line 1909 "dhcp4_parser.yy"
+  case 574: // $@95: %empty
+#line 1929 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3110 "dhcp4_parser.cc"
+#line 3130 "dhcp4_parser.cc"
     break;
 
-  case 567:
-#line 1911 "dhcp4_parser.yy"
+  case 575: // client_id_value: "client-id" $@95 ":" "constant string"
+#line 1931 "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 3120 "dhcp4_parser.cc"
+#line 3140 "dhcp4_parser.cc"
     break;
 
-  case 568:
-#line 1917 "dhcp4_parser.yy"
+  case 576: // $@96: %empty
+#line 1937 "dhcp4_parser.yy"
                              {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3128 "dhcp4_parser.cc"
+#line 3148 "dhcp4_parser.cc"
     break;
 
-  case 569:
-#line 1919 "dhcp4_parser.yy"
+  case 577: // circuit_id_value: "circuit-id" $@96 ":" "constant string"
+#line 1939 "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 3138 "dhcp4_parser.cc"
+#line 3158 "dhcp4_parser.cc"
     break;
 
-  case 570:
-#line 1925 "dhcp4_parser.yy"
+  case 578: // $@97: %empty
+#line 1945 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3146 "dhcp4_parser.cc"
+#line 3166 "dhcp4_parser.cc"
     break;
 
-  case 571:
-#line 1927 "dhcp4_parser.yy"
+  case 579: // flex_id_value: "flex-id" $@97 ":" "constant string"
+#line 1947 "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 3156 "dhcp4_parser.cc"
+#line 3176 "dhcp4_parser.cc"
     break;
 
-  case 572:
-#line 1933 "dhcp4_parser.yy"
+  case 580: // $@98: %empty
+#line 1953 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3164 "dhcp4_parser.cc"
+#line 3184 "dhcp4_parser.cc"
     break;
 
-  case 573:
-#line 1935 "dhcp4_parser.yy"
+  case 581: // hostname: "hostname" $@98 ":" "constant string"
+#line 1955 "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 3174 "dhcp4_parser.cc"
+#line 3194 "dhcp4_parser.cc"
     break;
 
-  case 574:
-#line 1941 "dhcp4_parser.yy"
+  case 582: // $@99: %empty
+#line 1961 "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 3185 "dhcp4_parser.cc"
+#line 3205 "dhcp4_parser.cc"
     break;
 
-  case 575:
-#line 1946 "dhcp4_parser.yy"
+  case 583: // reservation_client_classes: "client-classes" $@99 ":" list_strings
+#line 1966 "dhcp4_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3194 "dhcp4_parser.cc"
+#line 3214 "dhcp4_parser.cc"
     break;
 
-  case 576:
-#line 1954 "dhcp4_parser.yy"
+  case 584: // $@100: %empty
+#line 1974 "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 3205 "dhcp4_parser.cc"
+#line 3225 "dhcp4_parser.cc"
     break;
 
-  case 577:
-#line 1959 "dhcp4_parser.yy"
+  case 585: // relay: "relay" $@100 ":" "{" relay_map "}"
+#line 1979 "dhcp4_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3214 "dhcp4_parser.cc"
+#line 3234 "dhcp4_parser.cc"
     break;
 
-  case 580:
-#line 1971 "dhcp4_parser.yy"
+  case 588: // $@101: %empty
+#line 1991 "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 3225 "dhcp4_parser.cc"
+#line 3245 "dhcp4_parser.cc"
     break;
 
-  case 581:
-#line 1976 "dhcp4_parser.yy"
+  case 589: // client_classes: "client-classes" $@101 ":" "[" client_classes_list "]"
+#line 1996 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3234 "dhcp4_parser.cc"
+#line 3254 "dhcp4_parser.cc"
     break;
 
-  case 584:
-#line 1985 "dhcp4_parser.yy"
+  case 592: // $@102: %empty
+#line 2005 "dhcp4_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3244 "dhcp4_parser.cc"
+#line 3264 "dhcp4_parser.cc"
     break;
 
-  case 585:
-#line 1989 "dhcp4_parser.yy"
+  case 593: // client_class_entry: "{" $@102 client_class_params "}"
+#line 2009 "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 3254 "dhcp4_parser.cc"
+#line 3274 "dhcp4_parser.cc"
     break;
 
-  case 602:
-#line 2018 "dhcp4_parser.yy"
+  case 610: // $@103: %empty
+#line 2038 "dhcp4_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3262 "dhcp4_parser.cc"
+#line 3282 "dhcp4_parser.cc"
     break;
 
-  case 603:
-#line 2020 "dhcp4_parser.yy"
+  case 611: // client_class_test: "test" $@103 ":" "constant string"
+#line 2040 "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 3272 "dhcp4_parser.cc"
+#line 3292 "dhcp4_parser.cc"
     break;
 
-  case 604:
-#line 2026 "dhcp4_parser.yy"
+  case 612: // only_if_required: "only-if-required" ":" "boolean"
+#line 2046 "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 3281 "dhcp4_parser.cc"
+#line 3301 "dhcp4_parser.cc"
     break;
 
-  case 605:
-#line 2033 "dhcp4_parser.yy"
+  case 613: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
+#line 2053 "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 3290 "dhcp4_parser.cc"
+#line 3310 "dhcp4_parser.cc"
     break;
 
-  case 606:
-#line 2040 "dhcp4_parser.yy"
+  case 614: // $@104: %empty
+#line 2060 "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 3301 "dhcp4_parser.cc"
+#line 3321 "dhcp4_parser.cc"
     break;
 
-  case 607:
-#line 2045 "dhcp4_parser.yy"
+  case 615: // control_socket: "control-socket" $@104 ":" "{" control_socket_params "}"
+#line 2065 "dhcp4_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3310 "dhcp4_parser.cc"
+#line 3330 "dhcp4_parser.cc"
     break;
 
-  case 615:
-#line 2061 "dhcp4_parser.yy"
+  case 623: // $@105: %empty
+#line 2081 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3318 "dhcp4_parser.cc"
+#line 3338 "dhcp4_parser.cc"
     break;
 
-  case 616:
-#line 2063 "dhcp4_parser.yy"
+  case 624: // control_socket_type: "socket-type" $@105 ":" "constant string"
+#line 2083 "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 3328 "dhcp4_parser.cc"
+#line 3348 "dhcp4_parser.cc"
     break;
 
-  case 617:
-#line 2069 "dhcp4_parser.yy"
+  case 625: // $@106: %empty
+#line 2089 "dhcp4_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3336 "dhcp4_parser.cc"
+#line 3356 "dhcp4_parser.cc"
     break;
 
-  case 618:
-#line 2071 "dhcp4_parser.yy"
+  case 626: // control_socket_name: "socket-name" $@106 ":" "constant string"
+#line 2091 "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 3346 "dhcp4_parser.cc"
+#line 3366 "dhcp4_parser.cc"
     break;
 
-  case 619:
-#line 2080 "dhcp4_parser.yy"
+  case 627: // $@107: %empty
+#line 2100 "dhcp4_parser.yy"
                                        {
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3357 "dhcp4_parser.cc"
+#line 3377 "dhcp4_parser.cc"
     break;
 
-  case 620:
-#line 2085 "dhcp4_parser.yy"
+  case 628: // dhcp_queue_control: "dhcp-queue-control" $@107 ":" "{" queue_control_params "}"
+#line 2105 "dhcp4_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3368 "dhcp4_parser.cc"
+#line 3388 "dhcp4_parser.cc"
     break;
 
-  case 629:
-#line 2104 "dhcp4_parser.yy"
+  case 637: // enable_queue: "enable-queue" ":" "boolean"
+#line 2124 "dhcp4_parser.yy"
                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-queue", b);
 }
-#line 3377 "dhcp4_parser.cc"
+#line 3397 "dhcp4_parser.cc"
     break;
 
-  case 630:
-#line 2109 "dhcp4_parser.yy"
+  case 638: // $@108: %empty
+#line 2129 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3385 "dhcp4_parser.cc"
+#line 3405 "dhcp4_parser.cc"
     break;
 
-  case 631:
-#line 2111 "dhcp4_parser.yy"
+  case 639: // queue_type: "queue-type" $@108 ":" "constant string"
+#line 2131 "dhcp4_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3395 "dhcp4_parser.cc"
+#line 3415 "dhcp4_parser.cc"
     break;
 
-  case 632:
-#line 2117 "dhcp4_parser.yy"
+  case 640: // capacity: "capacity" ":" "integer"
+#line 2137 "dhcp4_parser.yy"
                                  {
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3404 "dhcp4_parser.cc"
+#line 3424 "dhcp4_parser.cc"
     break;
 
-  case 633:
-#line 2122 "dhcp4_parser.yy"
+  case 641: // $@109: %empty
+#line 2142 "dhcp4_parser.yy"
                             {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3412 "dhcp4_parser.cc"
+#line 3432 "dhcp4_parser.cc"
     break;
 
-  case 634:
-#line 2124 "dhcp4_parser.yy"
+  case 642: // arbitrary_map_entry: "constant string" $@109 ":" value
+#line 2144 "dhcp4_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3421 "dhcp4_parser.cc"
+#line 3441 "dhcp4_parser.cc"
     break;
 
-  case 635:
-#line 2131 "dhcp4_parser.yy"
+  case 643: // $@110: %empty
+#line 2151 "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 3432 "dhcp4_parser.cc"
+#line 3452 "dhcp4_parser.cc"
     break;
 
-  case 636:
-#line 2136 "dhcp4_parser.yy"
+  case 644: // dhcp_ddns: "dhcp-ddns" $@110 ":" "{" dhcp_ddns_params "}"
+#line 2156 "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 3443 "dhcp4_parser.cc"
+#line 3463 "dhcp4_parser.cc"
     break;
 
-  case 637:
-#line 2143 "dhcp4_parser.yy"
+  case 645: // $@111: %empty
+#line 2163 "dhcp4_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3453 "dhcp4_parser.cc"
+#line 3473 "dhcp4_parser.cc"
     break;
 
-  case 638:
-#line 2147 "dhcp4_parser.yy"
+  case 646: // sub_dhcp_ddns: "{" $@111 dhcp_ddns_params "}"
+#line 2167 "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 3463 "dhcp4_parser.cc"
+#line 3483 "dhcp4_parser.cc"
     break;
 
-  case 659:
-#line 2177 "dhcp4_parser.yy"
+  case 667: // enable_updates: "enable-updates" ":" "boolean"
+#line 2197 "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 3472 "dhcp4_parser.cc"
+#line 3492 "dhcp4_parser.cc"
     break;
 
-  case 660:
-#line 2182 "dhcp4_parser.yy"
+  case 668: // $@112: %empty
+#line 2202 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3480 "dhcp4_parser.cc"
+#line 3500 "dhcp4_parser.cc"
     break;
 
-  case 661:
-#line 2184 "dhcp4_parser.yy"
+  case 669: // server_ip: "server-ip" $@112 ":" "constant string"
+#line 2204 "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 3490 "dhcp4_parser.cc"
+#line 3510 "dhcp4_parser.cc"
     break;
 
-  case 662:
-#line 2190 "dhcp4_parser.yy"
+  case 670: // server_port: "server-port" ":" "integer"
+#line 2210 "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 3499 "dhcp4_parser.cc"
+#line 3519 "dhcp4_parser.cc"
     break;
 
-  case 663:
-#line 2195 "dhcp4_parser.yy"
+  case 671: // $@113: %empty
+#line 2215 "dhcp4_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3507 "dhcp4_parser.cc"
+#line 3527 "dhcp4_parser.cc"
     break;
 
-  case 664:
-#line 2197 "dhcp4_parser.yy"
+  case 672: // sender_ip: "sender-ip" $@113 ":" "constant string"
+#line 2217 "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 3517 "dhcp4_parser.cc"
+#line 3537 "dhcp4_parser.cc"
     break;
 
-  case 665:
-#line 2203 "dhcp4_parser.yy"
+  case 673: // sender_port: "sender-port" ":" "integer"
+#line 2223 "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 3526 "dhcp4_parser.cc"
+#line 3546 "dhcp4_parser.cc"
     break;
 
-  case 666:
-#line 2208 "dhcp4_parser.yy"
+  case 674: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2228 "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 3535 "dhcp4_parser.cc"
+#line 3555 "dhcp4_parser.cc"
     break;
 
-  case 667:
-#line 2213 "dhcp4_parser.yy"
+  case 675: // $@114: %empty
+#line 2233 "dhcp4_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3543 "dhcp4_parser.cc"
+#line 3563 "dhcp4_parser.cc"
     break;
 
-  case 668:
-#line 2215 "dhcp4_parser.yy"
+  case 676: // ncr_protocol: "ncr-protocol" $@114 ":" ncr_protocol_value
+#line 2235 "dhcp4_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3552 "dhcp4_parser.cc"
+#line 3572 "dhcp4_parser.cc"
     break;
 
-  case 669:
-#line 2221 "dhcp4_parser.yy"
+  case 677: // ncr_protocol_value: "udp"
+#line 2241 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3558 "dhcp4_parser.cc"
+#line 3578 "dhcp4_parser.cc"
     break;
 
-  case 670:
-#line 2222 "dhcp4_parser.yy"
+  case 678: // ncr_protocol_value: "tcp"
+#line 2242 "dhcp4_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3564 "dhcp4_parser.cc"
+#line 3584 "dhcp4_parser.cc"
     break;
 
-  case 671:
-#line 2225 "dhcp4_parser.yy"
+  case 679: // $@115: %empty
+#line 2245 "dhcp4_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3572 "dhcp4_parser.cc"
+#line 3592 "dhcp4_parser.cc"
     break;
 
-  case 672:
-#line 2227 "dhcp4_parser.yy"
+  case 680: // ncr_format: "ncr-format" $@115 ":" "JSON"
+#line 2247 "dhcp4_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3582 "dhcp4_parser.cc"
+#line 3602 "dhcp4_parser.cc"
     break;
 
-  case 673:
-#line 2234 "dhcp4_parser.yy"
+  case 681: // $@116: %empty
+#line 2254 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3590 "dhcp4_parser.cc"
+#line 3610 "dhcp4_parser.cc"
     break;
 
-  case 674:
-#line 2236 "dhcp4_parser.yy"
+  case 682: // dep_qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
+#line 2256 "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 3600 "dhcp4_parser.cc"
+#line 3620 "dhcp4_parser.cc"
     break;
 
-  case 675:
-#line 2243 "dhcp4_parser.yy"
+  case 683: // dep_override_no_update: "override-no-update" ":" "boolean"
+#line 2263 "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 3609 "dhcp4_parser.cc"
+#line 3629 "dhcp4_parser.cc"
     break;
 
-  case 676:
-#line 2249 "dhcp4_parser.yy"
+  case 684: // dep_override_client_update: "override-client-update" ":" "boolean"
+#line 2269 "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 3618 "dhcp4_parser.cc"
+#line 3638 "dhcp4_parser.cc"
     break;
 
-  case 677:
-#line 2255 "dhcp4_parser.yy"
+  case 685: // $@117: %empty
+#line 2275 "dhcp4_parser.yy"
                                              {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3626 "dhcp4_parser.cc"
+#line 3646 "dhcp4_parser.cc"
     break;
 
-  case 678:
-#line 2257 "dhcp4_parser.yy"
+  case 686: // dep_replace_client_name: "replace-client-name" $@117 ":" ddns_replace_client_name_value
+#line 2277 "dhcp4_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3635 "dhcp4_parser.cc"
+#line 3655 "dhcp4_parser.cc"
     break;
 
-  case 679:
-#line 2263 "dhcp4_parser.yy"
+  case 687: // $@118: %empty
+#line 2283 "dhcp4_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3643 "dhcp4_parser.cc"
+#line 3663 "dhcp4_parser.cc"
     break;
 
-  case 680:
-#line 2265 "dhcp4_parser.yy"
+  case 688: // dep_generated_prefix: "generated-prefix" $@118 ":" "constant string"
+#line 2285 "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 3653 "dhcp4_parser.cc"
+#line 3673 "dhcp4_parser.cc"
     break;
 
-  case 681:
-#line 2272 "dhcp4_parser.yy"
+  case 689: // $@119: %empty
+#line 2292 "dhcp4_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3661 "dhcp4_parser.cc"
+#line 3681 "dhcp4_parser.cc"
     break;
 
-  case 682:
-#line 2274 "dhcp4_parser.yy"
+  case 690: // dep_hostname_char_set: "hostname-char-set" $@119 ":" "constant string"
+#line 2294 "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 3671 "dhcp4_parser.cc"
+#line 3691 "dhcp4_parser.cc"
     break;
 
-  case 683:
-#line 2281 "dhcp4_parser.yy"
+  case 691: // $@120: %empty
+#line 2301 "dhcp4_parser.yy"
                                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3679 "dhcp4_parser.cc"
+#line 3699 "dhcp4_parser.cc"
     break;
 
-  case 684:
-#line 2283 "dhcp4_parser.yy"
+  case 692: // dep_hostname_char_replacement: "hostname-char-replacement" $@120 ":" "constant string"
+#line 2303 "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 3689 "dhcp4_parser.cc"
+#line 3709 "dhcp4_parser.cc"
     break;
 
-  case 685:
-#line 2292 "dhcp4_parser.yy"
+  case 693: // $@121: %empty
+#line 2312 "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 3700 "dhcp4_parser.cc"
+#line 3720 "dhcp4_parser.cc"
     break;
 
-  case 686:
-#line 2297 "dhcp4_parser.yy"
+  case 694: // config_control: "config-control" $@121 ":" "{" config_control_params "}"
+#line 2317 "dhcp4_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3710 "dhcp4_parser.cc"
+#line 3730 "dhcp4_parser.cc"
     break;
 
-  case 687:
-#line 2303 "dhcp4_parser.yy"
+  case 695: // $@122: %empty
+#line 2323 "dhcp4_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3720 "dhcp4_parser.cc"
+#line 3740 "dhcp4_parser.cc"
     break;
 
-  case 688:
-#line 2307 "dhcp4_parser.yy"
+  case 696: // sub_config_control: "{" $@122 config_control_params "}"
+#line 2327 "dhcp4_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 3729 "dhcp4_parser.cc"
+#line 3749 "dhcp4_parser.cc"
     break;
 
-  case 693:
-#line 2322 "dhcp4_parser.yy"
+  case 701: // $@123: %empty
+#line 2342 "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 3740 "dhcp4_parser.cc"
+#line 3760 "dhcp4_parser.cc"
     break;
 
-  case 694:
-#line 2327 "dhcp4_parser.yy"
+  case 702: // config_databases: "config-databases" $@123 ":" "[" database_list "]"
+#line 2347 "dhcp4_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3749 "dhcp4_parser.cc"
+#line 3769 "dhcp4_parser.cc"
     break;
 
-  case 695:
-#line 2332 "dhcp4_parser.yy"
+  case 703: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2352 "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 3758 "dhcp4_parser.cc"
+#line 3778 "dhcp4_parser.cc"
     break;
 
-  case 696:
-#line 2339 "dhcp4_parser.yy"
+  case 704: // $@124: %empty
+#line 2359 "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 3769 "dhcp4_parser.cc"
+#line 3789 "dhcp4_parser.cc"
     break;
 
-  case 697:
-#line 2344 "dhcp4_parser.yy"
+  case 705: // loggers: "loggers" $@124 ":" "[" loggers_entries "]"
+#line 2364 "dhcp4_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3778 "dhcp4_parser.cc"
+#line 3798 "dhcp4_parser.cc"
     break;
 
-  case 700:
-#line 2356 "dhcp4_parser.yy"
+  case 708: // $@125: %empty
+#line 2376 "dhcp4_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3788 "dhcp4_parser.cc"
+#line 3808 "dhcp4_parser.cc"
     break;
 
-  case 701:
-#line 2360 "dhcp4_parser.yy"
+  case 709: // logger_entry: "{" $@125 logger_params "}"
+#line 2380 "dhcp4_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 3796 "dhcp4_parser.cc"
+#line 3816 "dhcp4_parser.cc"
     break;
 
-  case 711:
-#line 2377 "dhcp4_parser.yy"
+  case 719: // debuglevel: "debuglevel" ":" "integer"
+#line 2397 "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 3805 "dhcp4_parser.cc"
+#line 3825 "dhcp4_parser.cc"
     break;
 
-  case 712:
-#line 2382 "dhcp4_parser.yy"
+  case 720: // $@126: %empty
+#line 2402 "dhcp4_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3813 "dhcp4_parser.cc"
+#line 3833 "dhcp4_parser.cc"
     break;
 
-  case 713:
-#line 2384 "dhcp4_parser.yy"
+  case 721: // severity: "severity" $@126 ":" "constant string"
+#line 2404 "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 3823 "dhcp4_parser.cc"
+#line 3843 "dhcp4_parser.cc"
     break;
 
-  case 714:
-#line 2390 "dhcp4_parser.yy"
+  case 722: // $@127: %empty
+#line 2410 "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 3834 "dhcp4_parser.cc"
+#line 3854 "dhcp4_parser.cc"
     break;
 
-  case 715:
-#line 2395 "dhcp4_parser.yy"
+  case 723: // output_options_list: "output_options" $@127 ":" "[" output_options_list_content "]"
+#line 2415 "dhcp4_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3843 "dhcp4_parser.cc"
+#line 3863 "dhcp4_parser.cc"
     break;
 
-  case 718:
-#line 2404 "dhcp4_parser.yy"
+  case 726: // $@128: %empty
+#line 2424 "dhcp4_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3853 "dhcp4_parser.cc"
+#line 3873 "dhcp4_parser.cc"
     break;
 
-  case 719:
-#line 2408 "dhcp4_parser.yy"
+  case 727: // output_entry: "{" $@128 output_params_list "}"
+#line 2428 "dhcp4_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 3861 "dhcp4_parser.cc"
+#line 3881 "dhcp4_parser.cc"
     break;
 
-  case 727:
-#line 2423 "dhcp4_parser.yy"
+  case 735: // $@129: %empty
+#line 2443 "dhcp4_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3869 "dhcp4_parser.cc"
+#line 3889 "dhcp4_parser.cc"
     break;
 
-  case 728:
-#line 2425 "dhcp4_parser.yy"
+  case 736: // output: "output" $@129 ":" "constant string"
+#line 2445 "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 3879 "dhcp4_parser.cc"
+#line 3899 "dhcp4_parser.cc"
     break;
 
-  case 729:
-#line 2431 "dhcp4_parser.yy"
+  case 737: // flush: "flush" ":" "boolean"
+#line 2451 "dhcp4_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 3888 "dhcp4_parser.cc"
+#line 3908 "dhcp4_parser.cc"
     break;
 
-  case 730:
-#line 2436 "dhcp4_parser.yy"
+  case 738: // maxsize: "maxsize" ":" "integer"
+#line 2456 "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 3897 "dhcp4_parser.cc"
+#line 3917 "dhcp4_parser.cc"
     break;
 
-  case 731:
-#line 2441 "dhcp4_parser.yy"
+  case 739: // maxver: "maxver" ":" "integer"
+#line 2461 "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 3906 "dhcp4_parser.cc"
+#line 3926 "dhcp4_parser.cc"
     break;
 
-  case 732:
-#line 2446 "dhcp4_parser.yy"
+  case 740: // $@130: %empty
+#line 2466 "dhcp4_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3914 "dhcp4_parser.cc"
+#line 3934 "dhcp4_parser.cc"
     break;
 
-  case 733:
-#line 2448 "dhcp4_parser.yy"
+  case 741: // pattern: "pattern" $@130 ":" "constant string"
+#line 2468 "dhcp4_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 3924 "dhcp4_parser.cc"
+#line 3944 "dhcp4_parser.cc"
     break;
 
 
-#line 3928 "dhcp4_parser.cc"
+#line 3948 "dhcp4_parser.cc"
 
             default:
               break;
@@ -4273,131 +4293,132 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp4Parser::yypact_ninf_ = -895;
+  const short Dhcp4Parser::yypact_ninf_ = -905;
 
   const signed char Dhcp4Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp4Parser::yypact_[] =
   {
-     360,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,    31,    41,    72,   101,   111,   131,
-     133,   157,   159,   166,   169,   173,   176,   189,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,    41,  -147,    71,   174,    67,   502,
-      84,   229,   -33,   269,    65,   -79,   592,    98,  -895,   151,
-     167,   194,   207,   215,  -895,    58,  -895,  -895,  -895,  -895,
-    -895,   248,   260,   267,  -895,  -895,  -895,  -895,  -895,  -895,
-     268,   276,   277,   279,   294,   295,   296,   307,   311,  -895,
-     325,   331,   335,   342,   344,  -895,  -895,  -895,   345,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,   367,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   368,
-    -895,    82,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,   371,  -895,    89,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,   383,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,    97,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,   138,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   310,
-     349,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,   380,  -895,  -895,   385,  -895,  -895,  -895,
-     386,  -895,  -895,   384,   388,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   389,   391,
-    -895,  -895,  -895,  -895,   392,   393,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   150,  -895,
-    -895,  -895,   397,  -895,  -895,   398,  -895,   399,   400,  -895,
-    -895,   401,   403,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-     164,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   405,   181,
-    -895,  -895,  -895,  -895,    41,    41,  -895,  -135,   407,    71,
-    -895,   408,   410,   412,   228,   230,   236,   424,   426,   427,
-     428,   431,   437,   255,   257,   258,   259,   262,   263,   270,
-     275,   264,   443,   280,   282,   281,   284,   287,   452,   453,
-     461,   288,   462,   467,   474,   477,   480,   481,   484,   485,
-     488,   490,   491,   492,   313,   493,   498,   499,   503,   506,
-     507,   508,  -895,   174,  -895,   510,   511,   512,   328,    67,
-    -895,   514,   515,   516,   517,   518,   520,   338,   522,   523,
-     542,   502,  -895,   543,    84,  -895,   544,   545,   546,   547,
-     548,   549,   550,   551,  -895,   229,  -895,   552,   553,   382,
-     554,   563,   574,   395,  -895,   269,   581,   402,   404,  -895,
-      65,   583,   584,    73,  -895,   406,   585,   586,   415,   588,
-     416,   419,   605,   606,   425,   429,   611,   612,   613,   620,
-     592,  -895,   621,   440,    98,  -895,  -895,  -895,   624,   622,
-    -895,   623,   625,   626,  -895,  -895,  -895,   445,   448,   454,
-     634,   635,   608,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,   457,  -895,  -895,  -895,  -895,  -895,  -105,   458,
-     459,  -895,   641,   642,   643,   644,   645,   464,   278,   646,
-     648,   649,   650,   651,  -895,   652,   667,   668,   669,   470,
-     471,   672,  -895,   684,   245,   188,  -895,  -895,   509,   513,
-     519,   687,   521,   524,  -895,   684,   525,   686,  -895,   526,
-    -895,   684,   527,   528,   530,   531,   533,   534,   535,  -895,
-     536,   537,  -895,   538,   539,   541,  -895,  -895,   562,  -895,
-    -895,  -895,   564,   645,  -895,  -895,   565,   566,  -895,   567,
-    -895,  -895,    15,   540,  -895,  -895,  -105,   570,   571,   572,
-    -895,   689,  -895,  -895,    41,   174,    98,    67,   674,  -895,
-    -895,  -895,    81,    81,   693,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,   694,   695,   702,   721,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,   -39,   722,   723,   724,
-     163,    80,   191,   180,   592,  -895,  -895,   725,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   726,
-    -895,  -895,  -895,  -895,   107,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,   693,  -895,   183,   184,   208,  -895,   216,
-    -895,  -895,  -895,  -895,  -895,  -895,   692,   730,   745,   755,
-     756,  -895,  -895,  -895,  -895,   757,   758,   759,   760,   761,
-     762,  -895,   253,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,   274,  -895,   763,   764,  -895,  -895,
-     767,   765,  -895,  -895,   768,   772,  -895,  -895,   770,   774,
-    -895,  -895,   773,   777,  -895,  -895,  -895,  -895,  -895,  -895,
-      34,  -895,  -895,  -895,  -895,  -895,  -895,  -895,    46,  -895,
-    -895,   775,   779,  -895,  -895,   778,   780,  -895,   766,   781,
-     782,   783,   784,   785,   298,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,   786,   787,   788,  -895,   299,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   305,  -895,
-    -895,  -895,   789,  -895,   790,  -895,  -895,  -895,   314,  -895,
-    -895,  -895,  -895,  -895,   322,  -895,    61,  -895,   610,  -895,
-     791,   795,  -895,  -895,  -895,  -895,   792,   793,  -895,  -895,
-    -895,   797,   674,  -895,   798,   799,   800,   801,   619,   618,
-     627,   628,   629,   804,   805,   806,   807,   631,   632,   633,
-     636,   637,   638,    81,  -895,  -895,    81,  -895,   693,   502,
-    -895,   694,   269,  -895,   695,    65,  -895,   702,   609,  -895,
-     721,   -39,  -895,    74,   722,  -895,   229,  -895,   723,   -79,
-    -895,   724,   640,   647,   653,   654,   656,   657,   163,  -895,
-     639,   659,   660,    80,  -895,   808,   809,   191,  -895,   661,
-     811,   670,   817,   180,  -895,  -895,   128,   725,  -895,  -895,
-     816,   821,    84,  -895,   726,   825,  -895,  -895,   679,  -895,
-     348,   680,   696,   700,  -895,  -895,  -895,  -895,  -895,   701,
-     713,   714,   717,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-     323,  -895,   347,  -895,   822,  -895,   823,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,   353,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,   828,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,   827,   830,  -895,  -895,
-    -895,  -895,  -895,   829,  -895,   359,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,   720,   727,
-    -895,  -895,   728,  -895,    41,  -895,  -895,   832,  -895,  -895,
-    -895,  -895,  -895,   362,  -895,  -895,  -895,  -895,  -895,  -895,
-     735,   365,  -895,   684,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,   609,  -895,   834,   681,  -895,    74,  -895,  -895,  -895,
-    -895,  -895,  -895,   835,   737,   918,   128,  -895,  -895,  -895,
-    -895,  -895,   794,  -895,  -895,   954,  -895,   796,  -895,  -895,
-     953,  -895,  -895,    90,  -895,   -27,   953,  -895,  -895,   960,
-     964,   965,  -895,   366,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,   966,   802,   803,   810,   967,   -27,  -895,   812,  -895,
-    -895,  -895,   813,  -895,  -895,  -895
+     525,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,    31,    41,    59,    72,    74,   151,
+     155,   162,   188,   194,   198,   211,   217,   218,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,    41,  -151,   224,   114,    67,   234,
+     229,   170,   -31,    69,   275,   -84,   400,    95,  -905,   231,
+     232,   244,   230,   249,  -905,    53,  -905,  -905,  -905,  -905,
+    -905,   268,   271,   277,  -905,  -905,  -905,  -905,  -905,  -905,
+     278,   285,   295,   296,   297,   312,   325,   339,   340,  -905,
+     391,   392,   399,   404,   405,  -905,  -905,  -905,   406,   407,
+     408,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,   409,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,   411,  -905,    84,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,   415,  -905,    94,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,   416,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,    97,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   118,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,   248,   376,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   385,
+    -905,  -905,   419,  -905,  -905,  -905,   420,  -905,  -905,   396,
+     422,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   423,   429,  -905,  -905,  -905,  -905,
+     428,   435,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   121,  -905,  -905,  -905,   436,  -905,
+    -905,   439,  -905,   445,   446,  -905,  -905,   448,   449,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   124,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   450,   130,  -905,  -905,  -905,  -905,
+      41,    41,  -905,  -141,   451,   224,  -905,   453,   455,   456,
+     273,   274,   280,   462,   469,   470,   471,   473,   474,   250,
+     292,   300,   303,   304,   293,   310,   313,   316,   481,   321,
+     322,   311,   317,   324,   482,   500,   514,   332,   353,   367,
+     518,   555,   556,   557,   558,   559,   562,   563,   564,   565,
+     566,   568,   384,   570,   571,   572,   573,   575,   577,   578,
+    -905,   114,  -905,   579,   581,   582,   393,    67,  -905,   583,
+     585,   586,   587,   589,   590,   410,   591,   593,   594,   234,
+    -905,   596,   229,  -905,   597,   598,   599,   600,   601,   607,
+     608,   609,  -905,   170,  -905,   612,   614,   430,   616,   617,
+     618,   432,  -905,    69,   620,   434,   437,  -905,   275,   622,
+     623,    70,  -905,   438,   630,   631,   457,   641,   458,   459,
+     655,   656,   475,   476,   657,   658,   661,   664,   400,  -905,
+     665,   485,    95,  -905,  -905,  -905,   674,   673,  -905,   675,
+     676,   677,  -905,  -905,  -905,   497,   498,   499,   682,   683,
+     687,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+     505,  -905,  -905,  -905,  -905,  -905,    80,   506,   507,  -905,
+    -905,  -905,   691,   692,   693,   708,   707,   527,   252,   711,
+     712,   713,   714,   715,  -905,   716,   717,   718,   719,   532,
+     533,   722,  -905,   723,   113,   183,  -905,  -905,   541,   542,
+     543,   727,   545,   546,  -905,   723,   547,   729,  -905,   549,
+    -905,   723,   550,   551,   552,   553,   554,   560,   561,  -905,
+     567,   569,  -905,   574,   576,   584,  -905,  -905,   588,  -905,
+    -905,  -905,   592,   707,  -905,  -905,   595,   602,  -905,   603,
+    -905,  -905,    12,   604,  -905,  -905,    80,   605,   606,   610,
+    -905,   738,  -905,  -905,    41,   114,    95,    67,   726,  -905,
+    -905,  -905,   487,   487,   739,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   740,   744,   745,   746,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   -41,   747,   749,   751,
+     221,    14,   -54,    71,   400,  -905,  -905,   752,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   753,
+    -905,  -905,  -905,  -905,    96,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,   739,  -905,   149,   225,   241,  -905,   242,
+    -905,  -905,  -905,  -905,  -905,  -905,   757,   761,   762,   763,
+     765,  -905,  -905,  -905,  -905,   766,   767,   769,   770,   771,
+     773,  -905,   262,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   265,  -905,   772,   776,  -905,  -905,
+     775,   779,  -905,  -905,   778,   782,  -905,  -905,   780,   784,
+    -905,  -905,   783,   785,  -905,  -905,  -905,  -905,  -905,  -905,
+      61,  -905,  -905,  -905,  -905,  -905,  -905,  -905,    90,  -905,
+    -905,   786,   792,  -905,  -905,   790,   794,  -905,   795,   796,
+     797,   798,   799,   800,   266,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,   801,   802,   803,  -905,   315,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   319,  -905,
+    -905,  -905,   804,  -905,   805,  -905,  -905,  -905,   333,  -905,
+    -905,  -905,  -905,  -905,   362,  -905,   112,  -905,   624,  -905,
+     807,   808,  -905,  -905,  -905,  -905,   806,   809,  -905,  -905,
+    -905,   812,   726,  -905,   813,   814,   815,   816,   621,   632,
+     633,   634,   635,   817,   822,   823,   824,   640,   642,   643,
+     644,   639,   645,   487,  -905,  -905,   487,  -905,   739,   234,
+    -905,   740,    69,  -905,   744,   275,  -905,   745,   580,  -905,
+     746,   -41,  -905,   291,   747,  -905,   170,  -905,   749,   -84,
+    -905,   751,   646,   647,   648,   649,   650,   651,   221,  -905,
+     652,   653,   659,    14,  -905,   837,   840,   -54,  -905,   654,
+     842,   660,   843,    71,  -905,  -905,    39,   752,  -905,  -905,
+     844,   848,   229,  -905,   753,   849,  -905,  -905,   666,  -905,
+     331,   668,   669,   672,  -905,  -905,  -905,  -905,  -905,   679,
+     688,   704,   709,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+     373,  -905,   374,  -905,   867,  -905,   872,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   375,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   892,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,   901,   907,
+    -905,  -905,  -905,  -905,  -905,   905,  -905,   377,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+     728,   735,  -905,  -905,   736,  -905,    41,  -905,  -905,   927,
+    -905,  -905,  -905,  -905,  -905,   383,  -905,  -905,  -905,  -905,
+    -905,  -905,   789,   386,  -905,   723,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,   580,  -905,   928,   743,  -905,   291,  -905,
+    -905,  -905,  -905,  -905,  -905,   970,   793,   977,    39,  -905,
+    -905,  -905,  -905,  -905,   810,  -905,  -905,   978,  -905,   811,
+    -905,  -905,   979,  -905,  -905,   148,  -905,  -119,   979,  -905,
+    -905,   980,   981,   983,  -905,   389,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,   984,   818,   819,   821,   985,  -119,  -905,
+     825,  -905,  -905,  -905,   826,  -905,  -905,  -905
   };
 
   const short
@@ -4407,658 +4428,663 @@ namespace isc { namespace dhcp {
       20,    22,    24,    26,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     1,    43,
       36,    32,    31,    28,    29,    30,    35,     3,    33,    34,
-      56,     5,    63,     7,   165,     9,   323,    11,   506,    13,
-     531,    15,   431,    17,   439,    19,   476,    21,   288,    23,
-     637,    25,   687,    27,    45,    39,     0,     0,     0,     0,
-       0,   533,     0,   441,   478,     0,     0,     0,    47,     0,
-      46,     0,     0,    40,    61,     0,    58,    60,   685,   154,
-     180,     0,     0,     0,   552,   554,   556,   178,   187,   189,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   128,
-       0,     0,     0,     0,     0,   136,   143,   145,     0,   315,
-     429,   468,   386,   519,   521,   379,   253,   580,   523,   280,
-     299,     0,   267,   606,   619,   635,   147,   149,   696,     0,
-     118,     0,    65,    67,    68,    69,    70,    71,   102,   103,
-     104,    72,   100,    89,    90,    91,   108,   109,   110,   111,
-     112,   113,   106,   107,   114,   115,   116,    75,    76,    97,
-      77,    78,    79,   117,    83,    84,    73,   101,    74,    81,
-      82,    95,    96,    98,    92,    93,    94,    80,    85,    86,
-      87,    88,    99,   105,   167,   169,   173,     0,   164,     0,
-     156,   158,   159,   160,   161,   162,   163,   367,   369,   371,
-     498,   365,   373,     0,   377,   375,   576,   364,   327,   328,
-     329,   330,   331,   352,   353,   354,   342,   343,   355,   356,
-     357,   358,   359,   360,   361,   362,   363,     0,   325,   334,
-     347,   348,   349,   335,   337,   338,   340,   336,   332,   333,
-     350,   351,   339,   344,   345,   346,   341,   517,   516,   512,
-     513,   511,     0,   508,   510,   514,   515,   574,   562,   564,
-     568,   566,   572,   570,   558,   551,   545,   549,   550,     0,
-     534,   535,   546,   547,   548,   542,   537,   543,   539,   540,
-     541,   544,   538,     0,   458,   233,     0,   462,   460,   465,
-       0,   454,   455,     0,   442,   443,   445,   457,   446,   447,
-     448,   464,   449,   450,   451,   452,   453,   492,     0,     0,
-     490,   491,   494,   495,     0,   479,   480,   482,   483,   484,
-     485,   486,   487,   488,   489,   295,   297,   292,     0,   290,
-     293,   294,     0,   673,   660,     0,   663,     0,     0,   667,
-     671,     0,     0,   677,   679,   681,   683,   658,   656,   657,
-       0,   639,   641,   642,   643,   644,   645,   646,   647,   648,
-     653,   649,   650,   651,   652,   654,   655,   693,     0,     0,
-     689,   691,   692,    44,     0,     0,    37,     0,     0,     0,
-      57,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      56,     5,    63,     7,   169,     9,   327,    11,   514,    13,
+     539,    15,   439,    17,   447,    19,   484,    21,   292,    23,
+     645,    25,   695,    27,    45,    39,     0,     0,     0,     0,
+       0,   541,     0,   449,   486,     0,     0,     0,    47,     0,
+      46,     0,     0,    40,    61,     0,    58,    60,   693,   158,
+     184,     0,     0,     0,   560,   562,   564,   182,   191,   193,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   130,
+       0,     0,     0,     0,     0,   138,   145,   147,     0,     0,
+       0,   319,   437,   476,   392,   527,   529,   385,   257,   588,
+     531,   284,   303,     0,   271,   614,   627,   643,   151,   153,
+     704,     0,   120,     0,    65,    67,    68,    69,    70,    71,
+     102,   103,   104,    72,   100,    89,    90,    91,   108,   109,
+     110,   111,   112,   113,   114,   115,   106,   107,   116,   117,
+     118,    75,    76,    97,    77,    78,    79,   119,    83,    84,
+      73,   101,    74,    81,    82,    95,    96,    98,    92,    93,
+      94,    80,    85,    86,    87,    88,    99,   105,   171,   173,
+     177,     0,   168,     0,   160,   162,   163,   164,   165,   166,
+     167,   373,   375,   377,   506,   371,   379,     0,   383,   381,
+     584,   370,   331,   332,   333,   334,   335,   356,   357,   358,
+     346,   347,   359,   360,   361,   362,   363,   364,   365,   366,
+     367,   368,   369,     0,   329,   338,   351,   352,   353,   339,
+     341,   342,   344,   340,   336,   337,   354,   355,   343,   348,
+     349,   350,   345,   525,   524,   520,   521,   519,     0,   516,
+     518,   522,   523,   582,   570,   572,   576,   574,   580,   578,
+     566,   559,   553,   557,   558,     0,   542,   543,   554,   555,
+     556,   550,   545,   551,   547,   548,   549,   552,   546,     0,
+     466,   237,     0,   470,   468,   473,     0,   462,   463,     0,
+     450,   451,   453,   465,   454,   455,   456,   472,   457,   458,
+     459,   460,   461,   500,     0,     0,   498,   499,   502,   503,
+       0,   487,   488,   490,   491,   492,   493,   494,   495,   496,
+     497,   299,   301,   296,     0,   294,   297,   298,     0,   681,
+     668,     0,   671,     0,     0,   675,   679,     0,     0,   685,
+     687,   689,   691,   666,   664,   665,     0,   647,   649,   650,
+     651,   652,   653,   654,   655,   656,   661,   657,   658,   659,
+     660,   662,   663,   701,     0,     0,   697,   699,   700,    44,
+       0,     0,    37,     0,     0,     0,    57,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    55,     0,    64,     0,     0,     0,     0,     0,
-     166,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   324,     0,     0,   507,     0,     0,     0,     0,
-       0,     0,     0,     0,   532,     0,   432,     0,     0,     0,
-       0,     0,     0,     0,   440,     0,     0,     0,     0,   477,
-       0,     0,     0,     0,   289,     0,     0,     0,     0,     0,
+      55,     0,    64,     0,     0,     0,     0,     0,   170,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   638,     0,     0,     0,   688,    48,    41,     0,     0,
-      59,     0,     0,     0,   130,   131,   132,     0,     0,     0,
-       0,     0,     0,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,     0,   152,   153,   133,   134,   135,     0,     0,
-       0,   151,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   605,     0,     0,     0,     0,     0,
-       0,     0,    66,     0,     0,     0,   177,   157,     0,     0,
-       0,     0,     0,     0,   385,     0,     0,     0,   326,     0,
-     509,     0,     0,     0,     0,     0,     0,     0,     0,   536,
-       0,     0,   456,     0,     0,     0,   467,   444,     0,   496,
-     497,   481,     0,     0,   291,   659,     0,     0,   662,     0,
-     665,   666,     0,     0,   675,   676,     0,     0,     0,     0,
-     640,     0,   695,   690,     0,     0,     0,     0,     0,   553,
-     555,   557,     0,     0,   191,   129,   138,   139,   140,   141,
-     142,   137,   144,   146,   317,   433,   470,   388,    38,   520,
-     522,   381,   382,   383,   384,   380,     0,     0,   525,   282,
-       0,     0,     0,     0,     0,   148,   150,     0,    49,   168,
-     171,   172,   170,   175,   176,   174,   368,   370,   372,   500,
-     366,   374,   378,   376,     0,   518,   575,   563,   565,   569,
-     567,   573,   571,   559,   459,   234,   463,   461,   466,   493,
-     296,   298,   674,   661,   664,   669,   670,   668,   672,   678,
-     680,   682,   684,   191,    42,     0,     0,     0,   185,     0,
-     182,   184,   220,   226,   228,   230,     0,     0,     0,     0,
-       0,   242,   244,   246,   248,     0,     0,     0,     0,     0,
-       0,   219,     0,   197,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   212,   213,   214,   209,   215,   216,
-     217,   210,   211,   218,     0,   195,     0,   192,   193,   321,
-       0,   318,   319,   437,     0,   434,   435,   474,     0,   471,
-     472,   392,     0,   389,   390,   262,   263,   264,   265,   266,
-       0,   255,   257,   258,   259,   260,   261,   584,     0,   582,
-     529,     0,   526,   527,   286,     0,   283,   284,     0,     0,
-       0,     0,     0,     0,     0,   301,   303,   304,   305,   306,
-     307,   308,     0,     0,     0,   276,     0,   269,   271,   272,
-     273,   274,   275,   615,   617,   614,   612,   613,     0,   608,
-     610,   611,     0,   630,     0,   633,   626,   627,     0,   621,
-     623,   624,   625,   628,     0,   700,     0,   698,    51,   504,
-       0,   501,   502,   560,   578,   579,     0,     0,    62,   686,
-     155,     0,     0,   181,     0,     0,     0,     0,     0,     0,
+     328,     0,     0,   515,     0,     0,     0,     0,     0,     0,
+       0,     0,   540,     0,   440,     0,     0,     0,     0,     0,
+       0,     0,   448,     0,     0,     0,     0,   485,     0,     0,
+       0,     0,   293,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   646,
+       0,     0,     0,   696,    48,    41,     0,     0,    59,     0,
+       0,     0,   132,   133,   134,     0,     0,     0,     0,     0,
+       0,   121,   122,   123,   124,   125,   126,   127,   128,   129,
+       0,   156,   157,   135,   136,   137,     0,     0,     0,   149,
+     150,   155,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   613,     0,     0,     0,     0,     0,
+       0,     0,    66,     0,     0,     0,   181,   161,     0,     0,
+       0,     0,     0,     0,   391,     0,     0,     0,   330,     0,
+     517,     0,     0,     0,     0,     0,     0,     0,     0,   544,
+       0,     0,   464,     0,     0,     0,   475,   452,     0,   504,
+     505,   489,     0,     0,   295,   667,     0,     0,   670,     0,
+     673,   674,     0,     0,   683,   684,     0,     0,     0,     0,
+     648,     0,   703,   698,     0,     0,     0,     0,     0,   561,
+     563,   565,     0,     0,   195,   131,   140,   141,   142,   143,
+     144,   139,   146,   148,   321,   441,   478,   394,    38,   528,
+     530,   387,   388,   389,   390,   386,     0,     0,   533,   286,
+       0,     0,     0,     0,     0,   152,   154,     0,    49,   172,
+     175,   176,   174,   179,   180,   178,   374,   376,   378,   508,
+     372,   380,   384,   382,     0,   526,   583,   571,   573,   577,
+     575,   581,   579,   567,   467,   238,   471,   469,   474,   501,
+     300,   302,   682,   669,   672,   677,   678,   676,   680,   686,
+     688,   690,   692,   195,    42,     0,     0,     0,   189,     0,
+     186,   188,   224,   230,   232,   234,     0,     0,     0,     0,
+       0,   246,   248,   250,   252,     0,     0,     0,     0,     0,
+       0,   223,     0,   201,   203,   204,   205,   206,   207,   208,
+     209,   210,   211,   212,   216,   217,   218,   213,   219,   220,
+     221,   214,   215,   222,     0,   199,     0,   196,   197,   325,
+       0,   322,   323,   445,     0,   442,   443,   482,     0,   479,
+     480,   398,     0,   395,   396,   266,   267,   268,   269,   270,
+       0,   259,   261,   262,   263,   264,   265,   592,     0,   590,
+     537,     0,   534,   535,   290,     0,   287,   288,     0,     0,
+       0,     0,     0,     0,     0,   305,   307,   308,   309,   310,
+     311,   312,     0,     0,     0,   280,     0,   273,   275,   276,
+     277,   278,   279,   623,   625,   622,   620,   621,     0,   616,
+     618,   619,     0,   638,     0,   641,   634,   635,     0,   629,
+     631,   632,   633,   636,     0,   708,     0,   706,    51,   512,
+       0,   509,   510,   568,   586,   587,     0,     0,    62,   694,
+     159,     0,     0,   185,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   179,   188,     0,   190,     0,     0,
-     316,     0,   441,   430,     0,   478,   469,     0,     0,   387,
-       0,     0,   254,   586,     0,   581,   533,   524,     0,     0,
-     281,     0,     0,     0,     0,     0,     0,     0,     0,   300,
-       0,     0,     0,     0,   268,     0,     0,     0,   607,     0,
-       0,     0,     0,     0,   620,   636,     0,     0,   697,    53,
-       0,    52,     0,   499,     0,     0,   577,   694,     0,   183,
-       0,     0,     0,     0,   232,   235,   236,   237,   238,     0,
-       0,     0,     0,   250,   251,   239,   240,   241,   252,   198,
-       0,   194,     0,   320,     0,   436,     0,   473,   428,   411,
-     412,   413,   399,   400,   416,   417,   418,   402,   403,   419,
-     420,   421,   422,   423,   424,   425,   426,   427,   396,   397,
-     398,   409,   410,   408,     0,   394,   401,   414,   415,   404,
-     405,   406,   407,   391,   256,   602,     0,   600,   601,   593,
-     594,   598,   599,   595,   596,   597,     0,   587,   588,   590,
-     591,   592,   583,     0,   528,     0,   285,   309,   310,   311,
-     312,   313,   314,   302,   277,   278,   279,   270,     0,     0,
-     609,   629,     0,   632,     0,   622,   714,     0,   712,   710,
-     704,   708,   709,     0,   702,   706,   707,   705,   699,    50,
-       0,     0,   503,     0,   186,   222,   223,   224,   225,   221,
-     227,   229,   231,   243,   245,   247,   249,   196,   322,   438,
-     475,     0,   393,     0,     0,   585,     0,   530,   287,   616,
-     618,   631,   634,     0,     0,     0,     0,   701,    54,   505,
-     561,   395,     0,   604,   589,     0,   711,     0,   703,   603,
-       0,   713,   718,     0,   716,     0,     0,   715,   727,     0,
-       0,     0,   732,     0,   720,   722,   723,   724,   725,   726,
-     717,     0,     0,     0,     0,     0,     0,   719,     0,   729,
-     730,   731,     0,   721,   728,   733
+       0,     0,     0,     0,   183,   192,     0,   194,     0,     0,
+     320,     0,   449,   438,     0,   486,   477,     0,     0,   393,
+       0,     0,   258,   594,     0,   589,   541,   532,     0,     0,
+     285,     0,     0,     0,     0,     0,     0,     0,     0,   304,
+       0,     0,     0,     0,   272,     0,     0,     0,   615,     0,
+       0,     0,     0,     0,   628,   644,     0,     0,   705,    53,
+       0,    52,     0,   507,     0,     0,   585,   702,     0,   187,
+       0,     0,     0,     0,   236,   239,   240,   241,   242,     0,
+       0,     0,     0,   254,   255,   243,   244,   245,   256,   202,
+       0,   198,     0,   324,     0,   444,     0,   481,   436,   417,
+     418,   419,   405,   406,   422,   423,   424,   408,   409,   425,
+     426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
+     402,   403,   404,   415,   416,   414,     0,   400,   407,   420,
+     421,   410,   411,   412,   413,   397,   260,   610,     0,   608,
+     609,   601,   602,   606,   607,   603,   604,   605,     0,   595,
+     596,   598,   599,   600,   591,     0,   536,     0,   289,   313,
+     314,   315,   316,   317,   318,   306,   281,   282,   283,   274,
+       0,     0,   617,   637,     0,   640,     0,   630,   722,     0,
+     720,   718,   712,   716,   717,     0,   710,   714,   715,   713,
+     707,    50,     0,     0,   511,     0,   190,   226,   227,   228,
+     229,   225,   231,   233,   235,   247,   249,   251,   253,   200,
+     326,   446,   483,     0,   399,     0,     0,   593,     0,   538,
+     291,   624,   626,   639,   642,     0,     0,     0,     0,   709,
+      54,   513,   569,   401,     0,   612,   597,     0,   719,     0,
+     711,   611,     0,   721,   726,     0,   724,     0,     0,   723,
+     735,     0,     0,     0,   740,     0,   728,   730,   731,   732,
+     733,   734,   725,     0,     0,     0,     0,     0,     0,   727,
+       0,   737,   738,   739,     0,   729,   736,   741
   };
 
   const short
   Dhcp4Parser::yypgoto_[] =
   {
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,   -52,  -895,  -526,  -895,   361,
-    -895,  -895,  -895,  -895,  -895,  -895,  -570,  -895,  -895,  -895,
-     -67,  -895,  -895,  -895,   587,  -895,  -895,  -895,  -895,   337,
-     532,   -40,   -28,   -24,    -1,     1,    11,    19,    22,  -895,
-    -895,  -895,  -895,    25,    26,    29,    30,    32,    37,  -895,
-     351,    40,  -895,    43,  -895,    44,  -895,    45,  -895,    47,
-    -895,  -895,  -895,  -895,   336,   529,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,    99,  -895,  -895,  -895,  -895,  -895,  -895,   256,
-    -895,    75,  -895,  -630,    83,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,   -63,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,    63,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,    42,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,    56,  -895,  -895,  -895,    59,
-     496,  -895,  -895,  -895,  -895,  -895,  -895,  -895,    54,  -895,
-    -895,  -895,  -895,  -895,  -895,  -894,  -895,  -895,  -895,    85,
-    -895,  -895,  -895,    86,   555,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -891,  -895,   -65,  -895,    49,  -895,    48,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,    87,  -895,  -895,
-    -118,   -46,  -895,  -895,  -895,  -895,  -895,    88,  -895,  -895,
-    -895,    91,  -895,   556,  -895,   -42,  -895,  -895,  -895,  -895,
-    -895,   -36,  -895,  -895,  -895,  -895,  -895,   -35,  -895,  -895,
-    -895,    77,  -895,  -895,  -895,    93,  -895,   557,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,    36,
-    -895,  -895,  -895,    39,   559,  -895,  -895,   -51,  -895,   -11,
-    -895,   -25,  -895,  -895,  -895,    76,  -895,  -895,  -895,    79,
-    -895,   558,   -55,  -895,     0,  -895,     7,  -895,   312,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -890,  -895,  -895,  -895,
-    -895,  -895,    94,  -895,  -895,  -895,  -107,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,    66,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,    57,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,   340,   505,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895,  -895,   376,   560,  -895,  -895,  -895,
-    -895,  -895,  -895,    60,  -895,  -895,  -106,  -895,  -895,  -895,
-    -895,  -895,  -895,  -127,  -895,  -895,  -145,  -895,  -895,  -895,
-    -895,  -895,  -895,  -895
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,   -52,  -905,  -533,  -905,   368,
+    -905,  -905,  -905,  -905,  -905,  -905,  -580,  -905,  -905,  -905,
+     -67,  -905,  -905,  -905,   611,  -905,  -905,  -905,  -905,   345,
+     544,   -40,   -28,   -24,    -1,     1,    11,    19,    22,  -905,
+    -905,  -905,  -905,    25,    26,    29,    30,    32,    37,  -905,
+     356,    40,  -905,    43,  -905,    44,    45,    47,  -905,    48,
+    -905,    50,  -905,  -905,  -905,  -905,   346,   537,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,   104,  -905,  -905,  -905,  -905,  -905,
+    -905,   264,  -905,    82,  -905,  -640,    88,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,   -63,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+      73,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,    49,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,    62,  -905,  -905,
+    -905,    66,   510,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+      64,  -905,  -905,  -905,  -905,  -905,  -905,  -904,  -905,  -905,
+    -905,    86,  -905,  -905,  -905,    98,   615,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -901,  -905,   -65,  -905,    52,
+    -905,    51,  -905,  -905,  -905,  -905,  -905,  -905,  -905,    85,
+    -905,  -905,  -107,   -46,  -905,  -905,  -905,  -905,  -905,    99,
+    -905,  -905,  -905,   100,  -905,   526,  -905,   -42,  -905,  -905,
+    -905,  -905,  -905,   -36,  -905,  -905,  -905,  -905,  -905,   -35,
+    -905,  -905,  -905,    91,  -905,  -905,  -905,   101,  -905,   522,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,    54,  -905,  -905,  -905,    55,   613,  -905,  -905,   -51,
+    -905,   -11,  -905,   -25,  -905,  -905,  -905,    83,  -905,  -905,
+    -905,    89,  -905,   548,   -55,  -905,     0,  -905,     7,  -905,
+     326,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -900,  -905,
+    -905,  -905,  -905,  -905,   102,  -905,  -905,  -905,   -99,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,    75,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,    76,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,   349,   517,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905,  -905,   394,   515,  -905,
+    -905,  -905,  -905,  -905,  -905,    77,  -905,  -905,  -100,  -905,
+    -905,  -905,  -905,  -905,  -905,  -117,  -905,  -905,  -136,  -905,
+    -905,  -905,  -905,  -905,  -905,  -905
   };
 
   const short
   Dhcp4Parser::yydefgoto_[] =
   {
-      -1,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    36,    37,    38,    65,   659,
-      82,    83,    39,    64,    79,    80,   679,   868,   960,   961,
-     751,    41,    66,    85,    86,    87,   388,    43,    67,   141,
-     142,   143,   144,   145,   146,   147,   148,   149,   150,   151,
-     152,   412,   153,   154,   155,   156,   157,   158,   159,   418,
-     651,   160,   419,   161,   420,   162,   439,   163,   440,   164,
-     165,   166,   167,   392,   199,   200,    45,    68,   201,   445,
-     202,   446,   682,   203,   447,   685,   204,   168,   400,   169,
-     393,   729,   730,   731,   881,   170,   401,   171,   402,   776,
-     777,   778,   906,   752,   753,   754,   884,  1099,   755,   885,
-     756,   886,   757,   887,   758,   759,   478,   760,   761,   762,
-     763,   764,   765,   766,   767,   893,   768,   894,   769,   895,
-     770,   896,   771,   772,   773,   172,   429,   800,   801,   802,
-     803,   804,   805,   806,   173,   435,   836,   837,   838,   839,
-     840,   174,   432,   815,   816,   817,   929,    59,    75,   338,
-     339,   340,   491,   341,   492,   175,   433,   824,   825,   826,
-     827,   828,   829,   830,   831,   176,   422,   780,   781,   782,
-     909,    47,    69,   237,   238,   239,   455,   240,   451,   241,
-     452,   242,   453,   243,   456,   244,   459,   245,   458,   177,
-     428,   665,   247,   178,   425,   792,   793,   794,   918,  1024,
-    1025,   179,   423,    53,    72,   784,   785,   786,   912,    55,
-      73,   303,   304,   305,   306,   307,   308,   309,   477,   310,
-     481,   311,   480,   312,   313,   482,   314,   180,   424,   788,
-     789,   790,   915,    57,    74,   324,   325,   326,   327,   328,
-     486,   329,   330,   331,   332,   249,   454,   870,   871,   872,
-     962,    49,    70,   262,   263,   264,   463,   181,   426,   182,
-     427,   183,   431,   811,   812,   813,   926,    51,    71,   279,
-     280,   281,   184,   397,   185,   398,   186,   399,   285,   473,
-     875,   965,   286,   467,   287,   468,   288,   470,   289,   469,
-     290,   472,   291,   471,   292,   466,   256,   460,   876,   187,
-     430,   808,   809,   923,  1046,  1047,  1048,  1049,  1050,  1113,
-    1051,   188,   189,   436,   848,   849,   850,   945,   851,   946,
-     190,   437,   858,   859,   860,   861,   950,   862,   863,   952,
-     191,   438,    61,    76,   360,   361,   362,   363,   497,   364,
-     365,   499,   366,   367,   368,   502,   717,   369,   503,   370,
-     496,   371,   372,   373,   506,   374,   507,   375,   508,   376,
-     509,   192,   391,    63,    77,   379,   380,   381,   512,   382,
-     193,   441,   866,   867,   956,  1083,  1084,  1085,  1086,  1125,
-    1087,  1123,  1143,  1144,  1145,  1153,  1154,  1155,  1161,  1156,
-    1157,  1158,  1159,  1165
+       0,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    36,    37,    38,    65,   669,
+      82,    83,    39,    64,    79,    80,   689,   878,   970,   971,
+     761,    41,    66,    85,    86,    87,   394,    43,    67,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   418,   155,   156,   157,   158,   159,   160,   161,   424,
+     661,   162,   425,   163,   426,   164,   165,   166,   447,   167,
+     448,   168,   169,   170,   171,   398,   203,   204,    45,    68,
+     205,   453,   206,   454,   692,   207,   455,   695,   208,   172,
+     406,   173,   399,   739,   740,   741,   891,   174,   407,   175,
+     408,   786,   787,   788,   916,   762,   763,   764,   894,  1111,
+     765,   895,   766,   896,   767,   897,   768,   769,   486,   770,
+     771,   772,   773,   774,   775,   776,   777,   903,   778,   904,
+     779,   905,   780,   906,   781,   782,   783,   176,   437,   810,
+     811,   812,   813,   814,   815,   816,   177,   443,   846,   847,
+     848,   849,   850,   178,   440,   825,   826,   827,   939,    59,
+      75,   344,   345,   346,   499,   347,   500,   179,   441,   834,
+     835,   836,   837,   838,   839,   840,   841,   180,   430,   790,
+     791,   792,   919,    47,    69,   243,   244,   245,   463,   246,
+     459,   247,   460,   248,   461,   249,   464,   250,   467,   251,
+     466,   181,   436,   675,   253,   182,   433,   802,   803,   804,
+     928,  1036,  1037,   183,   431,    53,    72,   794,   795,   796,
+     922,    55,    73,   309,   310,   311,   312,   313,   314,   315,
+     485,   316,   489,   317,   488,   318,   319,   490,   320,   184,
+     432,   798,   799,   800,   925,    57,    74,   330,   331,   332,
+     333,   334,   494,   335,   336,   337,   338,   255,   462,   880,
+     881,   882,   972,    49,    70,   268,   269,   270,   471,   185,
+     434,   186,   435,   187,   439,   821,   822,   823,   936,    51,
+      71,   285,   286,   287,   188,   403,   189,   404,   190,   405,
+     291,   481,   885,   975,   292,   475,   293,   476,   294,   478,
+     295,   477,   296,   480,   297,   479,   298,   474,   262,   468,
+     886,   191,   438,   818,   819,   933,  1058,  1059,  1060,  1061,
+    1062,  1125,  1063,   192,   193,   444,   858,   859,   860,   955,
+     861,   956,   194,   445,   868,   869,   870,   871,   960,   872,
+     873,   962,   195,   446,    61,    76,   366,   367,   368,   369,
+     505,   370,   371,   507,   372,   373,   374,   510,   727,   375,
+     511,   376,   504,   377,   378,   379,   514,   380,   515,   381,
+     516,   382,   517,   196,   397,    63,    77,   385,   386,   387,
+     520,   388,   197,   449,   876,   877,   966,  1095,  1096,  1097,
+    1098,  1137,  1099,  1135,  1155,  1156,  1157,  1165,  1166,  1167,
+    1173,  1168,  1169,  1170,  1171,  1177
   };
 
   const short
   Dhcp4Parser::yytable_[] =
   {
-     140,   198,   217,   258,   275,   259,   301,   320,   337,   357,
-     302,   321,    78,   774,   253,   692,   282,   205,   250,   265,
-     277,   696,   315,   333,  1019,   358,   293,  1020,  1032,   218,
-     658,    28,   322,   715,   248,   261,   276,   921,   323,    81,
-     922,   219,   335,   336,   252,   220,    29,   120,    30,   924,
-      31,   518,   925,   646,   647,   648,   649,   206,   251,   266,
-     278,   389,   316,   334,   957,   359,   390,   958,   221,   254,
-     222,   283,   795,   796,   797,   798,   255,   799,   284,    40,
-     223,    84,   194,   195,   650,   443,   196,   658,   224,   197,
-     444,   225,   449,  1146,   226,   227,  1147,   450,   228,   229,
-     461,   230,    94,    95,    96,   462,   231,   139,    42,   232,
-     377,   378,   233,   234,   235,   732,   236,   246,    44,   260,
-     733,   734,   735,   736,   737,   738,   739,   740,   741,   742,
-     743,   744,   745,   746,   747,   748,   749,   750,    46,  1148,
-      48,   464,  1149,  1150,  1151,  1152,   465,   295,   317,   296,
-     297,   318,   319,   493,   120,   121,   295,   383,   494,   123,
-     124,   123,   124,   295,    50,   121,    52,   510,   123,   124,
-     384,   716,   511,    54,   123,   124,    56,   257,   123,   124,
-      58,  1035,  1036,    60,   514,    88,   443,   514,    89,   515,
-     214,   878,   879,   215,   335,   336,    62,    90,   385,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   683,   684,
-     295,   449,   832,   833,   834,   386,   880,  1019,   387,   882,
-    1020,  1032,   123,   124,   883,   274,   873,    32,    33,    34,
-      35,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     142,   202,   221,   264,   281,   265,   307,   326,   343,   363,
+     308,   327,    78,   784,   259,   702,   288,   209,   256,   271,
+     283,   706,   321,   339,  1031,   364,   299,  1032,  1044,   222,
+     725,    28,   328,   668,   254,   267,   282,    81,   329,   341,
+     342,   223,   125,   126,   258,   224,    29,   526,    30,  1160,
+      31,   122,  1161,  1162,  1163,  1164,   395,   210,   257,   272,
+     284,   396,   322,   340,   931,   365,    40,   932,   225,   260,
+     226,   289,   805,   806,   807,   808,   261,   809,   290,    42,
+     227,    44,   198,   199,   853,   854,   200,   451,   228,   201,
+     668,   229,   452,   934,   230,   231,   935,   457,   232,   233,
+     469,   234,   458,   300,   141,   470,   235,   383,   384,   236,
+     125,   126,   237,   238,   239,   967,   240,   241,   968,   242,
+     252,   472,   266,   301,   501,    88,   473,   518,    89,   502,
+     690,   691,   519,   522,   141,   125,   126,    90,   523,    91,
+      92,    93,    94,    95,    96,    97,    98,    99,   842,   843,
+     844,  1158,   451,   301,  1159,   302,   303,   888,    46,   304,
+     305,   306,    48,   125,   126,   125,   126,   125,   126,    50,
+     726,   100,   101,   102,   103,   104,   105,   106,   107,   108,
      109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   139,   394,   139,   120,   121,   903,    94,    95,    96,
-     139,   904,   680,   681,   395,   122,   139,   139,   123,   124,
-     139,   396,   403,   125,   123,   124,   990,   903,   126,   127,
-     404,   405,   905,   406,   128,   123,   124,   818,   819,   820,
-     821,   822,   823,  1076,   129,  1077,  1078,   130,   407,   408,
-     409,   938,   943,   294,   131,   132,   939,   944,   947,   133,
-     121,   410,   134,   948,   139,   411,   135,   953,   474,   852,
-     853,   854,   954,   123,   124,   510,   903,   843,   844,   413,
-     955,  1107,   516,   517,   267,   414,   136,   137,   138,   415,
-     268,   269,   270,   271,   272,   273,   416,   274,   417,   421,
-     461,   295,   475,   296,   297,  1108,  1111,   298,   299,   300,
-     139,  1112,   493,   123,   124,  1126,   855,  1118,   464,  1166,
-    1127,   434,   442,  1129,  1167,   448,   140,   139,   661,   662,
-     663,   664,   198,  1095,  1096,  1097,  1098,   457,   476,   479,
-     483,   485,   484,   487,   217,   488,   490,   258,   205,   259,
-     489,   495,   498,   500,   501,   504,   253,   505,   275,   513,
-     250,   519,   521,   265,   522,   139,   523,   524,   301,   525,
-     282,   218,   302,   320,   277,   526,   248,   321,   527,   261,
-     528,   529,   530,   219,   315,   531,   252,   220,   206,   333,
-     276,   532,   533,   357,   534,   535,   536,   542,   322,   537,
-     251,   541,   538,   266,   323,   139,   548,   549,   539,   358,
-     221,   254,   222,   540,   278,   550,   552,   543,   255,   544,
-     545,   553,   223,   546,   316,   283,   547,   551,   554,   334,
-     224,   555,   284,   225,   556,   557,   226,   227,   558,   559,
-     228,   229,   560,   230,   561,   562,   563,   565,   231,   359,
-     564,   232,   566,   567,   233,   234,   235,   568,   236,   246,
-     569,   570,   571,   260,   573,   574,   575,   576,   578,   579,
-     580,   581,   582,  1130,   583,   584,   585,   586,    92,    93,
-      94,    95,    96,     1,     2,     3,     4,     5,     6,     7,
-       8,     9,    10,    11,    12,    13,   587,   589,   591,   592,
-     593,   594,   595,   596,   597,   598,   600,   601,   603,   100,
-     101,   102,   103,   104,   105,   106,   107,   604,   140,   602,
-     198,   112,   113,   114,   115,   116,   117,   118,   605,   207,
-     208,   209,   724,   121,   606,   608,   205,   612,   613,   616,
-     617,   609,   619,   610,   210,   615,   123,   124,   211,   212,
-     213,   125,   618,   620,   835,   845,   621,   357,   214,   622,
-     623,   215,   128,   644,   624,   626,   627,   628,   625,   216,
-     841,   846,   856,   358,   629,   631,   206,   632,   634,   635,
-     636,   639,   637,   638,   640,    92,    93,    94,    95,    96,
-     641,   642,   643,   645,   652,   653,   654,   655,   656,   657,
-     660,   666,    30,   667,   668,   669,   675,   676,   670,   671,
-     842,   847,   857,   359,   136,   137,   100,   101,   102,   103,
-     104,   105,   106,   107,   672,   673,   674,   677,   112,   113,
-     114,   115,   116,   117,   118,   119,   123,   124,   139,   678,
-     121,   295,   689,   694,   723,   686,   888,   718,   728,   687,
-     775,   779,   783,   123,   124,   688,   212,   690,   125,   787,
-     691,   693,   695,   697,   698,   214,   699,   700,   215,   701,
-     702,   703,   704,   705,   706,   707,   216,   708,   791,   807,
-     810,   814,   865,   869,   889,   342,   343,   344,   345,   346,
-     347,   348,   349,   350,   351,   352,   353,   354,   709,   890,
-     710,   712,   713,   714,   355,   356,   720,   721,   722,   891,
-     892,   897,   898,   899,   900,   901,   902,   908,   911,   907,
-     932,   136,   137,   910,   913,   914,   916,   917,   139,   919,
-     920,   927,   928,   931,   930,   933,   934,   935,   936,   937,
-     940,   941,   942,   949,   951,   139,   959,   963,   964,   967,
-     966,   968,   970,   971,   972,   973,   974,   975,   979,   980,
-     981,   982,  1068,  1069,   976,  1072,   978,   977,   983,   984,
-     985,  1074,  1089,   986,  1090,   988,   987,  1057,  1064,  1093,
-    1109,  1110,  1114,  1116,  1058,  1115,  1124,  1117,  1132,  1135,
-    1059,  1060,   217,  1061,  1062,   301,  1065,  1066,   320,   302,
-    1071,   998,   321,  1021,   253,  1018,  1037,  1073,   250,   275,
-    1038,   315,   337,  1029,   333,  1094,  1100,  1027,  1043,   218,
-    1133,   282,  1041,   322,   248,   277,   835,  1039,   999,   323,
-     845,   219,  1101,  1026,   252,   220,  1102,  1103,  1040,  1079,
-    1000,   276,   841,  1080,  1001,   258,   846,   259,   251,  1104,
-    1105,   316,   856,  1106,   334,  1081,  1119,  1028,   221,   254,
-     222,   265,  1042,  1120,  1121,   278,   255,  1002,  1030,  1003,
-     223,  1128,  1137,  1044,  1136,  1031,   283,   261,   224,  1004,
-    1045,   225,   842,   284,   226,   227,   847,  1005,   228,   229,
-    1006,   230,   857,  1007,  1008,  1082,   231,  1009,  1010,   232,
-    1011,   266,   233,   234,   235,  1012,   236,   246,  1013,  1140,
-    1142,  1014,  1015,  1016,  1162,  1017,  1023,  1022,  1163,  1164,
-    1168,  1172,   725,   727,   711,   572,   520,   719,   577,   877,
-    1139,   969,  1141,   991,  1034,  1067,   989,  1056,  1055,   614,
-    1170,  1169,  1063,  1131,   997,   992,   993,  1171,  1174,  1175,
-    1092,  1091,   995,   994,  1054,  1053,   874,  1033,   996,  1134,
-    1075,   260,   726,  1070,   864,   630,   588,  1088,  1052,  1160,
-    1138,  1173,  1122,   590,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   599,     0,     0,     0,     0,     0,     0,
-       0,   607,     0,     0,   998,     0,  1021,   611,  1018,  1037,
-       0,     0,     0,  1038,     0,     0,  1029,     0,     0,  1079,
-    1027,  1043,     0,  1080,     0,  1041,     0,     0,     0,     0,
-    1039,   999,     0,     0,   633,  1081,  1026,     0,     0,     0,
-       0,  1040,     0,  1000,     0,     0,     0,  1001,     0,     0,
+     119,   120,   121,   341,   342,    52,   122,   123,    94,    95,
+      96,    54,   141,   693,   694,    56,  1088,   124,  1089,  1090,
+     125,   126,   862,   863,   864,   127,   280,   883,    58,  1031,
+     128,   129,  1032,  1044,    60,    62,   130,   141,   522,    32,
+      33,    34,    35,   889,    84,   390,   131,   389,   392,   132,
+     656,   657,   658,   659,   457,   892,   133,   134,   391,   890,
+     893,   135,   393,   123,   136,   141,   482,   141,   137,   865,
+      92,    93,    94,    95,    96,   913,   125,   126,   913,   948,
+     914,   660,   400,   915,   949,   401,  1000,   273,   138,   139,
+     140,   402,   409,   274,   275,   276,   277,   278,   279,   410,
+     280,   100,   101,   102,   103,   104,   105,   106,   107,   411,
+     412,   413,   141,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   123,   211,   212,   213,   414,   123,   953,    94,
+      95,    96,   957,   954,   263,   125,   126,   958,   214,   415,
+     125,   126,   215,   216,   217,   127,   963,   218,   524,   525,
+     219,   964,   218,   416,   417,   219,   130,   828,   829,   830,
+     831,   832,   833,   220,   671,   672,   673,   674,   141,   301,
+     323,   302,   303,   324,   325,   518,  1107,  1108,  1109,  1110,
+     965,   125,   126,   122,   123,   301,   913,   469,  1123,   483,
+     501,  1119,  1120,  1124,   142,  1130,  1138,   125,   126,   472,
+     202,  1139,  1178,   484,  1141,   419,   420,  1179,   138,   139,
+    1047,  1048,   221,   421,   492,   264,   209,   265,   422,   423,
+     427,   428,   429,   442,   259,   450,   281,   141,   256,   456,
+     465,   271,   141,   487,   491,   493,   307,   495,   288,   222,
+     308,   326,   283,   496,   254,   327,   497,   267,   498,   541,
+     503,   223,   321,   506,   258,   224,   210,   339,   282,   508,
+     509,   363,   512,   513,   521,   527,   328,   529,   257,   530,
+     531,   272,   329,   141,   532,   533,   535,   364,   225,   260,
+     226,   534,   284,   536,   537,   538,   261,   539,   540,   141,
+     227,   542,   322,   289,   546,   550,   556,   340,   228,   543,
+     290,   229,   544,   545,   230,   231,   125,   126,   232,   233,
+     547,   234,   553,   548,   557,   549,   235,   365,   554,   236,
+     551,   552,   237,   238,   239,   555,   240,   241,   558,   242,
+     252,   742,   562,   559,   266,  1142,   743,   744,   745,   746,
+     747,   748,   749,   750,   751,   752,   753,   754,   755,   756,
+     757,   758,   759,   760,   560,   348,   349,   350,   351,   352,
+     353,   354,   355,   356,   357,   358,   359,   360,   561,   563,
+     564,   565,   566,   567,   361,   362,   568,   569,   570,   571,
+     572,   301,   573,   574,   575,   576,   577,   578,   142,   579,
+     202,   580,   581,   583,   586,   584,   585,   588,   141,   589,
+     590,   591,   734,   592,   593,   595,   209,   596,   597,   594,
+     599,   601,   602,   603,   604,   605,    92,    93,    94,    95,
+      96,   606,   607,   608,   845,   855,   610,   363,   611,   612,
+     613,   614,   615,   616,   618,   619,   622,   623,   620,   625,
+     851,   856,   866,   364,   626,   627,   210,   100,   101,   102,
+     103,   104,   105,   106,   107,   629,   628,   630,   631,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   632,
+     633,   636,   637,   123,   301,   638,   634,   635,   639,   641,
+     852,   857,   867,   365,   642,   141,   125,   126,   644,   216,
+     645,   127,   646,   647,   648,   649,   650,   651,   218,   652,
+     653,   219,   654,   655,   662,   663,   664,   665,   666,   220,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,   667,    30,   670,   676,   677,   678,   679,
+     685,   686,   680,   681,   682,   683,   684,   687,   688,   696,
+     697,   698,   699,   700,   701,   703,   704,   705,   707,   708,
+     709,   710,   711,   733,   138,   139,   785,   789,   712,   713,
+     738,   793,   797,   801,   817,   714,   820,   715,   824,   875,
+     879,   898,   716,   728,   717,   899,   900,   901,   141,   902,
+     907,   908,   718,   909,   910,   911,   719,   912,   917,   918,
+     720,   920,   921,   722,   923,   924,   926,   927,   930,   929,
+     723,   724,   937,   730,   731,   938,   940,   941,   732,   942,
+     943,   944,   945,   946,   947,   950,   951,   952,   959,   961,
+     984,   974,   969,   973,   976,   977,   978,   980,   981,   982,
+     983,   989,   986,   985,   988,   987,   990,   991,   992,   993,
+     997,   994,   995,   996,   998,  1069,  1070,  1071,  1072,  1073,
+    1074,  1080,  1077,  1076,  1081,  1083,  1084,  1086,  1078,  1085,
+    1101,  1102,   221,  1105,  1106,   307,  1112,  1113,   326,   308,
+    1114,  1008,   327,  1033,   259,  1030,  1049,  1115,   256,   281,
+    1050,   321,   343,  1041,   339,  1121,  1116,  1039,  1055,   222,
+    1122,   288,  1053,   328,   254,   283,   845,  1051,  1009,   329,
+     855,   223,  1117,  1038,   258,   224,  1126,  1118,  1052,  1091,
+    1010,   282,   851,  1092,  1011,   264,   856,   265,   257,  1127,
+    1128,   322,   866,  1129,   340,  1093,  1131,  1040,   225,   260,
+     226,   271,  1054,  1132,  1133,   284,   261,  1012,  1042,  1013,
+     227,  1136,  1144,  1056,  1145,  1043,   289,   267,   228,  1014,
+    1057,   229,   852,   290,   230,   231,   857,  1015,   232,   233,
+    1016,   234,   867,  1017,  1018,  1094,   235,  1019,  1020,   236,
+    1021,   272,   237,   238,   239,  1022,   240,   241,  1023,   242,
+     252,  1024,  1025,  1026,  1147,  1027,  1028,  1140,  1029,  1035,
+    1034,  1149,  1148,  1152,  1174,  1175,  1154,  1176,  1180,  1184,
+     735,   721,   729,   737,   587,   582,   979,   887,  1151,  1153,
+    1001,   999,  1079,  1068,  1046,  1067,   528,  1003,  1182,  1181,
+    1183,   624,  1075,  1186,  1187,  1045,  1143,  1002,  1007,   617,
+     621,  1066,  1004,  1005,   266,  1065,  1006,  1103,  1104,  1146,
+     884,   609,  1082,   874,  1134,   640,  1064,   643,  1150,  1087,
+     736,  1172,  1185,     0,  1100,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1008,     0,  1033,     0,
+    1030,  1049,     0,     0,     0,  1050,     0,     0,  1041,     0,
+       0,  1091,  1039,  1055,     0,  1092,     0,  1053,     0,     0,
+       0,     0,  1051,  1009,   598,   600,     0,  1093,  1038,     0,
+       0,     0,     0,  1052,     0,  1010,     0,     0,     0,  1011,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    1028,     0,     0,     0,     0,  1042,     0,     0,     0,     0,
-    1002,  1030,  1003,     0,     0,  1082,  1044,     0,  1031,     0,
-       0,     0,  1004,  1045,     0,     0,     0,     0,     0,     0,
-    1005,     0,     0,  1006,     0,     0,  1007,  1008,     0,     0,
-    1009,  1010,     0,  1011,     0,     0,     0,     0,  1012,     0,
-       0,  1013,     0,     0,  1014,  1015,  1016,     0,  1017,  1023,
-    1022
+       0,     0,  1040,     0,     0,     0,     0,  1054,     0,     0,
+       0,     0,  1012,  1042,  1013,     0,     0,  1094,  1056,     0,
+    1043,     0,     0,     0,  1014,  1057,     0,     0,     0,     0,
+       0,     0,  1015,     0,     0,  1016,     0,     0,  1017,  1018,
+       0,     0,  1019,  1020,     0,  1021,     0,     0,     0,     0,
+    1022,     0,     0,  1023,     0,     0,  1024,  1025,  1026,     0,
+    1027,  1028,     0,  1029,  1035,  1034
   };
 
   const short
   Dhcp4Parser::yycheck_[] =
   {
       67,    68,    69,    70,    71,    70,    73,    74,    75,    76,
-      73,    74,    64,   643,    69,   585,    71,    68,    69,    70,
-      71,   591,    73,    74,   918,    76,    72,   918,   918,    69,
-     556,     0,    74,    18,    69,    70,    71,     3,    74,   186,
-       6,    69,   121,   122,    69,    69,     5,    80,     7,     3,
-       9,   186,     6,   158,   159,   160,   161,    68,    69,    70,
-      71,     3,    73,    74,     3,    76,     8,     6,    69,    69,
-      69,    71,   111,   112,   113,   114,    69,   116,    71,     7,
-      69,    10,    15,    16,   189,     3,    19,   613,    69,    22,
-       8,    69,     3,     3,    69,    69,     6,     8,    69,    69,
-       3,    69,    28,    29,    30,     8,    69,   186,     7,    69,
-      12,    13,    69,    69,    69,    34,    69,    69,     7,    70,
-      39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    56,     7,   166,
-       7,     3,   169,   170,   171,   172,     8,    82,    83,    84,
-      85,    86,    87,     3,    80,    81,    82,     6,     8,    94,
-      95,    94,    95,    82,     7,    81,     7,     3,    94,    95,
-       3,   156,     8,     7,    94,    95,     7,    93,    94,    95,
-       7,   107,   108,     7,     3,    11,     3,     3,    14,     8,
-     106,     8,     8,   109,   121,   122,     7,    23,     4,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    20,    21,
-      82,     3,   132,   133,   134,     8,     8,  1111,     3,     3,
-    1111,  1111,    94,    95,     8,   118,   119,   186,   187,   188,
-     189,    57,    58,    59,    60,    61,    62,    63,    64,    65,
+      73,    74,    64,   653,    69,   595,    71,    68,    69,    70,
+      71,   601,    73,    74,   928,    76,    72,   928,   928,    69,
+      18,     0,    74,   566,    69,    70,    71,   188,    74,   123,
+     124,    69,    96,    97,    69,    69,     5,   188,     7,   168,
+       9,    82,   171,   172,   173,   174,     3,    68,    69,    70,
+      71,     8,    73,    74,     3,    76,     7,     6,    69,    69,
+      69,    71,   113,   114,   115,   116,    69,   118,    71,     7,
+      69,     7,    15,    16,   138,   139,    19,     3,    69,    22,
+     623,    69,     8,     3,    69,    69,     6,     3,    69,    69,
+       3,    69,     8,    34,   188,     8,    69,    12,    13,    69,
+      96,    97,    69,    69,    69,     3,    69,    69,     6,    69,
+      69,     3,    70,    84,     3,    11,     8,     3,    14,     8,
+      17,    18,     8,     3,   188,    96,    97,    23,     8,    25,
+      26,    27,    28,    29,    30,    31,    32,    33,   134,   135,
+     136,     3,     3,    84,     6,    86,    87,     8,     7,    90,
+      91,    92,     7,    96,    97,    96,    97,    96,    97,     7,
+     158,    57,    58,    59,    60,    61,    62,    63,    64,    65,
       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-      76,   186,     4,   186,    80,    81,     3,    28,    29,    30,
-     186,     8,    17,    18,     4,    91,   186,   186,    94,    95,
-     186,     4,     4,    99,    94,    95,   906,     3,   104,   105,
-       4,     4,     8,     4,   110,    94,    95,   124,   125,   126,
-     127,   128,   129,   165,   120,   167,   168,   123,     4,     4,
-       4,     3,     3,    34,   130,   131,     8,     8,     3,   135,
-      81,     4,   138,     8,   186,     4,   142,     3,     8,   139,
-     140,   141,     8,    94,    95,     3,     3,   136,   137,     4,
-       8,     8,   384,   385,   105,     4,   162,   163,   164,     4,
-     111,   112,   113,   114,   115,   116,     4,   118,     4,     4,
-       3,    82,     3,    84,    85,     8,     3,    88,    89,    90,
-     186,     8,     3,    94,    95,     3,   186,     8,     3,     3,
-       8,     4,     4,     8,     8,     4,   443,   186,   100,   101,
-     102,   103,   449,    35,    36,    37,    38,     4,     8,     4,
-       4,     3,     8,     4,   461,     4,     3,   464,   449,   464,
-       8,     4,     4,     4,     4,     4,   461,     4,   475,     4,
-     461,     4,     4,   464,     4,   186,     4,   189,   485,   189,
-     475,   461,   485,   490,   475,   189,   461,   490,     4,   464,
-       4,     4,     4,   461,   485,     4,   461,   461,   449,   490,
-     475,     4,   187,   510,   187,   187,   187,     4,   490,   187,
-     461,   187,   189,   464,   490,   186,     4,     4,   188,   510,
-     461,   461,   461,   188,   475,     4,     4,   187,   461,   187,
-     189,     4,   461,   189,   485,   475,   189,   189,     4,   490,
-     461,     4,   475,   461,     4,     4,   461,   461,     4,     4,
-     461,   461,     4,   461,     4,     4,     4,     4,   461,   510,
-     187,   461,     4,     4,   461,   461,   461,     4,   461,   461,
-       4,     4,     4,   464,     4,     4,     4,   189,     4,     4,
-       4,     4,     4,  1093,     4,   187,     4,     4,    26,    27,
-      28,    29,    30,   173,   174,   175,   176,   177,   178,   179,
-     180,   181,   182,   183,   184,   185,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,    57,
-      58,    59,    60,    61,    62,    63,    64,     4,   635,   187,
-     637,    69,    70,    71,    72,    73,    74,    75,     4,    77,
-      78,    79,   634,    81,   189,     4,   637,     4,     4,     4,
-       4,   189,     4,   189,    92,   189,    94,    95,    96,    97,
-      98,    99,   187,   187,   671,   672,   187,   674,   106,     4,
-       4,   109,   110,     5,   189,     4,     4,     4,   189,   117,
-     671,   672,   673,   674,     4,     4,   637,   187,     4,     7,
-       7,   186,     7,     7,   186,    26,    27,    28,    29,    30,
-     186,     7,     7,   186,   186,   186,     5,     5,     5,     5,
-     186,     5,     7,     5,     5,     5,   186,   186,     7,     7,
-     671,   672,   673,   674,   162,   163,    57,    58,    59,    60,
-      61,    62,    63,    64,     7,     7,     7,     5,    69,    70,
-      71,    72,    73,    74,    75,    76,    94,    95,   186,     5,
-      81,    82,     5,     7,     5,   186,     4,   157,    24,   186,
-       7,     7,     7,    94,    95,   186,    97,   186,    99,     7,
-     186,   186,   186,   186,   186,   106,   186,   186,   109,   186,
-     186,   186,   186,   186,   186,   186,   117,   186,     7,     7,
-       7,     7,     7,     7,     4,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   186,     4,
-     186,   186,   186,   186,   162,   163,   186,   186,   186,     4,
-       4,     4,     4,     4,     4,     4,     4,     3,     3,     6,
-       4,   162,   163,     6,     6,     3,     6,     3,   186,     6,
-       3,     6,     3,     3,     6,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,   186,   186,     6,     3,     6,
-       8,     4,     4,     4,     4,     4,   187,   189,     4,     4,
-       4,     4,     4,     4,   187,     4,   187,   189,   187,   187,
-     187,     4,     6,   187,     3,   187,   189,   187,   189,     4,
-       8,     8,     4,     3,   187,     8,     4,     8,     4,     4,
-     187,   187,   909,   187,   187,   912,   187,   187,   915,   912,
-     189,   918,   915,   918,   909,   918,   923,   187,   909,   926,
-     923,   912,   929,   918,   915,   186,   186,   918,   923,   909,
-     189,   926,   923,   915,   909,   926,   943,   923,   918,   915,
-     947,   909,   186,   918,   909,   909,   186,   186,   923,   956,
-     918,   926,   943,   956,   918,   962,   947,   962,   909,   186,
-     186,   912,   953,   186,   915,   956,   186,   918,   909,   909,
-     909,   962,   923,   186,   186,   926,   909,   918,   918,   918,
-     909,   186,     4,   923,   187,   918,   926,   962,   909,   918,
-     923,   909,   943,   926,   909,   909,   947,   918,   909,   909,
-     918,   909,   953,   918,   918,   956,   909,   918,   918,   909,
-     918,   962,   909,   909,   909,   918,   909,   909,   918,     5,
-       7,   918,   918,   918,     4,   918,   918,   918,     4,     4,
-       4,     4,   635,   637,   613,   443,   389,   626,   449,   723,
-     186,   882,   186,   908,   921,   943,   903,   931,   929,   493,
-     187,   189,   938,  1111,   917,   909,   911,   187,   186,   186,
-     964,   962,   914,   912,   928,   926,   694,   920,   915,  1116,
-     953,   962,   636,   947,   674,   510,   461,   957,   924,  1146,
-    1126,  1166,  1074,   464,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   475,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   485,    -1,    -1,  1111,    -1,  1111,   490,  1111,  1116,
-      -1,    -1,    -1,  1116,    -1,    -1,  1111,    -1,    -1,  1126,
-    1111,  1116,    -1,  1126,    -1,  1116,    -1,    -1,    -1,    -1,
-    1116,  1111,    -1,    -1,   514,  1126,  1111,    -1,    -1,    -1,
-      -1,  1116,    -1,  1111,    -1,    -1,    -1,  1111,    -1,    -1,
+      76,    77,    78,   123,   124,     7,    82,    83,    28,    29,
+      30,     7,   188,    20,    21,     7,   167,    93,   169,   170,
+      96,    97,   141,   142,   143,   101,   120,   121,     7,  1123,
+     106,   107,  1123,  1123,     7,     7,   112,   188,     3,   188,
+     189,   190,   191,     8,    10,     3,   122,     6,     8,   125,
+     160,   161,   162,   163,     3,     3,   132,   133,     4,     8,
+       8,   137,     3,    83,   140,   188,     8,   188,   144,   188,
+      26,    27,    28,    29,    30,     3,    96,    97,     3,     3,
+       8,   191,     4,     8,     8,     4,   916,   107,   164,   165,
+     166,     4,     4,   113,   114,   115,   116,   117,   118,     4,
+     120,    57,    58,    59,    60,    61,    62,    63,    64,     4,
+       4,     4,   188,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,    83,    79,    80,    81,     4,    83,     3,    28,
+      29,    30,     3,     8,    95,    96,    97,     8,    94,     4,
+      96,    97,    98,    99,   100,   101,     3,   108,   390,   391,
+     111,     8,   108,     4,     4,   111,   112,   126,   127,   128,
+     129,   130,   131,   119,   102,   103,   104,   105,   188,    84,
+      85,    86,    87,    88,    89,     3,    35,    36,    37,    38,
+       8,    96,    97,    82,    83,    84,     3,     3,     3,     3,
+       3,     8,     8,     8,   451,     8,     3,    96,    97,     3,
+     457,     8,     3,     8,     8,     4,     4,     8,   164,   165,
+     109,   110,   469,     4,     8,   472,   457,   472,     4,     4,
+       4,     4,     4,     4,   469,     4,   483,   188,   469,     4,
+       4,   472,   188,     4,     4,     3,   493,     4,   483,   469,
+     493,   498,   483,     4,   469,   498,     8,   472,     3,   189,
+       4,   469,   493,     4,   469,   469,   457,   498,   483,     4,
+       4,   518,     4,     4,     4,     4,   498,     4,   469,     4,
+       4,   472,   498,   188,   191,   191,     4,   518,   469,   469,
+     469,   191,   483,     4,     4,     4,   469,     4,     4,   188,
+     469,   189,   493,   483,   191,     4,     4,   498,   469,   189,
+     483,   469,   189,   189,   469,   469,    96,    97,   469,   469,
+     190,   469,   191,   190,     4,   189,   469,   518,   191,   469,
+     189,   189,   469,   469,   469,   191,   469,   469,     4,   469,
+     469,    34,     4,   191,   472,  1105,    39,    40,    41,    42,
+      43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    56,   191,   145,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,   191,     4,
+       4,     4,     4,     4,   164,   165,     4,     4,     4,     4,
+       4,    84,     4,   189,     4,     4,     4,     4,   645,     4,
+     647,     4,     4,     4,   191,     4,     4,     4,   188,     4,
+       4,     4,   644,     4,     4,     4,   647,     4,     4,   189,
+       4,     4,     4,     4,     4,     4,    26,    27,    28,    29,
+      30,     4,     4,     4,   681,   682,     4,   684,     4,   189,
+       4,     4,     4,   191,     4,   191,     4,     4,   191,   191,
+     681,   682,   683,   684,     4,     4,   647,    57,    58,    59,
+      60,    61,    62,    63,    64,     4,   189,   189,   189,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,    78,     4,
+       4,     4,     4,    83,    84,     4,   191,   191,     4,     4,
+     681,   682,   683,   684,   189,   188,    96,    97,     4,    99,
+       7,   101,     7,     7,     7,   188,   188,   188,   108,     7,
+       7,   111,     5,   188,   188,   188,     5,     5,     5,   119,
+     175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   186,   187,     5,     7,   188,     5,     5,     5,     5,
+     188,   188,     7,     7,     7,     7,     7,     5,     5,   188,
+     188,   188,     5,   188,   188,   188,     7,   188,   188,   188,
+     188,   188,   188,     5,   164,   165,     7,     7,   188,   188,
+      24,     7,     7,     7,     7,   188,     7,   188,     7,     7,
+       7,     4,   188,   159,   188,     4,     4,     4,   188,     4,
+       4,     4,   188,     4,     4,     4,   188,     4,     6,     3,
+     188,     6,     3,   188,     6,     3,     6,     3,     3,     6,
+     188,   188,     6,   188,   188,     3,     6,     3,   188,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+     189,     3,   188,     6,     8,     6,     4,     4,     4,     4,
+       4,     4,   189,   191,   189,   191,     4,     4,     4,   189,
+     191,   189,   189,   189,   189,   189,   189,   189,   189,   189,
+     189,     4,   189,   191,     4,   191,     4,     4,   189,   189,
+       6,     3,   919,     4,   188,   922,   188,   188,   925,   922,
+     188,   928,   925,   928,   919,   928,   933,   188,   919,   936,
+     933,   922,   939,   928,   925,     8,   188,   928,   933,   919,
+       8,   936,   933,   925,   919,   936,   953,   933,   928,   925,
+     957,   919,   188,   928,   919,   919,     4,   188,   933,   966,
+     928,   936,   953,   966,   928,   972,   957,   972,   919,     8,
+       3,   922,   963,     8,   925,   966,   188,   928,   919,   919,
+     919,   972,   933,   188,   188,   936,   919,   928,   928,   928,
+     919,     4,     4,   933,   191,   928,   936,   972,   919,   928,
+     933,   919,   953,   936,   919,   919,   957,   928,   919,   919,
+     928,   919,   963,   928,   928,   966,   919,   928,   928,   919,
+     928,   972,   919,   919,   919,   928,   919,   919,   928,   919,
+     919,   928,   928,   928,     4,   928,   928,   188,   928,   928,
+     928,     4,   189,     5,     4,     4,     7,     4,     4,     4,
+     645,   623,   636,   647,   457,   451,   892,   733,   188,   188,
+     918,   913,   953,   941,   931,   939,   395,   921,   189,   191,
+     189,   501,   948,   188,   188,   930,  1123,   919,   927,   493,
+     498,   938,   922,   924,   972,   936,   925,   972,   974,  1128,
+     704,   483,   957,   684,  1086,   518,   934,   522,  1138,   963,
+     646,  1158,  1178,    -1,   967,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1123,    -1,  1123,    -1,
+    1123,  1128,    -1,    -1,    -1,  1128,    -1,    -1,  1123,    -1,
+      -1,  1138,  1123,  1128,    -1,  1138,    -1,  1128,    -1,    -1,
+      -1,    -1,  1128,  1123,   469,   472,    -1,  1138,  1123,    -1,
+      -1,    -1,    -1,  1128,    -1,  1123,    -1,    -1,    -1,  1123,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    1111,    -1,    -1,    -1,    -1,  1116,    -1,    -1,    -1,    -1,
-    1111,  1111,  1111,    -1,    -1,  1126,  1116,    -1,  1111,    -1,
-      -1,    -1,  1111,  1116,    -1,    -1,    -1,    -1,    -1,    -1,
-    1111,    -1,    -1,  1111,    -1,    -1,  1111,  1111,    -1,    -1,
-    1111,  1111,    -1,  1111,    -1,    -1,    -1,    -1,  1111,    -1,
-      -1,  1111,    -1,    -1,  1111,  1111,  1111,    -1,  1111,  1111,
-    1111
+      -1,    -1,  1123,    -1,    -1,    -1,    -1,  1128,    -1,    -1,
+      -1,    -1,  1123,  1123,  1123,    -1,    -1,  1138,  1128,    -1,
+    1123,    -1,    -1,    -1,  1123,  1128,    -1,    -1,    -1,    -1,
+      -1,    -1,  1123,    -1,    -1,  1123,    -1,    -1,  1123,  1123,
+      -1,    -1,  1123,  1123,    -1,  1123,    -1,    -1,    -1,    -1,
+    1123,    -1,    -1,  1123,    -1,    -1,  1123,  1123,  1123,    -1,
+    1123,  1123,    -1,  1123,  1123,  1123
   };
 
   const short
   Dhcp4Parser::yystos_[] =
   {
-       0,   173,   174,   175,   176,   177,   178,   179,   180,   181,
-     182,   183,   184,   185,   191,   192,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,     0,     5,
-       7,     9,   186,   187,   188,   189,   205,   206,   207,   212,
-       7,   221,     7,   227,     7,   266,     7,   371,     7,   451,
-       7,   467,     7,   403,     7,   409,     7,   433,     7,   347,
-       7,   532,     7,   563,   213,   208,   222,   228,   267,   372,
-     452,   468,   404,   410,   434,   348,   533,   564,   205,   214,
-     215,   186,   210,   211,    10,   223,   224,   225,    11,    14,
+       0,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   193,   194,   195,   196,   197,   198,
+     199,   200,   201,   202,   203,   204,   205,   206,     0,     5,
+       7,     9,   188,   189,   190,   191,   207,   208,   209,   214,
+       7,   223,     7,   229,     7,   270,     7,   375,     7,   455,
+       7,   471,     7,   407,     7,   413,     7,   437,     7,   351,
+       7,   536,     7,   567,   215,   210,   224,   230,   271,   376,
+     456,   472,   408,   414,   438,   352,   537,   568,   207,   216,
+     217,   188,   212,   213,    10,   225,   226,   227,    11,    14,
       23,    25,    26,    27,    28,    29,    30,    31,    32,    33,
       57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
       67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      80,    81,    91,    94,    95,    99,   104,   105,   110,   120,
-     123,   130,   131,   135,   138,   142,   162,   163,   164,   186,
-     220,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   242,   243,   244,   245,   246,   247,   248,
-     251,   253,   255,   257,   259,   260,   261,   262,   277,   279,
-     285,   287,   325,   334,   341,   355,   365,   389,   393,   401,
-     427,   457,   459,   461,   472,   474,   476,   499,   511,   512,
-     520,   530,   561,   570,    15,    16,    19,    22,   220,   264,
-     265,   268,   270,   273,   276,   457,   459,    77,    78,    79,
-      92,    96,    97,    98,   106,   109,   117,   220,   231,   232,
-     233,   234,   235,   236,   237,   238,   243,   244,   245,   246,
-     247,   248,   251,   253,   255,   257,   259,   373,   374,   375,
-     377,   379,   381,   383,   385,   387,   389,   392,   427,   445,
-     457,   459,   461,   472,   474,   476,   496,    93,   220,   385,
-     387,   427,   453,   454,   455,   457,   459,   105,   111,   112,
-     113,   114,   115,   116,   118,   220,   427,   457,   459,   469,
-     470,   471,   472,   474,   476,   478,   482,   484,   486,   488,
-     490,   492,   494,   401,    34,    82,    84,    85,    88,    89,
-      90,   220,   305,   411,   412,   413,   414,   415,   416,   417,
-     419,   421,   423,   424,   426,   457,   459,    83,    86,    87,
-     220,   305,   415,   421,   435,   436,   437,   438,   439,   441,
-     442,   443,   444,   457,   459,   121,   122,   220,   349,   350,
-     351,   353,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   162,   163,   220,   457,   459,
-     534,   535,   536,   537,   539,   540,   542,   543,   544,   547,
-     549,   551,   552,   553,   555,   557,   559,    12,    13,   565,
-     566,   567,   569,     6,     3,     4,     8,     3,   226,     3,
-       8,   562,   263,   280,     4,     4,     4,   473,   475,   477,
-     278,   286,   288,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,   241,     4,     4,     4,     4,     4,   249,   252,
-     254,     4,   366,   402,   428,   394,   458,   460,   390,   326,
-     500,   462,   342,   356,     4,   335,   513,   521,   531,   256,
-     258,   571,     4,     3,     8,   269,   271,   274,     4,     3,
-       8,   378,   380,   382,   446,   376,   384,     4,   388,   386,
-     497,     3,     8,   456,     3,     8,   495,   483,   485,   489,
-     487,   493,   491,   479,     8,     3,     8,   418,   306,     4,
-     422,   420,   425,     4,     8,     3,   440,     4,     4,     8,
-       3,   352,   354,     3,     8,     4,   550,   538,     4,   541,
-       4,     4,   545,   548,     4,     4,   554,   556,   558,   560,
-       3,     8,   568,     4,     3,     8,   205,   205,   186,     4,
-     224,     4,     4,     4,   189,   189,   189,     4,     4,     4,
-       4,     4,     4,   187,   187,   187,   187,   187,   189,   188,
-     188,   187,     4,   187,   187,   189,   189,   189,     4,     4,
-       4,   189,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   187,     4,     4,     4,     4,     4,
-       4,     4,   230,     4,     4,     4,   189,   265,     4,     4,
-       4,     4,     4,     4,   187,     4,     4,     4,   374,     4,
-     454,     4,     4,     4,     4,     4,     4,     4,     4,   471,
-       4,     4,   187,     4,     4,     4,   189,   413,     4,   189,
-     189,   437,     4,     4,   350,   189,     4,     4,   187,     4,
-     187,   187,     4,     4,   189,   189,     4,     4,     4,     4,
-     535,     4,   187,   566,     4,     7,     7,     7,     7,   186,
-     186,   186,     7,     7,     5,   186,   158,   159,   160,   161,
-     189,   250,   186,   186,     5,     5,     5,     5,   207,   209,
-     186,   100,   101,   102,   103,   391,     5,     5,     5,     5,
-       7,     7,     7,     7,     7,   186,   186,     5,     5,   216,
-      17,    18,   272,    20,    21,   275,   186,   186,   186,     5,
-     186,   186,   216,   186,     7,   186,   216,   186,   186,   186,
-     186,   186,   186,   186,   186,   186,   186,   186,   186,   186,
-     186,   209,   186,   186,   186,    18,   156,   546,   157,   250,
-     186,   186,   186,     5,   205,   229,   565,   264,    24,   281,
-     282,   283,    34,    39,    40,    41,    42,    43,    44,    45,
+      77,    78,    82,    83,    93,    96,    97,   101,   106,   107,
+     112,   122,   125,   132,   133,   137,   140,   144,   164,   165,
+     166,   188,   222,   231,   232,   233,   234,   235,   236,   237,
+     238,   239,   240,   241,   242,   244,   245,   246,   247,   248,
+     249,   250,   253,   255,   257,   258,   259,   261,   263,   264,
+     265,   266,   281,   283,   289,   291,   329,   338,   345,   359,
+     369,   393,   397,   405,   431,   461,   463,   465,   476,   478,
+     480,   503,   515,   516,   524,   534,   565,   574,    15,    16,
+      19,    22,   222,   268,   269,   272,   274,   277,   280,   461,
+     463,    79,    80,    81,    94,    98,    99,   100,   108,   111,
+     119,   222,   233,   234,   235,   236,   237,   238,   239,   240,
+     245,   246,   247,   248,   249,   250,   253,   255,   257,   258,
+     259,   261,   263,   377,   378,   379,   381,   383,   385,   387,
+     389,   391,   393,   396,   431,   449,   461,   463,   465,   476,
+     478,   480,   500,    95,   222,   389,   391,   431,   457,   458,
+     459,   461,   463,   107,   113,   114,   115,   116,   117,   118,
+     120,   222,   431,   461,   463,   473,   474,   475,   476,   478,
+     480,   482,   486,   488,   490,   492,   494,   496,   498,   405,
+      34,    84,    86,    87,    90,    91,    92,   222,   309,   415,
+     416,   417,   418,   419,   420,   421,   423,   425,   427,   428,
+     430,   461,   463,    85,    88,    89,   222,   309,   419,   425,
+     439,   440,   441,   442,   443,   445,   446,   447,   448,   461,
+     463,   123,   124,   222,   353,   354,   355,   357,   145,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   164,   165,   222,   461,   463,   538,   539,   540,   541,
+     543,   544,   546,   547,   548,   551,   553,   555,   556,   557,
+     559,   561,   563,    12,    13,   569,   570,   571,   573,     6,
+       3,     4,     8,     3,   228,     3,     8,   566,   267,   284,
+       4,     4,     4,   477,   479,   481,   282,   290,   292,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,   243,     4,
+       4,     4,     4,     4,   251,   254,   256,     4,     4,     4,
+     370,   406,   432,   398,   462,   464,   394,   330,   504,   466,
+     346,   360,     4,   339,   517,   525,   535,   260,   262,   575,
+       4,     3,     8,   273,   275,   278,     4,     3,     8,   382,
+     384,   386,   450,   380,   388,     4,   392,   390,   501,     3,
+       8,   460,     3,     8,   499,   487,   489,   493,   491,   497,
+     495,   483,     8,     3,     8,   422,   310,     4,   426,   424,
+     429,     4,     8,     3,   444,     4,     4,     8,     3,   356,
+     358,     3,     8,     4,   554,   542,     4,   545,     4,     4,
+     549,   552,     4,     4,   558,   560,   562,   564,     3,     8,
+     572,     4,     3,     8,   207,   207,   188,     4,   226,     4,
+       4,     4,   191,   191,   191,     4,     4,     4,     4,     4,
+       4,   189,   189,   189,   189,   189,   191,   190,   190,   189,
+       4,   189,   189,   191,   191,   191,     4,     4,     4,   191,
+     191,   191,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,   189,     4,     4,     4,     4,     4,
+       4,     4,   232,     4,     4,     4,   191,   269,     4,     4,
+       4,     4,     4,     4,   189,     4,     4,     4,   378,     4,
+     458,     4,     4,     4,     4,     4,     4,     4,     4,   475,
+       4,     4,   189,     4,     4,     4,   191,   417,     4,   191,
+     191,   441,     4,     4,   354,   191,     4,     4,   189,     4,
+     189,   189,     4,     4,   191,   191,     4,     4,     4,     4,
+     539,     4,   189,   570,     4,     7,     7,     7,     7,   188,
+     188,   188,     7,     7,     5,   188,   160,   161,   162,   163,
+     191,   252,   188,   188,     5,     5,     5,     5,   209,   211,
+     188,   102,   103,   104,   105,   395,     5,     5,     5,     5,
+       7,     7,     7,     7,     7,   188,   188,     5,     5,   218,
+      17,    18,   276,    20,    21,   279,   188,   188,   188,     5,
+     188,   188,   218,   188,     7,   188,   218,   188,   188,   188,
+     188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
+     188,   211,   188,   188,   188,    18,   158,   550,   159,   252,
+     188,   188,   188,     5,   207,   231,   569,   268,    24,   285,
+     286,   287,    34,    39,    40,    41,    42,    43,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      56,   220,   293,   294,   295,   298,   300,   302,   304,   305,
-     307,   308,   309,   310,   311,   312,   313,   314,   316,   318,
-     320,   322,   323,   324,   293,     7,   289,   290,   291,     7,
-     367,   368,   369,     7,   405,   406,   407,     7,   429,   430,
-     431,     7,   395,   396,   397,   111,   112,   113,   114,   116,
-     327,   328,   329,   330,   331,   332,   333,     7,   501,   502,
-       7,   463,   464,   465,     7,   343,   344,   345,   124,   125,
-     126,   127,   128,   129,   357,   358,   359,   360,   361,   362,
-     363,   364,   132,   133,   134,   220,   336,   337,   338,   339,
-     340,   457,   459,   136,   137,   220,   457,   459,   514,   515,
-     516,   518,   139,   140,   141,   186,   457,   459,   522,   523,
-     524,   525,   527,   528,   534,     7,   572,   573,   217,     7,
-     447,   448,   449,   119,   478,   480,   498,   289,     8,     8,
-       8,   284,     3,     8,   296,   299,   301,   303,     4,     4,
-       4,     4,     4,   315,   317,   319,   321,     4,     4,     4,
-       4,     4,     4,     3,     8,     8,   292,     6,     3,   370,
-       6,     3,   408,     6,     3,   432,     6,     3,   398,     6,
-       3,     3,     6,   503,     3,     6,   466,     6,     3,   346,
+      56,   222,   297,   298,   299,   302,   304,   306,   308,   309,
+     311,   312,   313,   314,   315,   316,   317,   318,   320,   322,
+     324,   326,   327,   328,   297,     7,   293,   294,   295,     7,
+     371,   372,   373,     7,   409,   410,   411,     7,   433,   434,
+     435,     7,   399,   400,   401,   113,   114,   115,   116,   118,
+     331,   332,   333,   334,   335,   336,   337,     7,   505,   506,
+       7,   467,   468,   469,     7,   347,   348,   349,   126,   127,
+     128,   129,   130,   131,   361,   362,   363,   364,   365,   366,
+     367,   368,   134,   135,   136,   222,   340,   341,   342,   343,
+     344,   461,   463,   138,   139,   222,   461,   463,   518,   519,
+     520,   522,   141,   142,   143,   188,   461,   463,   526,   527,
+     528,   529,   531,   532,   538,     7,   576,   577,   219,     7,
+     451,   452,   453,   121,   482,   484,   502,   293,     8,     8,
+       8,   288,     3,     8,   300,   303,   305,   307,     4,     4,
+       4,     4,     4,   319,   321,   323,   325,     4,     4,     4,
+       4,     4,     4,     3,     8,     8,   296,     6,     3,   374,
+       6,     3,   412,     6,     3,   436,     6,     3,   402,     6,
+       3,     3,     6,   507,     3,     6,   470,     6,     3,   350,
        6,     3,     4,     4,     4,     4,     4,     4,     3,     8,
-       4,     4,     4,     3,     8,   517,   519,     3,     8,     4,
-     526,     4,   529,     3,     8,     8,   574,     3,     6,   186,
-     218,   219,   450,     6,     3,   481,     8,     6,     4,   282,
-       4,     4,     4,     4,   187,   189,   187,   189,   187,     4,
-       4,     4,     4,   187,   187,   187,   187,   189,   187,   294,
-     293,   291,   373,   369,   411,   407,   435,   431,   220,   231,
-     232,   233,   234,   235,   236,   237,   238,   243,   244,   245,
-     246,   247,   248,   251,   253,   255,   257,   259,   305,   365,
-     383,   385,   387,   389,   399,   400,   427,   457,   459,   472,
-     474,   476,   496,   397,   328,   107,   108,   220,   305,   401,
-     427,   457,   459,   472,   474,   476,   504,   505,   506,   507,
-     508,   510,   502,   469,   465,   349,   345,   187,   187,   187,
-     187,   187,   187,   358,   189,   187,   187,   337,     4,     4,
-     515,   189,     4,   187,     4,   523,   165,   167,   168,   220,
-     305,   457,   459,   575,   576,   577,   578,   580,   573,     6,
-       3,   453,   449,     4,   186,    35,    36,    37,    38,   297,
-     186,   186,   186,   186,   186,   186,   186,     8,     8,     8,
-       8,     3,     8,   509,     4,     8,     3,     8,     8,   186,
-     186,   186,   205,   581,     4,   579,     3,     8,   186,     8,
-     216,   400,     4,   189,   506,     4,   187,     4,   576,   186,
-       5,   186,     7,   582,   583,   584,     3,     6,   166,   169,
-     170,   171,   172,   585,   586,   587,   589,   590,   591,   592,
-     583,   588,     4,     4,     4,   593,     3,     8,     4,   189,
-     187,   187,     4,   586,   186,   186
+       4,     4,     4,     3,     8,   521,   523,     3,     8,     4,
+     530,     4,   533,     3,     8,     8,   578,     3,     6,   188,
+     220,   221,   454,     6,     3,   485,     8,     6,     4,   286,
+       4,     4,     4,     4,   189,   191,   189,   191,   189,     4,
+       4,     4,     4,   189,   189,   189,   189,   191,   189,   298,
+     297,   295,   377,   373,   415,   411,   439,   435,   222,   233,
+     234,   235,   236,   237,   238,   239,   240,   245,   246,   247,
+     248,   249,   250,   253,   255,   257,   258,   259,   261,   263,
+     309,   369,   387,   389,   391,   393,   403,   404,   431,   461,
+     463,   476,   478,   480,   500,   401,   332,   109,   110,   222,
+     309,   405,   431,   461,   463,   476,   478,   480,   508,   509,
+     510,   511,   512,   514,   506,   473,   469,   353,   349,   189,
+     189,   189,   189,   189,   189,   362,   191,   189,   189,   341,
+       4,     4,   519,   191,     4,   189,     4,   527,   167,   169,
+     170,   222,   309,   461,   463,   579,   580,   581,   582,   584,
+     577,     6,     3,   457,   453,     4,   188,    35,    36,    37,
+      38,   301,   188,   188,   188,   188,   188,   188,   188,     8,
+       8,     8,     8,     3,     8,   513,     4,     8,     3,     8,
+       8,   188,   188,   188,   207,   585,     4,   583,     3,     8,
+     188,     8,   218,   404,     4,   191,   510,     4,   189,     4,
+     580,   188,     5,   188,     7,   586,   587,   588,     3,     6,
+     168,   171,   172,   173,   174,   589,   590,   591,   593,   594,
+     595,   596,   587,   592,     4,     4,     4,   597,     3,     8,
+       4,   191,   189,   189,     4,   590,   188,   188
   };
 
   const short
   Dhcp4Parser::yyr1_[] =
   {
-       0,   190,   192,   191,   193,   191,   194,   191,   195,   191,
-     196,   191,   197,   191,   198,   191,   199,   191,   200,   191,
-     201,   191,   202,   191,   203,   191,   204,   191,   205,   205,
-     205,   205,   205,   205,   205,   206,   208,   207,   209,   210,
-     210,   211,   211,   213,   212,   214,   214,   215,   215,   217,
-     216,   218,   218,   219,   219,   220,   222,   221,   223,   223,
-     224,   226,   225,   228,   227,   229,   229,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   230,   230,   230,
-     230,   230,   230,   230,   230,   230,   230,   230,   230,   231,
-     232,   233,   234,   235,   236,   237,   238,   239,   241,   240,
-     242,   243,   244,   245,   246,   247,   249,   248,   250,   250,
-     250,   250,   250,   252,   251,   254,   253,   256,   255,   258,
-     257,   259,   260,   261,   263,   262,   264,   264,   265,   265,
-     265,   265,   265,   265,   265,   267,   266,   269,   268,   271,
-     270,   272,   272,   274,   273,   275,   275,   276,   278,   277,
-     280,   279,   281,   281,   282,   284,   283,   286,   285,   288,
-     287,   289,   289,   290,   290,   292,   291,   293,   293,   294,
-     294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
-     294,   294,   294,   294,   294,   294,   294,   294,   294,   294,
-     296,   295,   297,   297,   297,   297,   299,   298,   301,   300,
-     303,   302,   304,   306,   305,   307,   308,   309,   310,   311,
-     312,   313,   315,   314,   317,   316,   319,   318,   321,   320,
-     322,   323,   324,   326,   325,   327,   327,   328,   328,   328,
-     328,   328,   329,   330,   331,   332,   333,   335,   334,   336,
-     336,   337,   337,   337,   337,   337,   337,   338,   339,   340,
-     342,   341,   343,   343,   344,   344,   346,   345,   348,   347,
-     349,   349,   349,   350,   350,   352,   351,   354,   353,   356,
-     355,   357,   357,   358,   358,   358,   358,   358,   358,   359,
-     360,   361,   362,   363,   364,   366,   365,   367,   367,   368,
-     368,   370,   369,   372,   371,   373,   373,   374,   374,   374,
-     374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
-     374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
-     374,   374,   374,   374,   374,   374,   374,   374,   374,   374,
-     374,   374,   374,   374,   374,   376,   375,   378,   377,   380,
-     379,   382,   381,   384,   383,   386,   385,   388,   387,   390,
-     389,   391,   391,   391,   391,   392,   394,   393,   395,   395,
-     396,   396,   398,   397,   399,   399,   400,   400,   400,   400,
-     400,   400,   400,   400,   400,   400,   400,   400,   400,   400,
-     400,   400,   400,   400,   400,   400,   400,   400,   400,   400,
-     400,   400,   400,   400,   400,   400,   400,   400,   400,   402,
-     401,   404,   403,   405,   405,   406,   406,   408,   407,   410,
-     409,   411,   411,   412,   412,   413,   413,   413,   413,   413,
-     413,   413,   413,   413,   413,   414,   415,   416,   418,   417,
-     420,   419,   422,   421,   423,   425,   424,   426,   428,   427,
-     429,   429,   430,   430,   432,   431,   434,   433,   435,   435,
-     436,   436,   437,   437,   437,   437,   437,   437,   437,   437,
-     437,   438,   440,   439,   441,   442,   443,   444,   446,   445,
-     447,   447,   448,   448,   450,   449,   452,   451,   453,   453,
-     454,   454,   454,   454,   454,   454,   454,   456,   455,   458,
-     457,   460,   459,   462,   461,   463,   463,   464,   464,   466,
-     465,   468,   467,   469,   469,   470,   470,   471,   471,   471,
-     471,   471,   471,   471,   471,   471,   471,   471,   471,   471,
-     471,   471,   473,   472,   475,   474,   477,   476,   479,   478,
-     481,   480,   483,   482,   485,   484,   487,   486,   489,   488,
-     491,   490,   493,   492,   495,   494,   497,   496,   498,   498,
-     500,   499,   501,   501,   503,   502,   504,   504,   505,   505,
-     506,   506,   506,   506,   506,   506,   506,   506,   506,   506,
-     506,   507,   509,   508,   510,   511,   513,   512,   514,   514,
-     515,   515,   515,   515,   515,   517,   516,   519,   518,   521,
-     520,   522,   522,   523,   523,   523,   523,   523,   523,   524,
-     526,   525,   527,   529,   528,   531,   530,   533,   532,   534,
-     534,   535,   535,   535,   535,   535,   535,   535,   535,   535,
-     535,   535,   535,   535,   535,   535,   535,   535,   535,   536,
-     538,   537,   539,   541,   540,   542,   543,   545,   544,   546,
-     546,   548,   547,   550,   549,   551,   552,   554,   553,   556,
-     555,   558,   557,   560,   559,   562,   561,   564,   563,   565,
-     565,   566,   566,   568,   567,   569,   571,   570,   572,   572,
-     574,   573,   575,   575,   576,   576,   576,   576,   576,   576,
-     576,   577,   579,   578,   581,   580,   582,   582,   584,   583,
-     585,   585,   586,   586,   586,   586,   586,   588,   587,   589,
-     590,   591,   593,   592
+       0,   192,   194,   193,   195,   193,   196,   193,   197,   193,
+     198,   193,   199,   193,   200,   193,   201,   193,   202,   193,
+     203,   193,   204,   193,   205,   193,   206,   193,   207,   207,
+     207,   207,   207,   207,   207,   208,   210,   209,   211,   212,
+     212,   213,   213,   215,   214,   216,   216,   217,   217,   219,
+     218,   220,   220,   221,   221,   222,   224,   223,   225,   225,
+     226,   228,   227,   230,   229,   231,   231,   232,   232,   232,
+     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+     232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     243,   242,   244,   245,   246,   247,   248,   249,   251,   250,
+     252,   252,   252,   252,   252,   254,   253,   256,   255,   257,
+     258,   260,   259,   262,   261,   263,   264,   265,   267,   266,
+     268,   268,   269,   269,   269,   269,   269,   269,   269,   271,
+     270,   273,   272,   275,   274,   276,   276,   278,   277,   279,
+     279,   280,   282,   281,   284,   283,   285,   285,   286,   288,
+     287,   290,   289,   292,   291,   293,   293,   294,   294,   296,
+     295,   297,   297,   298,   298,   298,   298,   298,   298,   298,
+     298,   298,   298,   298,   298,   298,   298,   298,   298,   298,
+     298,   298,   298,   298,   300,   299,   301,   301,   301,   301,
+     303,   302,   305,   304,   307,   306,   308,   310,   309,   311,
+     312,   313,   314,   315,   316,   317,   319,   318,   321,   320,
+     323,   322,   325,   324,   326,   327,   328,   330,   329,   331,
+     331,   332,   332,   332,   332,   332,   333,   334,   335,   336,
+     337,   339,   338,   340,   340,   341,   341,   341,   341,   341,
+     341,   342,   343,   344,   346,   345,   347,   347,   348,   348,
+     350,   349,   352,   351,   353,   353,   353,   354,   354,   356,
+     355,   358,   357,   360,   359,   361,   361,   362,   362,   362,
+     362,   362,   362,   363,   364,   365,   366,   367,   368,   370,
+     369,   371,   371,   372,   372,   374,   373,   376,   375,   377,
+     377,   378,   378,   378,   378,   378,   378,   378,   378,   378,
+     378,   378,   378,   378,   378,   378,   378,   378,   378,   378,
+     378,   378,   378,   378,   378,   378,   378,   378,   378,   378,
+     378,   378,   378,   378,   378,   378,   378,   378,   378,   378,
+     378,   380,   379,   382,   381,   384,   383,   386,   385,   388,
+     387,   390,   389,   392,   391,   394,   393,   395,   395,   395,
+     395,   396,   398,   397,   399,   399,   400,   400,   402,   401,
+     403,   403,   404,   404,   404,   404,   404,   404,   404,   404,
+     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
+     404,   404,   404,   404,   404,   404,   404,   404,   404,   404,
+     404,   404,   404,   404,   404,   404,   404,   406,   405,   408,
+     407,   409,   409,   410,   410,   412,   411,   414,   413,   415,
+     415,   416,   416,   417,   417,   417,   417,   417,   417,   417,
+     417,   417,   417,   418,   419,   420,   422,   421,   424,   423,
+     426,   425,   427,   429,   428,   430,   432,   431,   433,   433,
+     434,   434,   436,   435,   438,   437,   439,   439,   440,   440,
+     441,   441,   441,   441,   441,   441,   441,   441,   441,   442,
+     444,   443,   445,   446,   447,   448,   450,   449,   451,   451,
+     452,   452,   454,   453,   456,   455,   457,   457,   458,   458,
+     458,   458,   458,   458,   458,   460,   459,   462,   461,   464,
+     463,   466,   465,   467,   467,   468,   468,   470,   469,   472,
+     471,   473,   473,   474,   474,   475,   475,   475,   475,   475,
+     475,   475,   475,   475,   475,   475,   475,   475,   475,   475,
+     477,   476,   479,   478,   481,   480,   483,   482,   485,   484,
+     487,   486,   489,   488,   491,   490,   493,   492,   495,   494,
+     497,   496,   499,   498,   501,   500,   502,   502,   504,   503,
+     505,   505,   507,   506,   508,   508,   509,   509,   510,   510,
+     510,   510,   510,   510,   510,   510,   510,   510,   510,   511,
+     513,   512,   514,   515,   517,   516,   518,   518,   519,   519,
+     519,   519,   519,   521,   520,   523,   522,   525,   524,   526,
+     526,   527,   527,   527,   527,   527,   527,   528,   530,   529,
+     531,   533,   532,   535,   534,   537,   536,   538,   538,   539,
+     539,   539,   539,   539,   539,   539,   539,   539,   539,   539,
+     539,   539,   539,   539,   539,   539,   539,   540,   542,   541,
+     543,   545,   544,   546,   547,   549,   548,   550,   550,   552,
+     551,   554,   553,   555,   556,   558,   557,   560,   559,   562,
+     561,   564,   563,   566,   565,   568,   567,   569,   569,   570,
+     570,   572,   571,   573,   575,   574,   576,   576,   578,   577,
+     579,   579,   580,   580,   580,   580,   580,   580,   580,   581,
+     583,   582,   585,   584,   586,   586,   588,   587,   589,   589,
+     590,   590,   590,   590,   590,   592,   591,   593,   594,   595,
+     597,   596
   };
 
   const signed char
@@ -5075,69 +5101,70 @@ 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,     1,     1,     1,     1,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     0,     4,
-       3,     3,     3,     3,     3,     3,     0,     4,     1,     1,
-       1,     1,     1,     0,     4,     0,     4,     0,     4,     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,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       0,     4,     3,     3,     3,     3,     3,     3,     0,     4,
+       1,     1,     1,     1,     1,     0,     4,     0,     4,     3,
+       3,     0,     4,     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,
-       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,     3,     0,     6,     1,     3,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     0,     6,     1,
-       3,     1,     1,     1,     1,     1,     1,     3,     3,     3,
-       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,     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,     3,     0,     6,     1,
+       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     0,     6,     1,     3,     1,     1,     1,     1,     1,
+       1,     3,     3,     3,     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,     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,     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,
        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,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     0,
-       6,     0,     4,     0,     1,     1,     3,     0,     4,     0,
+       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,     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,     4,     0,     4,     0,     4,     0,     6,     1,     1,
-       0,     6,     1,     3,     0,     4,     0,     1,     1,     3,
+       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,
-       1,     1,     0,     4,     3,     3,     0,     6,     1,     3,
-       1,     1,     1,     1,     1,     0,     4,     0,     4,     0,
-       6,     1,     3,     1,     1,     1,     1,     1,     1,     3,
-       0,     4,     3,     0,     4,     0,     6,     0,     4,     1,
-       3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     3,
-       0,     4,     3,     0,     4,     3,     3,     0,     4,     1,
-       1,     0,     4,     0,     4,     3,     3,     0,     4,     0,
-       4,     0,     4,     0,     4,     0,     6,     0,     4,     1,
-       3,     1,     1,     0,     6,     3,     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,     1,     0,     4,     3,
-       3,     3,     0,     4
+       0,     4,     3,     3,     0,     6,     1,     3,     1,     1,
+       1,     1,     1,     0,     4,     0,     4,     0,     6,     1,
+       3,     1,     1,     1,     1,     1,     1,     3,     0,     4,
+       3,     0,     4,     0,     6,     0,     4,     1,     3,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     3,     0,     4,
+       3,     0,     4,     3,     3,     0,     4,     1,     1,     0,
+       4,     0,     4,     3,     3,     0,     4,     0,     4,     0,
+       4,     0,     4,     0,     6,     0,     4,     1,     3,     1,
+       1,     0,     6,     3,     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,     1,     0,     4,     3,     3,     3,
+       0,     4
   };
 
 
@@ -5171,6 +5198,7 @@ namespace isc { namespace dhcp {
   "\"ddns-send-updates\"", "\"ddns-override-no-update\"",
   "\"ddns-override-client-update\"", "\"ddns-replace-client-name\"",
   "\"ddns-generated-prefix\"", "\"ddns-qualifying-suffix\"",
+  "\"ddns-update-on-renew\"", "\"ddns-use-conflict-resolution\"",
   "\"store-extended-info\"", "\"subnet4\"", "\"4o6-interface\"",
   "\"4o6-interface-id\"", "\"4o6-subnet\"", "\"option-def\"",
   "\"option-data\"", "\"name\"", "\"data\"", "\"code\"", "\"space\"",
@@ -5220,6 +5248,7 @@ namespace isc { namespace dhcp {
   "ddns_override_no_update", "ddns_override_client_update",
   "ddns_replace_client_name", "$@21", "ddns_replace_client_name_value",
   "ddns_generated_prefix", "$@22", "ddns_qualifying_suffix", "$@23",
+  "ddns_update_on_renew", "ddns_use_conflict_resolution",
   "hostname_char_set", "$@24", "hostname_char_replacement", "$@25",
   "store_extended_info", "statistic_default_sample_count",
   "statistic_default_sample_age", "interfaces_config", "$@26",
@@ -5312,80 +5341,81 @@ namespace isc { namespace dhcp {
   const short
   Dhcp4Parser::yyrline_[] =
   {
-       0,   277,   277,   277,   278,   278,   279,   279,   280,   280,
-     281,   281,   282,   282,   283,   283,   284,   284,   285,   285,
-     286,   286,   287,   287,   288,   288,   289,   289,   297,   298,
-     299,   300,   301,   302,   303,   306,   311,   311,   322,   325,
-     326,   329,   333,   340,   340,   347,   348,   351,   355,   362,
-     362,   369,   370,   373,   377,   388,   397,   397,   412,   413,
-     417,   420,   420,   437,   437,   446,   447,   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,   491,   492,   493,   494,
-     495,   496,   497,   498,   499,   500,   501,   502,   503,   506,
-     511,   516,   521,   526,   531,   536,   541,   546,   551,   551,
-     559,   564,   569,   574,   579,   584,   589,   589,   597,   600,
-     603,   606,   609,   615,   615,   623,   623,   631,   631,   639,
-     639,   647,   652,   657,   662,   662,   673,   674,   677,   678,
-     679,   680,   681,   682,   683,   686,   686,   695,   695,   705,
-     705,   712,   713,   716,   716,   723,   725,   729,   735,   735,
-     747,   747,   757,   758,   760,   762,   762,   780,   780,   792,
-     792,   802,   803,   806,   807,   810,   810,   820,   821,   824,
-     825,   826,   827,   828,   829,   830,   831,   832,   833,   834,
-     835,   836,   837,   838,   839,   840,   841,   842,   843,   844,
-     847,   847,   854,   855,   856,   857,   860,   860,   868,   868,
-     876,   876,   884,   889,   889,   897,   902,   907,   912,   917,
-     922,   927,   932,   932,   940,   940,   948,   948,   956,   956,
-     964,   969,   974,   980,   980,   990,   991,   994,   995,   996,
-     997,   998,  1001,  1006,  1011,  1016,  1021,  1028,  1028,  1040,
-    1041,  1044,  1045,  1046,  1047,  1048,  1049,  1052,  1057,  1062,
-    1067,  1067,  1077,  1078,  1081,  1082,  1085,  1085,  1095,  1095,
-    1105,  1106,  1107,  1110,  1111,  1114,  1114,  1122,  1122,  1130,
-    1130,  1141,  1142,  1145,  1146,  1147,  1148,  1149,  1150,  1153,
-    1158,  1163,  1168,  1173,  1178,  1186,  1186,  1199,  1200,  1203,
-    1204,  1211,  1211,  1237,  1237,  1248,  1249,  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,  1280,  1281,  1282,  1283,  1284,  1285,
-    1286,  1287,  1288,  1289,  1290,  1293,  1293,  1301,  1301,  1309,
-    1309,  1317,  1317,  1325,  1325,  1333,  1333,  1341,  1341,  1351,
-    1351,  1358,  1359,  1360,  1361,  1364,  1371,  1371,  1382,  1383,
-    1387,  1388,  1391,  1391,  1399,  1400,  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,  1442,
-    1442,  1455,  1455,  1464,  1465,  1468,  1469,  1474,  1474,  1489,
-    1489,  1503,  1504,  1507,  1508,  1511,  1512,  1513,  1514,  1515,
-    1516,  1517,  1518,  1519,  1520,  1523,  1525,  1530,  1532,  1532,
-    1540,  1540,  1548,  1548,  1556,  1558,  1558,  1566,  1575,  1575,
-    1587,  1588,  1593,  1594,  1599,  1599,  1611,  1611,  1623,  1624,
-    1629,  1630,  1635,  1636,  1637,  1638,  1639,  1640,  1641,  1642,
-    1643,  1646,  1648,  1648,  1656,  1658,  1660,  1665,  1673,  1673,
-    1685,  1686,  1689,  1690,  1693,  1693,  1703,  1703,  1713,  1714,
-    1717,  1718,  1719,  1720,  1721,  1722,  1723,  1726,  1726,  1734,
-    1734,  1759,  1759,  1789,  1789,  1799,  1800,  1803,  1804,  1807,
-    1807,  1816,  1816,  1825,  1826,  1829,  1830,  1834,  1835,  1836,
-    1837,  1838,  1839,  1840,  1841,  1842,  1843,  1844,  1845,  1846,
-    1847,  1848,  1851,  1851,  1859,  1859,  1867,  1867,  1875,  1875,
-    1883,  1883,  1893,  1893,  1901,  1901,  1909,  1909,  1917,  1917,
-    1925,  1925,  1933,  1933,  1941,  1941,  1954,  1954,  1964,  1965,
-    1971,  1971,  1981,  1982,  1985,  1985,  1995,  1996,  1999,  2000,
-    2003,  2004,  2005,  2006,  2007,  2008,  2009,  2010,  2011,  2012,
-    2013,  2016,  2018,  2018,  2026,  2033,  2040,  2040,  2050,  2051,
-    2054,  2055,  2056,  2057,  2058,  2061,  2061,  2069,  2069,  2080,
-    2080,  2092,  2093,  2096,  2097,  2098,  2099,  2100,  2101,  2104,
-    2109,  2109,  2117,  2122,  2122,  2131,  2131,  2143,  2143,  2153,
-    2154,  2157,  2158,  2159,  2160,  2161,  2162,  2163,  2164,  2165,
-    2166,  2167,  2168,  2169,  2170,  2171,  2172,  2173,  2174,  2177,
-    2182,  2182,  2190,  2195,  2195,  2203,  2208,  2213,  2213,  2221,
-    2222,  2225,  2225,  2234,  2234,  2243,  2249,  2255,  2255,  2263,
-    2263,  2272,  2272,  2281,  2281,  2292,  2292,  2303,  2303,  2313,
-    2314,  2318,  2319,  2322,  2322,  2332,  2339,  2339,  2351,  2352,
-    2356,  2356,  2364,  2365,  2368,  2369,  2370,  2371,  2372,  2373,
-    2374,  2377,  2382,  2382,  2390,  2390,  2400,  2401,  2404,  2404,
-    2412,  2413,  2416,  2417,  2418,  2419,  2420,  2423,  2423,  2431,
-    2436,  2441,  2446,  2446
+       0,   279,   279,   279,   280,   280,   281,   281,   282,   282,
+     283,   283,   284,   284,   285,   285,   286,   286,   287,   287,
+     288,   288,   289,   289,   290,   290,   291,   291,   299,   300,
+     301,   302,   303,   304,   305,   308,   313,   313,   324,   327,
+     328,   331,   335,   342,   342,   349,   350,   353,   357,   364,
+     364,   371,   372,   375,   379,   390,   399,   399,   414,   415,
+     419,   422,   422,   439,   439,   448,   449,   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,   491,   492,   493,   494,   495,   496,
+     497,   498,   499,   500,   501,   502,   503,   504,   505,   506,
+     507,   510,   515,   520,   525,   530,   535,   540,   545,   550,
+     555,   555,   563,   568,   573,   578,   583,   588,   593,   593,
+     601,   604,   607,   610,   613,   619,   619,   627,   627,   635,
+     641,   647,   647,   655,   655,   663,   668,   673,   678,   678,
+     689,   690,   693,   694,   695,   696,   697,   698,   699,   702,
+     702,   711,   711,   721,   721,   728,   729,   732,   732,   739,
+     741,   745,   751,   751,   763,   763,   773,   774,   776,   778,
+     778,   796,   796,   808,   808,   818,   819,   822,   823,   826,
+     826,   836,   837,   840,   841,   842,   843,   844,   845,   846,
+     847,   848,   849,   850,   851,   852,   853,   854,   855,   856,
+     857,   858,   859,   860,   863,   863,   870,   871,   872,   873,
+     876,   876,   884,   884,   892,   892,   900,   905,   905,   913,
+     918,   923,   928,   933,   938,   943,   948,   948,   956,   956,
+     964,   964,   972,   972,   980,   985,   990,   996,   996,  1006,
+    1007,  1010,  1011,  1012,  1013,  1014,  1017,  1022,  1027,  1032,
+    1037,  1044,  1044,  1056,  1057,  1060,  1061,  1062,  1063,  1064,
+    1065,  1068,  1073,  1078,  1083,  1083,  1093,  1094,  1097,  1098,
+    1101,  1101,  1111,  1111,  1121,  1122,  1123,  1126,  1127,  1130,
+    1130,  1138,  1138,  1146,  1146,  1157,  1158,  1161,  1162,  1163,
+    1164,  1165,  1166,  1169,  1174,  1179,  1184,  1189,  1194,  1202,
+    1202,  1215,  1216,  1219,  1220,  1227,  1227,  1253,  1253,  1264,
+    1265,  1269,  1270,  1271,  1272,  1273,  1274,  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,  1311,  1311,  1319,  1319,  1327,  1327,  1335,  1335,  1343,
+    1343,  1351,  1351,  1359,  1359,  1369,  1369,  1376,  1377,  1378,
+    1379,  1382,  1389,  1389,  1400,  1401,  1405,  1406,  1409,  1409,
+    1417,  1418,  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,  1462,  1462,  1475,
+    1475,  1484,  1485,  1488,  1489,  1494,  1494,  1509,  1509,  1523,
+    1524,  1527,  1528,  1531,  1532,  1533,  1534,  1535,  1536,  1537,
+    1538,  1539,  1540,  1543,  1545,  1550,  1552,  1552,  1560,  1560,
+    1568,  1568,  1576,  1578,  1578,  1586,  1595,  1595,  1607,  1608,
+    1613,  1614,  1619,  1619,  1631,  1631,  1643,  1644,  1649,  1650,
+    1655,  1656,  1657,  1658,  1659,  1660,  1661,  1662,  1663,  1666,
+    1668,  1668,  1676,  1678,  1680,  1685,  1693,  1693,  1705,  1706,
+    1709,  1710,  1713,  1713,  1723,  1723,  1733,  1734,  1737,  1738,
+    1739,  1740,  1741,  1742,  1743,  1746,  1746,  1754,  1754,  1779,
+    1779,  1809,  1809,  1819,  1820,  1823,  1824,  1827,  1827,  1836,
+    1836,  1845,  1846,  1849,  1850,  1854,  1855,  1856,  1857,  1858,
+    1859,  1860,  1861,  1862,  1863,  1864,  1865,  1866,  1867,  1868,
+    1871,  1871,  1879,  1879,  1887,  1887,  1895,  1895,  1903,  1903,
+    1913,  1913,  1921,  1921,  1929,  1929,  1937,  1937,  1945,  1945,
+    1953,  1953,  1961,  1961,  1974,  1974,  1984,  1985,  1991,  1991,
+    2001,  2002,  2005,  2005,  2015,  2016,  2019,  2020,  2023,  2024,
+    2025,  2026,  2027,  2028,  2029,  2030,  2031,  2032,  2033,  2036,
+    2038,  2038,  2046,  2053,  2060,  2060,  2070,  2071,  2074,  2075,
+    2076,  2077,  2078,  2081,  2081,  2089,  2089,  2100,  2100,  2112,
+    2113,  2116,  2117,  2118,  2119,  2120,  2121,  2124,  2129,  2129,
+    2137,  2142,  2142,  2151,  2151,  2163,  2163,  2173,  2174,  2177,
+    2178,  2179,  2180,  2181,  2182,  2183,  2184,  2185,  2186,  2187,
+    2188,  2189,  2190,  2191,  2192,  2193,  2194,  2197,  2202,  2202,
+    2210,  2215,  2215,  2223,  2228,  2233,  2233,  2241,  2242,  2245,
+    2245,  2254,  2254,  2263,  2269,  2275,  2275,  2283,  2283,  2292,
+    2292,  2301,  2301,  2312,  2312,  2323,  2323,  2333,  2334,  2338,
+    2339,  2342,  2342,  2352,  2359,  2359,  2371,  2372,  2376,  2376,
+    2384,  2385,  2388,  2389,  2390,  2391,  2392,  2393,  2394,  2397,
+    2402,  2402,  2410,  2410,  2420,  2421,  2424,  2424,  2432,  2433,
+    2436,  2437,  2438,  2439,  2440,  2443,  2443,  2451,  2456,  2461,
+    2466,  2466
   };
 
   void
@@ -5418,9 +5448,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5422 "dhcp4_parser.cc"
+#line 5452 "dhcp4_parser.cc"
 
-#line 2454 "dhcp4_parser.yy"
+#line 2474 "dhcp4_parser.yy"
 
 
 void
index d899400533ddf36338e89e85ee1a84c022ac87a5..2bce051ab48a5eff945cef7e87ac34f4253036c4 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -104,9 +104,9 @@ using namespace std;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef YY_ASSERT
+#ifndef PARSER4__ASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define PARSER4__ASSERT assert
 #endif
 
 
@@ -128,9 +128,9 @@ using namespace std;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -232,7 +232,7 @@ namespace isc { namespace dhcp {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER4__ASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
@@ -246,7 +246,7 @@ namespace isc { namespace dhcp {
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      YY_ASSERT (!yytypeid_);
+      PARSER4__ASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -255,8 +255,8 @@ namespace isc { namespace dhcp {
     T&
     emplace (U&&... u)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER4__ASSERT (!yytypeid_);
+      PARSER4__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -266,8 +266,8 @@ namespace isc { namespace dhcp {
     T&
     emplace ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER4__ASSERT (!yytypeid_);
+      PARSER4__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -277,8 +277,8 @@ namespace isc { namespace dhcp {
     T&
     emplace (const T& t)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER4__ASSERT (!yytypeid_);
+      PARSER4__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -307,9 +307,9 @@ namespace isc { namespace dhcp {
     T&
     as () YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER4__ASSERT (yytypeid_);
+      PARSER4__ASSERT (*yytypeid_ == typeid (T));
+      PARSER4__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -318,9 +318,9 @@ namespace isc { namespace dhcp {
     const T&
     as () const YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER4__ASSERT (yytypeid_);
+      PARSER4__ASSERT (*yytypeid_ == typeid (T));
+      PARSER4__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -336,8 +336,8 @@ namespace isc { namespace dhcp {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+      PARSER4__ASSERT (yytypeid_);
+      PARSER4__ASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -558,121 +558,123 @@ namespace isc { namespace dhcp {
     TOKEN_DDNS_REPLACE_CLIENT_NAME = 327, // "ddns-replace-client-name"
     TOKEN_DDNS_GENERATED_PREFIX = 328, // "ddns-generated-prefix"
     TOKEN_DDNS_QUALIFYING_SUFFIX = 329, // "ddns-qualifying-suffix"
-    TOKEN_STORE_EXTENDED_INFO = 330, // "store-extended-info"
-    TOKEN_SUBNET4 = 331,           // "subnet4"
-    TOKEN_SUBNET_4O6_INTERFACE = 332, // "4o6-interface"
-    TOKEN_SUBNET_4O6_INTERFACE_ID = 333, // "4o6-interface-id"
-    TOKEN_SUBNET_4O6_SUBNET = 334, // "4o6-subnet"
-    TOKEN_OPTION_DEF = 335,        // "option-def"
-    TOKEN_OPTION_DATA = 336,       // "option-data"
-    TOKEN_NAME = 337,              // "name"
-    TOKEN_DATA = 338,              // "data"
-    TOKEN_CODE = 339,              // "code"
-    TOKEN_SPACE = 340,             // "space"
-    TOKEN_CSV_FORMAT = 341,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 342,       // "always-send"
-    TOKEN_RECORD_TYPES = 343,      // "record-types"
-    TOKEN_ENCAPSULATE = 344,       // "encapsulate"
-    TOKEN_ARRAY = 345,             // "array"
-    TOKEN_SHARED_NETWORKS = 346,   // "shared-networks"
-    TOKEN_POOLS = 347,             // "pools"
-    TOKEN_POOL = 348,              // "pool"
-    TOKEN_USER_CONTEXT = 349,      // "user-context"
-    TOKEN_COMMENT = 350,           // "comment"
-    TOKEN_SUBNET = 351,            // "subnet"
-    TOKEN_INTERFACE = 352,         // "interface"
-    TOKEN_ID = 353,                // "id"
-    TOKEN_RESERVATION_MODE = 354,  // "reservation-mode"
-    TOKEN_DISABLED = 355,          // "disabled"
-    TOKEN_OUT_OF_POOL = 356,       // "out-of-pool"
-    TOKEN_GLOBAL = 357,            // "global"
-    TOKEN_ALL = 358,               // "all"
-    TOKEN_HOST_RESERVATION_IDENTIFIERS = 359, // "host-reservation-identifiers"
-    TOKEN_CLIENT_CLASSES = 360,    // "client-classes"
-    TOKEN_REQUIRE_CLIENT_CLASSES = 361, // "require-client-classes"
-    TOKEN_TEST = 362,              // "test"
-    TOKEN_ONLY_IF_REQUIRED = 363,  // "only-if-required"
-    TOKEN_CLIENT_CLASS = 364,      // "client-class"
-    TOKEN_RESERVATIONS = 365,      // "reservations"
-    TOKEN_DUID = 366,              // "duid"
-    TOKEN_HW_ADDRESS = 367,        // "hw-address"
-    TOKEN_CIRCUIT_ID = 368,        // "circuit-id"
-    TOKEN_CLIENT_ID = 369,         // "client-id"
-    TOKEN_HOSTNAME = 370,          // "hostname"
-    TOKEN_FLEX_ID = 371,           // "flex-id"
-    TOKEN_RELAY = 372,             // "relay"
-    TOKEN_IP_ADDRESS = 373,        // "ip-address"
-    TOKEN_IP_ADDRESSES = 374,      // "ip-addresses"
-    TOKEN_HOOKS_LIBRARIES = 375,   // "hooks-libraries"
-    TOKEN_LIBRARY = 376,           // "library"
-    TOKEN_PARAMETERS = 377,        // "parameters"
-    TOKEN_EXPIRED_LEASES_PROCESSING = 378, // "expired-leases-processing"
-    TOKEN_RECLAIM_TIMER_WAIT_TIME = 379, // "reclaim-timer-wait-time"
-    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 380, // "flush-reclaimed-timer-wait-time"
-    TOKEN_HOLD_RECLAIMED_TIME = 381, // "hold-reclaimed-time"
-    TOKEN_MAX_RECLAIM_LEASES = 382, // "max-reclaim-leases"
-    TOKEN_MAX_RECLAIM_TIME = 383,  // "max-reclaim-time"
-    TOKEN_UNWARNED_RECLAIM_CYCLES = 384, // "unwarned-reclaim-cycles"
-    TOKEN_DHCP4O6_PORT = 385,      // "dhcp4o6-port"
-    TOKEN_DHCP_MULTI_THREADING = 386, // "multi-threading"
-    TOKEN_ENABLE_MULTI_THREADING = 387, // "enable-multi-threading"
-    TOKEN_THREAD_POOL_SIZE = 388,  // "thread-pool-size"
-    TOKEN_PACKET_QUEUE_SIZE = 389, // "packet-queue-size"
-    TOKEN_CONTROL_SOCKET = 390,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 391,       // "socket-type"
-    TOKEN_SOCKET_NAME = 392,       // "socket-name"
-    TOKEN_DHCP_QUEUE_CONTROL = 393, // "dhcp-queue-control"
-    TOKEN_ENABLE_QUEUE = 394,      // "enable-queue"
-    TOKEN_QUEUE_TYPE = 395,        // "queue-type"
-    TOKEN_CAPACITY = 396,          // "capacity"
-    TOKEN_DHCP_DDNS = 397,         // "dhcp-ddns"
-    TOKEN_ENABLE_UPDATES = 398,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 399, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 400,         // "server-ip"
-    TOKEN_SERVER_PORT = 401,       // "server-port"
-    TOKEN_SENDER_IP = 402,         // "sender-ip"
-    TOKEN_SENDER_PORT = 403,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 404,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 405,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 406,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 407, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 408, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 409, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 410,  // "generated-prefix"
-    TOKEN_TCP = 411,               // "tcp"
-    TOKEN_JSON = 412,              // "JSON"
-    TOKEN_WHEN_PRESENT = 413,      // "when-present"
-    TOKEN_NEVER = 414,             // "never"
-    TOKEN_ALWAYS = 415,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 416,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 417, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 418, // "hostname-char-replacement"
-    TOKEN_LOGGERS = 419,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 420,    // "output_options"
-    TOKEN_OUTPUT = 421,            // "output"
-    TOKEN_DEBUGLEVEL = 422,        // "debuglevel"
-    TOKEN_SEVERITY = 423,          // "severity"
-    TOKEN_FLUSH = 424,             // "flush"
-    TOKEN_MAXSIZE = 425,           // "maxsize"
-    TOKEN_MAXVER = 426,            // "maxver"
-    TOKEN_PATTERN = 427,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 428,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP4 = 429,    // TOPLEVEL_DHCP4
-    TOKEN_SUB_DHCP4 = 430,         // SUB_DHCP4
-    TOKEN_SUB_INTERFACES4 = 431,   // SUB_INTERFACES4
-    TOKEN_SUB_SUBNET4 = 432,       // SUB_SUBNET4
-    TOKEN_SUB_POOL4 = 433,         // SUB_POOL4
-    TOKEN_SUB_RESERVATION = 434,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 435,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 436,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 437,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 438, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 439,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 440, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 441,            // "constant string"
-    TOKEN_INTEGER = 442,           // "integer"
-    TOKEN_FLOAT = 443,             // "floating point"
-    TOKEN_BOOLEAN = 444            // "boolean"
+    TOKEN_DDNS_UPDATE_ON_RENEW = 330, // "ddns-update-on-renew"
+    TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 331, // "ddns-use-conflict-resolution"
+    TOKEN_STORE_EXTENDED_INFO = 332, // "store-extended-info"
+    TOKEN_SUBNET4 = 333,           // "subnet4"
+    TOKEN_SUBNET_4O6_INTERFACE = 334, // "4o6-interface"
+    TOKEN_SUBNET_4O6_INTERFACE_ID = 335, // "4o6-interface-id"
+    TOKEN_SUBNET_4O6_SUBNET = 336, // "4o6-subnet"
+    TOKEN_OPTION_DEF = 337,        // "option-def"
+    TOKEN_OPTION_DATA = 338,       // "option-data"
+    TOKEN_NAME = 339,              // "name"
+    TOKEN_DATA = 340,              // "data"
+    TOKEN_CODE = 341,              // "code"
+    TOKEN_SPACE = 342,             // "space"
+    TOKEN_CSV_FORMAT = 343,        // "csv-format"
+    TOKEN_ALWAYS_SEND = 344,       // "always-send"
+    TOKEN_RECORD_TYPES = 345,      // "record-types"
+    TOKEN_ENCAPSULATE = 346,       // "encapsulate"
+    TOKEN_ARRAY = 347,             // "array"
+    TOKEN_SHARED_NETWORKS = 348,   // "shared-networks"
+    TOKEN_POOLS = 349,             // "pools"
+    TOKEN_POOL = 350,              // "pool"
+    TOKEN_USER_CONTEXT = 351,      // "user-context"
+    TOKEN_COMMENT = 352,           // "comment"
+    TOKEN_SUBNET = 353,            // "subnet"
+    TOKEN_INTERFACE = 354,         // "interface"
+    TOKEN_ID = 355,                // "id"
+    TOKEN_RESERVATION_MODE = 356,  // "reservation-mode"
+    TOKEN_DISABLED = 357,          // "disabled"
+    TOKEN_OUT_OF_POOL = 358,       // "out-of-pool"
+    TOKEN_GLOBAL = 359,            // "global"
+    TOKEN_ALL = 360,               // "all"
+    TOKEN_HOST_RESERVATION_IDENTIFIERS = 361, // "host-reservation-identifiers"
+    TOKEN_CLIENT_CLASSES = 362,    // "client-classes"
+    TOKEN_REQUIRE_CLIENT_CLASSES = 363, // "require-client-classes"
+    TOKEN_TEST = 364,              // "test"
+    TOKEN_ONLY_IF_REQUIRED = 365,  // "only-if-required"
+    TOKEN_CLIENT_CLASS = 366,      // "client-class"
+    TOKEN_RESERVATIONS = 367,      // "reservations"
+    TOKEN_DUID = 368,              // "duid"
+    TOKEN_HW_ADDRESS = 369,        // "hw-address"
+    TOKEN_CIRCUIT_ID = 370,        // "circuit-id"
+    TOKEN_CLIENT_ID = 371,         // "client-id"
+    TOKEN_HOSTNAME = 372,          // "hostname"
+    TOKEN_FLEX_ID = 373,           // "flex-id"
+    TOKEN_RELAY = 374,             // "relay"
+    TOKEN_IP_ADDRESS = 375,        // "ip-address"
+    TOKEN_IP_ADDRESSES = 376,      // "ip-addresses"
+    TOKEN_HOOKS_LIBRARIES = 377,   // "hooks-libraries"
+    TOKEN_LIBRARY = 378,           // "library"
+    TOKEN_PARAMETERS = 379,        // "parameters"
+    TOKEN_EXPIRED_LEASES_PROCESSING = 380, // "expired-leases-processing"
+    TOKEN_RECLAIM_TIMER_WAIT_TIME = 381, // "reclaim-timer-wait-time"
+    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 382, // "flush-reclaimed-timer-wait-time"
+    TOKEN_HOLD_RECLAIMED_TIME = 383, // "hold-reclaimed-time"
+    TOKEN_MAX_RECLAIM_LEASES = 384, // "max-reclaim-leases"
+    TOKEN_MAX_RECLAIM_TIME = 385,  // "max-reclaim-time"
+    TOKEN_UNWARNED_RECLAIM_CYCLES = 386, // "unwarned-reclaim-cycles"
+    TOKEN_DHCP4O6_PORT = 387,      // "dhcp4o6-port"
+    TOKEN_DHCP_MULTI_THREADING = 388, // "multi-threading"
+    TOKEN_ENABLE_MULTI_THREADING = 389, // "enable-multi-threading"
+    TOKEN_THREAD_POOL_SIZE = 390,  // "thread-pool-size"
+    TOKEN_PACKET_QUEUE_SIZE = 391, // "packet-queue-size"
+    TOKEN_CONTROL_SOCKET = 392,    // "control-socket"
+    TOKEN_SOCKET_TYPE = 393,       // "socket-type"
+    TOKEN_SOCKET_NAME = 394,       // "socket-name"
+    TOKEN_DHCP_QUEUE_CONTROL = 395, // "dhcp-queue-control"
+    TOKEN_ENABLE_QUEUE = 396,      // "enable-queue"
+    TOKEN_QUEUE_TYPE = 397,        // "queue-type"
+    TOKEN_CAPACITY = 398,          // "capacity"
+    TOKEN_DHCP_DDNS = 399,         // "dhcp-ddns"
+    TOKEN_ENABLE_UPDATES = 400,    // "enable-updates"
+    TOKEN_QUALIFYING_SUFFIX = 401, // "qualifying-suffix"
+    TOKEN_SERVER_IP = 402,         // "server-ip"
+    TOKEN_SERVER_PORT = 403,       // "server-port"
+    TOKEN_SENDER_IP = 404,         // "sender-ip"
+    TOKEN_SENDER_PORT = 405,       // "sender-port"
+    TOKEN_MAX_QUEUE_SIZE = 406,    // "max-queue-size"
+    TOKEN_NCR_PROTOCOL = 407,      // "ncr-protocol"
+    TOKEN_NCR_FORMAT = 408,        // "ncr-format"
+    TOKEN_OVERRIDE_NO_UPDATE = 409, // "override-no-update"
+    TOKEN_OVERRIDE_CLIENT_UPDATE = 410, // "override-client-update"
+    TOKEN_REPLACE_CLIENT_NAME = 411, // "replace-client-name"
+    TOKEN_GENERATED_PREFIX = 412,  // "generated-prefix"
+    TOKEN_TCP = 413,               // "tcp"
+    TOKEN_JSON = 414,              // "JSON"
+    TOKEN_WHEN_PRESENT = 415,      // "when-present"
+    TOKEN_NEVER = 416,             // "never"
+    TOKEN_ALWAYS = 417,            // "always"
+    TOKEN_WHEN_NOT_PRESENT = 418,  // "when-not-present"
+    TOKEN_HOSTNAME_CHAR_SET = 419, // "hostname-char-set"
+    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 420, // "hostname-char-replacement"
+    TOKEN_LOGGERS = 421,           // "loggers"
+    TOKEN_OUTPUT_OPTIONS = 422,    // "output_options"
+    TOKEN_OUTPUT = 423,            // "output"
+    TOKEN_DEBUGLEVEL = 424,        // "debuglevel"
+    TOKEN_SEVERITY = 425,          // "severity"
+    TOKEN_FLUSH = 426,             // "flush"
+    TOKEN_MAXSIZE = 427,           // "maxsize"
+    TOKEN_MAXVER = 428,            // "maxver"
+    TOKEN_PATTERN = 429,           // "pattern"
+    TOKEN_TOPLEVEL_JSON = 430,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP4 = 431,    // TOPLEVEL_DHCP4
+    TOKEN_SUB_DHCP4 = 432,         // SUB_DHCP4
+    TOKEN_SUB_INTERFACES4 = 433,   // SUB_INTERFACES4
+    TOKEN_SUB_SUBNET4 = 434,       // SUB_SUBNET4
+    TOKEN_SUB_POOL4 = 435,         // SUB_POOL4
+    TOKEN_SUB_RESERVATION = 436,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 437,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 438,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 439,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 440, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 441,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 442, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 443,            // "constant string"
+    TOKEN_INTEGER = 444,           // "integer"
+    TOKEN_FLOAT = 445,             // "floating point"
+    TOKEN_BOOLEAN = 446            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -689,7 +691,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 190, ///< Number of tokens.
+        YYNTOKENS = 192, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -766,525 +768,529 @@ namespace isc { namespace dhcp {
         S_DDNS_REPLACE_CLIENT_NAME = 72,         // "ddns-replace-client-name"
         S_DDNS_GENERATED_PREFIX = 73,            // "ddns-generated-prefix"
         S_DDNS_QUALIFYING_SUFFIX = 74,           // "ddns-qualifying-suffix"
-        S_STORE_EXTENDED_INFO = 75,              // "store-extended-info"
-        S_SUBNET4 = 76,                          // "subnet4"
-        S_SUBNET_4O6_INTERFACE = 77,             // "4o6-interface"
-        S_SUBNET_4O6_INTERFACE_ID = 78,          // "4o6-interface-id"
-        S_SUBNET_4O6_SUBNET = 79,                // "4o6-subnet"
-        S_OPTION_DEF = 80,                       // "option-def"
-        S_OPTION_DATA = 81,                      // "option-data"
-        S_NAME = 82,                             // "name"
-        S_DATA = 83,                             // "data"
-        S_CODE = 84,                             // "code"
-        S_SPACE = 85,                            // "space"
-        S_CSV_FORMAT = 86,                       // "csv-format"
-        S_ALWAYS_SEND = 87,                      // "always-send"
-        S_RECORD_TYPES = 88,                     // "record-types"
-        S_ENCAPSULATE = 89,                      // "encapsulate"
-        S_ARRAY = 90,                            // "array"
-        S_SHARED_NETWORKS = 91,                  // "shared-networks"
-        S_POOLS = 92,                            // "pools"
-        S_POOL = 93,                             // "pool"
-        S_USER_CONTEXT = 94,                     // "user-context"
-        S_COMMENT = 95,                          // "comment"
-        S_SUBNET = 96,                           // "subnet"
-        S_INTERFACE = 97,                        // "interface"
-        S_ID = 98,                               // "id"
-        S_RESERVATION_MODE = 99,                 // "reservation-mode"
-        S_DISABLED = 100,                        // "disabled"
-        S_OUT_OF_POOL = 101,                     // "out-of-pool"
-        S_GLOBAL = 102,                          // "global"
-        S_ALL = 103,                             // "all"
-        S_HOST_RESERVATION_IDENTIFIERS = 104,    // "host-reservation-identifiers"
-        S_CLIENT_CLASSES = 105,                  // "client-classes"
-        S_REQUIRE_CLIENT_CLASSES = 106,          // "require-client-classes"
-        S_TEST = 107,                            // "test"
-        S_ONLY_IF_REQUIRED = 108,                // "only-if-required"
-        S_CLIENT_CLASS = 109,                    // "client-class"
-        S_RESERVATIONS = 110,                    // "reservations"
-        S_DUID = 111,                            // "duid"
-        S_HW_ADDRESS = 112,                      // "hw-address"
-        S_CIRCUIT_ID = 113,                      // "circuit-id"
-        S_CLIENT_ID = 114,                       // "client-id"
-        S_HOSTNAME = 115,                        // "hostname"
-        S_FLEX_ID = 116,                         // "flex-id"
-        S_RELAY = 117,                           // "relay"
-        S_IP_ADDRESS = 118,                      // "ip-address"
-        S_IP_ADDRESSES = 119,                    // "ip-addresses"
-        S_HOOKS_LIBRARIES = 120,                 // "hooks-libraries"
-        S_LIBRARY = 121,                         // "library"
-        S_PARAMETERS = 122,                      // "parameters"
-        S_EXPIRED_LEASES_PROCESSING = 123,       // "expired-leases-processing"
-        S_RECLAIM_TIMER_WAIT_TIME = 124,         // "reclaim-timer-wait-time"
-        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 125, // "flush-reclaimed-timer-wait-time"
-        S_HOLD_RECLAIMED_TIME = 126,             // "hold-reclaimed-time"
-        S_MAX_RECLAIM_LEASES = 127,              // "max-reclaim-leases"
-        S_MAX_RECLAIM_TIME = 128,                // "max-reclaim-time"
-        S_UNWARNED_RECLAIM_CYCLES = 129,         // "unwarned-reclaim-cycles"
-        S_DHCP4O6_PORT = 130,                    // "dhcp4o6-port"
-        S_DHCP_MULTI_THREADING = 131,            // "multi-threading"
-        S_ENABLE_MULTI_THREADING = 132,          // "enable-multi-threading"
-        S_THREAD_POOL_SIZE = 133,                // "thread-pool-size"
-        S_PACKET_QUEUE_SIZE = 134,               // "packet-queue-size"
-        S_CONTROL_SOCKET = 135,                  // "control-socket"
-        S_SOCKET_TYPE = 136,                     // "socket-type"
-        S_SOCKET_NAME = 137,                     // "socket-name"
-        S_DHCP_QUEUE_CONTROL = 138,              // "dhcp-queue-control"
-        S_ENABLE_QUEUE = 139,                    // "enable-queue"
-        S_QUEUE_TYPE = 140,                      // "queue-type"
-        S_CAPACITY = 141,                        // "capacity"
-        S_DHCP_DDNS = 142,                       // "dhcp-ddns"
-        S_ENABLE_UPDATES = 143,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 144,               // "qualifying-suffix"
-        S_SERVER_IP = 145,                       // "server-ip"
-        S_SERVER_PORT = 146,                     // "server-port"
-        S_SENDER_IP = 147,                       // "sender-ip"
-        S_SENDER_PORT = 148,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 149,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 150,                    // "ncr-protocol"
-        S_NCR_FORMAT = 151,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 152,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 153,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 154,             // "replace-client-name"
-        S_GENERATED_PREFIX = 155,                // "generated-prefix"
-        S_TCP = 156,                             // "tcp"
-        S_JSON = 157,                            // "JSON"
-        S_WHEN_PRESENT = 158,                    // "when-present"
-        S_NEVER = 159,                           // "never"
-        S_ALWAYS = 160,                          // "always"
-        S_WHEN_NOT_PRESENT = 161,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 162,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 163,       // "hostname-char-replacement"
-        S_LOGGERS = 164,                         // "loggers"
-        S_OUTPUT_OPTIONS = 165,                  // "output_options"
-        S_OUTPUT = 166,                          // "output"
-        S_DEBUGLEVEL = 167,                      // "debuglevel"
-        S_SEVERITY = 168,                        // "severity"
-        S_FLUSH = 169,                           // "flush"
-        S_MAXSIZE = 170,                         // "maxsize"
-        S_MAXVER = 171,                          // "maxver"
-        S_PATTERN = 172,                         // "pattern"
-        S_TOPLEVEL_JSON = 173,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP4 = 174,                  // TOPLEVEL_DHCP4
-        S_SUB_DHCP4 = 175,                       // SUB_DHCP4
-        S_SUB_INTERFACES4 = 176,                 // SUB_INTERFACES4
-        S_SUB_SUBNET4 = 177,                     // SUB_SUBNET4
-        S_SUB_POOL4 = 178,                       // SUB_POOL4
-        S_SUB_RESERVATION = 179,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 180,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 181,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 182,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 183,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 184,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 185,              // SUB_CONFIG_CONTROL
-        S_STRING = 186,                          // "constant string"
-        S_INTEGER = 187,                         // "integer"
-        S_FLOAT = 188,                           // "floating point"
-        S_BOOLEAN = 189,                         // "boolean"
-        S_YYACCEPT = 190,                        // $accept
-        S_start = 191,                           // start
-        S_192_1 = 192,                           // $@1
-        S_193_2 = 193,                           // $@2
-        S_194_3 = 194,                           // $@3
-        S_195_4 = 195,                           // $@4
-        S_196_5 = 196,                           // $@5
-        S_197_6 = 197,                           // $@6
-        S_198_7 = 198,                           // $@7
-        S_199_8 = 199,                           // $@8
-        S_200_9 = 200,                           // $@9
-        S_201_10 = 201,                          // $@10
-        S_202_11 = 202,                          // $@11
-        S_203_12 = 203,                          // $@12
-        S_204_13 = 204,                          // $@13
-        S_value = 205,                           // value
-        S_sub_json = 206,                        // sub_json
-        S_map2 = 207,                            // map2
-        S_208_14 = 208,                          // $@14
-        S_map_value = 209,                       // map_value
-        S_map_content = 210,                     // map_content
-        S_not_empty_map = 211,                   // not_empty_map
-        S_list_generic = 212,                    // list_generic
-        S_213_15 = 213,                          // $@15
-        S_list_content = 214,                    // list_content
-        S_not_empty_list = 215,                  // not_empty_list
-        S_list_strings = 216,                    // list_strings
-        S_217_16 = 217,                          // $@16
-        S_list_strings_content = 218,            // list_strings_content
-        S_not_empty_list_strings = 219,          // not_empty_list_strings
-        S_unknown_map_entry = 220,               // unknown_map_entry
-        S_syntax_map = 221,                      // syntax_map
-        S_222_17 = 222,                          // $@17
-        S_global_objects = 223,                  // global_objects
-        S_global_object = 224,                   // global_object
-        S_dhcp4_object = 225,                    // dhcp4_object
-        S_226_18 = 226,                          // $@18
-        S_sub_dhcp4 = 227,                       // sub_dhcp4
-        S_228_19 = 228,                          // $@19
-        S_global_params = 229,                   // global_params
-        S_global_param = 230,                    // global_param
-        S_valid_lifetime = 231,                  // valid_lifetime
-        S_min_valid_lifetime = 232,              // min_valid_lifetime
-        S_max_valid_lifetime = 233,              // max_valid_lifetime
-        S_renew_timer = 234,                     // renew_timer
-        S_rebind_timer = 235,                    // rebind_timer
-        S_calculate_tee_times = 236,             // calculate_tee_times
-        S_t1_percent = 237,                      // t1_percent
-        S_t2_percent = 238,                      // t2_percent
-        S_decline_probation_period = 239,        // decline_probation_period
-        S_server_tag = 240,                      // server_tag
-        S_241_20 = 241,                          // $@20
-        S_echo_client_id = 242,                  // echo_client_id
-        S_match_client_id = 243,                 // match_client_id
-        S_authoritative = 244,                   // authoritative
-        S_ddns_send_updates = 245,               // ddns_send_updates
-        S_ddns_override_no_update = 246,         // ddns_override_no_update
-        S_ddns_override_client_update = 247,     // ddns_override_client_update
-        S_ddns_replace_client_name = 248,        // ddns_replace_client_name
-        S_249_21 = 249,                          // $@21
-        S_ddns_replace_client_name_value = 250,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 251,           // ddns_generated_prefix
-        S_252_22 = 252,                          // $@22
-        S_ddns_qualifying_suffix = 253,          // ddns_qualifying_suffix
-        S_254_23 = 254,                          // $@23
-        S_hostname_char_set = 255,               // hostname_char_set
-        S_256_24 = 256,                          // $@24
-        S_hostname_char_replacement = 257,       // hostname_char_replacement
-        S_258_25 = 258,                          // $@25
-        S_store_extended_info = 259,             // store_extended_info
-        S_statistic_default_sample_count = 260,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 261,    // statistic_default_sample_age
-        S_interfaces_config = 262,               // interfaces_config
-        S_263_26 = 263,                          // $@26
-        S_interfaces_config_params = 264,        // interfaces_config_params
-        S_interfaces_config_param = 265,         // interfaces_config_param
-        S_sub_interfaces4 = 266,                 // sub_interfaces4
-        S_267_27 = 267,                          // $@27
-        S_interfaces_list = 268,                 // interfaces_list
-        S_269_28 = 269,                          // $@28
-        S_dhcp_socket_type = 270,                // dhcp_socket_type
-        S_271_29 = 271,                          // $@29
-        S_socket_type = 272,                     // socket_type
-        S_outbound_interface = 273,              // outbound_interface
-        S_274_30 = 274,                          // $@30
-        S_outbound_interface_value = 275,        // outbound_interface_value
-        S_re_detect = 276,                       // re_detect
-        S_lease_database = 277,                  // lease_database
-        S_278_31 = 278,                          // $@31
-        S_sanity_checks = 279,                   // sanity_checks
-        S_280_32 = 280,                          // $@32
-        S_sanity_checks_params = 281,            // sanity_checks_params
-        S_sanity_checks_param = 282,             // sanity_checks_param
-        S_lease_checks = 283,                    // lease_checks
-        S_284_33 = 284,                          // $@33
-        S_hosts_database = 285,                  // hosts_database
-        S_286_34 = 286,                          // $@34
-        S_hosts_databases = 287,                 // hosts_databases
-        S_288_35 = 288,                          // $@35
-        S_database_list = 289,                   // database_list
-        S_not_empty_database_list = 290,         // not_empty_database_list
-        S_database = 291,                        // database
-        S_292_36 = 292,                          // $@36
-        S_database_map_params = 293,             // database_map_params
-        S_database_map_param = 294,              // database_map_param
-        S_database_type = 295,                   // database_type
-        S_296_37 = 296,                          // $@37
-        S_db_type = 297,                         // db_type
-        S_user = 298,                            // user
-        S_299_38 = 299,                          // $@38
-        S_password = 300,                        // password
-        S_301_39 = 301,                          // $@39
-        S_host = 302,                            // host
-        S_303_40 = 303,                          // $@40
-        S_port = 304,                            // port
-        S_name = 305,                            // name
-        S_306_41 = 306,                          // $@41
-        S_persist = 307,                         // persist
-        S_lfc_interval = 308,                    // lfc_interval
-        S_readonly = 309,                        // readonly
-        S_connect_timeout = 310,                 // connect_timeout
-        S_request_timeout = 311,                 // request_timeout
-        S_tcp_keepalive = 312,                   // tcp_keepalive
-        S_tcp_nodelay = 313,                     // tcp_nodelay
-        S_contact_points = 314,                  // contact_points
-        S_315_42 = 315,                          // $@42
-        S_keyspace = 316,                        // keyspace
-        S_317_43 = 317,                          // $@43
-        S_consistency = 318,                     // consistency
-        S_319_44 = 319,                          // $@44
-        S_serial_consistency = 320,              // serial_consistency
-        S_321_45 = 321,                          // $@45
-        S_max_reconnect_tries = 322,             // max_reconnect_tries
-        S_reconnect_wait_time = 323,             // reconnect_wait_time
-        S_max_row_errors = 324,                  // max_row_errors
-        S_host_reservation_identifiers = 325,    // host_reservation_identifiers
-        S_326_46 = 326,                          // $@46
-        S_host_reservation_identifiers_list = 327, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 328,     // host_reservation_identifier
-        S_duid_id = 329,                         // duid_id
-        S_hw_address_id = 330,                   // hw_address_id
-        S_circuit_id = 331,                      // circuit_id
-        S_client_id = 332,                       // client_id
-        S_flex_id = 333,                         // flex_id
-        S_dhcp_multi_threading = 334,            // dhcp_multi_threading
-        S_335_47 = 335,                          // $@47
-        S_multi_threading_params = 336,          // multi_threading_params
-        S_multi_threading_param = 337,           // multi_threading_param
-        S_enable_multi_threading = 338,          // enable_multi_threading
-        S_thread_pool_size = 339,                // thread_pool_size
-        S_packet_queue_size = 340,               // packet_queue_size
-        S_hooks_libraries = 341,                 // hooks_libraries
-        S_342_48 = 342,                          // $@48
-        S_hooks_libraries_list = 343,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 344,  // not_empty_hooks_libraries_list
-        S_hooks_library = 345,                   // hooks_library
-        S_346_49 = 346,                          // $@49
-        S_sub_hooks_library = 347,               // sub_hooks_library
-        S_348_50 = 348,                          // $@50
-        S_hooks_params = 349,                    // hooks_params
-        S_hooks_param = 350,                     // hooks_param
-        S_library = 351,                         // library
-        S_352_51 = 352,                          // $@51
-        S_parameters = 353,                      // parameters
-        S_354_52 = 354,                          // $@52
-        S_expired_leases_processing = 355,       // expired_leases_processing
-        S_356_53 = 356,                          // $@53
-        S_expired_leases_params = 357,           // expired_leases_params
-        S_expired_leases_param = 358,            // expired_leases_param
-        S_reclaim_timer_wait_time = 359,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 360, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 361,             // hold_reclaimed_time
-        S_max_reclaim_leases = 362,              // max_reclaim_leases
-        S_max_reclaim_time = 363,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 364,         // unwarned_reclaim_cycles
-        S_subnet4_list = 365,                    // subnet4_list
-        S_366_54 = 366,                          // $@54
-        S_subnet4_list_content = 367,            // subnet4_list_content
-        S_not_empty_subnet4_list = 368,          // not_empty_subnet4_list
-        S_subnet4 = 369,                         // subnet4
-        S_370_55 = 370,                          // $@55
-        S_sub_subnet4 = 371,                     // sub_subnet4
-        S_372_56 = 372,                          // $@56
-        S_subnet4_params = 373,                  // subnet4_params
-        S_subnet4_param = 374,                   // subnet4_param
-        S_subnet = 375,                          // subnet
-        S_376_57 = 376,                          // $@57
-        S_subnet_4o6_interface = 377,            // subnet_4o6_interface
-        S_378_58 = 378,                          // $@58
-        S_subnet_4o6_interface_id = 379,         // subnet_4o6_interface_id
-        S_380_59 = 380,                          // $@59
-        S_subnet_4o6_subnet = 381,               // subnet_4o6_subnet
-        S_382_60 = 382,                          // $@60
-        S_interface = 383,                       // interface
-        S_384_61 = 384,                          // $@61
-        S_client_class = 385,                    // client_class
-        S_386_62 = 386,                          // $@62
-        S_require_client_classes = 387,          // require_client_classes
-        S_388_63 = 388,                          // $@63
-        S_reservation_mode = 389,                // reservation_mode
-        S_390_64 = 390,                          // $@64
-        S_hr_mode = 391,                         // hr_mode
-        S_id = 392,                              // id
-        S_shared_networks = 393,                 // shared_networks
-        S_394_65 = 394,                          // $@65
-        S_shared_networks_content = 395,         // shared_networks_content
-        S_shared_networks_list = 396,            // shared_networks_list
-        S_shared_network = 397,                  // shared_network
-        S_398_66 = 398,                          // $@66
-        S_shared_network_params = 399,           // shared_network_params
-        S_shared_network_param = 400,            // shared_network_param
-        S_option_def_list = 401,                 // option_def_list
-        S_402_67 = 402,                          // $@67
-        S_sub_option_def_list = 403,             // sub_option_def_list
-        S_404_68 = 404,                          // $@68
-        S_option_def_list_content = 405,         // option_def_list_content
-        S_not_empty_option_def_list = 406,       // not_empty_option_def_list
-        S_option_def_entry = 407,                // option_def_entry
-        S_408_69 = 408,                          // $@69
-        S_sub_option_def = 409,                  // sub_option_def
-        S_410_70 = 410,                          // $@70
-        S_option_def_params = 411,               // option_def_params
-        S_not_empty_option_def_params = 412,     // not_empty_option_def_params
-        S_option_def_param = 413,                // option_def_param
-        S_option_def_name = 414,                 // option_def_name
-        S_code = 415,                            // code
-        S_option_def_code = 416,                 // option_def_code
-        S_option_def_type = 417,                 // option_def_type
-        S_418_71 = 418,                          // $@71
-        S_option_def_record_types = 419,         // option_def_record_types
-        S_420_72 = 420,                          // $@72
-        S_space = 421,                           // space
-        S_422_73 = 422,                          // $@73
-        S_option_def_space = 423,                // option_def_space
-        S_option_def_encapsulate = 424,          // option_def_encapsulate
-        S_425_74 = 425,                          // $@74
-        S_option_def_array = 426,                // option_def_array
-        S_option_data_list = 427,                // option_data_list
-        S_428_75 = 428,                          // $@75
-        S_option_data_list_content = 429,        // option_data_list_content
-        S_not_empty_option_data_list = 430,      // not_empty_option_data_list
-        S_option_data_entry = 431,               // option_data_entry
-        S_432_76 = 432,                          // $@76
-        S_sub_option_data = 433,                 // sub_option_data
-        S_434_77 = 434,                          // $@77
-        S_option_data_params = 435,              // option_data_params
-        S_not_empty_option_data_params = 436,    // not_empty_option_data_params
-        S_option_data_param = 437,               // option_data_param
-        S_option_data_name = 438,                // option_data_name
-        S_option_data_data = 439,                // option_data_data
-        S_440_78 = 440,                          // $@78
-        S_option_data_code = 441,                // option_data_code
-        S_option_data_space = 442,               // option_data_space
-        S_option_data_csv_format = 443,          // option_data_csv_format
-        S_option_data_always_send = 444,         // option_data_always_send
-        S_pools_list = 445,                      // pools_list
-        S_446_79 = 446,                          // $@79
-        S_pools_list_content = 447,              // pools_list_content
-        S_not_empty_pools_list = 448,            // not_empty_pools_list
-        S_pool_list_entry = 449,                 // pool_list_entry
-        S_450_80 = 450,                          // $@80
-        S_sub_pool4 = 451,                       // sub_pool4
-        S_452_81 = 452,                          // $@81
-        S_pool_params = 453,                     // pool_params
-        S_pool_param = 454,                      // pool_param
-        S_pool_entry = 455,                      // pool_entry
-        S_456_82 = 456,                          // $@82
-        S_user_context = 457,                    // user_context
-        S_458_83 = 458,                          // $@83
-        S_comment = 459,                         // comment
-        S_460_84 = 460,                          // $@84
-        S_reservations = 461,                    // reservations
-        S_462_85 = 462,                          // $@85
-        S_reservations_list = 463,               // reservations_list
-        S_not_empty_reservations_list = 464,     // not_empty_reservations_list
-        S_reservation = 465,                     // reservation
-        S_466_86 = 466,                          // $@86
-        S_sub_reservation = 467,                 // sub_reservation
-        S_468_87 = 468,                          // $@87
-        S_reservation_params = 469,              // reservation_params
-        S_not_empty_reservation_params = 470,    // not_empty_reservation_params
-        S_reservation_param = 471,               // reservation_param
-        S_next_server = 472,                     // next_server
-        S_473_88 = 473,                          // $@88
-        S_server_hostname = 474,                 // server_hostname
-        S_475_89 = 475,                          // $@89
-        S_boot_file_name = 476,                  // boot_file_name
-        S_477_90 = 477,                          // $@90
-        S_ip_address = 478,                      // ip_address
-        S_479_91 = 479,                          // $@91
-        S_ip_addresses = 480,                    // ip_addresses
-        S_481_92 = 481,                          // $@92
-        S_duid = 482,                            // duid
-        S_483_93 = 483,                          // $@93
-        S_hw_address = 484,                      // hw_address
-        S_485_94 = 485,                          // $@94
-        S_client_id_value = 486,                 // client_id_value
-        S_487_95 = 487,                          // $@95
-        S_circuit_id_value = 488,                // circuit_id_value
-        S_489_96 = 489,                          // $@96
-        S_flex_id_value = 490,                   // flex_id_value
-        S_491_97 = 491,                          // $@97
-        S_hostname = 492,                        // hostname
-        S_493_98 = 493,                          // $@98
-        S_reservation_client_classes = 494,      // reservation_client_classes
-        S_495_99 = 495,                          // $@99
-        S_relay = 496,                           // relay
-        S_497_100 = 497,                         // $@100
-        S_relay_map = 498,                       // relay_map
-        S_client_classes = 499,                  // client_classes
-        S_500_101 = 500,                         // $@101
-        S_client_classes_list = 501,             // client_classes_list
-        S_client_class_entry = 502,              // client_class_entry
-        S_503_102 = 503,                         // $@102
-        S_client_class_params = 504,             // client_class_params
-        S_not_empty_client_class_params = 505,   // not_empty_client_class_params
-        S_client_class_param = 506,              // client_class_param
-        S_client_class_name = 507,               // client_class_name
-        S_client_class_test = 508,               // client_class_test
-        S_509_103 = 509,                         // $@103
-        S_only_if_required = 510,                // only_if_required
-        S_dhcp4o6_port = 511,                    // dhcp4o6_port
-        S_control_socket = 512,                  // control_socket
-        S_513_104 = 513,                         // $@104
-        S_control_socket_params = 514,           // control_socket_params
-        S_control_socket_param = 515,            // control_socket_param
-        S_control_socket_type = 516,             // control_socket_type
-        S_517_105 = 517,                         // $@105
-        S_control_socket_name = 518,             // control_socket_name
-        S_519_106 = 519,                         // $@106
-        S_dhcp_queue_control = 520,              // dhcp_queue_control
-        S_521_107 = 521,                         // $@107
-        S_queue_control_params = 522,            // queue_control_params
-        S_queue_control_param = 523,             // queue_control_param
-        S_enable_queue = 524,                    // enable_queue
-        S_queue_type = 525,                      // queue_type
-        S_526_108 = 526,                         // $@108
-        S_capacity = 527,                        // capacity
-        S_arbitrary_map_entry = 528,             // arbitrary_map_entry
-        S_529_109 = 529,                         // $@109
-        S_dhcp_ddns = 530,                       // dhcp_ddns
-        S_531_110 = 531,                         // $@110
-        S_sub_dhcp_ddns = 532,                   // sub_dhcp_ddns
-        S_533_111 = 533,                         // $@111
-        S_dhcp_ddns_params = 534,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 535,                 // dhcp_ddns_param
-        S_enable_updates = 536,                  // enable_updates
-        S_server_ip = 537,                       // server_ip
-        S_538_112 = 538,                         // $@112
-        S_server_port = 539,                     // server_port
-        S_sender_ip = 540,                       // sender_ip
-        S_541_113 = 541,                         // $@113
-        S_sender_port = 542,                     // sender_port
-        S_max_queue_size = 543,                  // max_queue_size
-        S_ncr_protocol = 544,                    // ncr_protocol
-        S_545_114 = 545,                         // $@114
-        S_ncr_protocol_value = 546,              // ncr_protocol_value
-        S_ncr_format = 547,                      // ncr_format
-        S_548_115 = 548,                         // $@115
-        S_dep_qualifying_suffix = 549,           // dep_qualifying_suffix
-        S_550_116 = 550,                         // $@116
-        S_dep_override_no_update = 551,          // dep_override_no_update
-        S_dep_override_client_update = 552,      // dep_override_client_update
-        S_dep_replace_client_name = 553,         // dep_replace_client_name
-        S_554_117 = 554,                         // $@117
-        S_dep_generated_prefix = 555,            // dep_generated_prefix
-        S_556_118 = 556,                         // $@118
-        S_dep_hostname_char_set = 557,           // dep_hostname_char_set
-        S_558_119 = 558,                         // $@119
-        S_dep_hostname_char_replacement = 559,   // dep_hostname_char_replacement
-        S_560_120 = 560,                         // $@120
-        S_config_control = 561,                  // config_control
-        S_562_121 = 562,                         // $@121
-        S_sub_config_control = 563,              // sub_config_control
-        S_564_122 = 564,                         // $@122
-        S_config_control_params = 565,           // config_control_params
-        S_config_control_param = 566,            // config_control_param
-        S_config_databases = 567,                // config_databases
-        S_568_123 = 568,                         // $@123
-        S_config_fetch_wait_time = 569,          // config_fetch_wait_time
-        S_loggers = 570,                         // loggers
-        S_571_124 = 571,                         // $@124
-        S_loggers_entries = 572,                 // loggers_entries
-        S_logger_entry = 573,                    // logger_entry
-        S_574_125 = 574,                         // $@125
-        S_logger_params = 575,                   // logger_params
-        S_logger_param = 576,                    // logger_param
-        S_debuglevel = 577,                      // debuglevel
-        S_severity = 578,                        // severity
-        S_579_126 = 579,                         // $@126
-        S_output_options_list = 580,             // output_options_list
-        S_581_127 = 581,                         // $@127
-        S_output_options_list_content = 582,     // output_options_list_content
-        S_output_entry = 583,                    // output_entry
-        S_584_128 = 584,                         // $@128
-        S_output_params_list = 585,              // output_params_list
-        S_output_params = 586,                   // output_params
-        S_output = 587,                          // output
-        S_588_129 = 588,                         // $@129
-        S_flush = 589,                           // flush
-        S_maxsize = 590,                         // maxsize
-        S_maxver = 591,                          // maxver
-        S_pattern = 592,                         // pattern
-        S_593_130 = 593                          // $@130
+        S_DDNS_UPDATE_ON_RENEW = 75,             // "ddns-update-on-renew"
+        S_DDNS_USE_CONFLICT_RESOLUTION = 76,     // "ddns-use-conflict-resolution"
+        S_STORE_EXTENDED_INFO = 77,              // "store-extended-info"
+        S_SUBNET4 = 78,                          // "subnet4"
+        S_SUBNET_4O6_INTERFACE = 79,             // "4o6-interface"
+        S_SUBNET_4O6_INTERFACE_ID = 80,          // "4o6-interface-id"
+        S_SUBNET_4O6_SUBNET = 81,                // "4o6-subnet"
+        S_OPTION_DEF = 82,                       // "option-def"
+        S_OPTION_DATA = 83,                      // "option-data"
+        S_NAME = 84,                             // "name"
+        S_DATA = 85,                             // "data"
+        S_CODE = 86,                             // "code"
+        S_SPACE = 87,                            // "space"
+        S_CSV_FORMAT = 88,                       // "csv-format"
+        S_ALWAYS_SEND = 89,                      // "always-send"
+        S_RECORD_TYPES = 90,                     // "record-types"
+        S_ENCAPSULATE = 91,                      // "encapsulate"
+        S_ARRAY = 92,                            // "array"
+        S_SHARED_NETWORKS = 93,                  // "shared-networks"
+        S_POOLS = 94,                            // "pools"
+        S_POOL = 95,                             // "pool"
+        S_USER_CONTEXT = 96,                     // "user-context"
+        S_COMMENT = 97,                          // "comment"
+        S_SUBNET = 98,                           // "subnet"
+        S_INTERFACE = 99,                        // "interface"
+        S_ID = 100,                              // "id"
+        S_RESERVATION_MODE = 101,                // "reservation-mode"
+        S_DISABLED = 102,                        // "disabled"
+        S_OUT_OF_POOL = 103,                     // "out-of-pool"
+        S_GLOBAL = 104,                          // "global"
+        S_ALL = 105,                             // "all"
+        S_HOST_RESERVATION_IDENTIFIERS = 106,    // "host-reservation-identifiers"
+        S_CLIENT_CLASSES = 107,                  // "client-classes"
+        S_REQUIRE_CLIENT_CLASSES = 108,          // "require-client-classes"
+        S_TEST = 109,                            // "test"
+        S_ONLY_IF_REQUIRED = 110,                // "only-if-required"
+        S_CLIENT_CLASS = 111,                    // "client-class"
+        S_RESERVATIONS = 112,                    // "reservations"
+        S_DUID = 113,                            // "duid"
+        S_HW_ADDRESS = 114,                      // "hw-address"
+        S_CIRCUIT_ID = 115,                      // "circuit-id"
+        S_CLIENT_ID = 116,                       // "client-id"
+        S_HOSTNAME = 117,                        // "hostname"
+        S_FLEX_ID = 118,                         // "flex-id"
+        S_RELAY = 119,                           // "relay"
+        S_IP_ADDRESS = 120,                      // "ip-address"
+        S_IP_ADDRESSES = 121,                    // "ip-addresses"
+        S_HOOKS_LIBRARIES = 122,                 // "hooks-libraries"
+        S_LIBRARY = 123,                         // "library"
+        S_PARAMETERS = 124,                      // "parameters"
+        S_EXPIRED_LEASES_PROCESSING = 125,       // "expired-leases-processing"
+        S_RECLAIM_TIMER_WAIT_TIME = 126,         // "reclaim-timer-wait-time"
+        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 127, // "flush-reclaimed-timer-wait-time"
+        S_HOLD_RECLAIMED_TIME = 128,             // "hold-reclaimed-time"
+        S_MAX_RECLAIM_LEASES = 129,              // "max-reclaim-leases"
+        S_MAX_RECLAIM_TIME = 130,                // "max-reclaim-time"
+        S_UNWARNED_RECLAIM_CYCLES = 131,         // "unwarned-reclaim-cycles"
+        S_DHCP4O6_PORT = 132,                    // "dhcp4o6-port"
+        S_DHCP_MULTI_THREADING = 133,            // "multi-threading"
+        S_ENABLE_MULTI_THREADING = 134,          // "enable-multi-threading"
+        S_THREAD_POOL_SIZE = 135,                // "thread-pool-size"
+        S_PACKET_QUEUE_SIZE = 136,               // "packet-queue-size"
+        S_CONTROL_SOCKET = 137,                  // "control-socket"
+        S_SOCKET_TYPE = 138,                     // "socket-type"
+        S_SOCKET_NAME = 139,                     // "socket-name"
+        S_DHCP_QUEUE_CONTROL = 140,              // "dhcp-queue-control"
+        S_ENABLE_QUEUE = 141,                    // "enable-queue"
+        S_QUEUE_TYPE = 142,                      // "queue-type"
+        S_CAPACITY = 143,                        // "capacity"
+        S_DHCP_DDNS = 144,                       // "dhcp-ddns"
+        S_ENABLE_UPDATES = 145,                  // "enable-updates"
+        S_QUALIFYING_SUFFIX = 146,               // "qualifying-suffix"
+        S_SERVER_IP = 147,                       // "server-ip"
+        S_SERVER_PORT = 148,                     // "server-port"
+        S_SENDER_IP = 149,                       // "sender-ip"
+        S_SENDER_PORT = 150,                     // "sender-port"
+        S_MAX_QUEUE_SIZE = 151,                  // "max-queue-size"
+        S_NCR_PROTOCOL = 152,                    // "ncr-protocol"
+        S_NCR_FORMAT = 153,                      // "ncr-format"
+        S_OVERRIDE_NO_UPDATE = 154,              // "override-no-update"
+        S_OVERRIDE_CLIENT_UPDATE = 155,          // "override-client-update"
+        S_REPLACE_CLIENT_NAME = 156,             // "replace-client-name"
+        S_GENERATED_PREFIX = 157,                // "generated-prefix"
+        S_TCP = 158,                             // "tcp"
+        S_JSON = 159,                            // "JSON"
+        S_WHEN_PRESENT = 160,                    // "when-present"
+        S_NEVER = 161,                           // "never"
+        S_ALWAYS = 162,                          // "always"
+        S_WHEN_NOT_PRESENT = 163,                // "when-not-present"
+        S_HOSTNAME_CHAR_SET = 164,               // "hostname-char-set"
+        S_HOSTNAME_CHAR_REPLACEMENT = 165,       // "hostname-char-replacement"
+        S_LOGGERS = 166,                         // "loggers"
+        S_OUTPUT_OPTIONS = 167,                  // "output_options"
+        S_OUTPUT = 168,                          // "output"
+        S_DEBUGLEVEL = 169,                      // "debuglevel"
+        S_SEVERITY = 170,                        // "severity"
+        S_FLUSH = 171,                           // "flush"
+        S_MAXSIZE = 172,                         // "maxsize"
+        S_MAXVER = 173,                          // "maxver"
+        S_PATTERN = 174,                         // "pattern"
+        S_TOPLEVEL_JSON = 175,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP4 = 176,                  // TOPLEVEL_DHCP4
+        S_SUB_DHCP4 = 177,                       // SUB_DHCP4
+        S_SUB_INTERFACES4 = 178,                 // SUB_INTERFACES4
+        S_SUB_SUBNET4 = 179,                     // SUB_SUBNET4
+        S_SUB_POOL4 = 180,                       // SUB_POOL4
+        S_SUB_RESERVATION = 181,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 182,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 183,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 184,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 185,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 186,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 187,              // SUB_CONFIG_CONTROL
+        S_STRING = 188,                          // "constant string"
+        S_INTEGER = 189,                         // "integer"
+        S_FLOAT = 190,                           // "floating point"
+        S_BOOLEAN = 191,                         // "boolean"
+        S_YYACCEPT = 192,                        // $accept
+        S_start = 193,                           // start
+        S_194_1 = 194,                           // $@1
+        S_195_2 = 195,                           // $@2
+        S_196_3 = 196,                           // $@3
+        S_197_4 = 197,                           // $@4
+        S_198_5 = 198,                           // $@5
+        S_199_6 = 199,                           // $@6
+        S_200_7 = 200,                           // $@7
+        S_201_8 = 201,                           // $@8
+        S_202_9 = 202,                           // $@9
+        S_203_10 = 203,                          // $@10
+        S_204_11 = 204,                          // $@11
+        S_205_12 = 205,                          // $@12
+        S_206_13 = 206,                          // $@13
+        S_value = 207,                           // value
+        S_sub_json = 208,                        // sub_json
+        S_map2 = 209,                            // map2
+        S_210_14 = 210,                          // $@14
+        S_map_value = 211,                       // map_value
+        S_map_content = 212,                     // map_content
+        S_not_empty_map = 213,                   // not_empty_map
+        S_list_generic = 214,                    // list_generic
+        S_215_15 = 215,                          // $@15
+        S_list_content = 216,                    // list_content
+        S_not_empty_list = 217,                  // not_empty_list
+        S_list_strings = 218,                    // list_strings
+        S_219_16 = 219,                          // $@16
+        S_list_strings_content = 220,            // list_strings_content
+        S_not_empty_list_strings = 221,          // not_empty_list_strings
+        S_unknown_map_entry = 222,               // unknown_map_entry
+        S_syntax_map = 223,                      // syntax_map
+        S_224_17 = 224,                          // $@17
+        S_global_objects = 225,                  // global_objects
+        S_global_object = 226,                   // global_object
+        S_dhcp4_object = 227,                    // dhcp4_object
+        S_228_18 = 228,                          // $@18
+        S_sub_dhcp4 = 229,                       // sub_dhcp4
+        S_230_19 = 230,                          // $@19
+        S_global_params = 231,                   // global_params
+        S_global_param = 232,                    // global_param
+        S_valid_lifetime = 233,                  // valid_lifetime
+        S_min_valid_lifetime = 234,              // min_valid_lifetime
+        S_max_valid_lifetime = 235,              // max_valid_lifetime
+        S_renew_timer = 236,                     // renew_timer
+        S_rebind_timer = 237,                    // rebind_timer
+        S_calculate_tee_times = 238,             // calculate_tee_times
+        S_t1_percent = 239,                      // t1_percent
+        S_t2_percent = 240,                      // t2_percent
+        S_decline_probation_period = 241,        // decline_probation_period
+        S_server_tag = 242,                      // server_tag
+        S_243_20 = 243,                          // $@20
+        S_echo_client_id = 244,                  // echo_client_id
+        S_match_client_id = 245,                 // match_client_id
+        S_authoritative = 246,                   // authoritative
+        S_ddns_send_updates = 247,               // ddns_send_updates
+        S_ddns_override_no_update = 248,         // ddns_override_no_update
+        S_ddns_override_client_update = 249,     // ddns_override_client_update
+        S_ddns_replace_client_name = 250,        // ddns_replace_client_name
+        S_251_21 = 251,                          // $@21
+        S_ddns_replace_client_name_value = 252,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 253,           // ddns_generated_prefix
+        S_254_22 = 254,                          // $@22
+        S_ddns_qualifying_suffix = 255,          // ddns_qualifying_suffix
+        S_256_23 = 256,                          // $@23
+        S_ddns_update_on_renew = 257,            // ddns_update_on_renew
+        S_ddns_use_conflict_resolution = 258,    // ddns_use_conflict_resolution
+        S_hostname_char_set = 259,               // hostname_char_set
+        S_260_24 = 260,                          // $@24
+        S_hostname_char_replacement = 261,       // hostname_char_replacement
+        S_262_25 = 262,                          // $@25
+        S_store_extended_info = 263,             // store_extended_info
+        S_statistic_default_sample_count = 264,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 265,    // statistic_default_sample_age
+        S_interfaces_config = 266,               // interfaces_config
+        S_267_26 = 267,                          // $@26
+        S_interfaces_config_params = 268,        // interfaces_config_params
+        S_interfaces_config_param = 269,         // interfaces_config_param
+        S_sub_interfaces4 = 270,                 // sub_interfaces4
+        S_271_27 = 271,                          // $@27
+        S_interfaces_list = 272,                 // interfaces_list
+        S_273_28 = 273,                          // $@28
+        S_dhcp_socket_type = 274,                // dhcp_socket_type
+        S_275_29 = 275,                          // $@29
+        S_socket_type = 276,                     // socket_type
+        S_outbound_interface = 277,              // outbound_interface
+        S_278_30 = 278,                          // $@30
+        S_outbound_interface_value = 279,        // outbound_interface_value
+        S_re_detect = 280,                       // re_detect
+        S_lease_database = 281,                  // lease_database
+        S_282_31 = 282,                          // $@31
+        S_sanity_checks = 283,                   // sanity_checks
+        S_284_32 = 284,                          // $@32
+        S_sanity_checks_params = 285,            // sanity_checks_params
+        S_sanity_checks_param = 286,             // sanity_checks_param
+        S_lease_checks = 287,                    // lease_checks
+        S_288_33 = 288,                          // $@33
+        S_hosts_database = 289,                  // hosts_database
+        S_290_34 = 290,                          // $@34
+        S_hosts_databases = 291,                 // hosts_databases
+        S_292_35 = 292,                          // $@35
+        S_database_list = 293,                   // database_list
+        S_not_empty_database_list = 294,         // not_empty_database_list
+        S_database = 295,                        // database
+        S_296_36 = 296,                          // $@36
+        S_database_map_params = 297,             // database_map_params
+        S_database_map_param = 298,              // database_map_param
+        S_database_type = 299,                   // database_type
+        S_300_37 = 300,                          // $@37
+        S_db_type = 301,                         // db_type
+        S_user = 302,                            // user
+        S_303_38 = 303,                          // $@38
+        S_password = 304,                        // password
+        S_305_39 = 305,                          // $@39
+        S_host = 306,                            // host
+        S_307_40 = 307,                          // $@40
+        S_port = 308,                            // port
+        S_name = 309,                            // name
+        S_310_41 = 310,                          // $@41
+        S_persist = 311,                         // persist
+        S_lfc_interval = 312,                    // lfc_interval
+        S_readonly = 313,                        // readonly
+        S_connect_timeout = 314,                 // connect_timeout
+        S_request_timeout = 315,                 // request_timeout
+        S_tcp_keepalive = 316,                   // tcp_keepalive
+        S_tcp_nodelay = 317,                     // tcp_nodelay
+        S_contact_points = 318,                  // contact_points
+        S_319_42 = 319,                          // $@42
+        S_keyspace = 320,                        // keyspace
+        S_321_43 = 321,                          // $@43
+        S_consistency = 322,                     // consistency
+        S_323_44 = 323,                          // $@44
+        S_serial_consistency = 324,              // serial_consistency
+        S_325_45 = 325,                          // $@45
+        S_max_reconnect_tries = 326,             // max_reconnect_tries
+        S_reconnect_wait_time = 327,             // reconnect_wait_time
+        S_max_row_errors = 328,                  // max_row_errors
+        S_host_reservation_identifiers = 329,    // host_reservation_identifiers
+        S_330_46 = 330,                          // $@46
+        S_host_reservation_identifiers_list = 331, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 332,     // host_reservation_identifier
+        S_duid_id = 333,                         // duid_id
+        S_hw_address_id = 334,                   // hw_address_id
+        S_circuit_id = 335,                      // circuit_id
+        S_client_id = 336,                       // client_id
+        S_flex_id = 337,                         // flex_id
+        S_dhcp_multi_threading = 338,            // dhcp_multi_threading
+        S_339_47 = 339,                          // $@47
+        S_multi_threading_params = 340,          // multi_threading_params
+        S_multi_threading_param = 341,           // multi_threading_param
+        S_enable_multi_threading = 342,          // enable_multi_threading
+        S_thread_pool_size = 343,                // thread_pool_size
+        S_packet_queue_size = 344,               // packet_queue_size
+        S_hooks_libraries = 345,                 // hooks_libraries
+        S_346_48 = 346,                          // $@48
+        S_hooks_libraries_list = 347,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 348,  // not_empty_hooks_libraries_list
+        S_hooks_library = 349,                   // hooks_library
+        S_350_49 = 350,                          // $@49
+        S_sub_hooks_library = 351,               // sub_hooks_library
+        S_352_50 = 352,                          // $@50
+        S_hooks_params = 353,                    // hooks_params
+        S_hooks_param = 354,                     // hooks_param
+        S_library = 355,                         // library
+        S_356_51 = 356,                          // $@51
+        S_parameters = 357,                      // parameters
+        S_358_52 = 358,                          // $@52
+        S_expired_leases_processing = 359,       // expired_leases_processing
+        S_360_53 = 360,                          // $@53
+        S_expired_leases_params = 361,           // expired_leases_params
+        S_expired_leases_param = 362,            // expired_leases_param
+        S_reclaim_timer_wait_time = 363,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 364, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 365,             // hold_reclaimed_time
+        S_max_reclaim_leases = 366,              // max_reclaim_leases
+        S_max_reclaim_time = 367,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 368,         // unwarned_reclaim_cycles
+        S_subnet4_list = 369,                    // subnet4_list
+        S_370_54 = 370,                          // $@54
+        S_subnet4_list_content = 371,            // subnet4_list_content
+        S_not_empty_subnet4_list = 372,          // not_empty_subnet4_list
+        S_subnet4 = 373,                         // subnet4
+        S_374_55 = 374,                          // $@55
+        S_sub_subnet4 = 375,                     // sub_subnet4
+        S_376_56 = 376,                          // $@56
+        S_subnet4_params = 377,                  // subnet4_params
+        S_subnet4_param = 378,                   // subnet4_param
+        S_subnet = 379,                          // subnet
+        S_380_57 = 380,                          // $@57
+        S_subnet_4o6_interface = 381,            // subnet_4o6_interface
+        S_382_58 = 382,                          // $@58
+        S_subnet_4o6_interface_id = 383,         // subnet_4o6_interface_id
+        S_384_59 = 384,                          // $@59
+        S_subnet_4o6_subnet = 385,               // subnet_4o6_subnet
+        S_386_60 = 386,                          // $@60
+        S_interface = 387,                       // interface
+        S_388_61 = 388,                          // $@61
+        S_client_class = 389,                    // client_class
+        S_390_62 = 390,                          // $@62
+        S_require_client_classes = 391,          // require_client_classes
+        S_392_63 = 392,                          // $@63
+        S_reservation_mode = 393,                // reservation_mode
+        S_394_64 = 394,                          // $@64
+        S_hr_mode = 395,                         // hr_mode
+        S_id = 396,                              // id
+        S_shared_networks = 397,                 // shared_networks
+        S_398_65 = 398,                          // $@65
+        S_shared_networks_content = 399,         // shared_networks_content
+        S_shared_networks_list = 400,            // shared_networks_list
+        S_shared_network = 401,                  // shared_network
+        S_402_66 = 402,                          // $@66
+        S_shared_network_params = 403,           // shared_network_params
+        S_shared_network_param = 404,            // shared_network_param
+        S_option_def_list = 405,                 // option_def_list
+        S_406_67 = 406,                          // $@67
+        S_sub_option_def_list = 407,             // sub_option_def_list
+        S_408_68 = 408,                          // $@68
+        S_option_def_list_content = 409,         // option_def_list_content
+        S_not_empty_option_def_list = 410,       // not_empty_option_def_list
+        S_option_def_entry = 411,                // option_def_entry
+        S_412_69 = 412,                          // $@69
+        S_sub_option_def = 413,                  // sub_option_def
+        S_414_70 = 414,                          // $@70
+        S_option_def_params = 415,               // option_def_params
+        S_not_empty_option_def_params = 416,     // not_empty_option_def_params
+        S_option_def_param = 417,                // option_def_param
+        S_option_def_name = 418,                 // option_def_name
+        S_code = 419,                            // code
+        S_option_def_code = 420,                 // option_def_code
+        S_option_def_type = 421,                 // option_def_type
+        S_422_71 = 422,                          // $@71
+        S_option_def_record_types = 423,         // option_def_record_types
+        S_424_72 = 424,                          // $@72
+        S_space = 425,                           // space
+        S_426_73 = 426,                          // $@73
+        S_option_def_space = 427,                // option_def_space
+        S_option_def_encapsulate = 428,          // option_def_encapsulate
+        S_429_74 = 429,                          // $@74
+        S_option_def_array = 430,                // option_def_array
+        S_option_data_list = 431,                // option_data_list
+        S_432_75 = 432,                          // $@75
+        S_option_data_list_content = 433,        // option_data_list_content
+        S_not_empty_option_data_list = 434,      // not_empty_option_data_list
+        S_option_data_entry = 435,               // option_data_entry
+        S_436_76 = 436,                          // $@76
+        S_sub_option_data = 437,                 // sub_option_data
+        S_438_77 = 438,                          // $@77
+        S_option_data_params = 439,              // option_data_params
+        S_not_empty_option_data_params = 440,    // not_empty_option_data_params
+        S_option_data_param = 441,               // option_data_param
+        S_option_data_name = 442,                // option_data_name
+        S_option_data_data = 443,                // option_data_data
+        S_444_78 = 444,                          // $@78
+        S_option_data_code = 445,                // option_data_code
+        S_option_data_space = 446,               // option_data_space
+        S_option_data_csv_format = 447,          // option_data_csv_format
+        S_option_data_always_send = 448,         // option_data_always_send
+        S_pools_list = 449,                      // pools_list
+        S_450_79 = 450,                          // $@79
+        S_pools_list_content = 451,              // pools_list_content
+        S_not_empty_pools_list = 452,            // not_empty_pools_list
+        S_pool_list_entry = 453,                 // pool_list_entry
+        S_454_80 = 454,                          // $@80
+        S_sub_pool4 = 455,                       // sub_pool4
+        S_456_81 = 456,                          // $@81
+        S_pool_params = 457,                     // pool_params
+        S_pool_param = 458,                      // pool_param
+        S_pool_entry = 459,                      // pool_entry
+        S_460_82 = 460,                          // $@82
+        S_user_context = 461,                    // user_context
+        S_462_83 = 462,                          // $@83
+        S_comment = 463,                         // comment
+        S_464_84 = 464,                          // $@84
+        S_reservations = 465,                    // reservations
+        S_466_85 = 466,                          // $@85
+        S_reservations_list = 467,               // reservations_list
+        S_not_empty_reservations_list = 468,     // not_empty_reservations_list
+        S_reservation = 469,                     // reservation
+        S_470_86 = 470,                          // $@86
+        S_sub_reservation = 471,                 // sub_reservation
+        S_472_87 = 472,                          // $@87
+        S_reservation_params = 473,              // reservation_params
+        S_not_empty_reservation_params = 474,    // not_empty_reservation_params
+        S_reservation_param = 475,               // reservation_param
+        S_next_server = 476,                     // next_server
+        S_477_88 = 477,                          // $@88
+        S_server_hostname = 478,                 // server_hostname
+        S_479_89 = 479,                          // $@89
+        S_boot_file_name = 480,                  // boot_file_name
+        S_481_90 = 481,                          // $@90
+        S_ip_address = 482,                      // ip_address
+        S_483_91 = 483,                          // $@91
+        S_ip_addresses = 484,                    // ip_addresses
+        S_485_92 = 485,                          // $@92
+        S_duid = 486,                            // duid
+        S_487_93 = 487,                          // $@93
+        S_hw_address = 488,                      // hw_address
+        S_489_94 = 489,                          // $@94
+        S_client_id_value = 490,                 // client_id_value
+        S_491_95 = 491,                          // $@95
+        S_circuit_id_value = 492,                // circuit_id_value
+        S_493_96 = 493,                          // $@96
+        S_flex_id_value = 494,                   // flex_id_value
+        S_495_97 = 495,                          // $@97
+        S_hostname = 496,                        // hostname
+        S_497_98 = 497,                          // $@98
+        S_reservation_client_classes = 498,      // reservation_client_classes
+        S_499_99 = 499,                          // $@99
+        S_relay = 500,                           // relay
+        S_501_100 = 501,                         // $@100
+        S_relay_map = 502,                       // relay_map
+        S_client_classes = 503,                  // client_classes
+        S_504_101 = 504,                         // $@101
+        S_client_classes_list = 505,             // client_classes_list
+        S_client_class_entry = 506,              // client_class_entry
+        S_507_102 = 507,                         // $@102
+        S_client_class_params = 508,             // client_class_params
+        S_not_empty_client_class_params = 509,   // not_empty_client_class_params
+        S_client_class_param = 510,              // client_class_param
+        S_client_class_name = 511,               // client_class_name
+        S_client_class_test = 512,               // client_class_test
+        S_513_103 = 513,                         // $@103
+        S_only_if_required = 514,                // only_if_required
+        S_dhcp4o6_port = 515,                    // dhcp4o6_port
+        S_control_socket = 516,                  // control_socket
+        S_517_104 = 517,                         // $@104
+        S_control_socket_params = 518,           // control_socket_params
+        S_control_socket_param = 519,            // control_socket_param
+        S_control_socket_type = 520,             // control_socket_type
+        S_521_105 = 521,                         // $@105
+        S_control_socket_name = 522,             // control_socket_name
+        S_523_106 = 523,                         // $@106
+        S_dhcp_queue_control = 524,              // dhcp_queue_control
+        S_525_107 = 525,                         // $@107
+        S_queue_control_params = 526,            // queue_control_params
+        S_queue_control_param = 527,             // queue_control_param
+        S_enable_queue = 528,                    // enable_queue
+        S_queue_type = 529,                      // queue_type
+        S_530_108 = 530,                         // $@108
+        S_capacity = 531,                        // capacity
+        S_arbitrary_map_entry = 532,             // arbitrary_map_entry
+        S_533_109 = 533,                         // $@109
+        S_dhcp_ddns = 534,                       // dhcp_ddns
+        S_535_110 = 535,                         // $@110
+        S_sub_dhcp_ddns = 536,                   // sub_dhcp_ddns
+        S_537_111 = 537,                         // $@111
+        S_dhcp_ddns_params = 538,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 539,                 // dhcp_ddns_param
+        S_enable_updates = 540,                  // enable_updates
+        S_server_ip = 541,                       // server_ip
+        S_542_112 = 542,                         // $@112
+        S_server_port = 543,                     // server_port
+        S_sender_ip = 544,                       // sender_ip
+        S_545_113 = 545,                         // $@113
+        S_sender_port = 546,                     // sender_port
+        S_max_queue_size = 547,                  // max_queue_size
+        S_ncr_protocol = 548,                    // ncr_protocol
+        S_549_114 = 549,                         // $@114
+        S_ncr_protocol_value = 550,              // ncr_protocol_value
+        S_ncr_format = 551,                      // ncr_format
+        S_552_115 = 552,                         // $@115
+        S_dep_qualifying_suffix = 553,           // dep_qualifying_suffix
+        S_554_116 = 554,                         // $@116
+        S_dep_override_no_update = 555,          // dep_override_no_update
+        S_dep_override_client_update = 556,      // dep_override_client_update
+        S_dep_replace_client_name = 557,         // dep_replace_client_name
+        S_558_117 = 558,                         // $@117
+        S_dep_generated_prefix = 559,            // dep_generated_prefix
+        S_560_118 = 560,                         // $@118
+        S_dep_hostname_char_set = 561,           // dep_hostname_char_set
+        S_562_119 = 562,                         // $@119
+        S_dep_hostname_char_replacement = 563,   // dep_hostname_char_replacement
+        S_564_120 = 564,                         // $@120
+        S_config_control = 565,                  // config_control
+        S_566_121 = 566,                         // $@121
+        S_sub_config_control = 567,              // sub_config_control
+        S_568_122 = 568,                         // $@122
+        S_config_control_params = 569,           // config_control_params
+        S_config_control_param = 570,            // config_control_param
+        S_config_databases = 571,                // config_databases
+        S_572_123 = 572,                         // $@123
+        S_config_fetch_wait_time = 573,          // config_fetch_wait_time
+        S_loggers = 574,                         // loggers
+        S_575_124 = 575,                         // $@124
+        S_loggers_entries = 576,                 // loggers_entries
+        S_logger_entry = 577,                    // logger_entry
+        S_578_125 = 578,                         // $@125
+        S_logger_params = 579,                   // logger_params
+        S_logger_param = 580,                    // logger_param
+        S_debuglevel = 581,                      // debuglevel
+        S_severity = 582,                        // severity
+        S_583_126 = 583,                         // $@126
+        S_output_options_list = 584,             // output_options_list
+        S_585_127 = 585,                         // $@127
+        S_output_options_list_content = 586,     // output_options_list_content
+        S_output_entry = 587,                    // output_entry
+        S_588_128 = 588,                         // $@128
+        S_output_params_list = 589,              // output_params_list
+        S_output_params = 590,                   // output_params
+        S_output = 591,                          // output
+        S_592_129 = 592,                         // $@129
+        S_flush = 593,                           // flush
+        S_maxsize = 594,                         // maxsize
+        S_maxver = 595,                          // maxver
+        S_pattern = 596,                         // pattern
+        S_597_130 = 597                          // $@130
       };
     };
 
@@ -1321,30 +1327,30 @@ namespace isc { namespace dhcp {
       {
         switch (this->kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -1358,7 +1364,7 @@ namespace isc { namespace dhcp {
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructor for valueless symbols, and symbols from each type.
+      /// Constructors for typed symbols.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -1370,6 +1376,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
         : Base (t)
@@ -1383,6 +1390,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
         : Base (t)
@@ -1396,6 +1404,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
         : Base (t)
@@ -1409,6 +1418,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
         : Base (t)
@@ -1422,6 +1432,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -1443,7 +1454,7 @@ namespace isc { namespace dhcp {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear ()
+      void clear () YY_NOEXCEPT
       {
         // User destructor.
         symbol_kind_type yykind = this->kind ();
@@ -1458,30 +1469,30 @@ namespace isc { namespace dhcp {
         // Value type destructor.
 switch (yykind)
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1541,7 +1552,7 @@ switch (yykind)
       by_kind (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear ();
+      void clear () YY_NOEXCEPT;
 
       /// Steal the symbol kind from \a that.
       void move (by_kind& that);
@@ -1574,68 +1585,54 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_UNDEF || 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_MAX_ROW_ERRORS || 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_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_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_PATTERN || 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_CONFIG_CONTROL);
-      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER4_error || tok == token::TOKEN_PARSER4_UNDEF || 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_MAX_ROW_ERRORS || 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_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_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_PATTERN || 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_CONFIG_CONTROL);
+        PARSER4__ASSERT (tok == token::TOKEN_END
+                   || (token::TOKEN_PARSER4_error <= tok && tok <= token::TOKEN_SUB_CONFIG_CONTROL));
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, bool v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
 #else
       symbol_type (int tok, const bool& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+        PARSER4__ASSERT (tok == token::TOKEN_BOOLEAN);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, double v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
 #else
       symbol_type (int tok, const double& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
+        PARSER4__ASSERT (tok == token::TOKEN_FLOAT);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, int64_t v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
 #else
       symbol_type (int tok, const int64_t& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
+        PARSER4__ASSERT (tok == token::TOKEN_INTEGER);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_STRING);
+        PARSER4__ASSERT (tok == token::TOKEN_STRING);
       }
-#endif
     };
 
     /// Build a parser object.
@@ -2809,6 +2806,36 @@ switch (yykind)
         return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_DDNS_UPDATE_ON_RENEW (location_type l)
+      {
+        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_DDNS_UPDATE_ON_RENEW (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_DDNS_USE_CONFLICT_RESOLUTION (location_type l)
+      {
+        return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -4540,9 +4567,9 @@ switch (yykind)
     {
     public:
       context (const Dhcp4Parser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
+      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
+      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
 
       /// Put in YYARG at most YYARGN of the expected tokens, and return the
       /// number of tokens stored in YYARG.  If YYARG is null, return the
@@ -4685,7 +4712,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -4864,8 +4891,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1160,     ///< Last index in yytable_.
-      yynnts_ = 404,  ///< Number of nonterminal symbols.
+      yylast_ = 1175,     ///< Last index in yytable_.
+      yynnts_ = 406,  ///< Number of nonterminal symbols.
       yyfinal_ = 28 ///< Termination state number.
     };
 
@@ -4929,13 +4956,14 @@ switch (yykind)
      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,   181,   182,   183,   184,
-     185,   186,   187,   188,   189
+     185,   186,   187,   188,   189,   190,   191
     };
-    const int user_token_number_max_ = 444;
+    // Last valid token kind.
+    const int code_max = 446;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -4950,30 +4978,30 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -5006,30 +5034,30 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 205: // value
-      case 209: // map_value
-      case 250: // ddns_replace_client_name_value
-      case 272: // socket_type
-      case 275: // outbound_interface_value
-      case 297: // db_type
-      case 391: // hr_mode
-      case 546: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_socket_type: // socket_type
+      case symbol_kind::S_outbound_interface_value: // outbound_interface_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 189: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 188: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 187: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 186: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -5067,7 +5095,7 @@ switch (yykind)
 
   inline
   void
-  Dhcp4Parser::by_kind::clear ()
+  Dhcp4Parser::by_kind::clear () YY_NOEXCEPT
   {
     kind_ = symbol_kind::S_YYEMPTY;
   }
@@ -5096,8 +5124,7 @@ switch (yykind)
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 5100 "dhcp4_parser.h"
-
+#line 5128 "dhcp4_parser.h"
 
 
 
index ef3de9421c13d1c539b00f46906fd2f1abd86def..3c542905df1bdc220cf6ac345c1275a8f2f972ed 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -16,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -62,11 +61,13 @@ namespace isc { namespace dhcp {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +77,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +106,7 @@ namespace isc { namespace dhcp {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +149,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +166,8 @@ namespace isc { namespace dhcp {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +184,7 @@ namespace isc { namespace dhcp {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +193,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +275,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +301,6 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp4_parser.yy"
 } } // isc::dhcp
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_PARSER4_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..6575075df1ad61270c3f7cd42643f0307b57d944 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6c46cc8d62f44563bfc05d4eb598371b04b58c3 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 08fd5df2acb1200488b4dbfc5067b674d283b85b..dc88230d16d0f18cc248ce685d4fbf960c4cd4d8 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 204
-#define YY_END_OF_BUFFER 205
+#define YY_NUM_RULES 206
+#define YY_END_OF_BUFFER 207
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -700,21 +700,21 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static const flex_int16_t yy_accept[1845] =
+static const flex_int16_t yy_accept[1884] =
     {   0,
-      197,  197,    0,    0,    0,    0,    0,    0,    0,    0,
-      205,  203,   10,   11,  203,    1,  197,  194,  197,  197,
-      203,  196,  195,  203,  203,  203,  203,  203,  190,  191,
-      203,  203,  203,  192,  193,    5,    5,    5,  203,  203,
-      203,   10,   11,    0,    0,  186,    0,    0,    0,    0,
+      199,  199,    0,    0,    0,    0,    0,    0,    0,    0,
+      207,  205,   10,   11,  205,    1,  199,  196,  199,  199,
+      205,  198,  197,  205,  205,  205,  205,  205,  192,  193,
+      205,  205,  205,  194,  195,    5,    5,    5,  205,  205,
+      205,   10,   11,    0,    0,  188,    0,    0,    0,    0,
         0,    0,    0,    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,  197,  197,
-        0,  196,  197,    3,    2,    6,    0,  197,    0,    0,
-        0,    0,    0,    0,    4,    0,    0,    9,    0,  187,
+        0,    0,    0,    0,    0,    0,    0,    1,  199,  199,
+        0,  198,  199,    3,    2,    6,    0,  199,    0,    0,
+        0,    0,    0,    0,    4,    0,    0,    9,    0,  189,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  189,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  191,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -722,189 +722,193 @@ static const flex_int16_t yy_accept[1845] =
         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,  160,    0,    0,  161,    0,    0,
+        8,    0,    0,    0,  162,    0,    0,  163,    0,    0,
 
-        0,    0,    0,    0,    0,  188,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  190,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      112,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      114,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  202,  200,    0,  199,
-      198,    0,    0,    0,    0,    0,    0,  159,    0,   28,
-        0,   27,    0,    0,  119,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  204,  202,    0,  201,
+      200,    0,    0,    0,    0,    0,    0,  161,    0,   28,
+        0,   27,    0,    0,  121,    0,    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,    0,    0,    0,    0,    0,  116,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  118,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  201,
-      198,    0,    0,    0,    0,    0,   29,    0,   31,    0,
-        0,    0,    0,    0,    0,    0,  120,    0,    0,    0,
-        0,    0,    0,    0,   97,    0,    0,    0,    0,    0,
-        0,    0,    0,  144,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  203,
+      200,    0,    0,    0,    0,    0,   29,    0,   31,    0,
+        0,    0,    0,    0,    0,    0,  122,    0,    0,    0,
+        0,    0,    0,    0,   99,    0,    0,    0,    0,    0,
+        0,    0,    0,  146,    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,
 
-        0,   96,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  106,    0,   59,    0,
+        0,   98,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  108,    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,  139,    0,  164,   51,    0,   56,    0,    0,
-        0,    0,    0,   37,   34,   33,    0,    0,    0,  152,
+        0,    0,  141,    0,  166,   51,    0,   56,    0,    0,
+        0,    0,    0,   37,   34,   33,    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,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  130,
 
-        0,    0,    0,    0,    0,    0,    0,    0,  163,    0,
+      132,    0,    0,    0,    0,    0,    0,    0,    0,  165,
         0,    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,    0,    0,   99,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  153,    0,
+        0,   53,    0,    0,   32,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  101,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  155,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  148,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    7,   35,    0,    0,    0,    0,
+        0,    0,    0,  150,    0,    0,    0,    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,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      118,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  120,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  132,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  129,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  101,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  134,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  131,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  103,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  109,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  111,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  108,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      110,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  147,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  157,  127,    0,    0,    0,    0,    0,    0,
-        0,  131,   52,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  133,    0,   60,    0,
+        0,  149,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  159,  129,    0,
+        0,    0,    0,    0,    0,    0,  133,   52,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  135,    0,   60,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   91,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  184,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,   93,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  186,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  115,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  146,
-        0,    0,    0,    0,    0,    0,   63,    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,    0,    0,    0,    0,  148,    0,    0,    0,
+        0,    0,    0,   63,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       57,  100,    0,    0,    0,  143,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   57,  102,    0,
 
-       50,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  135,
+        0,    0,  145,    0,    0,    0,    0,   50,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    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,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  185,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  110,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  187,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  112,    0,    0,    0,    0,    0,    0,
         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,  158,   14,    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,  160,   14,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  149,    0,    0,    0,    0,    0,    0,  134,
+        0,  151,    0,    0,    0,    0,    0,    0,    0,    0,
+      136,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  147,
+      164,    0,   40,    0,  156,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   20,
+        0,    0,    0,   96,    0,    0,    0,    0,    0,  158,
+       54,    0,  104,    0,  185,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  145,  162,
-        0,   40,    0,  154,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   20,    0,
-
-        0,    0,   94,    0,    0,    0,    0,    0,  156,   54,
-        0,  102,    0,  183,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   82,
-        0,    0,    0,    0,    0,  125,  126,    0,    0,    0,
-        0,    0,    0,    0,    0,   98,    0,    0,    0,    0,
-        0,    0,   64,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  151,    0,
+       82,    0,    0,    0,    0,    0,  127,  128,    0,    0,
+        0,    0,    0,    0,    0,    0,  100,    0,    0,    0,
+        0,    0,    0,   64,    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,    0,    0,    0,   95,  117,    0,
+        0,  153,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  123,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,   79,    0,    0,    0,    0,    0,    0,   17,    0,
-       15,    0,  180,  179,    0,    0,    0,   69,    0,    0,
-        0,    0,    0,   30,    0,  138,    0,    0,    0,    0,
+       97,  119,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   79,    0,    0,    0,    0,    0,
+        0,   17,    0,   15,    0,  182,  181,    0,    0,    0,
+       69,    0,    0,    0,    0,    0,   30,    0,  140,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  175,    0,  184,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  173,    0,  182,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  111,    0,  142,   43,
-        0,   61,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   19,    0,    0,    0,    0,    0,    0,    0,
-      113,   80,    0,    0,  150,    0,    0,    0,    0,    0,
+        0,  113,    0,  144,   43,    0,   61,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   19,    0,    0,
 
-      141,    0,    0,    0,    0,    0,    0,    0,    0,  107,
+        0,    0,    0,    0,    0,  115,   80,    0,    0,  152,
+        0,    0,    0,    0,    0,  143,    0,    0,    0,    0,
+        0,    0,    0,    0,  109,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  105,    0,    0,
-        0,  165,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  107,    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,   42,    0,    0,
-        0,    0,   68,    0,    0,    0,    0,    0,  136,   47,
-        0,    0,    0,   70,  178,   38,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   12,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,   45,    0,    0,   44,    0,
-       18,    0,    0,    0,   72,    0,    0,    0,    0,    0,
-      128,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   76,
-        0,    0,    0,    0,   62,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  103,    0,    0,    0,    0,    0,
-      155,    0,    0,    0,   46,    0,    0,    0,    0,    0,
-        0,    0,    0,  174,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   67,    0,    0,    0,   93,    0,
-        0,    0,    0,   36,    0,   48,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   24,
-        0,    0,    0,    0,    0,    0,    0,  171,    0,    0,
-        0,    0,  140,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  114,    0,    0,    0,  176,    0,    0,
-        0,    0,    0,    0,    0,    0,   85,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   25,   39,    0,    0,
-        0,    0,    0,    0,    0,    0,  177,    0,   13,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,  181,    0,    0,    0,
-        0,    0,    0,    0,    0,  170,    0,   78,    0,   77,
+        0,    0,    0,    0,   42,    0,    0,    0,    0,   68,
+        0,    0,    0,    0,    0,  138,   47,    0,    0,    0,
 
-        0,   21,   73,    0,    0,    0,    0,    0,   65,    0,
-        0,    0,  124,    0,    0,    0,    0,    0,    0,    0,
-        0,  104,    0,    0,  169,    0,    0,    0,   71,    0,
-        0,    0,   66,    0,   23,    0,    0,   92,    0,    0,
+       70,  180,   38,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   12,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   45,    0,    0,   44,    0,   18,
+        0,    0,    0,   72,    0,    0,    0,    0,    0,  130,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   76,    0,
+        0,    0,    0,   62,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  105,    0,    0,    0,    0,
+        0,  157,    0,    0,    0,   46,    0,    0,    0,    0,
+        0,    0,    0,    0,  176,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,   67,    0,    0,    0,   95,
+        0,    0,    0,    0,   36,    0,   48,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,   24,    0,    0,    0,    0,    0,    0,    0,
+      173,    0,    0,    0,    0,  142,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  116,    0,    0,    0,
+      178,    0,    0,    0,    0,    0,    0,    0,    0,   85,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   25,   39,    0,    0,    0,    0,    0,    0,    0,
+        0,  179,    0,   13,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  183,    0,    0,    0,    0,    0,    0,
+        0,    0,  172,    0,   78,    0,   77,    0,   21,   73,
+        0,    0,    0,    0,    0,   65,    0,    0,    0,  126,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      106,    0,    0,  171,    0,    0,    0,   71,    0,    0,
+        0,   66,    0,   23,    0,    0,   94,    0,    0,    0,
+        0,    0,    0,    0,   91,    0,    0,    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,    0,
-       89,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   49,
-        0,    0,   90,    0,    0,  175,    0,    0,    0,    0,
-       75,   74,   22,    0,  122,  137,    0,    0,    0,   86,
-
-        0,    0,    0,    0,    0,    0,  167,    0,  172,    0,
-       88,   81,    0,    0,    0,    0,    0,    0,  166,    0,
-        0,   26,    0,    0,    0,    0,    0,    0,    0,   87,
-        0,    0,    0,    0,    0,  123,   84,    0,    0,    0,
-        0,   83,  168,    0
+        0,   49,    0,    0,   90,    0,    0,    0,  177,    0,
+        0,    0,    0,   75,   74,   22,    0,  124,  139,    0,
+        0,    0,   86,    0,    0,    0,    0,    0,    0,    0,
+      169,    0,  174,    0,   88,    0,   81,    0,    0,    0,
+        0,    0,    0,    0,  168,    0,    0,   26,    0,    0,
+        0,    0,    0,    0,    0,    0,   87,    0,    0,    0,
+        0,    0,   92,    0,  125,   84,    0,    0,    0,    0,
+       83,  170,    0
     } ;
 
 static const YY_CHAR yy_ec[256] =
@@ -951,431 +955,441 @@ static const YY_CHAR yy_meta[74] =
         3,    3,    3
     } ;
 
-static const flex_int16_t yy_base[1857] =
+static const flex_int16_t yy_base[1896] =
     {   0,
         0,   72,   21,   31,   43,   51,   54,   60,   91,   99,
-     2246, 2247,   34, 2242,  145,    0,  207, 2247,  214,  221,
-       13,  228, 2247, 2222,  118,   25,    2,    6, 2247, 2247,
-       73,   11,   17, 2247, 2247, 2247,  104, 2230, 2183,    0,
-     2220,  108, 2237,   24,  256, 2247,   67, 2186, 2206,   84,
-       75, 2206,   88,  226,   91,   89,  284,  196,  203,  279,
-      193,  224,  216,   60,  242, 2186,  286,  288,  314,  300,
-      319, 2169,  204,  324,  356,  329, 2188,    0,  380,  400,
-      420,  427,  406, 2247,    0, 2247,  385,  443,  238,  241,
-      310,  269,  299,  314, 2247, 2185, 2226, 2247,  405, 2247,
-
-      419,  400, 2183, 2224,  326,   10,  262,  407,  224,  409,
-      352,  206, 2223,    0,  472,  412, 2165,  219, 2173,  406,
-     2169, 2158, 2159, 2164,  424, 2174, 2157, 2166,  327,  415,
-      401, 2160, 2158,  444, 2147, 2205,  399, 2150, 2203, 2143,
-     2166, 2163, 2163, 2157,  339, 2150, 2148, 2149, 2141, 2146,
-     2140,  440, 2151, 2144, 2135, 2134, 2148,  446, 2186, 2133,
-      442, 2145,  466, 2133,  480, 2134,  466, 2146, 2143, 2144,
-      293, 2142, 2177, 2176,  469, 2122, 2122, 2126, 2122, 2114,
-     2131, 2123,    0,  479,  483,  486,  481,  493,  504, 2122,
-     2247,    0,  509, 2117, 2247,  498,  506, 2247, 2171,  508,
-
-     2170,  519, 2169,  515, 2168, 2247,  561, 2167,  525, 2126,
-     2123, 2124, 2119, 2118, 2109,  502, 2160, 2154, 2118, 2099,
-     2096, 2104, 2110, 2098, 2112, 2108, 2109, 2109, 2104, 2096,
-     2098, 2082, 2086, 2099, 2101, 2098, 2090, 2080, 2083, 2097,
-     2247, 2083, 2091, 2094, 2075, 2074, 2126, 2073, 2083, 2123,
-      538, 2082, 2121, 2066, 2068, 2079, 2117,  530, 2121, 2056,
-     2071,  540, 2061, 2067, 2076, 2057, 2055, 2058, 2054, 2060,
-     2051, 2050, 2063, 2056, 2046, 2057, 2061, 2060, 2054,  499,
-     2061, 2056, 2048, 2038, 2053, 2048, 2052,  506, 2050, 2036,
-     2042, 2049, 2031, 2032, 2035, 2032, 2031,  557, 2026, 2040,
-
-     2039, 2038, 2041, 2023, 2031,  543, 2247, 2247,  545, 2247,
-     2247, 2018,    0,  511, 2065,  556, 2076, 2247,  529, 2247,
-     2075, 2247, 2069,  599, 2247,  549, 2009, 2012, 2029, 2017,
-     2069, 2024, 2019, 2022, 2017,   80, 2247, 2019,  585, 2058,
-     2016, 2013, 2014,  583, 2018, 2058, 2006, 2001, 1998, 1994,
-     1996, 2047, 2004, 1993, 2009, 2043, 1989,  592, 2002, 2002,
-     1985, 1986, 1999, 1986, 1996, 1991, 1998, 1993, 1978,  567,
-     1987, 1990, 1985,  570, 1984, 1980, 2030,  422,  569, 2247,
-     2024, 1974, 1973, 1966, 1968, 1980, 1971, 1960, 1977, 1966,
-     1971,  576, 2018, 1971,  585, 1968, 1971, 1971, 1969, 1958,
-
-     1958, 1970,  579, 1945, 1946, 1967,  603, 1949, 1946, 1960,
-     1963, 1958, 1944, 1956, 1955, 1954, 1949, 1952, 1951, 1950,
-     1949,  562, 1992, 1951, 1990, 1989, 1931,  630, 1944, 2247,
-     2247, 1943,    0,  597, 1985, 1984, 2247, 1983, 2247,  620,
-      668,  607, 1982, 1930, 1932, 1920, 2247, 1925, 1931, 1934,
-     1917, 1932, 1919, 1918, 2247, 1928,  603, 1919, 1916, 1928,
-      610, 1913, 1915, 2247, 1921, 1906, 1908, 1919, 1917, 1912,
-      658, 1919, 1907, 1900, 1951, 2247, 1898, 1914, 1948, 1952,
-     1908, 1902, 1904, 1905, 1907, 1941, 1892, 1887, 1886, 1888,
-     1884, 1880,  608, 1899, 1873, 1880, 1885, 1878, 1894, 1928,
-
-     1932, 2247, 1877, 1873, 1929, 1880, 1874, 1881, 1866, 1876,
-     1864, 1878, 1867, 1863, 1865, 1860, 2247, 1917, 2247, 1859,
-     1858, 1851, 1868, 1907, 1906, 1851, 1856, 1865, 1859, 1853,
-     1862,  664, 1899, 1861, 1844, 1844, 1839, 1835, 1841, 1846,
-     1839, 1847, 1851, 1834, 1892, 1833, 1885, 1830, 1831, 1830,
-     1842, 1831, 2247, 1841, 2247, 2247, 1830, 2247, 1840, 1876,
-     1836,    0, 1879, 2247, 2247, 2247,  627,  627,  667, 2247,
-     1838, 1818, 1871, 1816, 1869, 1814, 1813, 1812, 1819, 1812,
-     1820, 1823, 1805, 1805, 1820, 1819, 1818, 1817, 1801, 1816,
-     1798, 1845, 1812, 1850, 1794, 1796, 1808, 1808, 1807, 2247,
-
-     1792, 1789, 1847, 1802, 1794, 1800, 1791, 1799, 2247, 1784,
-     1795, 1799, 1781, 1795,  444, 1777, 1771, 1776, 1773, 1788,
-     1787, 1788, 1767, 1777, 1783, 1826, 1781, 1780, 1772, 1763,
-     2247, 1764, 1766, 2247, 1774, 1813, 1812,   16, 1773, 1810,
-     1755, 1756, 1759, 1760, 1751, 2247, 1765, 1751,  691, 1743,
-     1747, 1763, 1760, 1752, 1797, 1749, 1756, 1794, 2247, 1740,
-     1738, 1752, 1736, 1750, 1753, 1787, 1786, 1785, 1784, 1729,
-     1782, 1781, 2247, 1726, 1740,  670, 1741, 1740, 1737, 1737,
-     1774, 1734, 1723, 1725, 2247, 2247,  640,  570, 1717, 1715,
-     1709, 1730, 1771,  650, 1765, 1725, 1763, 1762, 1714, 1708,
-
-     1711, 1719, 1722, 1706, 1707, 1698, 1753, 1713, 1703, 1711,
-     1749, 1710,  642, 1701, 1703, 1707, 1744, 1748, 1703, 1702,
-     2247, 1703, 1696, 1685, 1698,   95,  170,  221,  229,  242,
-      294,  310,  382,  403,  593,  638,  611,  629,  623,  646,
-      696,  655,  704, 2247,  705,  661,  659,  667,  663,  657,
-      712,  675,  664, 2247,  666,  677,  666,  679,  681,  725,
-      668,  727,  670,  685, 2247,  679,  673,  684,  669,  680,
-      694,  673,  679,  734,  698,  682,  682,  695,  739,  740,
-      741,  688,  706,  701,  708,  703,  688,  700,  701,  707,
-      694, 2247,  759,  717,  719,  709,  721,  711,  724,  715,
-
-      721,  765,  741,  728,  729,  774,  724, 2247,  722,  737,
-      734,  720,  727,  726,  724,  743,  740,  741,  729,  736,
-      737,  746,  746,  736,  749,  735,  734,  740,  796,  737,
-      738,  745,  761,  744,  798,  753, 2247,  763,  763,  756,
-      767,  765,  810,  752,  754,  769,  770,  758,  817,  774,
-      760,  763, 2247, 2247,  779,  778,  779,  784,  772,  782,
-      784, 2247, 2247,  784,  786,  773,  791,  778,  776,  794,
-      781,  781,  832,  779,  783,  841, 2247,  842, 2247,  787,
-      801,  801,  846,  794,  793,  797,  791,  851,  804,  794,
-      795,  791,  801,  805,  816,  800,  818,  813,  815,  808,
-
-      810,  811,  823,  813,  828,  869,  826,  831,  808,  831,
-      815, 2247,  822,  823,  837,  828,  826,  876,  823,  838,
-      856,  864,  833,  882, 2247,  848,  836,  831,  832,  844,
-      851,  840,  841,  837,  855,  841,  842,  852,  861,  897,
-      852,  847,  900,  906,  863,  855, 2247,  859,  868,  870,
-      855,  871,  861,  873,  867,  914,  880,  864,  865, 2247,
-      881,  884,  867,  869,  927,  870, 2247,  887,  890,  870,
-      889,  877,  930,  888,  884,  881,  934,  883,  936,  898,
-      884,  902,  901,  887,  902,  894,  890,  908,  907,  894,
-     2247, 2247,  902,  949,  902, 2247,  910,  913,  906,  959,
-
-     2247,  908,  914,  958,  909,  910,  922,  916,  920,  918,
-      916,  927,  972,  916,  921,  975,  976,  920,  932, 2247,
-      920,  928,  926,  977,  939,  925,  927,  936,  948,  935,
-      933,  947,  948,  964,  969,  951,  937,  939,  939,  959,
-      958,  949,  938,  955,  962, 1005,  947,  967,  960,  964,
-      968,  951, 1012,  959,  963, 2247, 1010,  959,  958,  958,
-      979,  976, 1018,  967,  985,  986,  972,  980,  989,  969,
-      984,  991, 1033, 1034, 2247,  987, 1036, 1037,  988,  998,
-     1000,  984,  986,  986,  993, 1002,  990,  997,  992,  999,
-     1011, 1052,  999,  998, 1015, 1056, 1006, 1010, 1008, 1006,
-
-     1001, 1062, 1063, 1013, 1065, 1061, 1067, 1020, 2247, 1025,
-     1018, 1009, 1028, 1022, 1017, 1027, 1024, 1029, 1025, 1037,
-     2247, 1021, 1024, 2247, 2247, 1024, 1084, 1023, 1042, 1043,
-     1045, 1036, 1090, 1091, 1044, 1029, 1043, 1051, 1033, 1038,
-     1077, 1068, 1100, 1057, 1044, 1046, 1063, 1058, 1062, 1107,
-     1055, 1059, 2247, 1056, 1052, 1069, 1049, 1070, 1060, 2247,
-     1075, 1073, 1076, 1060, 1072, 1078, 1064, 1124, 1077, 1082,
-     1070, 1081, 1073, 1079, 1075, 1093, 1094, 1095, 2247, 2247,
-     1093, 2247, 1095, 2247, 1080, 1081, 1100, 1090, 1142, 1099,
-     1096, 1140, 1104, 1093, 1100, 1105, 1102, 1108, 2247, 1101,
-
-     1093, 1154, 2247, 1155, 1102, 1109, 1153, 1115, 2247, 2247,
-     1112, 2247, 1103, 2247, 1103, 1106, 1120, 1125, 1108, 1119,
-     1168, 1125, 1126, 1127, 1167, 1123, 1174, 1127, 1176, 2247,
-     1123, 1178, 1179, 1136, 1138, 2247, 2247, 1121, 1183, 1179,
-     1143, 1127, 1139, 1158, 1189, 2247, 1146, 1191, 1138, 1153,
-     1189, 1141, 2247, 1137, 1153, 1141, 1155, 1156, 1153, 1197,
-     1160, 1164, 1152, 1152, 1207, 1203, 1209, 1166, 2247, 1168,
-     1167, 1169, 1162, 1171, 1173, 1170, 1160, 1163, 1163, 1222,
-     1169, 1224, 1226, 1169, 1228, 2247, 1186, 1165, 1180, 1173,
-     1176, 1189, 1193, 1192, 1190, 1240, 1193, 2247, 2247, 1189,
-
-     1199, 1184, 1240, 1201, 1187, 1248, 1249, 1193, 1203, 1252,
-     1209, 2247, 1201, 1201, 1203, 1205, 1258, 1201, 2247, 1202,
-     2247, 1204, 2247, 2247, 1217, 1219, 1220, 2247, 1207, 1215,
-     1267, 1216, 1248, 2247, 1265, 2247, 1213, 1221, 1215, 1212,
-     1215, 1218, 1218, 1214, 1236, 1275, 1228, 1240, 1243, 1225,
-     1285, 1233, 2247, 1228, 2247, 1230, 1289, 1242, 1233, 1249,
-     1249, 1252, 1252, 1249, 1293, 1255, 2247, 1247, 2247, 2247,
-     1257, 2247, 1297, 1259, 1260, 1257, 1301, 1249, 1264, 1304,
-     1266, 1258, 2247, 1255, 1255, 1261, 1260, 1258, 1273, 1273,
-     2247, 2247, 1314, 1261, 2247, 1278, 1263, 1263, 1265, 1271,
-
-     2247, 1326, 1268, 1278, 1289, 1287, 1331, 1284, 1293, 2247,
-     1290, 1309, 1277, 1337, 1338, 1295, 1300, 1282, 1342, 1343,
-     1344, 1340, 1304, 1301, 1297, 1290, 1302, 2247, 1292, 1305,
-     1353, 2247, 1291, 1350, 1313, 1310, 1354, 1302, 1307, 1306,
-     1365, 1321, 1367, 1317, 1369, 1330, 1319, 1313, 1373, 1315,
-     1324, 1317, 1331, 1334, 1379, 1321, 1338, 1334, 1324, 1339,
-     1323, 1381, 1382, 1383, 1330, 1385, 1348, 2247, 1348, 1335,
-     1334, 1390, 2247, 1331, 1349, 1398, 1368, 1352, 2247, 2247,
-     1343, 1354, 1403, 2247, 2247, 2247, 1349, 1354, 1352, 1402,
-     1360, 1365, 1356, 1354, 1355, 2247, 1413, 1359, 1410, 1353,
-
-     1358, 1419, 1367, 1377, 1378, 2247, 1424, 1377, 2247, 1378,
-     2247, 1370, 1385, 1373, 2247, 1383, 1384, 1385, 1434, 1392,
-     2247, 1431, 1397, 1373, 1391, 1392, 1401, 1383, 1389, 1391,
-     1445, 1404, 1403, 1395, 1449, 1399, 1403, 1408, 1401, 2247,
-     1454, 1403, 1456, 1398, 2247, 1401, 1411, 1455, 1403, 1418,
-     1405, 1411, 1411, 1422, 2247, 1416, 1411, 1410, 1470, 1423,
-     2247, 1467, 1418, 1415, 2247, 1429, 1431, 1433, 1478, 1431,
-     1428, 1436, 1430, 2247, 1483, 1424, 1426, 1442, 1435, 1425,
-     1441, 1442, 1436, 1452, 2247, 1442, 1494, 1453, 2247, 1437,
-     1444, 1498, 1494, 2247, 1456, 2247, 1496, 1458, 1459, 1444,
-
-     1445, 1453, 1507, 1503, 1458, 1470, 1467, 1458, 1465, 2247,
-     1462, 1467, 1465, 1517, 1518, 1475, 1462, 2247, 1477, 1478,
-     1479, 1480, 2247, 1470, 1482, 1527, 1484, 1529, 1471, 1479,
-     1473, 1481, 1494, 2247, 1471, 1531, 1492, 2247, 1496, 1481,
-     1481, 1496, 1489, 1488, 1499, 1486, 2247, 1491, 1547, 1505,
-     1496, 1508, 1499, 1508, 1510, 1514, 2247, 2247, 1496, 1556,
-     1499, 1558, 1500, 1560, 1518, 1562, 2247, 1563, 2247, 1559,
-     1521, 1518, 1523, 1510, 1569, 1512, 1517, 1508, 1573, 1526,
-     1527, 1517, 1534, 1533, 1574, 1536, 2247, 1533, 1582, 1539,
-     1540, 1585, 1542, 1545, 1540, 2247, 1589, 2247, 1542, 2247,
-
-     1551, 2247, 2247, 1533, 1593, 1540, 1595, 1538, 2247, 1557,
-     1598, 1557, 2247, 1548, 1538, 1597, 1563, 1556, 1552, 1549,
-     1554, 2247, 1550, 1552, 2247, 1557, 1567, 1560, 2247, 1561,
-     1555, 1567, 2247, 1563, 2247, 1573, 1566, 2247, 1568, 1576,
-     1621, 1562, 1564, 1561, 1585, 1578, 1581, 1570, 1624, 1571,
-     1579, 1588, 1589, 1590, 1583, 1578, 1579, 1583, 1595, 1640,
-     2247, 1586, 1598, 1643, 1592, 1591, 1646, 1599, 1586, 1601,
-     1606, 1651, 1652, 1653, 1610, 1655, 1656, 1606, 1600, 2247,
-     1616, 1660, 2247, 1617, 1619, 2247, 1610, 1624, 1620, 1613,
-     2247, 2247, 2247, 1667, 2247, 2247, 1624, 1669, 1630, 2247,
-
-     1671, 1672, 1627, 1626, 1627, 1617, 2247, 1672, 2247, 1619,
-     2247, 2247, 1679, 1621, 1637, 1682, 1643, 1640, 2247, 1681,
-     1630, 2247, 1642, 1635, 1690, 1632, 1634, 1649, 1634, 2247,
-     1647, 1696, 1697, 1645, 1647, 2247, 2247, 1641, 1657, 1702,
-     1703, 2247, 2247, 2247, 1709, 1714, 1719, 1724, 1729, 1734,
-     1739, 1742, 1716, 1721, 1723, 1736
+     2285, 2286,   34, 2281,  145,    0,  207, 2286,  214,  221,
+       13,  228, 2286, 2261,  118,   25,    2,    6, 2286, 2286,
+       73,   11,   17, 2286, 2286, 2286,  104, 2269, 2222,    0,
+     2259,  108, 2276,   24,  256, 2286,   67, 2225, 2245,   84,
+       75, 2245,   88,  226,   91,   89,  284,  196,  203,  279,
+      193,  224,  216,   60,  242, 2225,  286,  288,  314,  300,
+      319, 2208,  204,  324,  356,  329, 2227,    0,  380,  400,
+      420,  427,  406, 2286,    0, 2286,  385,  443,  238,  241,
+      310,  269,  299,  314, 2286, 2224, 2265, 2286,  405, 2286,
+
+      419,  400, 2222, 2263,  326,   10,  262,  407,  224,  409,
+      352,  206, 2262,    0,  472,  412, 2204,  219, 2212,  406,
+     2208, 2197, 2198, 2203,  424, 2213, 2196, 2205,  327,  415,
+      401, 2199, 2197,  444, 2186, 2244,  399, 2189, 2242, 2182,
+     2205, 2202, 2202, 2196,  339, 2189, 2187, 2188, 2180, 2185,
+     2179,  440, 2190, 2183, 2174, 2173, 2187,  446, 2225, 2172,
+      442, 2184,  466, 2172,  480, 2173,  466, 2185, 2182, 2183,
+      293, 2181, 2216, 2215,  469, 2161, 2161, 2165, 2161, 2153,
+     2170, 2162,    0,  479,  483,  486,  481,  493,  504, 2161,
+     2286,    0,  509, 2156, 2286,  498,  506, 2286, 2210,  508,
+
+     2209,  519, 2208,  515, 2207, 2286,  561, 2206,  525, 2165,
+     2162, 2163, 2158, 2157, 2148,  502, 2199, 2193, 2157, 2138,
+     2135, 2143, 2149, 2137, 2151, 2147, 2148, 2148, 2143, 2135,
+     2137, 2121, 2125, 2138, 2140, 2137, 2129, 2119, 2122, 2136,
+     2286, 2122, 2130, 2133, 2114, 2113, 2165, 2112, 2122, 2162,
+      538, 2121, 2160, 2105, 2107, 2118, 2156,  530, 2160, 2095,
+     2110,  540, 2100, 2106, 2115, 2096, 2094, 2097, 2093, 2099,
+     2090, 2089, 2102, 2095, 2085, 2096, 2100, 2099, 2093,  499,
+     2100, 2095, 2087, 2077, 2092, 2087, 2091,  506, 2089, 2075,
+     2081, 2088, 2070, 2071, 2074, 2071, 2070,  557, 2065, 2079,
+
+     2078, 2077, 2080, 2062, 2070,  543, 2286, 2286,  545, 2286,
+     2286, 2057,    0,  511, 2104,  556, 2115, 2286,  529, 2286,
+     2114, 2286, 2108,  599, 2286,  549, 2048, 2051, 2068, 2056,
+     2108, 2063, 2058, 2061, 2056,   80, 2286, 2058,  585, 2097,
+     2055, 2052, 2053,  583, 2057, 2097, 2045, 2040, 2037, 2033,
+     2035, 2086, 2043, 2032, 2048, 2082, 2028,  592, 2041, 2041,
+     2024, 2025, 2038, 2025, 2035, 2030, 2037, 2032, 2017,  567,
+     2026, 2029, 2024,  570, 2023, 2019, 2069,  422,  569, 2286,
+     2063, 2013, 2012, 2005, 2007, 2019, 2010, 1999, 2016, 2005,
+     2010,  576, 2057, 2010,  585, 2007, 2010, 2010, 2008, 1997,
+
+     1997, 2009,  579, 1984, 1985, 2006,  603, 1988, 1985, 1999,
+     2002, 1997, 1983, 1995, 1994, 1993, 1988, 1991, 1990, 1989,
+     1988,  562, 2031, 1990, 2029, 2028, 1970,  630, 1983, 2286,
+     2286, 1982,    0,  597, 2024, 2023, 2286, 2022, 2286,  620,
+      668,  607, 2021, 1969, 1971, 1959, 2286, 1964, 1970, 1973,
+     1956, 1971, 1958, 1957, 2286, 1967,  603, 1958, 1955, 1967,
+      610, 1952, 1954, 2286, 1960, 1945, 1947, 1958, 1956, 1951,
+      662, 1958, 1946, 1939, 1990, 2286, 1937, 1953, 1987, 1991,
+     1947, 1941, 1943, 1944, 1946, 1980, 1931, 1926, 1925, 1927,
+     1923, 1919,  610, 1938, 1912, 1919, 1924, 1917, 1933, 1967,
+
+     1971, 2286, 1916, 1912, 1968, 1919, 1913, 1920, 1905, 1915,
+     1903, 1917, 1906, 1902, 1904, 1899, 2286, 1956, 2286, 1898,
+     1897, 1890, 1907, 1946, 1945, 1890, 1895, 1904, 1898, 1892,
+     1901,  669, 1938, 1900, 1883, 1883, 1878, 1874, 1880, 1885,
+     1878, 1886, 1890, 1873, 1931, 1872, 1924, 1869, 1870, 1869,
+     1881, 1870, 2286, 1880, 2286, 2286, 1869, 2286, 1879, 1915,
+     1875,    0, 1918, 2286, 2286, 2286,  629,  639,  692, 2286,
+     1877, 1857, 1910, 1855, 1908, 1853, 1852, 1851, 1858, 1851,
+     1859, 1862, 1844, 1844, 1859, 1858,  626, 1857, 1856, 1840,
+     1855, 1837, 1884, 1851, 1889, 1833, 1835, 1847, 1847, 1846,
+
+     2286, 1831, 1828, 1886, 1841, 1833, 1839, 1830, 1838, 2286,
+     1823, 1834, 1838, 1820, 1834,  444, 1816, 1810, 1815, 1812,
+     1827, 1826, 1827, 1806, 1816, 1822, 1865, 1820, 1819, 1811,
+     1802, 2286, 1803, 1805, 2286, 1813, 1852, 1851,   16, 1812,
+     1849, 1794, 1795, 1798, 1799, 1790, 2286, 1804, 1790,  693,
+     1782, 1786, 1802, 1799, 1791, 1836, 1788, 1795, 1833, 2286,
+     1779, 1777, 1791, 1775, 1789, 1792, 1826, 1825, 1824, 1823,
+     1768, 1821, 1820, 2286, 1765, 1779,  658, 1780, 1779, 1776,
+     1776, 1813, 1773, 1762, 1764, 2286, 2286,  640,  570, 1756,
+     1754, 1748, 1769, 1810,  658, 1804, 1764, 1802, 1801, 1753,
+
+     1747, 1750, 1758, 1761, 1745, 1746, 1755, 1753, 1735, 1790,
+     1750, 1740, 1748, 1786, 1747,  662, 1738, 1740, 1744, 1781,
+     1785, 1740, 1739, 2286, 1740, 1733,   77,  170,  229,  227,
+      238,  296,  313,  378,  400,  553,  594,  652,  672,  625,
+      646,  634,  651,  690,  656,  706, 2286,  707,  670,  668,
+      670,  667,  661,  716,  680,  669, 2286,  671,  682,  671,
+      684,  686,  730,  673,  732,  675,  690, 2286,  684,  678,
+      690,  675,  686,  699,  678,  684,  739,  703,  687,  687,
+      700,  744,  745,  746,  693,  711,  706,  713,  708,  693,
+      705,  706,  712,  699, 2286,  764,  722,  724,  714,  726,
+
+      716,  729,  720,  726,  770,  746,  733,  734,  779,  729,
+     2286,  727,  742,  739,  725,  732,  731,  729,  748,  745,
+      746,  734,  741,  742,  751,  755,  791,  753,  743,  756,
+      742,  741,  747,  803,  745,  746,  752,  768,  751,  805,
+      760, 2286,  770,  770,  763,  774,  772,  817,  759,  761,
+      776,  777,  765,  824,  781,  767,  770, 2286, 2286,  786,
+      785,  786,  791,  779,  789,  791, 2286, 2286,  791,  793,
+      780,  798,  785,  783,  801,  788,  788,  839,  786,  790,
+      848, 2286,  849, 2286,  794,  808,  808,  853,  801,  800,
+      804,  798,  858,  811,  801,  802,  798,  808,  812,  823,
+
+      807,  825,  820,  822,  815,  817,  818,  830,  820,  835,
+      876,  833,  838,  815,  838,  822, 2286,  829,  830,  844,
+      835,  833,  883,  830,  845,  863,  871,  840,  889, 2286,
+      855,  843,  838,  839,  851,  858,  847,  848,  844,  862,
+      848,  849,  859,  868,  904,  851,  869,  861,  856,  909,
+      916,  873,  865, 2286,  869,  877,  879,  864,  880,  870,
+      882,  876,  923,  889,  873,  874, 2286,  890,  893,  876,
+      878,  936,  879, 2286,  896,  899,  879,  898,  886,  939,
+      897,  893,  890,  943,  892,  945,  907,  893,  911,  910,
+      896,  911,  903,  899,  917,  916,  903, 2286, 2286,  911,
+
+      958,  911, 2286,  919,  922,  915,  968, 2286,  917,  923,
+      967,  918,  919,  931,  925,  929,  927,  925,  936,  981,
+      925,  930,  984,  985,  929,  941, 2286,  929,  937,  935,
+      986,  948,  934,  936,  945,  957,  944,  942,  956,  957,
+      973,  978,  960,  946,  948,  948,  968,  967,  958,  947,
+      964,  971, 1014,  956,  976,  969,  973,  977,  960,  977,
+      968, 1023,  970,  974, 2286, 1021,  970,  969,  969,  992,
+      989, 1029,  978,  996,  997,  983,  991, 1000,  980,  995,
+     1002, 1044, 1045, 2286,  998, 1047, 1048,  999, 1009, 1011,
+      995,  997,  997, 1004, 1013, 1001, 1008, 1003, 1010, 1022,
+
+     1063, 1010, 1009, 1026, 1067, 1017, 1021, 1019, 1017, 1012,
+     1073, 1074, 1024, 1076, 1072, 1078, 1031, 2286, 1036, 1029,
+     1020, 1039, 1033, 1028, 1038, 1035, 1040, 1036, 1048, 2286,
+     1032, 1035, 2286, 2286, 1035, 1095, 1034, 1053, 1054, 1056,
+     1047, 1101, 1102, 1055, 1040, 1054, 1062, 1044, 1049, 1088,
+     1079, 1111, 1068, 1055, 1057, 1074, 1069, 1073, 1118, 1066,
+     1070, 2286, 1067, 1063, 1080, 1060, 1081, 1071, 1122, 1075,
+     2286, 1088, 1086, 1089, 1074, 1086, 1091, 1077, 1137, 1091,
+     1096, 1083, 1094, 1086, 1092, 1088, 1106, 1107, 1108, 2286,
+     2286, 1106, 2286, 1108, 2286, 1093, 1094, 1113, 1103, 1155,
+
+     1112, 1109, 1153, 1117, 1106, 1113, 1118, 1115, 1121, 2286,
+     1114, 1106, 1167, 2286, 1168, 1115, 1122, 1166, 1128, 2286,
+     2286, 1125, 2286, 1116, 2286, 1116, 1119, 1133, 1138, 1121,
+     1132, 1181, 1138, 1139, 1140, 1180, 1136, 1187, 1140, 1189,
+     2286, 1136, 1191, 1192, 1149, 1151, 2286, 2286, 1134, 1196,
+     1192, 1156, 1140, 1152, 1171, 1202, 2286, 1159, 1204, 1151,
+     1166, 1202, 1154, 2286, 1150, 1166, 1154, 1168, 1169, 1166,
+     1210, 1173, 1163, 1173, 1179, 1167, 1167, 1222, 1218, 1224,
+     1181, 2286, 1183, 1182, 1184, 1178, 1187, 1188, 1185, 1175,
+     1178, 1178, 1237, 1185, 1240, 1241, 1184, 1243, 2286, 1201,
+
+     1180, 1195, 1188, 1192, 1205, 1208, 1207, 1205, 1255, 1208,
+     2286, 2286, 1204, 1214, 1199, 1255, 1216, 1202, 1263, 1264,
+     1208, 1218, 1267, 1224, 2286, 1216, 1216, 1218, 1220, 1273,
+     1216, 2286, 1217, 2286, 1219, 2286, 2286, 1232, 1234, 1235,
+     2286, 1222, 1230, 1282, 1231, 1263, 2286, 1280, 2286, 1228,
+     1236, 1230, 1227, 1230, 1233, 1233, 1229, 1251, 1290, 1243,
+     1255, 1258, 1246, 1249, 1242, 1302, 1250, 2286, 1245, 2286,
+     1247, 1306, 1260, 1251, 1266, 1266, 1269, 1269, 1266, 1310,
+     1272, 2286, 1264, 2286, 2286, 1274, 2286, 1314, 1276, 1277,
+     1274, 1318, 1266, 1281, 1321, 1283, 1275, 2286, 1272, 1272,
+
+     1278, 1277, 1275, 1290, 1290, 2286, 2286, 1331, 1278, 2286,
+     1295, 1280, 1280, 1282, 1288, 2286, 1343, 1285, 1295, 1306,
+     1304, 1348, 1301, 1310, 2286, 1307, 1326, 1294, 1354, 1355,
+     1312, 1317, 1299, 1359, 1360, 1361, 1357, 1321, 1318, 1314,
+     1307, 1362, 1320, 1321, 2286, 1311, 1324, 1372, 2286, 1310,
+     1370, 1333, 1329, 1373, 1322, 1327, 1325, 1384, 1340, 1386,
+     1336, 1388, 1349, 1338, 1332, 1392, 1334, 1343, 1336, 1350,
+     1353, 1398, 1340, 1357, 1353, 1343, 1358, 1342, 1400, 1401,
+     1402, 1349, 1404, 1367, 2286, 1367, 1354, 1353, 1409, 2286,
+     1350, 1368, 1417, 1387, 1371, 2286, 2286, 1362, 1373, 1422,
+
+     2286, 2286, 2286, 1368, 1373, 1371, 1421, 1379, 1384, 1372,
+     1388, 1377, 1375, 1376, 2286, 1434, 1380, 1431, 1374, 1379,
+     1440, 1388, 1399, 1400, 2286, 1445, 1399, 2286, 1400, 2286,
+     1391, 1406, 1394, 2286, 1404, 1405, 1406, 1455, 1413, 2286,
+     1452, 1418, 1394, 1412, 1413, 1422, 1404, 1410, 1412, 1466,
+     1425, 1424, 1416, 1470, 1420, 1424, 1429, 1422, 2286, 1475,
+     1424, 1477, 1419, 2286, 1422, 1432, 1476, 1424, 1439, 1426,
+     1441, 1427, 1434, 1434, 1445, 2286, 1439, 1434, 1433, 1493,
+     1446, 2286, 1490, 1441, 1438, 2286, 1452, 1454, 1456, 1501,
+     1454, 1451, 1459, 1453, 2286, 1506, 1447, 1449, 1465, 1458,
+
+     1448, 1464, 1465, 1459, 1475, 2286, 1465, 1517, 1476, 2286,
+     1460, 1467, 1521, 1517, 2286, 1479, 2286, 1519, 1481, 1482,
+     1467, 1468, 1476, 1530, 1478, 1527, 1528, 1483, 1495, 1492,
+     1483, 1490, 2286, 1487, 1492, 1490, 1542, 1543, 1500, 1487,
+     2286, 1502, 1503, 1504, 1505, 2286, 1495, 1507, 1552, 1509,
+     1554, 1496, 1504, 1498, 1506, 1519, 2286, 1496, 1556, 1517,
+     2286, 1521, 1506, 1506, 1521, 1514, 1513, 1524, 1511, 2286,
+     1527, 1515, 1518, 1574, 1532, 1523, 1535, 1526, 1535, 1537,
+     1541, 2286, 2286, 1523, 1583, 1526, 1585, 1527, 1587, 1545,
+     1589, 2286, 1590, 2286, 1586, 1548, 1545, 1550, 1537, 1596,
+
+     1539, 1544, 1535, 1600, 1553, 1554, 1544, 1561, 1560, 1601,
+     1545, 1564, 1565, 2286, 1562, 1611, 1568, 1569, 1614, 1571,
+     1574, 1569, 2286, 1618, 2286, 1571, 2286, 1580, 2286, 2286,
+     1562, 1622, 1569, 1624, 1567, 2286, 1586, 1627, 1586, 2286,
+     1577, 1567, 1626, 1592, 1585, 1581, 1635, 1578, 1580, 1585,
+     2286, 1581, 1583, 2286, 1588, 1598, 1591, 2286, 1592, 1586,
+     1598, 2286, 1594, 2286, 1604, 1597, 2286, 1599, 1607, 1652,
+     1593, 1595, 1592, 1616, 2286, 1603, 1610, 1613, 1602, 1656,
+     1603, 1611, 1620, 1621, 1622, 1615, 1610, 1611, 1615, 1627,
+     1672, 2286, 1618, 1630, 1675, 1624, 1626, 1624, 1679, 1632,
+
+     1619, 1634, 1639, 1684, 1685, 1686, 1643, 1688, 1689, 1639,
+     1633, 2286, 1649, 1693, 2286, 1650, 1635, 1653, 2286, 1644,
+     1658, 1654, 1647, 2286, 2286, 2286, 1701, 2286, 2286, 1658,
+     1703, 1664, 2286, 1705, 1647, 1707, 1662, 1661, 1662, 1652,
+     2286, 1707, 2286, 1654, 2286, 1666, 2286, 1715, 1657, 1673,
+     1718, 1679, 1676, 1668, 2286, 1718, 1667, 2286, 1679, 1672,
+     1727, 1675, 1670, 1672, 1687, 1672, 2286, 1733, 1686, 1735,
+     1736, 1684, 2286, 1686, 2286, 2286, 1680, 1696, 1741, 1742,
+     2286, 2286, 2286, 1748, 1753, 1758, 1763, 1768, 1773, 1778,
+     1781, 1755, 1760, 1762, 1775
+
     } ;
 
-static const flex_int16_t yy_def[1857] =
+static const flex_int16_t yy_def[1896] =
     {   0,
-     1845, 1845, 1846, 1846, 1845, 1845, 1845, 1845, 1845, 1845,
-     1844, 1844, 1844, 1844, 1844, 1847, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1848,
-     1844, 1844, 1844, 1849,   15, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1850,   45,   45,   45,
+     1884, 1884, 1885, 1885, 1884, 1884, 1884, 1884, 1884, 1884,
+     1883, 1883, 1883, 1883, 1883, 1886, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1887,
+     1883, 1883, 1883, 1888,   15, 1883,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1889,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1847, 1844, 1844,
-     1844, 1844, 1844, 1844, 1851, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1848, 1844, 1849, 1844,
+       45,   45,   45,   45,   45,   45,   45, 1886, 1883, 1883,
+     1883, 1883, 1883, 1883, 1890, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1887, 1883, 1888, 1883,
 
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1852,   45, 1850,   45,   45,   45,   45,   45,
+     1883,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45, 1891,   45, 1889,   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,   45,   45,
-       45,   45, 1851, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1853,   45,   45, 1844,   45,   45, 1844,   45,   45,
+       45,   45, 1890, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1892,   45,   45, 1883,   45,   45, 1883,   45,   45,
 
-       45,   45,   45,   45, 1852, 1844, 1850,   45,   45,   45,
+       45,   45,   45,   45, 1891, 1883, 1889,   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,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1883,   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,   45, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1854,   45,   45,   45,   45, 1844,   45, 1844,
-       45, 1844,   45, 1850, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
+       45,   45,   45,   45,   45, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1893,   45,   45,   45,   45, 1883,   45, 1883,
+       45, 1883,   45, 1889, 1883,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   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, 1844,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
        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, 1844,
-     1844, 1844, 1855,   45,   45,   45, 1844,   45, 1844,   45,
-     1850,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
+     1883, 1883, 1894,   45,   45,   45, 1883,   45, 1883,   45,
+     1889,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1883,   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, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
+       45, 1883,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45, 1883,   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, 1883,   45, 1883, 1883,   45, 1883,   45,   45,
+     1883, 1895,   45, 1883, 1883, 1883,   45,   45,   45, 1883,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45, 1844, 1844,   45, 1844,   45,   45,
-     1844, 1856,   45, 1844, 1844, 1844,   45,   45,   45, 1844,
        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, 1844,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
+     1883,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
+       45, 1883,   45,   45, 1883,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844, 1844,   45,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1883, 1883,   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,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1883,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1883,   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, 1844,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844, 1844,   45,   45,   45,   45,   45,   45,
-       45, 1844, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
+       45, 1883,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1883, 1883,   45,
+       45,   45,   45,   45,   45,   45, 1883, 1883,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1883,   45, 1883,   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, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844, 1844,   45,   45,   45, 1844,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1883, 1883,   45,
 
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
+       45,   45, 1883,   45,   45,   45,   45, 1883,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   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, 1844,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
 
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45, 1844, 1844,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1883,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
+       45,   45, 1883, 1883,   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, 1844,   45,   45,   45,   45,   45,   45, 1844,
+       45, 1883,   45,   45,   45,   45,   45,   45,   45,   45,
+     1883,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
+     1883,   45, 1883,   45, 1883,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45, 1883,
+     1883,   45, 1883,   45, 1883,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844, 1844,
-       45, 1844,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
-
-       45,   45, 1844,   45,   45,   45,   45,   45, 1844, 1844,
-       45, 1844,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45, 1844, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45, 1844,   45,
+     1883,   45,   45,   45,   45,   45, 1883, 1883,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1844, 1844,   45,
+       45, 1883,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1883,   45,
 
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45, 1844,   45,
-     1844,   45, 1844, 1844,   45,   45,   45, 1844,   45,   45,
-       45,   45,   45, 1844,   45, 1844,   45,   45,   45,   45,
+     1883, 1883,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
+       45, 1883,   45, 1883,   45, 1883, 1883,   45,   45,   45,
+     1883,   45,   45,   45,   45,   45, 1883,   45, 1883,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1883,   45, 1883,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844, 1844,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-     1844, 1844,   45,   45, 1844,   45,   45,   45,   45,   45,
+       45, 1883,   45, 1883, 1883,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45, 1883,   45,   45,
 
-     1844,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
+       45,   45,   45,   45,   45, 1883, 1883,   45,   45, 1883,
+       45,   45,   45,   45,   45, 1883,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45, 1883,   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, 1844,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45, 1844, 1844,
-       45,   45,   45, 1844, 1844, 1844,   45,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45, 1844,   45,   45, 1844,   45,
-     1844,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45, 1844,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45, 1844,   45,   45,   45, 1844,   45,
-       45,   45,   45, 1844,   45, 1844,   45,   45,   45,   45,
-
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45,   45,   45, 1844,   45,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45, 1844,   45,   45,   45, 1844,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844, 1844,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45, 1844,   45,   45,   45,
-       45,   45,   45,   45,   45, 1844,   45, 1844,   45, 1844,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45, 1883,
+       45,   45,   45,   45,   45, 1883, 1883,   45,   45,   45,
 
-       45, 1844, 1844,   45,   45,   45,   45,   45, 1844,   45,
-       45,   45, 1844,   45,   45,   45,   45,   45,   45,   45,
-       45, 1844,   45,   45, 1844,   45,   45,   45, 1844,   45,
-       45,   45, 1844,   45, 1844,   45,   45, 1844,   45,   45,
+     1883, 1883, 1883,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45, 1883,   45, 1883,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45, 1883,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45, 1883,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45, 1883,   45,   45,   45,   45,
+       45, 1883,   45,   45,   45, 1883,   45,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45, 1883,   45,   45,   45, 1883,
+       45,   45,   45,   45, 1883,   45, 1883,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-     1844,   45,   45,   45,   45,   45,   45,   45,   45,   45,
-       45,   45,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45, 1844,   45,   45, 1844,   45,   45,   45,   45,
-     1844, 1844, 1844,   45, 1844, 1844,   45,   45,   45, 1844,
-
-       45,   45,   45,   45,   45,   45, 1844,   45, 1844,   45,
-     1844, 1844,   45,   45,   45,   45,   45,   45, 1844,   45,
-       45, 1844,   45,   45,   45,   45,   45,   45,   45, 1844,
-       45,   45,   45,   45,   45, 1844, 1844,   45,   45,   45,
-       45, 1844, 1844,    0, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844
+       45,   45, 1883,   45,   45,   45,   45,   45,   45,   45,
+     1883,   45,   45,   45,   45, 1883,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+     1883,   45,   45,   45,   45,   45,   45,   45,   45, 1883,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1883, 1883,   45,   45,   45,   45,   45,   45,   45,
+       45, 1883,   45, 1883,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45, 1883,   45,   45,   45,   45,   45,   45,
+       45,   45, 1883,   45, 1883,   45, 1883,   45, 1883, 1883,
+       45,   45,   45,   45,   45, 1883,   45,   45,   45, 1883,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+     1883,   45,   45, 1883,   45,   45,   45, 1883,   45,   45,
+       45, 1883,   45, 1883,   45,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1883,   45,   45,   45,   45,   45,   45,   45,   45,
+
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45, 1883,   45,   45, 1883,   45,   45,   45, 1883,   45,
+       45,   45,   45, 1883, 1883, 1883,   45, 1883, 1883,   45,
+       45,   45, 1883,   45,   45,   45,   45,   45,   45,   45,
+     1883,   45, 1883,   45, 1883,   45, 1883,   45,   45,   45,
+       45,   45,   45,   45, 1883,   45,   45, 1883,   45,   45,
+       45,   45,   45,   45,   45,   45, 1883,   45,   45,   45,
+       45,   45, 1883,   45, 1883, 1883,   45,   45,   45,   45,
+     1883, 1883,    0, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883
+
     } ;
 
-static const flex_int16_t yy_nxt[2321] =
+static const flex_int16_t yy_nxt[2360] =
     {   0,
-     1844,   13,   14,   13, 1844,   15,   16, 1844,   17,   18,
+     1883,   13,   14,   13, 1883,   15,   16, 1883,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   22,   23,   24,
-       84,  754,   37,   14,   37,   85,   25,   26,   38,  100,
-     1844,   27,   37,   14,   37,   42,   28,   42,   38,   90,
+       84,  757,   37,   14,   37,   85,   25,   26,   38,  100,
+     1883,   27,   37,   14,   37,   42,   28,   42,   38,   90,
        91,   29,  197,   30,   13,   14,   13,   89,   90,   25,
        31,   91,   13,   14,   13,   13,   14,   13,   32,   40,
-      755,   13,   14,   13,   33,   40,  101,   90,   91,  197,
+      758,   13,   14,   13,   33,   40,  101,   90,   91,  197,
        89,   34,   35,   13,   14,   13,   93,   15,   16,   94,
        17,   18,   19,   20,   21,   22,   22,   22,   22,   22,
        23,   24,   13,   14,   13,   89,   39,  102,   25,   26,
@@ -1384,7 +1398,7 @@ static const flex_int16_t yy_nxt[2321] =
       106,   42,   41,   29,  108,   30,  111,  112,   92,  134,
        41,   25,   31,  102,  135,  452,   87,  136,   87,  105,
        32,   88,   88,   88,   88,   88,   33,  108,  106,  111,
-      844,  112,  453,   34,   35,   44,   44,   44,   45,   45,
+      847,  112,  453,   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,   45,
        48,   49,   50,   45,   51,   52,   53,   45,   45,   45,
@@ -1392,37 +1406,37 @@ static const flex_int16_t yy_nxt[2321] =
        58,   45,   59,   60,   61,   62,   63,   64,   65,   51,
 
        66,   67,   68,   69,   70,   71,   72,   73,   74,   75,
-       76,   77,   56,   45,   45,   45,   45,   45,   79,  845,
+       76,   77,   56,   45,   45,   45,   45,   45,   79,  848,
        80,   80,   80,   80,   80,   79,  102,   82,   82,   82,
        82,   82,  204,   81,   83,   83,   83,   83,   83,   79,
        81,   82,   82,   82,   82,   82,  105,   81,  118,  164,
       109,  129,  116,  165,   81,  204,   81,  201,  117,  119,
       110,  130,  120,   81,  121,  132,  122,  198,  184,  105,
-       81,  185,  133,  109,  846,  211,  847,   81,   45,  212,
+       81,  185,  133,  109,  849,  211,  850,   81,   45,  212,
       131,   45,   45,   45,  201,   45,   45,   45,  110,  114,
-      137,  848,   45,   45,  184,   45,   45,  185,  199,  184,
+      137,  851,   45,   45,  184,   45,   45,  185,  199,  184,
 
       138,   45,  139,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,  123,  187,   45,  124,  125,  185,
        45,  126,  127,  145,   45,  141,  142,  146,  293,  143,
-      108,  147,   45,  849,  128,  144,   45,  186,   45,  115,
+      108,  147,   45,  852,  128,  144,   45,  186,   45,  115,
       153,  186,  294,  148,  111,  188,  196,  149,  154,  150,
-      155,  151,  850,  152,  158,  156,  157,  159,  160,  166,
+      155,  151,  853,  152,  158,  156,  157,  159,  160,  166,
       173,  174,  227,  167,  228,  186,  168,  111,  161,  189,
       109,  162,  196,  169,  170,  203,  250,  180,  171,  172,
       110,  229,  181,   83,   83,   83,   83,   83,   88,   88,
 
        88,   88,   88,  175,  241,  176,   81,  251,  177,  178,
       100,   79,  203,   80,   80,   80,   80,   80,  110,   83,
-       83,   83,   83,   83,   99,  179,   81,  851,   87,   81,
+       83,   83,   83,   83,   99,  179,   81,  854,   87,   81,
        87,   99,   81,   88,   88,   88,   88,   88,   79,  193,
        82,   82,   82,   82,   82,  200,  202,  101,  242,   81,
-      232,  193,  852,   81,  214,   81,   88,   88,   88,   88,
+      232,  193,  855,   81,  214,   81,   88,   88,   88,   88,
        88,   99,  230,  215,  216,   99,  233,  193,  208,   99,
       221,  222,  503,  200,  202,  231,   81,   99,  200,  209,
       223,   99,  504,   99,  192,  207,  207,  207,  207,  207,
-      277,  732,  733,  264,  207,  207,  207,  207,  207,  207,
+      277,  735,  736,  264,  207,  207,  207,  207,  207,  207,
 
       236,  270,  201,  237,  271,  272,  258,  238,  265,  266,
       267,  274,  308,  307,  306,  275,  306,  207,  207,  207,
@@ -1433,102 +1447,102 @@ static const flex_int16_t yy_nxt[2321] =
       334,  316,  320,  438,  317,  335,  336,  422,  321,  430,
       326,  430,  412,  323,  324,  324,  324,  324,  324,  379,
       434,  517,  436,  324,  324,  324,  324,  324,  324,  434,
-      455,  438,  430,  461,  431,  456,  803,  476,  853,  462,
+      455,  438,  430,  461,  431,  456,  806,  476,  856,  462,
 
       384,  371,  477,  438,  372,  436,  324,  324,  324,  324,
-      324,  324,  441,  441,  441,  441,  441,  551,  442,  803,
+      324,  324,  441,  441,  441,  441,  441,  551,  442,  806,
       552,  441,  441,  441,  441,  441,  441,  491,  492,  493,
       498,  505,  563,  494,  521,  558,  499,  530,  522,  518,
-      559,  531,  563,  854,  441,  441,  441,  441,  441,  441,
-      478,  567,  535,  568,  582,  479,  536,  622,  590,  687,
-      563,  688,  583,  600,  584,  585,  586,  623,  601,  659,
-      569,  591,  686,  855,  660,  792,  802,  689,  567,  856,
-      568,   45,   45,   45,   45,   45,  687,  793,  857,  688,
-       45,   45,   45,   45,   45,   45,  765,  809,  810,  830,
-
-      811,  766,  858,  831,  802,  859,  860,  832,  861,  862,
-      863,  864,  865,   45,   45,   45,   45,   45,   45,  866,
-      867,  868,  869,  870,  871,  872,  873,  874,  875,  876,
+      559,  531,  563,  857,  441,  441,  441,  441,  441,  441,
+      478,  567,  535,  568,  582,  479,  536,  858,  591,  623,
+      563,  688,  583,  795,  584,  585,  586,  601,  587,  624,
+      569,  592,  602,  689,  660,  796,  805,  859,  567,  661,
+      568,   45,   45,   45,   45,   45,  707,  860,  688,  708,
+       45,   45,   45,   45,   45,   45,  861,  687,  768,  862,
+
+      865,  689,  690,  769,  805,  812,  813,  863,  814,  866,
+      864,  867,  868,   45,   45,   45,   45,   45,   45,  835,
+      869,  870,  871,  836,  872,  873,  874,  837,  875,  876,
       877,  878,  879,  880,  881,  882,  883,  884,  885,  886,
-      767,  887,  888,  889,  890,  891,  892,  893,  894,  895,
-      896,  897,  898,  899,  900,  902,  903,  906,  907,  908,
-      910,  901,  911,  904,  912,  909,  913,  905,  914,  915,
-      916,  917,  918,  919,  920,  921,  922,  923,  924,  925,
+      887,  888,  770,  889,  890,  891,  892,  893,  894,  895,
+      896,  897,  898,  899,  900,  901,  902,  903,  904,  905,
+      907,  908,  911,  912,  913,  915,  906,  916,  909,  917,
+      914,  918,  910,  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,  922,  950,  951,  952,  953,  954,
-      955,  956,  957,  958,  959,  960,  962,  963,  964,  965,
-      961,  966,  967,  968,  969,  970,  971,  972,  973,  974,
+      946,  947,  948,  949,  950,  951,  952,  953,  954,  927,
+      955,  956,  957,  958,  959,  960,  961,  962,  963,  964,
+      965,  966,  967,  969,  970,  971,  972,  968,  973,  974,
       975,  976,  977,  978,  979,  980,  981,  982,  983,  984,
-      986,  987,  988,  985,  989,  990,  991,  992,  993,  994,
-      995,  996,  997,  998,  999, 1000, 1001, 1002, 1003, 1004,
+      985,  986,  987,  988,  989,  990,  991,  993,  994,  995,
+      992,  996,  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, 1017, 1029, 1030, 1031, 1032, 1033, 1034,
-     1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044,
+     1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1025,
+     1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+     1024, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044,
 
      1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
-     1055, 1056, 1057, 1035, 1058, 1059, 1034, 1060, 1061, 1062,
-     1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
-     1073, 1074, 1075, 1078, 1079, 1080, 1081, 1076, 1082, 1083,
-     1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
-     1094, 1095, 1096, 1097, 1098, 1099, 1101, 1102, 1103, 1104,
-     1105, 1106, 1107, 1108, 1109, 1110, 1100, 1111, 1112, 1113,
-     1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123,
+     1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064,
+     1042, 1065, 1066, 1041, 1067, 1068, 1069, 1070, 1071, 1072,
+     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1084, 1087, 1088, 1089, 1090, 1085, 1091, 1092, 1093,
+     1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103,
+     1104, 1105, 1106, 1107, 1108, 1110, 1111, 1112, 1113, 1114,
+     1115, 1116, 1117, 1118, 1119, 1109, 1120, 1121, 1122, 1123,
      1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133,
-     1077, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1143,
+     1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1086,
 
-     1142, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 1152,
+     1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1152, 1151,
      1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162,
-     1163, 1164, 1165, 1166, 1167, 1168, 1141, 1142, 1169, 1170,
-     1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180,
-     1181, 1182, 1184, 1186, 1187, 1188, 1183, 1189, 1190, 1191,
-     1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201,
+     1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172,
+     1173, 1174, 1175, 1176, 1177, 1150, 1151, 1178, 1179, 1180,
+     1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190,
+     1191, 1192, 1193, 1195, 1197, 1198, 1199, 1194, 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, 1226, 1227, 1185, 1228, 1229, 1230,
-     1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240,
+     1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
+     1232, 1233, 1234, 1235, 1236, 1237, 1238, 1196, 1239, 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, 1244, 1267, 1268, 1269,
-     1270, 1271, 1245, 1272, 1273, 1274, 1275, 1276, 1277, 1278,
-     1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286, 1287, 1288,
+     1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270,
+     1271, 1272, 1273, 1274, 1275, 1276, 1277, 1255, 1278, 1279,
+     1280, 1281, 1282, 1256, 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, 1318, 1319,
-     1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329,
-     1330, 1331, 1332, 1333, 1334, 1335, 1336, 1338, 1339, 1340,
+     1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
+     1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, 1328,
+     1329, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339,
 
-     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
+     1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349,
      1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360,
-     1361, 1333, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369,
-     1317, 1370, 1371, 1372, 1373, 1374, 1375, 1377, 1378, 1379,
-     1337, 1380, 1381, 1382, 1376, 1383, 1384, 1385, 1386, 1387,
-     1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397,
+     1361, 1362, 1363, 1364, 1365, 1366, 1367, 1368, 1369, 1370,
+     1371, 1372, 1373, 1374, 1346, 1375, 1376, 1377, 1378, 1379,
+     1380, 1381, 1382, 1330, 1383, 1384, 1385, 1386, 1387, 1388,
+     1389, 1390, 1392, 1350, 1393, 1394, 1395, 1396, 1397, 1391,
      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, 1412, 1435, 1436,
+     1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437,
 
-     1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446,
-     1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456,
+     1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447,
+     1448, 1449, 1427, 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, 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1497,
-     1498, 1499, 1489, 1500, 1501, 1502, 1503, 1477, 1504, 1505,
-     1506, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516,
-     1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526,
+     1487, 1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1496,
+     1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505, 1507,
+     1508, 1509, 1510, 1511, 1512, 1513, 1514, 1515, 1516, 1506,
+     1517, 1518, 1519, 1520, 1494, 1521, 1522, 1523, 1524, 1525,
      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, 1557,
-     1558, 1559, 1560, 1556, 1561, 1562, 1563, 1564, 1507, 1565,
-     1566, 1567, 1541, 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,
+     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,
+     1578, 1579, 1580, 1581, 1577, 1582, 1583, 1526, 1584, 1585,
+     1586, 1560, 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, 1614,
      1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624,
@@ -1553,88 +1567,92 @@ static const flex_int16_t yy_nxt[2321] =
      1785, 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794,
      1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804,
      1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814,
-     1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1825,
-     1824, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
-
-     1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843,   12,
-       12,   12,   12,   12,   36,   36,   36,   36,   36,   78,
-      313,   78,   78,   78,   97,  433,   97,  562,   97,   99,
-       99,   99,   99,   99,  113,  113,  113,  113,  113,  183,
-       99,  183,  183,  183,  205,  205,  205,  843,  842,  841,
-      840,  839,  838,  837,  836,  835,  834,  833,  829,  828,
-      827,  826,  825,  824,  823,  822,  821,  820,  819,  818,
-      817,  816,  815,  814,  813,  812,  808,  807,  806,  805,
-      804,  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,  764,  763,  762,  761,  760,  759,  758,
-      757,  756,  753,  752,  751,  750,  749,  748,  747,  746,
-      745,  744,  743,  742,  741,  740,  739,  738,  737,  736,
-      735,  734,  731,  730,  729,  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,
+     1815, 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824,
+     1825, 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834,
+
+     1835, 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844,
+     1845, 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854,
+     1855, 1856, 1857, 1858, 1859, 1861, 1860, 1862, 1863, 1864,
+     1865, 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874,
+     1875, 1876, 1877, 1878, 1879, 1880, 1881, 1882,   12,   12,
+       12,   12,   12,   36,   36,   36,   36,   36,   78,  313,
+       78,   78,   78,   97,  433,   97,  562,   97,   99,   99,
+       99,   99,   99,  113,  113,  113,  113,  113,  183,   99,
+      183,  183,  183,  205,  205,  205,  846,  845,  844,  843,
+      842,  841,  840,  839,  838,  834,  833,  832,  831,  830,
+
+      829,  828,  827,  826,  825,  824,  823,  822,  821,  820,
+      819,  818,  817,  816,  815,  811,  810,  809,  808,  807,
+      804,  803,  802,  801,  800,  799,  798,  797,  794,  793,
+      792,  791,  790,  789,  788,  787,  786,  785,  784,  783,
+      782,  781,  780,  779,  778,  777,  776,  775,  774,  773,
+      772,  771,  767,  766,  765,  764,  763,  762,  761,  760,
+      759,  756,  755,  754,  753,  752,  751,  750,  749,  748,
+      747,  746,  745,  744,  743,  742,  741,  740,  739,  738,
+      737,  734,  733,  732,  731,  730,  729,  728,  727,  726,
+      725,  724,  723,  722,  721,  720,  719,  718,  717,  716,
+
+      715,  714,  713,  712,  711,  710,  709,  706,  705,  704,
       703,  702,  701,  700,  699,  698,  697,  696,  695,  694,
-      693,  692,  691,  690,  686,  685,  684,  683,  682,  681,
+      693,  692,  691,  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,
+      670,  669,  668,  667,  666,  665,  664,  663,  662,  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,  633,  632,  631,  630,  629,
-      628,  627,  626,  625,  624,  621,  620,  619,  618,  617,
+      628,  627,  626,  625,  622,  621,  620,  619,  618,  617,
       616,  615,  614,  613,  612,  611,  610,  609,  608,  607,
-      606,  605,  604,  603,  602,  599,  598,  597,  596,  595,
-      594,  593,  592,  589,  588,  587,  581,  580,  579,  578,
-      577,  576,  575,  574,  573,  572,  571,  570,  566,  565,
-      564,  561,  560,  557,  556,  555,  554,  553,  550,  549,
-
-      548,  547,  546,  545,  544,  543,  542,  541,  540,  539,
-      538,  537,  534,  533,  532,  529,  528,  527,  526,  525,
-      524,  523,  520,  519,  516,  515,  514,  513,  512,  511,
-      510,  509,  508,  507,  506,  502,  501,  500,  497,  496,
-      495,  490,  489,  488,  487,  486,  485,  484,  483,  482,
-      481,  480,  475,  474,  473,  472,  471,  470,  469,  468,
-      467,  466,  465,  464,  463,  460,  459,  458,  457,  454,
-      451,  450,  449,  448,  447,  446,  445,  444,  443,  440,
-      439,  437,  435,  432,  429,  428,  427,  426,  425,  424,
-      423,  421,  420,  419,  418,  417,  416,  415,  414,  413,
-
-      410,  409,  408,  407,  406,  405,  404,  401,  400,  399,
-      398,  397,  396,  395,  394,  393,  392,  391,  390,  389,
-      388,  387,  386,  385,  382,  381,  380,  378,  377,  376,
-      375,  374,  373,  369,  368,  367,  366,  365,  364,  363,
-      362,  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,  332,  331,  330,  329,
-      328,  327,  325,  206,  322,  320,  318,  315,  312,  305,
-      304,  303,  302,  301,  300,  299,  297,  296,  295,  292,
-      291,  290,  286,  276,  273,  269,  268,  263,  262,  261,
-
-      260,  259,  257,  256,  255,  254,  253,  252,  249,  248,
-      247,  246,  245,  244,  243,  240,  239,  235,  234,  226,
-      225,  224,  220,  219,  218,  217,  213,  210,  206,  195,
-      194,  191,  190,  182,  163,  140,  107,  104,  103,   43,
-       98,   96,   95,   86,   43, 1844,   11, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844
+
+      606,  605,  604,  603,  600,  599,  598,  597,  596,  595,
+      594,  593,  590,  589,  588,  581,  580,  579,  578,  577,
+      576,  575,  574,  573,  572,  571,  570,  566,  565,  564,
+      561,  560,  557,  556,  555,  554,  553,  550,  549,  548,
+      547,  546,  545,  544,  543,  542,  541,  540,  539,  538,
+      537,  534,  533,  532,  529,  528,  527,  526,  525,  524,
+      523,  520,  519,  516,  515,  514,  513,  512,  511,  510,
+      509,  508,  507,  506,  502,  501,  500,  497,  496,  495,
+      490,  489,  488,  487,  486,  485,  484,  483,  482,  481,
+      480,  475,  474,  473,  472,  471,  470,  469,  468,  467,
+
+      466,  465,  464,  463,  460,  459,  458,  457,  454,  451,
+      450,  449,  448,  447,  446,  445,  444,  443,  440,  439,
+      437,  435,  432,  429,  428,  427,  426,  425,  424,  423,
+      421,  420,  419,  418,  417,  416,  415,  414,  413,  410,
+      409,  408,  407,  406,  405,  404,  401,  400,  399,  398,
+      397,  396,  395,  394,  393,  392,  391,  390,  389,  388,
+      387,  386,  385,  382,  381,  380,  378,  377,  376,  375,
+      374,  373,  369,  368,  367,  366,  365,  364,  363,  362,
+      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,  332,  331,  330,  329,  328,
+      327,  325,  206,  322,  320,  318,  315,  312,  305,  304,
+      303,  302,  301,  300,  299,  297,  296,  295,  292,  291,
+      290,  286,  276,  273,  269,  268,  263,  262,  261,  260,
+      259,  257,  256,  255,  254,  253,  252,  249,  248,  247,
+      246,  245,  244,  243,  240,  239,  235,  234,  226,  225,
+      224,  220,  219,  218,  217,  213,  210,  206,  195,  194,
+      191,  190,  182,  163,  140,  107,  104,  103,   43,   98,
+       96,   95,   86,   43, 1883,   11, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883
     } ;
 
-static const flex_int16_t yy_chk[2321] =
+static const flex_int16_t yy_chk[2360] =
     {   0,
         0,    1,    1,    1,    0,    1,    1,    0,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-       21,  638,    3,    3,    3,   21,    1,    1,    3,   44,
+       21,  639,    3,    3,    3,   21,    1,    1,    3,   44,
         0,    1,    4,    4,    4,   13,    1,   13,    4,   27,
        28,    1,  106,    1,    5,    5,    5,   26,   32,    1,
         1,   33,    6,    6,    6,    7,    7,    7,    1,    7,
-      638,    8,    8,    8,    1,    8,   44,   27,   28,  106,
+      639,    8,    8,    8,    1,    8,   44,   27,   28,  106,
        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,
@@ -1643,7 +1661,7 @@ static const flex_int16_t yy_chk[2321] =
        51,   42,    9,    2,   53,    2,   55,   56,   31,   64,
        10,    2,    2,   47,   64,  336,   25,   64,   25,   50,
         2,   25,   25,   25,   25,   25,    2,   53,   51,   55,
-      726,   56,  336,    2,    2,   15,   15,   15,   15,   15,
+      727,   56,  336,    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,
@@ -1651,37 +1669,37 @@ static const flex_int16_t yy_chk[2321] =
        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,  727,
+       15,   15,   15,   15,   15,   15,   15,   15,   17,  728,
        17,   17,   17,   17,   17,   19,   58,   19,   19,   19,
        19,   19,  112,   17,   20,   20,   20,   20,   20,   22,
        19,   22,   22,   22,   22,   22,   62,   20,   59,   73,
        54,   61,   58,   73,   22,  112,   17,  109,   58,   59,
        54,   61,   59,   19,   59,   63,   59,  107,   89,   62,
-       20,   90,   63,   54,  728,  118,  729,   22,   45,  118,
+       20,   90,   63,   54,  729,  118,  730,   22,   45,  118,
        62,   45,   45,   45,  109,   45,   45,   45,   54,   57,
-       65,  730,   45,   45,   89,   45,   57,   90,  107,   92,
+       65,  731,   45,   45,   89,   45,   57,   90,  107,   92,
 
        65,   45,   65,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
        45,   45,   45,   45,   60,   92,   57,   60,   60,   93,
        57,   60,   60,   68,   57,   67,   67,   68,  171,   67,
-       69,   68,   57,  731,   60,   67,   57,   91,   57,   57,
+       69,   68,   57,  732,   60,   67,   57,   91,   57,   57,
        70,   94,  171,   68,   76,   93,  105,   68,   70,   69,
-       70,   69,  732,   69,   71,   70,   70,   71,   71,   74,
+       70,   69,  733,   69,   71,   70,   70,   71,   71,   74,
        75,   75,  129,   74,  129,   91,   74,   76,   71,   94,
        75,   71,  105,   74,   74,  111,  145,   76,   74,   74,
        75,  129,   76,   79,   79,   79,   79,   79,   87,   87,
 
        87,   87,   87,   75,  137,   75,   79,  145,   75,   75,
        99,   80,  111,   80,   80,   80,   80,   80,   75,   83,
-       83,   83,   83,   83,  101,   75,   80,  733,   81,   79,
+       83,   83,   83,   83,  101,   75,   80,  734,   81,   79,
        81,  101,   83,   81,   81,   81,   81,   81,   82,  102,
        82,   82,   82,   82,   82,  108,  110,   99,  137,   80,
-      131,  116,  734,   82,  120,   83,   88,   88,   88,   88,
+      131,  116,  735,   82,  120,   83,   88,   88,   88,   88,
        88,  101,  130,  120,  120,  101,  131,  102,  116,  101,
       125,  125,  378,  108,  110,  130,   82,  101,  152,  116,
       125,  101,  378,  101,  101,  115,  115,  115,  115,  115,
-      165,  615,  615,  158,  115,  115,  115,  115,  115,  115,
+      165,  616,  616,  158,  115,  115,  115,  115,  115,  115,
 
       134,  161,  175,  134,  161,  161,  152,  134,  158,  158,
       158,  163,  186,  185,  184,  163,  187,  115,  115,  115,
@@ -1692,197 +1710,201 @@ static const flex_int16_t yy_chk[2321] =
       216,  196,  298,  319,  197,  216,  216,  298,  202,  306,
       209,  309,  288,  204,  207,  207,  207,  207,  207,  258,
       314,  392,  316,  207,  207,  207,  207,  207,  207,  326,
-      339,  319,  306,  344,  309,  339,  688,  358,  735,  344,
+      339,  319,  306,  344,  309,  339,  689,  358,  736,  344,
 
       262,  251,  358,  379,  251,  316,  207,  207,  207,  207,
-      207,  207,  324,  324,  324,  324,  324,  422,  326,  688,
+      207,  207,  324,  324,  324,  324,  324,  422,  326,  689,
       422,  324,  324,  324,  324,  324,  324,  370,  370,  370,
       374,  379,  434,  370,  395,  428,  374,  403,  395,  392,
-      428,  403,  442,  736,  324,  324,  324,  324,  324,  324,
-      358,  440,  407,  440,  457,  358,  407,  493,  461,  567,
-      434,  568,  457,  471,  457,  457,  457,  493,  471,  532,
-      442,  461,  569,  737,  532,  676,  687,  569,  440,  738,
-      440,  441,  441,  441,  441,  441,  567,  676,  739,  568,
-      441,  441,  441,  441,  441,  441,  649,  694,  694,  713,
-
-      694,  649,  740,  713,  687,  740,  741,  713,  742,  743,
-      745,  746,  747,  441,  441,  441,  441,  441,  441,  748,
-      749,  750,  751,  752,  753,  755,  756,  757,  758,  759,
-      760,  761,  762,  763,  764,  766,  767,  768,  769,  770,
-      649,  771,  772,  773,  774,  775,  776,  777,  778,  779,
-      780,  781,  782,  783,  784,  785,  786,  787,  788,  789,
-      790,  784,  791,  786,  793,  789,  794,  786,  795,  796,
-      797,  798,  799,  800,  801,  802,  803,  804,  805,  806,
-      807,  809,  810,  811,  812,  813,  814,  815,  816,  817,
-      818,  819,  820,  821,  822,  823,  824,  825,  826,  827,
-
-      828,  829,  830,  831,  803,  832,  833,  834,  835,  836,
-      838,  839,  840,  841,  842,  843,  844,  845,  846,  847,
-      843,  848,  849,  850,  851,  852,  855,  856,  857,  858,
-      859,  860,  861,  864,  865,  866,  867,  868,  869,  870,
-      871,  872,  873,  870,  874,  875,  876,  878,  880,  881,
-      882,  883,  884,  885,  886,  887,  888,  889,  890,  891,
-      892,  893,  894,  895,  896,  897,  898,  899,  900,  901,
-      902,  903,  904,  905,  906,  907,  908,  909,  910,  911,
-      913,  914,  915,  903,  916,  917,  918,  919,  920,  921,
-      922,  923,  924,  926,  927,  928,  929,  930,  931,  932,
-
-      933,  934,  935,  936,  937,  938,  939,  940,  941,  942,
-      943,  944,  945,  922,  946,  948,  921,  949,  950,  951,
-      952,  953,  954,  955,  956,  957,  958,  959,  961,  962,
-      963,  964,  965,  966,  968,  969,  970,  965,  971,  972,
-      973,  974,  975,  976,  977,  978,  979,  980,  981,  982,
-      983,  984,  985,  986,  987,  988,  989,  990,  993,  994,
-      995,  997,  998,  999, 1000, 1002,  988, 1003, 1004, 1005,
-     1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
-     1016, 1017, 1018, 1019, 1021, 1022, 1023, 1024, 1025, 1026,
-      965, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1036,
-
-     1035, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
-     1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
-     1057, 1058, 1059, 1060, 1061, 1062, 1034, 1035, 1063, 1064,
-     1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074,
-     1076, 1077, 1078, 1079, 1080, 1081, 1077, 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, 1110, 1111, 1112, 1113, 1114, 1115,
-     1116, 1117, 1118, 1119, 1120, 1122, 1078, 1123, 1126, 1127,
-     1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137,
-
-     1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147,
-     1148, 1149, 1150, 1151, 1152, 1154, 1155, 1156, 1157, 1158,
-     1159, 1161, 1162, 1163, 1164, 1165, 1141, 1166, 1167, 1168,
-     1169, 1170, 1142, 1171, 1172, 1173, 1174, 1175, 1176, 1177,
-     1178, 1181, 1183, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
-     1192, 1193, 1194, 1195, 1196, 1197, 1198, 1200, 1201, 1202,
-     1204, 1205, 1206, 1207, 1208, 1211, 1213, 1215, 1216, 1217,
-     1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227,
-     1228, 1229, 1231, 1232, 1233, 1234, 1235, 1238, 1239, 1240,
-     1241, 1242, 1243, 1244, 1245, 1247, 1248, 1249, 1250, 1251,
-
-     1252, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262,
-     1263, 1264, 1265, 1266, 1267, 1268, 1270, 1271, 1272, 1273,
-     1274, 1244, 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282,
-     1225, 1283, 1284, 1285, 1287, 1288, 1289, 1290, 1291, 1292,
-     1248, 1293, 1294, 1295, 1289, 1296, 1297, 1300, 1301, 1302,
-     1303, 1304, 1305, 1306, 1307, 1308, 1309, 1310, 1311, 1313,
-     1314, 1315, 1316, 1317, 1318, 1320, 1322, 1325, 1326, 1327,
-     1329, 1330, 1331, 1332, 1333, 1335, 1337, 1338, 1339, 1340,
-     1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350,
-     1351, 1352, 1354, 1356, 1357, 1358, 1359, 1333, 1360, 1361,
-
-     1362, 1363, 1364, 1365, 1366, 1368, 1371, 1373, 1374, 1375,
-     1376, 1377, 1378, 1379, 1380, 1381, 1382, 1384, 1385, 1386,
-     1387, 1388, 1389, 1390, 1393, 1394, 1396, 1397, 1398, 1399,
-     1400, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1411,
-     1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421,
-     1422, 1423, 1424, 1425, 1426, 1427, 1429, 1430, 1431, 1433,
-     1434, 1435, 1423, 1436, 1437, 1438, 1439, 1412, 1440, 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, 1469, 1470, 1471,
-
-     1472, 1474, 1475, 1476, 1477, 1478, 1481, 1482, 1483, 1487,
-     1488, 1489, 1490, 1491, 1492, 1493, 1494, 1495, 1497, 1498,
-     1499, 1500, 1501, 1497, 1502, 1503, 1504, 1505, 1441, 1507,
-     1508, 1510, 1477, 1512, 1513, 1514, 1516, 1517, 1518, 1519,
-     1520, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,
-     1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1541,
-     1542, 1543, 1544, 1546, 1547, 1548, 1549, 1550, 1551, 1552,
-     1553, 1554, 1556, 1557, 1558, 1559, 1560, 1562, 1563, 1564,
-     1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1575, 1576,
-     1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1586, 1587,
-
-     1588, 1590, 1591, 1592, 1593, 1595, 1597, 1598, 1599, 1600,
-     1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1611,
-     1612, 1613, 1614, 1615, 1616, 1617, 1619, 1620, 1621, 1622,
-     1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633,
-     1635, 1636, 1637, 1639, 1640, 1641, 1642, 1643, 1644, 1645,
-     1646, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656,
-     1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1668, 1670,
-     1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, 1679, 1680,
-     1681, 1682, 1683, 1684, 1685, 1686, 1688, 1689, 1690, 1691,
-     1692, 1693, 1694, 1695, 1697, 1699, 1701, 1704, 1705, 1706,
-
-     1707, 1708, 1710, 1711, 1712, 1714, 1715, 1716, 1717, 1718,
-     1719, 1720, 1721, 1723, 1724, 1726, 1727, 1728, 1730, 1731,
-     1732, 1734, 1736, 1737, 1739, 1740, 1741, 1742, 1743, 1744,
-     1745, 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754,
-     1755, 1756, 1757, 1758, 1759, 1760, 1762, 1763, 1764, 1765,
-     1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775,
-     1776, 1777, 1778, 1779, 1781, 1782, 1784, 1785, 1787, 1788,
-     1789, 1790, 1794, 1797, 1798, 1799, 1801, 1802, 1803, 1804,
-     1805, 1806, 1808, 1810, 1813, 1814, 1815, 1816, 1817, 1818,
-     1817, 1820, 1821, 1823, 1824, 1825, 1826, 1827, 1828, 1829,
-
-     1831, 1832, 1833, 1834, 1835, 1838, 1839, 1840, 1841, 1845,
-     1845, 1845, 1845, 1845, 1846, 1846, 1846, 1846, 1846, 1847,
-     1853, 1847, 1847, 1847, 1848, 1854, 1848, 1855, 1848, 1849,
-     1849, 1849, 1849, 1849, 1850, 1850, 1850, 1850, 1850, 1851,
-     1856, 1851, 1851, 1851, 1852, 1852, 1852,  725,  724,  723,
-      722,  720,  719,  718,  717,  716,  715,  714,  712,  711,
-      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
-      700,  699,  698,  697,  696,  695,  693,  692,  691,  690,
-      689,  684,  683,  682,  681,  680,  679,  678,  677,  675,
-      674,  672,  671,  670,  669,  668,  667,  666,  665,  664,
+      428,  403,  442,  737,  324,  324,  324,  324,  324,  324,
+      358,  440,  407,  440,  457,  358,  407,  738,  461,  493,
+      434,  567,  457,  677,  457,  457,  457,  471,  457,  493,
+      442,  461,  471,  568,  532,  677,  688,  739,  440,  532,
+      440,  441,  441,  441,  441,  441,  587,  740,  567,  587,
+      441,  441,  441,  441,  441,  441,  741,  569,  650,  742,
+
+      744,  568,  569,  650,  688,  695,  695,  743,  695,  745,
+      743,  746,  748,  441,  441,  441,  441,  441,  441,  716,
+      749,  750,  751,  716,  752,  753,  754,  716,  755,  756,
+      758,  759,  760,  761,  762,  763,  764,  765,  766,  767,
+      769,  770,  650,  771,  772,  773,  774,  775,  776,  777,
+      778,  779,  780,  781,  782,  783,  784,  785,  786,  787,
+      788,  789,  790,  791,  792,  793,  787,  794,  789,  796,
+      792,  797,  789,  798,  799,  800,  801,  802,  803,  804,
+      805,  806,  807,  808,  809,  810,  812,  813,  814,  815,
+      816,  817,  818,  819,  820,  821,  822,  823,  824,  825,
+
+      826,  827,  828,  829,  830,  831,  832,  833,  834,  806,
+      835,  836,  837,  838,  839,  840,  841,  843,  844,  845,
+      846,  847,  848,  849,  850,  851,  852,  848,  853,  854,
+      855,  856,  857,  860,  861,  862,  863,  864,  865,  866,
+      869,  870,  871,  872,  873,  874,  875,  876,  877,  878,
+      875,  879,  880,  881,  883,  885,  886,  887,  888,  889,
+      890,  891,  892,  893,  894,  895,  896,  897,  898,  899,
+      900,  901,  902,  903,  904,  905,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  916,  918,  919,  920,
+      908,  921,  922,  923,  924,  925,  926,  927,  928,  929,
+
+      931,  932,  933,  934,  935,  936,  937,  938,  939,  940,
+      941,  942,  943,  944,  945,  946,  947,  948,  949,  950,
+      927,  951,  952,  926,  953,  955,  956,  957,  958,  959,
+      960,  961,  962,  963,  964,  965,  966,  968,  969,  970,
+      971,  972,  973,  975,  976,  977,  972,  978,  979,  980,
+      981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
+      991,  992,  993,  994,  995,  996,  997, 1000, 1001, 1002,
+     1004, 1005, 1006, 1007, 1009,  995, 1010, 1011, 1012, 1013,
+     1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023,
+     1024, 1025, 1026, 1028, 1029, 1030, 1031, 1032, 1033,  972,
+
+     1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1043, 1042,
+     1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053,
+     1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063,
+     1064, 1066, 1067, 1068, 1069, 1041, 1042, 1070, 1071, 1072,
+     1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,
+     1083, 1085, 1086, 1087, 1088, 1089, 1090, 1086, 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, 1119, 1120, 1121, 1122, 1123,
+     1124, 1125, 1126, 1127, 1128, 1129, 1131, 1087, 1132, 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, 1163, 1164, 1165, 1166,
+     1167, 1168, 1169, 1170, 1172, 1173, 1174, 1150, 1175, 1176,
+     1177, 1178, 1179, 1151, 1180, 1181, 1182, 1183, 1184, 1185,
+     1186, 1187, 1188, 1189, 1192, 1194, 1196, 1197, 1198, 1199,
+     1200, 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209,
+     1211, 1212, 1213, 1215, 1216, 1217, 1218, 1219, 1222, 1224,
+     1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235,
+     1236, 1237, 1238, 1239, 1240, 1242, 1243, 1244, 1245, 1246,
+
+     1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1258, 1259,
+     1260, 1261, 1262, 1263, 1265, 1266, 1267, 1268, 1269, 1270,
+     1271, 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280,
+     1281, 1283, 1284, 1285, 1255, 1286, 1287, 1288, 1289, 1290,
+     1291, 1292, 1293, 1236, 1294, 1295, 1296, 1297, 1298, 1300,
+     1301, 1302, 1303, 1259, 1304, 1305, 1306, 1307, 1308, 1302,
+     1309, 1310, 1313, 1314, 1315, 1316, 1317, 1318, 1319, 1320,
+     1321, 1322, 1323, 1324, 1326, 1327, 1328, 1329, 1330, 1331,
+     1333, 1335, 1338, 1339, 1340, 1342, 1343, 1344, 1345, 1346,
+     1348, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358,
+
+     1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1367, 1369,
+     1371, 1372, 1346, 1373, 1374, 1375, 1376, 1377, 1378, 1379,
+     1380, 1381, 1383, 1386, 1388, 1389, 1390, 1391, 1392, 1393,
+     1394, 1395, 1396, 1397, 1399, 1400, 1401, 1402, 1403, 1404,
+     1405, 1408, 1409, 1411, 1412, 1413, 1414, 1415, 1417, 1418,
+     1419, 1420, 1421, 1422, 1423, 1424, 1426, 1427, 1428, 1429,
+     1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439,
+     1440, 1441, 1442, 1443, 1444, 1446, 1447, 1448, 1450, 1438,
+     1451, 1452, 1453, 1454, 1427, 1455, 1456, 1457, 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, 1486, 1487, 1488, 1489,
+     1491, 1492, 1493, 1494, 1495, 1498, 1499, 1500, 1504, 1505,
+     1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1516,
+     1517, 1518, 1519, 1520, 1516, 1521, 1522, 1458, 1523, 1524,
+     1526, 1494, 1527, 1529, 1531, 1532, 1533, 1535, 1536, 1537,
+     1538, 1539, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548,
+     1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558,
+     1560, 1561, 1562, 1563, 1565, 1566, 1567, 1568, 1569, 1570,
+     1571, 1572, 1573, 1574, 1575, 1577, 1578, 1579, 1580, 1581,
+
+     1583, 1584, 1585, 1587, 1588, 1589, 1590, 1591, 1592, 1593,
+     1594, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604,
+     1605, 1607, 1608, 1609, 1611, 1612, 1613, 1614, 1616, 1618,
+     1619, 1620, 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628,
+     1629, 1630, 1631, 1632, 1634, 1635, 1636, 1637, 1638, 1639,
+     1640, 1642, 1643, 1644, 1645, 1647, 1648, 1649, 1650, 1651,
+     1652, 1653, 1654, 1655, 1656, 1658, 1659, 1660, 1662, 1663,
+     1664, 1665, 1666, 1667, 1668, 1669, 1671, 1672, 1673, 1674,
+     1675, 1676, 1677, 1678, 1679, 1680, 1681, 1684, 1685, 1686,
+     1687, 1688, 1689, 1690, 1691, 1693, 1695, 1696, 1697, 1698,
+
+     1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708,
+     1709, 1710, 1711, 1712, 1713, 1715, 1716, 1717, 1718, 1719,
+     1720, 1721, 1722, 1724, 1726, 1728, 1731, 1732, 1733, 1734,
+     1735, 1737, 1738, 1739, 1741, 1742, 1743, 1744, 1745, 1746,
+     1747, 1748, 1749, 1750, 1752, 1753, 1755, 1756, 1757, 1759,
+     1760, 1761, 1763, 1765, 1766, 1768, 1769, 1770, 1771, 1772,
+     1773, 1774, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783,
+     1784, 1785, 1786, 1787, 1788, 1789, 1790, 1791, 1793, 1794,
+     1795, 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804,
+     1805, 1806, 1807, 1808, 1809, 1810, 1811, 1813, 1814, 1816,
+
+     1817, 1818, 1820, 1821, 1822, 1823, 1827, 1830, 1831, 1832,
+     1834, 1835, 1836, 1837, 1838, 1839, 1840, 1842, 1844, 1846,
+     1848, 1849, 1850, 1851, 1852, 1853, 1852, 1854, 1856, 1857,
+     1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1868, 1869,
+     1870, 1871, 1872, 1874, 1877, 1878, 1879, 1880, 1884, 1884,
+     1884, 1884, 1884, 1885, 1885, 1885, 1885, 1885, 1886, 1892,
+     1886, 1886, 1886, 1887, 1893, 1887, 1894, 1887, 1888, 1888,
+     1888, 1888, 1888, 1889, 1889, 1889, 1889, 1889, 1890, 1895,
+     1890, 1890, 1890, 1891, 1891, 1891,  726,  725,  723,  722,
+      721,  720,  719,  718,  717,  715,  714,  713,  712,  711,
 
-      663,  662,  661,  660,  658,  657,  656,  655,  654,  653,
-      652,  651,  650,  648,  647,  645,  644,  643,  642,  641,
-      640,  639,  637,  636,  635,  633,  632,  630,  629,  628,
+      710,  709,  708,  707,  706,  705,  704,  703,  702,  701,
+      700,  699,  698,  697,  696,  694,  693,  692,  691,  690,
+      685,  684,  683,  682,  681,  680,  679,  678,  676,  675,
+      673,  672,  671,  670,  669,  668,  667,  666,  665,  664,
+      663,  662,  661,  659,  658,  657,  656,  655,  654,  653,
+      652,  651,  649,  648,  646,  645,  644,  643,  642,  641,
+      640,  638,  637,  636,  634,  633,  631,  630,  629,  628,
       627,  626,  625,  624,  623,  622,  621,  620,  619,  618,
-      617,  616,  614,  613,  612,  611,  610,  608,  607,  606,
-      605,  604,  603,  602,  601,  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,  563,  561,  560,  559,  557,  554,
-      552,  551,  550,  549,  548,  547,  546,  545,  544,  543,
-
-      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
-      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
-      521,  520,  518,  516,  515,  514,  513,  512,  511,  510,
-      509,  508,  507,  506,  505,  504,  503,  501,  500,  499,
-      498,  497,  496,  495,  494,  492,  491,  490,  489,  488,
-      487,  486,  485,  484,  483,  482,  481,  480,  479,  478,
-      477,  475,  474,  473,  472,  470,  469,  468,  467,  466,
-      465,  463,  462,  460,  459,  458,  456,  454,  453,  452,
-      451,  450,  449,  448,  446,  445,  444,  443,  438,  436,
-      435,  432,  429,  427,  426,  425,  424,  423,  421,  420,
-
-      419,  418,  417,  416,  415,  414,  413,  412,  411,  410,
-      409,  408,  406,  405,  404,  402,  401,  400,  399,  398,
-      397,  396,  394,  393,  391,  390,  389,  388,  387,  386,
-      385,  384,  383,  382,  381,  377,  376,  375,  373,  372,
-      371,  369,  368,  367,  366,  365,  364,  363,  362,  361,
-      360,  359,  357,  356,  355,  354,  353,  352,  351,  350,
-      349,  348,  347,  346,  345,  343,  342,  341,  340,  338,
-      335,  334,  333,  332,  331,  330,  329,  328,  327,  323,
-      321,  317,  315,  312,  305,  304,  303,  302,  301,  300,
-      299,  297,  296,  295,  294,  293,  292,  291,  290,  289,
-
-      287,  286,  285,  284,  283,  282,  281,  279,  278,  277,
-      276,  275,  274,  273,  272,  271,  270,  269,  268,  267,
-      266,  265,  264,  263,  261,  260,  259,  257,  256,  255,
-      254,  253,  252,  250,  249,  248,  247,  246,  245,  244,
-      243,  242,  240,  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,  210,  208,  205,  203,  201,  199,  194,  190,  182,
-      181,  180,  179,  178,  177,  176,  174,  173,  172,  170,
-      169,  168,  166,  164,  162,  160,  159,  157,  156,  155,
-
-      154,  153,  151,  150,  149,  148,  147,  146,  144,  143,
-      142,  141,  140,  139,  138,  136,  135,  133,  132,  128,
-      127,  126,  124,  123,  122,  121,  119,  117,  113,  104,
-      103,   97,   96,   77,   72,   66,   52,   49,   48,   43,
-       41,   39,   38,   24,   14,   11, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844,
-     1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844, 1844
+      617,  615,  614,  613,  612,  611,  609,  608,  607,  606,
+      605,  604,  603,  602,  600,  599,  598,  597,  596,  595,
+
+      594,  593,  592,  591,  590,  589,  588,  586,  585,  584,
+      583,  582,  581,  580,  579,  578,  577,  576,  575,  574,
+      573,  572,  571,  563,  561,  560,  559,  557,  554,  552,
+      551,  550,  549,  548,  547,  546,  545,  544,  543,  542,
+      541,  540,  539,  538,  537,  536,  535,  534,  533,  531,
+      530,  529,  528,  527,  526,  525,  524,  523,  522,  521,
+      520,  518,  516,  515,  514,  513,  512,  511,  510,  509,
+      508,  507,  506,  505,  504,  503,  501,  500,  499,  498,
+      497,  496,  495,  494,  492,  491,  490,  489,  488,  487,
+      486,  485,  484,  483,  482,  481,  480,  479,  478,  477,
+
+      475,  474,  473,  472,  470,  469,  468,  467,  466,  465,
+      463,  462,  460,  459,  458,  456,  454,  453,  452,  451,
+      450,  449,  448,  446,  445,  444,  443,  438,  436,  435,
+      432,  429,  427,  426,  425,  424,  423,  421,  420,  419,
+      418,  417,  416,  415,  414,  413,  412,  411,  410,  409,
+      408,  406,  405,  404,  402,  401,  400,  399,  398,  397,
+      396,  394,  393,  391,  390,  389,  388,  387,  386,  385,
+      384,  383,  382,  381,  377,  376,  375,  373,  372,  371,
+      369,  368,  367,  366,  365,  364,  363,  362,  361,  360,
+      359,  357,  356,  355,  354,  353,  352,  351,  350,  349,
+
+      348,  347,  346,  345,  343,  342,  341,  340,  338,  335,
+      334,  333,  332,  331,  330,  329,  328,  327,  323,  321,
+      317,  315,  312,  305,  304,  303,  302,  301,  300,  299,
+      297,  296,  295,  294,  293,  292,  291,  290,  289,  287,
+      286,  285,  284,  283,  282,  281,  279,  278,  277,  276,
+      275,  274,  273,  272,  271,  270,  269,  268,  267,  266,
+      265,  264,  263,  261,  260,  259,  257,  256,  255,  254,
+      253,  252,  250,  249,  248,  247,  246,  245,  244,  243,
+      242,  240,  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,
+      210,  208,  205,  203,  201,  199,  194,  190,  182,  181,
+      180,  179,  178,  177,  176,  174,  173,  172,  170,  169,
+      168,  166,  164,  162,  160,  159,  157,  156,  155,  154,
+      153,  151,  150,  149,  148,  147,  146,  144,  143,  142,
+      141,  140,  139,  138,  136,  135,  133,  132,  128,  127,
+      126,  124,  123,  122,  121,  119,  117,  113,  104,  103,
+       97,   96,   77,   72,   66,   52,   49,   48,   43,   41,
+       39,   38,   24,   14,   11, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
+     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1891,7 +1913,7 @@ static char *yy_last_accepting_cpos;
 extern int yy_flex_debug;
 int yy_flex_debug = 1;
 
-static const flex_int16_t yy_rule_linenum[204] =
+static const flex_int16_t yy_rule_linenum[206] =
     {   0,
       147,  149,  151,  156,  157,  162,  163,  164,  176,  179,
       184,  191,  200,  209,  218,  227,  236,  245,  254,  263,
@@ -1902,20 +1924,20 @@ static const flex_int16_t yy_rule_linenum[204] =
       662,  673,  684,  695,  706,  717,  728,  739,  750,  761,
       772,  783,  792,  803,  814,  825,  836,  847,  858,  869,
       880,  889,  898,  907,  916,  927,  938,  949,  960,  971,
-      982,  992, 1003, 1012, 1021, 1036, 1052, 1061, 1070, 1079,
-
-     1088, 1097, 1106, 1115, 1124, 1133, 1142, 1166, 1190, 1199,
-     1209, 1219, 1228, 1238, 1249, 1258, 1267, 1276, 1285, 1294,
-     1304, 1313, 1322, 1331, 1342, 1353, 1364, 1373, 1382, 1391,
-     1400, 1409, 1418, 1427, 1436, 1445, 1455, 1467, 1480, 1489,
-     1498, 1508, 1518, 1527, 1538, 1548, 1557, 1567, 1577, 1586,
-     1595, 1604, 1613, 1623, 1632, 1641, 1650, 1659, 1668, 1677,
-     1686, 1695, 1704, 1713, 1722, 1731, 1740, 1749, 1758, 1767,
-     1776, 1785, 1794, 1803, 1812, 1821, 1830, 1839, 1848, 1857,
-     1866, 1875, 1884, 1893, 1902, 1911, 2010, 2015, 2020, 2025,
-     2026, 2027, 2028, 2029, 2030, 2032, 2050, 2063, 2068, 2072,
-
-     2074, 2076, 2078
+      982,  993, 1005, 1015, 1026, 1035, 1044, 1059, 1075, 1084,
+
+     1093, 1102, 1111, 1120, 1129, 1138, 1147, 1156, 1165, 1189,
+     1213, 1222, 1232, 1242, 1251, 1261, 1272, 1281, 1290, 1299,
+     1308, 1317, 1327, 1336, 1345, 1354, 1365, 1376, 1387, 1396,
+     1405, 1414, 1423, 1432, 1441, 1450, 1459, 1468, 1478, 1490,
+     1503, 1512, 1521, 1531, 1541, 1550, 1561, 1571, 1580, 1590,
+     1600, 1609, 1618, 1627, 1636, 1646, 1655, 1664, 1673, 1682,
+     1691, 1700, 1709, 1718, 1727, 1736, 1745, 1754, 1763, 1772,
+     1781, 1790, 1799, 1808, 1817, 1826, 1835, 1844, 1853, 1862,
+     1871, 1880, 1889, 1898, 1907, 1916, 1925, 1934, 2033, 2038,
+     2043, 2048, 2049, 2050, 2051, 2052, 2053, 2055, 2073, 2086,
+
+     2091, 2095, 2097, 2099, 2101
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -1968,7 +1990,7 @@ using namespace isc::dhcp;
 
 /* To avoid the call to exit... oops! */
 #define YY_FATAL_ERROR(msg) isc::dhcp::Parser6Context::fatal(msg)
-#line 1971 "dhcp6_lexer.cc"
+#line 1993 "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
@@ -1994,8 +2016,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 1997 "dhcp6_lexer.cc"
-#line 1998 "dhcp6_lexer.cc"
+#line 2019 "dhcp6_lexer.cc"
+#line 2020 "dhcp6_lexer.cc"
 
 #define INITIAL 0
 #define COMMENT 1
@@ -2325,7 +2347,7 @@ YY_DECL
     }
 
 
-#line 2328 "dhcp6_lexer.cc"
+#line 2350 "dhcp6_lexer.cc"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2354,13 +2376,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 >= 1845 )
+                               if ( yy_current_state >= 1884 )
                                        yy_c = yy_meta[yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 1844 );
+               while ( yy_current_state != 1883 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -2379,13 +2401,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 < 204 )
+                       else if ( yy_act < 206 )
                                fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
                                         (long)yy_rule_linenum[yy_act], yytext );
-                       else if ( yy_act == 204 )
+                       else if ( yy_act == 206 )
                                fprintf( stderr, "--accepting default rule (\"%s\")\n",
                                         yytext );
-                       else if ( yy_act == 205 )
+                       else if ( yy_act == 207 )
                                fprintf( stderr, "--(end of buffer or a NUL)\n" );
                        else
                                fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
@@ -3520,6 +3542,34 @@ YY_RULE_SETUP
 case 91:
 YY_RULE_SETUP
 #line 982 "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_DDNS_UPDATE_ON_RENEW(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("ddns-update-on-renew", driver.loc_);
+    }
+}
+       YY_BREAK
+case 92:
+YY_RULE_SETUP
+#line 993 "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_DDNS_USE_CONFLICT_RESOLUTION(driver.loc_);
+    default:
+        return isc::dhcp::Dhcp6Parser::make_STRING("ddns-use-conflict-resolution", driver.loc_);
+    }
+}
+       YY_BREAK
+case 93:
+YY_RULE_SETUP
+#line 1005 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3530,9 +3580,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 92:
+case 94:
 YY_RULE_SETUP
-#line 992 "dhcp6_lexer.ll"
+#line 1015 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3544,9 +3594,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 93:
+case 95:
 YY_RULE_SETUP
-#line 1003 "dhcp6_lexer.ll"
+#line 1026 "dhcp6_lexer.ll"
 {
     switch (driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3556,9 +3606,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 94:
+case 96:
 YY_RULE_SETUP
-#line 1012 "dhcp6_lexer.ll"
+#line 1035 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3568,9 +3618,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 95:
+case 97:
 YY_RULE_SETUP
-#line 1021 "dhcp6_lexer.ll"
+#line 1044 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3586,9 +3636,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 96:
+case 98:
 YY_RULE_SETUP
-#line 1036 "dhcp6_lexer.ll"
+#line 1059 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LEASE_DATABASE:
@@ -3605,9 +3655,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 97:
+case 99:
 YY_RULE_SETUP
-#line 1052 "dhcp6_lexer.ll"
+#line 1075 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3617,9 +3667,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 98:
+case 100:
 YY_RULE_SETUP
-#line 1061 "dhcp6_lexer.ll"
+#line 1084 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -3629,9 +3679,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 99:
+case 101:
 YY_RULE_SETUP
-#line 1070 "dhcp6_lexer.ll"
+#line 1093 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3641,9 +3691,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 100:
+case 102:
 YY_RULE_SETUP
-#line 1079 "dhcp6_lexer.ll"
+#line 1102 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3653,9 +3703,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 101:
+case 103:
 YY_RULE_SETUP
-#line 1088 "dhcp6_lexer.ll"
+#line 1111 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3665,9 +3715,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 102:
+case 104:
 YY_RULE_SETUP
-#line 1097 "dhcp6_lexer.ll"
+#line 1120 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3677,9 +3727,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 103:
+case 105:
 YY_RULE_SETUP
-#line 1106 "dhcp6_lexer.ll"
+#line 1129 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3689,9 +3739,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 104:
+case 106:
 YY_RULE_SETUP
-#line 1115 "dhcp6_lexer.ll"
+#line 1138 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3701,9 +3751,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 105:
+case 107:
 YY_RULE_SETUP
-#line 1124 "dhcp6_lexer.ll"
+#line 1147 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::PD_POOLS:
@@ -3713,9 +3763,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 106:
+case 108:
 YY_RULE_SETUP
-#line 1133 "dhcp6_lexer.ll"
+#line 1156 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::POOLS:
@@ -3725,9 +3775,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 107:
+case 109:
 YY_RULE_SETUP
-#line 1142 "dhcp6_lexer.ll"
+#line 1165 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3752,9 +3802,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 108:
+case 110:
 YY_RULE_SETUP
-#line 1166 "dhcp6_lexer.ll"
+#line 1189 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3779,9 +3829,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 109:
+case 111:
 YY_RULE_SETUP
-#line 1190 "dhcp6_lexer.ll"
+#line 1213 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3791,9 +3841,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 110:
+case 112:
 YY_RULE_SETUP
-#line 1199 "dhcp6_lexer.ll"
+#line 1222 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3804,9 +3854,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 111:
+case 113:
 YY_RULE_SETUP
-#line 1209 "dhcp6_lexer.ll"
+#line 1232 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3817,9 +3867,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 112:
+case 114:
 YY_RULE_SETUP
-#line 1219 "dhcp6_lexer.ll"
+#line 1242 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3829,9 +3879,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 113:
+case 115:
 YY_RULE_SETUP
-#line 1228 "dhcp6_lexer.ll"
+#line 1251 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -3842,9 +3892,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 114:
+case 116:
 YY_RULE_SETUP
-#line 1238 "dhcp6_lexer.ll"
+#line 1261 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3856,9 +3906,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 115:
+case 117:
 YY_RULE_SETUP
-#line 1249 "dhcp6_lexer.ll"
+#line 1272 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3868,9 +3918,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 116:
+case 118:
 YY_RULE_SETUP
-#line 1258 "dhcp6_lexer.ll"
+#line 1281 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3880,9 +3930,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 117:
+case 119:
 YY_RULE_SETUP
-#line 1267 "dhcp6_lexer.ll"
+#line 1290 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3892,9 +3942,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 118:
+case 120:
 YY_RULE_SETUP
-#line 1276 "dhcp6_lexer.ll"
+#line 1299 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3904,9 +3954,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 119:
+case 121:
 YY_RULE_SETUP
-#line 1285 "dhcp6_lexer.ll"
+#line 1308 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATION_MODE:
@@ -3916,9 +3966,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 120:
+case 122:
 YY_RULE_SETUP
-#line 1294 "dhcp6_lexer.ll"
+#line 1317 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -3929,9 +3979,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 121:
+case 123:
 YY_RULE_SETUP
-#line 1304 "dhcp6_lexer.ll"
+#line 1327 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3941,9 +3991,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 122:
+case 124:
 YY_RULE_SETUP
-#line 1313 "dhcp6_lexer.ll"
+#line 1336 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3953,9 +4003,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 123:
+case 125:
 YY_RULE_SETUP
-#line 1322 "dhcp6_lexer.ll"
+#line 1345 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3965,9 +4015,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 124:
+case 126:
 YY_RULE_SETUP
-#line 1331 "dhcp6_lexer.ll"
+#line 1354 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3979,9 +4029,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 125:
+case 127:
 YY_RULE_SETUP
-#line 1342 "dhcp6_lexer.ll"
+#line 1365 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -3993,9 +4043,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 126:
+case 128:
 YY_RULE_SETUP
-#line 1353 "dhcp6_lexer.ll"
+#line 1376 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4007,9 +4057,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 127:
+case 129:
 YY_RULE_SETUP
-#line 1364 "dhcp6_lexer.ll"
+#line 1387 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4019,9 +4069,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 128:
+case 130:
 YY_RULE_SETUP
-#line 1373 "dhcp6_lexer.ll"
+#line 1396 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4031,9 +4081,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 129:
+case 131:
 YY_RULE_SETUP
-#line 1382 "dhcp6_lexer.ll"
+#line 1405 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4043,9 +4093,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 130:
+case 132:
 YY_RULE_SETUP
-#line 1391 "dhcp6_lexer.ll"
+#line 1414 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4055,9 +4105,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 131:
+case 133:
 YY_RULE_SETUP
-#line 1400 "dhcp6_lexer.ll"
+#line 1423 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4067,9 +4117,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 132:
+case 134:
 YY_RULE_SETUP
-#line 1409 "dhcp6_lexer.ll"
+#line 1432 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4079,9 +4129,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 133:
+case 135:
 YY_RULE_SETUP
-#line 1418 "dhcp6_lexer.ll"
+#line 1441 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OUTPUT_OPTIONS:
@@ -4091,9 +4141,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 134:
+case 136:
 YY_RULE_SETUP
-#line 1427 "dhcp6_lexer.ll"
+#line 1450 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4103,9 +4153,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 135:
+case 137:
 YY_RULE_SETUP
-#line 1436 "dhcp6_lexer.ll"
+#line 1459 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::LOGGERS:
@@ -4115,9 +4165,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 136:
+case 138:
 YY_RULE_SETUP
-#line 1445 "dhcp6_lexer.ll"
+#line 1468 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4128,9 +4178,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 137:
+case 139:
 YY_RULE_SETUP
-#line 1455 "dhcp6_lexer.ll"
+#line 1478 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4143,9 +4193,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 138:
+case 140:
 YY_RULE_SETUP
-#line 1467 "dhcp6_lexer.ll"
+#line 1490 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4159,9 +4209,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 139:
+case 141:
 YY_RULE_SETUP
-#line 1480 "dhcp6_lexer.ll"
+#line 1503 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4171,9 +4221,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 140:
+case 142:
 YY_RULE_SETUP
-#line 1489 "dhcp6_lexer.ll"
+#line 1512 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CLIENT_CLASSES:
@@ -4183,9 +4233,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 141:
+case 143:
 YY_RULE_SETUP
-#line 1498 "dhcp6_lexer.ll"
+#line 1521 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4196,9 +4246,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 142:
+case 144:
 YY_RULE_SETUP
-#line 1508 "dhcp6_lexer.ll"
+#line 1531 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4209,9 +4259,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 143:
+case 145:
 YY_RULE_SETUP
-#line 1518 "dhcp6_lexer.ll"
+#line 1541 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4221,9 +4271,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 144:
+case 146:
 YY_RULE_SETUP
-#line 1527 "dhcp6_lexer.ll"
+#line 1550 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::MAC_SOURCES:
@@ -4235,9 +4285,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 145:
+case 147:
 YY_RULE_SETUP
-#line 1538 "dhcp6_lexer.ll"
+#line 1561 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4248,9 +4298,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 146:
+case 148:
 YY_RULE_SETUP
-#line 1548 "dhcp6_lexer.ll"
+#line 1571 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RESERVATIONS:
@@ -4260,9 +4310,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 147:
+case 149:
 YY_RULE_SETUP
-#line 1557 "dhcp6_lexer.ll"
+#line 1580 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOST_RESERVATION_IDENTIFIERS:
@@ -4273,9 +4323,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 148:
+case 150:
 YY_RULE_SETUP
-#line 1567 "dhcp6_lexer.ll"
+#line 1590 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4286,9 +4336,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 149:
+case 151:
 YY_RULE_SETUP
-#line 1577 "dhcp6_lexer.ll"
+#line 1600 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DATA:
@@ -4298,9 +4348,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 150:
+case 152:
 YY_RULE_SETUP
-#line 1586 "dhcp6_lexer.ll"
+#line 1609 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4310,9 +4360,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 151:
+case 153:
 YY_RULE_SETUP
-#line 1595 "dhcp6_lexer.ll"
+#line 1618 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4322,9 +4372,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 152:
+case 154:
 YY_RULE_SETUP
-#line 1604 "dhcp6_lexer.ll"
+#line 1627 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::OPTION_DEF:
@@ -4334,9 +4384,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 153:
+case 155:
 YY_RULE_SETUP
-#line 1613 "dhcp6_lexer.ll"
+#line 1636 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SUBNET6:
@@ -4347,9 +4397,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 154:
+case 156:
 YY_RULE_SETUP
-#line 1623 "dhcp6_lexer.ll"
+#line 1646 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::RELAY:
@@ -4359,9 +4409,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 155:
+case 157:
 YY_RULE_SETUP
-#line 1632 "dhcp6_lexer.ll"
+#line 1655 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4371,9 +4421,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 156:
+case 158:
 YY_RULE_SETUP
-#line 1641 "dhcp6_lexer.ll"
+#line 1664 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4383,9 +4433,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 157:
+case 159:
 YY_RULE_SETUP
-#line 1650 "dhcp6_lexer.ll"
+#line 1673 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::HOOKS_LIBRARIES:
@@ -4395,9 +4445,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 158:
+case 160:
 YY_RULE_SETUP
-#line 1659 "dhcp6_lexer.ll"
+#line 1682 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4407,9 +4457,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 159:
+case 161:
 YY_RULE_SETUP
-#line 1668 "dhcp6_lexer.ll"
+#line 1691 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4419,9 +4469,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 160:
+case 162:
 YY_RULE_SETUP
-#line 1677 "dhcp6_lexer.ll"
+#line 1700 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4431,9 +4481,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 161:
+case 163:
 YY_RULE_SETUP
-#line 1686 "dhcp6_lexer.ll"
+#line 1709 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DUID_TYPE:
@@ -4443,9 +4493,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 162:
+case 164:
 YY_RULE_SETUP
-#line 1695 "dhcp6_lexer.ll"
+#line 1718 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4455,9 +4505,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 163:
+case 165:
 YY_RULE_SETUP
-#line 1704 "dhcp6_lexer.ll"
+#line 1727 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4467,9 +4517,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 164:
+case 166:
 YY_RULE_SETUP
-#line 1713 "dhcp6_lexer.ll"
+#line 1736 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4479,9 +4529,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 165:
+case 167:
 YY_RULE_SETUP
-#line 1722 "dhcp6_lexer.ll"
+#line 1745 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::SERVER_ID:
@@ -4491,9 +4541,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 166:
+case 168:
 YY_RULE_SETUP
-#line 1731 "dhcp6_lexer.ll"
+#line 1754 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4503,9 +4553,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 167:
+case 169:
 YY_RULE_SETUP
-#line 1740 "dhcp6_lexer.ll"
+#line 1763 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4515,9 +4565,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 168:
+case 170:
 YY_RULE_SETUP
-#line 1749 "dhcp6_lexer.ll"
+#line 1772 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4527,9 +4577,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 169:
+case 171:
 YY_RULE_SETUP
-#line 1758 "dhcp6_lexer.ll"
+#line 1781 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4539,9 +4589,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 170:
+case 172:
 YY_RULE_SETUP
-#line 1767 "dhcp6_lexer.ll"
+#line 1790 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4551,9 +4601,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 171:
+case 173:
 YY_RULE_SETUP
-#line 1776 "dhcp6_lexer.ll"
+#line 1799 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4563,9 +4613,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 172:
+case 174:
 YY_RULE_SETUP
-#line 1785 "dhcp6_lexer.ll"
+#line 1808 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::EXPIRED_LEASES_PROCESSING:
@@ -4575,9 +4625,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 173:
+case 175:
 YY_RULE_SETUP
-#line 1794 "dhcp6_lexer.ll"
+#line 1817 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4587,9 +4637,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 174:
+case 176:
 YY_RULE_SETUP
-#line 1803 "dhcp6_lexer.ll"
+#line 1826 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4599,9 +4649,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 175:
+case 177:
 YY_RULE_SETUP
-#line 1812 "dhcp6_lexer.ll"
+#line 1835 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4611,9 +4661,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 176:
+case 178:
 YY_RULE_SETUP
-#line 1821 "dhcp6_lexer.ll"
+#line 1844 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4623,9 +4673,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 177:
+case 179:
 YY_RULE_SETUP
-#line 1830 "dhcp6_lexer.ll"
+#line 1853 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_MULTI_THREADING:
@@ -4635,9 +4685,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 178:
+case 180:
 YY_RULE_SETUP
-#line 1839 "dhcp6_lexer.ll"
+#line 1862 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4647,9 +4697,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 179:
+case 181:
 YY_RULE_SETUP
-#line 1848 "dhcp6_lexer.ll"
+#line 1871 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4659,9 +4709,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 180:
+case 182:
 YY_RULE_SETUP
-#line 1857 "dhcp6_lexer.ll"
+#line 1880 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::CONTROL_SOCKET:
@@ -4671,9 +4721,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 181:
+case 183:
 YY_RULE_SETUP
-#line 1866 "dhcp6_lexer.ll"
+#line 1889 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4683,9 +4733,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 182:
+case 184:
 YY_RULE_SETUP
-#line 1875 "dhcp6_lexer.ll"
+#line 1898 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4695,9 +4745,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 183:
+case 185:
 YY_RULE_SETUP
-#line 1884 "dhcp6_lexer.ll"
+#line 1907 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4707,9 +4757,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 184:
+case 186:
 YY_RULE_SETUP
-#line 1893 "dhcp6_lexer.ll"
+#line 1916 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP_QUEUE_CONTROL:
@@ -4719,9 +4769,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 185:
+case 187:
 YY_RULE_SETUP
-#line 1902 "dhcp6_lexer.ll"
+#line 1925 "dhcp6_lexer.ll"
 {
     switch(driver.ctx_) {
     case isc::dhcp::Parser6Context::DHCP6:
@@ -4731,9 +4781,9 @@ YY_RULE_SETUP
     }
 }
        YY_BREAK
-case 186:
+case 188:
 YY_RULE_SETUP
-#line 1911 "dhcp6_lexer.ll"
+#line 1934 "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.
@@ -4833,65 +4883,65 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_STRING(decoded, driver.loc_);
 }
        YY_BREAK
-case 187:
-/* rule 187 can match eol */
+case 189:
+/* rule 189 can match eol */
 YY_RULE_SETUP
-#line 2010 "dhcp6_lexer.ll"
+#line 2033 "dhcp6_lexer.ll"
 {
     /* Bad string with a forbidden control character inside */
     driver.error(driver.loc_, "Invalid control in " + std::string(yytext));
 }
        YY_BREAK
-case 188:
-/* rule 188 can match eol */
+case 190:
+/* rule 190 can match eol */
 YY_RULE_SETUP
-#line 2015 "dhcp6_lexer.ll"
+#line 2038 "dhcp6_lexer.ll"
 {
     /* Bad string with a bad escape inside */
     driver.error(driver.loc_, "Bad escape in " + std::string(yytext));
 }
        YY_BREAK
-case 189:
+case 191:
 YY_RULE_SETUP
-#line 2020 "dhcp6_lexer.ll"
+#line 2043 "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 190:
+case 192:
 YY_RULE_SETUP
-#line 2025 "dhcp6_lexer.ll"
+#line 2048 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 191:
+case 193:
 YY_RULE_SETUP
-#line 2026 "dhcp6_lexer.ll"
+#line 2049 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RSQUARE_BRACKET(driver.loc_); }
        YY_BREAK
-case 192:
+case 194:
 YY_RULE_SETUP
-#line 2027 "dhcp6_lexer.ll"
+#line 2050 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_LCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 193:
+case 195:
 YY_RULE_SETUP
-#line 2028 "dhcp6_lexer.ll"
+#line 2051 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_RCURLY_BRACKET(driver.loc_); }
        YY_BREAK
-case 194:
+case 196:
 YY_RULE_SETUP
-#line 2029 "dhcp6_lexer.ll"
+#line 2052 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COMMA(driver.loc_); }
        YY_BREAK
-case 195:
+case 197:
 YY_RULE_SETUP
-#line 2030 "dhcp6_lexer.ll"
+#line 2053 "dhcp6_lexer.ll"
 { return isc::dhcp::Dhcp6Parser::make_COLON(driver.loc_); }
        YY_BREAK
-case 196:
+case 198:
 YY_RULE_SETUP
-#line 2032 "dhcp6_lexer.ll"
+#line 2055 "dhcp6_lexer.ll"
 {
     /* An integer was found. */
     std::string tmp(yytext);
@@ -4910,9 +4960,9 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_INTEGER(integer, driver.loc_);
 }
        YY_BREAK
-case 197:
+case 199:
 YY_RULE_SETUP
-#line 2050 "dhcp6_lexer.ll"
+#line 2073 "dhcp6_lexer.ll"
 {
     /* A floating point was found. */
     std::string tmp(yytext);
@@ -4926,43 +4976,43 @@ YY_RULE_SETUP
     return isc::dhcp::Dhcp6Parser::make_FLOAT(fp, driver.loc_);
 }
        YY_BREAK
-case 198:
+case 200:
 YY_RULE_SETUP
-#line 2063 "dhcp6_lexer.ll"
+#line 2086 "dhcp6_lexer.ll"
 {
     string tmp(yytext);
     return isc::dhcp::Dhcp6Parser::make_BOOLEAN(tmp == "true", driver.loc_);
 }
        YY_BREAK
-case 199:
+case 201:
 YY_RULE_SETUP
-#line 2068 "dhcp6_lexer.ll"
+#line 2091 "dhcp6_lexer.ll"
 {
    return isc::dhcp::Dhcp6Parser::make_NULL_TYPE(driver.loc_);
 }
        YY_BREAK
-case 200:
+case 202:
 YY_RULE_SETUP
-#line 2072 "dhcp6_lexer.ll"
+#line 2095 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON true reserved keyword is lower case only");
        YY_BREAK
-case 201:
+case 203:
 YY_RULE_SETUP
-#line 2074 "dhcp6_lexer.ll"
+#line 2097 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON false reserved keyword is lower case only");
        YY_BREAK
-case 202:
+case 204:
 YY_RULE_SETUP
-#line 2076 "dhcp6_lexer.ll"
+#line 2099 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "JSON null reserved keyword is lower case only");
        YY_BREAK
-case 203:
+case 205:
 YY_RULE_SETUP
-#line 2078 "dhcp6_lexer.ll"
+#line 2101 "dhcp6_lexer.ll"
 driver.error (driver.loc_, "Invalid character: " + std::string(yytext));
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 2080 "dhcp6_lexer.ll"
+#line 2103 "dhcp6_lexer.ll"
 {
     if (driver.states_.empty()) {
         return isc::dhcp::Dhcp6Parser::make_END(driver.loc_);
@@ -4986,12 +5036,12 @@ case YY_STATE_EOF(INITIAL):
     BEGIN(DIR_EXIT);
 }
        YY_BREAK
-case 204:
+case 206:
 YY_RULE_SETUP
-#line 2103 "dhcp6_lexer.ll"
+#line 2126 "dhcp6_lexer.ll"
 ECHO;
        YY_BREAK
-#line 4994 "dhcp6_lexer.cc"
+#line 5044 "dhcp6_lexer.cc"
 
        case YY_END_OF_BUFFER:
                {
@@ -5310,7 +5360,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 >= 1845 )
+                       if ( yy_current_state >= 1884 )
                                yy_c = yy_meta[yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -5343,11 +5393,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 >= 1845 )
+               if ( yy_current_state >= 1884 )
                        yy_c = yy_meta[yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
-       yy_is_jam = (yy_current_state == 1844);
+       yy_is_jam = (yy_current_state == 1883);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -6096,7 +6146,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 2103 "dhcp6_lexer.ll"
+#line 2126 "dhcp6_lexer.ll"
 
 
 using namespace isc::dhcp;
index ff0ede0273f59e8d01cdd772834d83e48f4eba17..9a31847d5d37432c4e89e8998ef6742a8a862679 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 #else // !PARSER6_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
@@ -209,29 +209,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -250,29 +250,29 @@ namespace isc { namespace dhcp {
   {
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -291,29 +291,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -331,29 +331,29 @@ namespace isc { namespace dhcp {
     state = that.state;
     switch (that.kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -382,7 +382,7 @@ namespace isc { namespace dhcp {
   Dhcp6Parser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YYUSE (yyoutput);
+    YY_USE (yyoutput);
     if (yysym.empty ())
       yyo << "empty symbol";
     else
@@ -393,68 +393,68 @@ namespace isc { namespace dhcp {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 194: // "constant string"
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_STRING: // "constant string"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 400 "dhcp6_parser.cc"
         break;
 
-      case 195: // "integer"
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_INTEGER: // "integer"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 406 "dhcp6_parser.cc"
         break;
 
-      case 196: // "floating point"
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_FLOAT: // "floating point"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 412 "dhcp6_parser.cc"
         break;
 
-      case 197: // "boolean"
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_BOOLEAN: // "boolean"
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 418 "dhcp6_parser.cc"
         break;
 
-      case 214: // value
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_value: // value
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 424 "dhcp6_parser.cc"
         break;
 
-      case 218: // map_value
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_map_value: // map_value
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 430 "dhcp6_parser.cc"
         break;
 
-      case 259: // ddns_replace_client_name_value
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 436 "dhcp6_parser.cc"
         break;
 
-      case 296: // db_type
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_db_type: // db_type
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 442 "dhcp6_parser.cc"
         break;
 
-      case 397: // hr_mode
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_hr_mode: // hr_mode
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 448 "dhcp6_parser.cc"
         break;
 
-      case 533: // duid_type
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_duid_type: // duid_type
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 454 "dhcp6_parser.cc"
         break;
 
-      case 576: // ncr_protocol_value
-#line 274 "dhcp6_parser.yy"
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
+#line 276 "dhcp6_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 460 "dhcp6_parser.cc"
         break;
@@ -686,29 +686,29 @@ namespace isc { namespace dhcp {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -732,134 +732,134 @@ namespace isc { namespace dhcp {
         {
           switch (yyn)
             {
-  case 2:
-#line 283 "dhcp6_parser.yy"
+  case 2: // $@1: %empty
+#line 285 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.NO_KEYWORD; }
 #line 739 "dhcp6_parser.cc"
     break;
 
-  case 4:
-#line 284 "dhcp6_parser.yy"
+  case 4: // $@2: %empty
+#line 286 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.CONFIG; }
 #line 745 "dhcp6_parser.cc"
     break;
 
-  case 6:
-#line 285 "dhcp6_parser.yy"
+  case 6: // $@3: %empty
+#line 287 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.DHCP6; }
 #line 751 "dhcp6_parser.cc"
     break;
 
-  case 8:
-#line 286 "dhcp6_parser.yy"
+  case 8: // $@4: %empty
+#line 288 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.INTERFACES_CONFIG; }
 #line 757 "dhcp6_parser.cc"
     break;
 
-  case 10:
-#line 287 "dhcp6_parser.yy"
+  case 10: // $@5: %empty
+#line 289 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.SUBNET6; }
 #line 763 "dhcp6_parser.cc"
     break;
 
-  case 12:
-#line 288 "dhcp6_parser.yy"
+  case 12: // $@6: %empty
+#line 290 "dhcp6_parser.yy"
                  { ctx.ctx_ = ctx.POOLS; }
 #line 769 "dhcp6_parser.cc"
     break;
 
-  case 14:
-#line 289 "dhcp6_parser.yy"
+  case 14: // $@7: %empty
+#line 291 "dhcp6_parser.yy"
                    { ctx.ctx_ = ctx.PD_POOLS; }
 #line 775 "dhcp6_parser.cc"
     break;
 
-  case 16:
-#line 290 "dhcp6_parser.yy"
+  case 16: // $@8: %empty
+#line 292 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.RESERVATIONS; }
 #line 781 "dhcp6_parser.cc"
     break;
 
-  case 18:
-#line 291 "dhcp6_parser.yy"
+  case 18: // $@9: %empty
+#line 293 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.DHCP6; }
 #line 787 "dhcp6_parser.cc"
     break;
 
-  case 20:
-#line 292 "dhcp6_parser.yy"
+  case 20: // $@10: %empty
+#line 294 "dhcp6_parser.yy"
                       { ctx.ctx_ = ctx.OPTION_DEF; }
 #line 793 "dhcp6_parser.cc"
     break;
 
-  case 22:
-#line 293 "dhcp6_parser.yy"
+  case 22: // $@11: %empty
+#line 295 "dhcp6_parser.yy"
                        { ctx.ctx_ = ctx.OPTION_DATA; }
 #line 799 "dhcp6_parser.cc"
     break;
 
-  case 24:
-#line 294 "dhcp6_parser.yy"
+  case 24: // $@12: %empty
+#line 296 "dhcp6_parser.yy"
                          { ctx.ctx_ = ctx.HOOKS_LIBRARIES; }
 #line 805 "dhcp6_parser.cc"
     break;
 
-  case 26:
-#line 295 "dhcp6_parser.yy"
+  case 26: // $@13: %empty
+#line 297 "dhcp6_parser.yy"
                      { ctx.ctx_ = ctx.DHCP_DDNS; }
 #line 811 "dhcp6_parser.cc"
     break;
 
-  case 28:
-#line 296 "dhcp6_parser.yy"
+  case 28: // $@14: %empty
+#line 298 "dhcp6_parser.yy"
                           { ctx.ctx_ = ctx.CONFIG_CONTROL; }
 #line 817 "dhcp6_parser.cc"
     break;
 
-  case 30:
-#line 304 "dhcp6_parser.yy"
+  case 30: // value: "integer"
+#line 306 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 823 "dhcp6_parser.cc"
     break;
 
-  case 31:
-#line 305 "dhcp6_parser.yy"
+  case 31: // value: "floating point"
+#line 307 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 829 "dhcp6_parser.cc"
     break;
 
-  case 32:
-#line 306 "dhcp6_parser.yy"
+  case 32: // value: "boolean"
+#line 308 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 835 "dhcp6_parser.cc"
     break;
 
-  case 33:
-#line 307 "dhcp6_parser.yy"
+  case 33: // value: "constant string"
+#line 309 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 841 "dhcp6_parser.cc"
     break;
 
-  case 34:
-#line 308 "dhcp6_parser.yy"
+  case 34: // value: "null"
+#line 310 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 847 "dhcp6_parser.cc"
     break;
 
-  case 35:
-#line 309 "dhcp6_parser.yy"
+  case 35: // value: map2
+#line 311 "dhcp6_parser.yy"
             { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 853 "dhcp6_parser.cc"
     break;
 
-  case 36:
-#line 310 "dhcp6_parser.yy"
+  case 36: // value: list_generic
+#line 312 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 859 "dhcp6_parser.cc"
     break;
 
-  case 37:
-#line 313 "dhcp6_parser.yy"
+  case 37: // sub_json: value
+#line 315 "dhcp6_parser.yy"
                 {
     // Push back the JSON value on the stack
     ctx.stack_.push_back(yystack_[0].value.as < ElementPtr > ());
@@ -867,8 +867,8 @@ namespace isc { namespace dhcp {
 #line 868 "dhcp6_parser.cc"
     break;
 
-  case 38:
-#line 318 "dhcp6_parser.yy"
+  case 38: // $@15: %empty
+#line 320 "dhcp6_parser.yy"
                      {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -878,8 +878,8 @@ namespace isc { namespace dhcp {
 #line 879 "dhcp6_parser.cc"
     break;
 
-  case 39:
-#line 323 "dhcp6_parser.yy"
+  case 39: // map2: "{" $@15 map_content "}"
+#line 325 "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
@@ -888,14 +888,14 @@ namespace isc { namespace dhcp {
 #line 889 "dhcp6_parser.cc"
     break;
 
-  case 40:
-#line 329 "dhcp6_parser.yy"
+  case 40: // map_value: map2
+#line 331 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 895 "dhcp6_parser.cc"
     break;
 
-  case 43:
-#line 336 "dhcp6_parser.yy"
+  case 43: // not_empty_map: "constant string" ":" value
+#line 338 "dhcp6_parser.yy"
                                   {
                   // map containing a single entry
                   ctx.stack_.back()->set(yystack_[2].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
@@ -903,8 +903,8 @@ namespace isc { namespace dhcp {
 #line 904 "dhcp6_parser.cc"
     break;
 
-  case 44:
-#line 340 "dhcp6_parser.yy"
+  case 44: // not_empty_map: not_empty_map "," "constant string" ":" value
+#line 342 "dhcp6_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
                   // comma and string:value
@@ -913,8 +913,8 @@ namespace isc { namespace dhcp {
 #line 914 "dhcp6_parser.cc"
     break;
 
-  case 45:
-#line 347 "dhcp6_parser.yy"
+  case 45: // $@16: %empty
+#line 349 "dhcp6_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(l);
@@ -922,16 +922,16 @@ namespace isc { namespace dhcp {
 #line 923 "dhcp6_parser.cc"
     break;
 
-  case 46:
-#line 350 "dhcp6_parser.yy"
+  case 46: // list_generic: "[" $@16 list_content "]"
+#line 352 "dhcp6_parser.yy"
                                {
     // list parsing complete. Put any sanity checking here
 }
 #line 931 "dhcp6_parser.cc"
     break;
 
-  case 49:
-#line 358 "dhcp6_parser.yy"
+  case 49: // not_empty_list: value
+#line 360 "dhcp6_parser.yy"
                       {
                   // List consisting of a single element.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -939,8 +939,8 @@ namespace isc { namespace dhcp {
 #line 940 "dhcp6_parser.cc"
     break;
 
-  case 50:
-#line 362 "dhcp6_parser.yy"
+  case 50: // not_empty_list: not_empty_list "," value
+#line 364 "dhcp6_parser.yy"
                                            {
                   // List ending with , and a value.
                   ctx.stack_.back()->add(yystack_[0].value.as < ElementPtr > ());
@@ -948,16 +948,16 @@ namespace isc { namespace dhcp {
 #line 949 "dhcp6_parser.cc"
     break;
 
-  case 51:
-#line 369 "dhcp6_parser.yy"
+  case 51: // $@17: %empty
+#line 371 "dhcp6_parser.yy"
                               {
     // List parsing about to start
 }
 #line 957 "dhcp6_parser.cc"
     break;
 
-  case 52:
-#line 371 "dhcp6_parser.yy"
+  case 52: // list_strings: "[" $@17 list_strings_content "]"
+#line 373 "dhcp6_parser.yy"
                                        {
     // list parsing complete. Put any sanity checking here
     //ctx.stack_.pop_back();
@@ -965,8 +965,8 @@ namespace isc { namespace dhcp {
 #line 966 "dhcp6_parser.cc"
     break;
 
-  case 55:
-#line 380 "dhcp6_parser.yy"
+  case 55: // not_empty_list_strings: "constant string"
+#line 382 "dhcp6_parser.yy"
                                {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -974,8 +974,8 @@ namespace isc { namespace dhcp {
 #line 975 "dhcp6_parser.cc"
     break;
 
-  case 56:
-#line 384 "dhcp6_parser.yy"
+  case 56: // not_empty_list_strings: not_empty_list_strings "," "constant string"
+#line 386 "dhcp6_parser.yy"
                                                             {
                           ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
                           ctx.stack_.back()->add(s);
@@ -983,8 +983,8 @@ namespace isc { namespace dhcp {
 #line 984 "dhcp6_parser.cc"
     break;
 
-  case 57:
-#line 395 "dhcp6_parser.yy"
+  case 57: // unknown_map_entry: "constant string" ":"
+#line 397 "dhcp6_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
     const std::string& keyword = yystack_[1].value.as < std::string > ();
@@ -994,8 +994,8 @@ namespace isc { namespace dhcp {
 #line 995 "dhcp6_parser.cc"
     break;
 
-  case 58:
-#line 404 "dhcp6_parser.yy"
+  case 58: // $@18: %empty
+#line 406 "dhcp6_parser.yy"
                            {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1005,8 +1005,8 @@ namespace isc { namespace dhcp {
 #line 1006 "dhcp6_parser.cc"
     break;
 
-  case 59:
-#line 409 "dhcp6_parser.yy"
+  case 59: // syntax_map: "{" $@18 global_objects "}"
+#line 411 "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
@@ -1018,8 +1018,8 @@ namespace isc { namespace dhcp {
 #line 1019 "dhcp6_parser.cc"
     break;
 
-  case 63:
-#line 427 "dhcp6_parser.yy"
+  case 63: // $@19: %empty
+#line 429 "dhcp6_parser.yy"
                     {
     // This code is executed when we're about to start parsing
     // the content of the map
@@ -1033,8 +1033,8 @@ namespace isc { namespace dhcp {
 #line 1034 "dhcp6_parser.cc"
     break;
 
-  case 64:
-#line 436 "dhcp6_parser.yy"
+  case 64: // dhcp6_object: "Dhcp6" $@19 ":" "{" global_params "}"
+#line 438 "dhcp6_parser.yy"
                                                     {
     // No global parameter is required
     ctx.stack_.pop_back();
@@ -1043,8 +1043,8 @@ namespace isc { namespace dhcp {
 #line 1044 "dhcp6_parser.cc"
     break;
 
-  case 65:
-#line 444 "dhcp6_parser.yy"
+  case 65: // $@20: %empty
+#line 446 "dhcp6_parser.yy"
                           {
     // Parse the Dhcp6 map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1053,8 +1053,8 @@ namespace isc { namespace dhcp {
 #line 1054 "dhcp6_parser.cc"
     break;
 
-  case 66:
-#line 448 "dhcp6_parser.yy"
+  case 66: // sub_dhcp6: "{" $@20 global_params "}"
+#line 450 "dhcp6_parser.yy"
                                {
     // No global parameter is required
     // parsing completed
@@ -1062,16 +1062,16 @@ namespace isc { namespace dhcp {
 #line 1063 "dhcp6_parser.cc"
     break;
 
-  case 122:
-#line 514 "dhcp6_parser.yy"
+  case 124: // $@21: %empty
+#line 518 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1071 "dhcp6_parser.cc"
     break;
 
-  case 123:
-#line 516 "dhcp6_parser.yy"
+  case 125: // data_directory: "data-directory" $@21 ":" "constant string"
+#line 520 "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);
@@ -1080,8 +1080,8 @@ namespace isc { namespace dhcp {
 #line 1081 "dhcp6_parser.cc"
     break;
 
-  case 124:
-#line 522 "dhcp6_parser.yy"
+  case 126: // preferred_lifetime: "preferred-lifetime" ":" "integer"
+#line 526 "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);
@@ -1089,8 +1089,8 @@ namespace isc { namespace dhcp {
 #line 1090 "dhcp6_parser.cc"
     break;
 
-  case 125:
-#line 527 "dhcp6_parser.yy"
+  case 127: // min_preferred_lifetime: "min-preferred-lifetime" ":" "integer"
+#line 531 "dhcp6_parser.yy"
                                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("min-preferred-lifetime", prf);
@@ -1098,8 +1098,8 @@ namespace isc { namespace dhcp {
 #line 1099 "dhcp6_parser.cc"
     break;
 
-  case 126:
-#line 532 "dhcp6_parser.yy"
+  case 128: // max_preferred_lifetime: "max-preferred-lifetime" ":" "integer"
+#line 536 "dhcp6_parser.yy"
                                                              {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-preferred-lifetime", prf);
@@ -1107,8 +1107,8 @@ namespace isc { namespace dhcp {
 #line 1108 "dhcp6_parser.cc"
     break;
 
-  case 127:
-#line 537 "dhcp6_parser.yy"
+  case 129: // valid_lifetime: "valid-lifetime" ":" "integer"
+#line 541 "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);
@@ -1116,8 +1116,8 @@ namespace isc { namespace dhcp {
 #line 1117 "dhcp6_parser.cc"
     break;
 
-  case 128:
-#line 542 "dhcp6_parser.yy"
+  case 130: // min_valid_lifetime: "min-valid-lifetime" ":" "integer"
+#line 546 "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);
@@ -1125,8 +1125,8 @@ namespace isc { namespace dhcp {
 #line 1126 "dhcp6_parser.cc"
     break;
 
-  case 129:
-#line 547 "dhcp6_parser.yy"
+  case 131: // max_valid_lifetime: "max-valid-lifetime" ":" "integer"
+#line 551 "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);
@@ -1134,8 +1134,8 @@ namespace isc { namespace dhcp {
 #line 1135 "dhcp6_parser.cc"
     break;
 
-  case 130:
-#line 552 "dhcp6_parser.yy"
+  case 132: // renew_timer: "renew-timer" ":" "integer"
+#line 556 "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);
@@ -1143,8 +1143,8 @@ namespace isc { namespace dhcp {
 #line 1144 "dhcp6_parser.cc"
     break;
 
-  case 131:
-#line 557 "dhcp6_parser.yy"
+  case 133: // rebind_timer: "rebind-timer" ":" "integer"
+#line 561 "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);
@@ -1152,8 +1152,8 @@ namespace isc { namespace dhcp {
 #line 1153 "dhcp6_parser.cc"
     break;
 
-  case 132:
-#line 562 "dhcp6_parser.yy"
+  case 134: // calculate_tee_times: "calculate-tee-times" ":" "boolean"
+#line 566 "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);
@@ -1161,8 +1161,8 @@ namespace isc { namespace dhcp {
 #line 1162 "dhcp6_parser.cc"
     break;
 
-  case 133:
-#line 567 "dhcp6_parser.yy"
+  case 135: // t1_percent: "t1-percent" ":" "floating point"
+#line 571 "dhcp6_parser.yy"
                                    {
     ElementPtr t1(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t1-percent", t1);
@@ -1170,8 +1170,8 @@ namespace isc { namespace dhcp {
 #line 1171 "dhcp6_parser.cc"
     break;
 
-  case 134:
-#line 572 "dhcp6_parser.yy"
+  case 136: // t2_percent: "t2-percent" ":" "floating point"
+#line 576 "dhcp6_parser.yy"
                                    {
     ElementPtr t2(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("t2-percent", t2);
@@ -1179,8 +1179,8 @@ namespace isc { namespace dhcp {
 #line 1180 "dhcp6_parser.cc"
     break;
 
-  case 135:
-#line 577 "dhcp6_parser.yy"
+  case 137: // decline_probation_period: "decline-probation-period" ":" "integer"
+#line 581 "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);
@@ -1188,8 +1188,8 @@ namespace isc { namespace dhcp {
 #line 1189 "dhcp6_parser.cc"
     break;
 
-  case 136:
-#line 582 "dhcp6_parser.yy"
+  case 138: // ddns_send_updates: "ddns-send-updates" ":" "boolean"
+#line 586 "dhcp6_parser.yy"
                                                    {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-send-updates", b);
@@ -1197,8 +1197,8 @@ namespace isc { namespace dhcp {
 #line 1198 "dhcp6_parser.cc"
     break;
 
-  case 137:
-#line 587 "dhcp6_parser.yy"
+  case 139: // ddns_override_no_update: "ddns-override-no-update" ":" "boolean"
+#line 591 "dhcp6_parser.yy"
                                                                {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-no-update", b);
@@ -1206,8 +1206,8 @@ namespace isc { namespace dhcp {
 #line 1207 "dhcp6_parser.cc"
     break;
 
-  case 138:
-#line 592 "dhcp6_parser.yy"
+  case 140: // ddns_override_client_update: "ddns-override-client-update" ":" "boolean"
+#line 596 "dhcp6_parser.yy"
                                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-override-client-update", b);
@@ -1215,16 +1215,16 @@ namespace isc { namespace dhcp {
 #line 1216 "dhcp6_parser.cc"
     break;
 
-  case 139:
-#line 597 "dhcp6_parser.yy"
+  case 141: // $@22: %empty
+#line 601 "dhcp6_parser.yy"
                                                    {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
 #line 1224 "dhcp6_parser.cc"
     break;
 
-  case 140:
-#line 599 "dhcp6_parser.yy"
+  case 142: // ddns_replace_client_name: "ddns-replace-client-name" $@22 ":" ddns_replace_client_name_value
+#line 603 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("ddns-replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
@@ -1232,40 +1232,40 @@ namespace isc { namespace dhcp {
 #line 1233 "dhcp6_parser.cc"
     break;
 
-  case 141:
-#line 605 "dhcp6_parser.yy"
+  case 143: // ddns_replace_client_name_value: "when-present"
+#line 609 "dhcp6_parser.yy"
                  {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1241 "dhcp6_parser.cc"
     break;
 
-  case 142:
-#line 608 "dhcp6_parser.yy"
+  case 144: // ddns_replace_client_name_value: "never"
+#line 612 "dhcp6_parser.yy"
           {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("never", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1249 "dhcp6_parser.cc"
     break;
 
-  case 143:
-#line 611 "dhcp6_parser.yy"
+  case 145: // ddns_replace_client_name_value: "always"
+#line 615 "dhcp6_parser.yy"
            {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("always", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1257 "dhcp6_parser.cc"
     break;
 
-  case 144:
-#line 614 "dhcp6_parser.yy"
+  case 146: // ddns_replace_client_name_value: "when-not-present"
+#line 618 "dhcp6_parser.yy"
                      {
       yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("when-not-present", ctx.loc2pos(yystack_[0].location)));
       }
 #line 1265 "dhcp6_parser.cc"
     break;
 
-  case 145:
-#line 617 "dhcp6_parser.yy"
+  case 147: // ddns_replace_client_name_value: "boolean"
+#line 621 "dhcp6_parser.yy"
             {
       error(yystack_[0].location, "boolean values for the replace-client-name are "
                 "no longer supported");
@@ -1273,16 +1273,16 @@ namespace isc { namespace dhcp {
 #line 1274 "dhcp6_parser.cc"
     break;
 
-  case 146:
-#line 623 "dhcp6_parser.yy"
+  case 148: // $@23: %empty
+#line 627 "dhcp6_parser.yy"
                                              {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1282 "dhcp6_parser.cc"
     break;
 
-  case 147:
-#line 625 "dhcp6_parser.yy"
+  case 149: // ddns_generated_prefix: "ddns-generated-prefix" $@23 ":" "constant string"
+#line 629 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-generated-prefix", s);
@@ -1291,16 +1291,16 @@ namespace isc { namespace dhcp {
 #line 1292 "dhcp6_parser.cc"
     break;
 
-  case 148:
-#line 631 "dhcp6_parser.yy"
+  case 150: // $@24: %empty
+#line 635 "dhcp6_parser.yy"
                                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
 #line 1300 "dhcp6_parser.cc"
     break;
 
-  case 149:
-#line 633 "dhcp6_parser.yy"
+  case 151: // ddns_qualifying_suffix: "ddns-qualifying-suffix" $@24 ":" "constant string"
+#line 637 "dhcp6_parser.yy"
                {
     ElementPtr s(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ddns-qualifying-suffix", s);
@@ -1309,554 +1309,574 @@ namespace isc { namespace dhcp {
 #line 1310 "dhcp6_parser.cc"
     break;
 
-  case 150:
-#line 639 "dhcp6_parser.yy"
+  case 152: // ddns_update_on_renew: "ddns-update-on-renew" ":" "boolean"
+#line 643 "dhcp6_parser.yy"
+                                                         {
+    ctx.unique("ddns-update-on-renew", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ddns-update-on-renew", b);
+}
+#line 1320 "dhcp6_parser.cc"
+    break;
+
+  case 153: // ddns_use_conflict_resolution: "ddns-use-conflict-resolution" ":" "boolean"
+#line 649 "dhcp6_parser.yy"
+                                                                         {
+    ctx.unique("ddns-use-conflict-resolution", ctx.loc2pos(yystack_[2].location));
+    ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
+    ctx.stack_.back()->set("ddns-use-conflict-resolution", b);
+}
+#line 1330 "dhcp6_parser.cc"
+    break;
+
+  case 154: // $@25: %empty
+#line 655 "dhcp6_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1318 "dhcp6_parser.cc"
+#line 1338 "dhcp6_parser.cc"
     break;
 
-  case 151:
-#line 641 "dhcp6_parser.yy"
+  case 155: // hostname_char_set: "hostname-char-set" $@25 ":" "constant string"
+#line 657 "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 1328 "dhcp6_parser.cc"
+#line 1348 "dhcp6_parser.cc"
     break;
 
-  case 152:
-#line 647 "dhcp6_parser.yy"
+  case 156: // $@26: %empty
+#line 663 "dhcp6_parser.yy"
                                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1336 "dhcp6_parser.cc"
+#line 1356 "dhcp6_parser.cc"
     break;
 
-  case 153:
-#line 649 "dhcp6_parser.yy"
+  case 157: // hostname_char_replacement: "hostname-char-replacement" $@26 ":" "constant string"
+#line 665 "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 1346 "dhcp6_parser.cc"
+#line 1366 "dhcp6_parser.cc"
     break;
 
-  case 154:
-#line 655 "dhcp6_parser.yy"
+  case 158: // store_extended_info: "store-extended-info" ":" "boolean"
+#line 671 "dhcp6_parser.yy"
                                                        {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("store-extended-info", b);
 }
-#line 1355 "dhcp6_parser.cc"
+#line 1375 "dhcp6_parser.cc"
     break;
 
-  case 155:
-#line 660 "dhcp6_parser.yy"
+  case 159: // statistic_default_sample_count: "statistic-default-sample-count" ":" "integer"
+#line 676 "dhcp6_parser.yy"
                                                                              {
     ElementPtr count(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-count", count);
 }
-#line 1364 "dhcp6_parser.cc"
+#line 1384 "dhcp6_parser.cc"
     break;
 
-  case 156:
-#line 665 "dhcp6_parser.yy"
+  case 160: // statistic_default_sample_age: "statistic-default-sample-age" ":" "integer"
+#line 681 "dhcp6_parser.yy"
                                                                          {
     ElementPtr age(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("statistic-default-sample-age", age);
 }
-#line 1373 "dhcp6_parser.cc"
+#line 1393 "dhcp6_parser.cc"
     break;
 
-  case 157:
-#line 670 "dhcp6_parser.yy"
+  case 161: // $@27: %empty
+#line 686 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1381 "dhcp6_parser.cc"
+#line 1401 "dhcp6_parser.cc"
     break;
 
-  case 158:
-#line 672 "dhcp6_parser.yy"
+  case 162: // server_tag: "server-tag" $@27 ":" "constant string"
+#line 688 "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 1391 "dhcp6_parser.cc"
+#line 1411 "dhcp6_parser.cc"
     break;
 
-  case 159:
-#line 678 "dhcp6_parser.yy"
+  case 163: // $@28: %empty
+#line 694 "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 1402 "dhcp6_parser.cc"
+#line 1422 "dhcp6_parser.cc"
     break;
 
-  case 160:
-#line 683 "dhcp6_parser.yy"
+  case 164: // interfaces_config: "interfaces-config" $@28 ":" "{" interfaces_config_params "}"
+#line 699 "dhcp6_parser.yy"
                                                                {
     // No interfaces config param is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1412 "dhcp6_parser.cc"
+#line 1432 "dhcp6_parser.cc"
     break;
 
-  case 161:
-#line 689 "dhcp6_parser.yy"
+  case 165: // $@29: %empty
+#line 705 "dhcp6_parser.yy"
                                 {
     // Parse the interfaces-config map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 1422 "dhcp6_parser.cc"
+#line 1442 "dhcp6_parser.cc"
     break;
 
-  case 162:
-#line 693 "dhcp6_parser.yy"
+  case 166: // sub_interfaces6: "{" $@29 interfaces_config_params "}"
+#line 709 "dhcp6_parser.yy"
                                           {
     // No interfaces config param is required
     // parsing completed
 }
-#line 1431 "dhcp6_parser.cc"
+#line 1451 "dhcp6_parser.cc"
     break;
 
-  case 170:
-#line 709 "dhcp6_parser.yy"
+  case 174: // $@30: %empty
+#line 725 "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 1442 "dhcp6_parser.cc"
+#line 1462 "dhcp6_parser.cc"
     break;
 
-  case 171:
-#line 714 "dhcp6_parser.yy"
+  case 175: // interfaces_list: "interfaces" $@30 ":" list_strings
+#line 730 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1451 "dhcp6_parser.cc"
+#line 1471 "dhcp6_parser.cc"
     break;
 
-  case 172:
-#line 719 "dhcp6_parser.yy"
+  case 176: // re_detect: "re-detect" ":" "boolean"
+#line 735 "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 1460 "dhcp6_parser.cc"
+#line 1480 "dhcp6_parser.cc"
     break;
 
-  case 173:
-#line 724 "dhcp6_parser.yy"
+  case 177: // $@31: %empty
+#line 740 "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 1471 "dhcp6_parser.cc"
+#line 1491 "dhcp6_parser.cc"
     break;
 
-  case 174:
-#line 729 "dhcp6_parser.yy"
+  case 178: // lease_database: "lease-database" $@31 ":" "{" database_map_params "}"
+#line 745 "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 1482 "dhcp6_parser.cc"
+#line 1502 "dhcp6_parser.cc"
     break;
 
-  case 175:
-#line 736 "dhcp6_parser.yy"
+  case 179: // $@32: %empty
+#line 752 "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 1493 "dhcp6_parser.cc"
+#line 1513 "dhcp6_parser.cc"
     break;
 
-  case 176:
-#line 741 "dhcp6_parser.yy"
+  case 180: // hosts_database: "hosts-database" $@32 ":" "{" database_map_params "}"
+#line 757 "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 1504 "dhcp6_parser.cc"
+#line 1524 "dhcp6_parser.cc"
     break;
 
-  case 177:
-#line 748 "dhcp6_parser.yy"
+  case 181: // $@33: %empty
+#line 764 "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 1515 "dhcp6_parser.cc"
+#line 1535 "dhcp6_parser.cc"
     break;
 
-  case 178:
-#line 753 "dhcp6_parser.yy"
+  case 182: // hosts_databases: "hosts-databases" $@33 ":" "[" database_list "]"
+#line 769 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1524 "dhcp6_parser.cc"
+#line 1544 "dhcp6_parser.cc"
     break;
 
-  case 183:
-#line 766 "dhcp6_parser.yy"
+  case 187: // $@34: %empty
+#line 782 "dhcp6_parser.yy"
                          {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 1534 "dhcp6_parser.cc"
+#line 1554 "dhcp6_parser.cc"
     break;
 
-  case 184:
-#line 770 "dhcp6_parser.yy"
+  case 188: // database: "{" $@34 database_map_params "}"
+#line 786 "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 1544 "dhcp6_parser.cc"
+#line 1564 "dhcp6_parser.cc"
     break;
 
-  case 208:
-#line 803 "dhcp6_parser.yy"
+  case 212: // $@35: %empty
+#line 819 "dhcp6_parser.yy"
                     {
     ctx.enter(ctx.DATABASE_TYPE);
 }
-#line 1552 "dhcp6_parser.cc"
+#line 1572 "dhcp6_parser.cc"
     break;
 
-  case 209:
-#line 805 "dhcp6_parser.yy"
+  case 213: // database_type: "type" $@35 ":" db_type
+#line 821 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 1561 "dhcp6_parser.cc"
+#line 1581 "dhcp6_parser.cc"
     break;
 
-  case 210:
-#line 810 "dhcp6_parser.yy"
+  case 214: // db_type: "memfile"
+#line 826 "dhcp6_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("memfile", ctx.loc2pos(yystack_[0].location))); }
-#line 1567 "dhcp6_parser.cc"
+#line 1587 "dhcp6_parser.cc"
     break;
 
-  case 211:
-#line 811 "dhcp6_parser.yy"
+  case 215: // db_type: "mysql"
+#line 827 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("mysql", ctx.loc2pos(yystack_[0].location))); }
-#line 1573 "dhcp6_parser.cc"
+#line 1593 "dhcp6_parser.cc"
     break;
 
-  case 212:
-#line 812 "dhcp6_parser.yy"
+  case 216: // db_type: "postgresql"
+#line 828 "dhcp6_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("postgresql", ctx.loc2pos(yystack_[0].location))); }
-#line 1579 "dhcp6_parser.cc"
+#line 1599 "dhcp6_parser.cc"
     break;
 
-  case 213:
-#line 813 "dhcp6_parser.yy"
+  case 217: // db_type: "cql"
+#line 829 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("cql", ctx.loc2pos(yystack_[0].location))); }
-#line 1585 "dhcp6_parser.cc"
+#line 1605 "dhcp6_parser.cc"
     break;
 
-  case 214:
-#line 816 "dhcp6_parser.yy"
+  case 218: // $@36: %empty
+#line 832 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1593 "dhcp6_parser.cc"
+#line 1613 "dhcp6_parser.cc"
     break;
 
-  case 215:
-#line 818 "dhcp6_parser.yy"
+  case 219: // user: "user" $@36 ":" "constant string"
+#line 834 "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 1603 "dhcp6_parser.cc"
+#line 1623 "dhcp6_parser.cc"
     break;
 
-  case 216:
-#line 824 "dhcp6_parser.yy"
+  case 220: // $@37: %empty
+#line 840 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1611 "dhcp6_parser.cc"
+#line 1631 "dhcp6_parser.cc"
     break;
 
-  case 217:
-#line 826 "dhcp6_parser.yy"
+  case 221: // password: "password" $@37 ":" "constant string"
+#line 842 "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 1621 "dhcp6_parser.cc"
+#line 1641 "dhcp6_parser.cc"
     break;
 
-  case 218:
-#line 832 "dhcp6_parser.yy"
+  case 222: // $@38: %empty
+#line 848 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1629 "dhcp6_parser.cc"
+#line 1649 "dhcp6_parser.cc"
     break;
 
-  case 219:
-#line 834 "dhcp6_parser.yy"
+  case 223: // host: "host" $@38 ":" "constant string"
+#line 850 "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 1639 "dhcp6_parser.cc"
+#line 1659 "dhcp6_parser.cc"
     break;
 
-  case 220:
-#line 840 "dhcp6_parser.yy"
+  case 224: // port: "port" ":" "integer"
+#line 856 "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 1648 "dhcp6_parser.cc"
+#line 1668 "dhcp6_parser.cc"
     break;
 
-  case 221:
-#line 845 "dhcp6_parser.yy"
+  case 225: // $@39: %empty
+#line 861 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1656 "dhcp6_parser.cc"
+#line 1676 "dhcp6_parser.cc"
     break;
 
-  case 222:
-#line 847 "dhcp6_parser.yy"
+  case 226: // name: "name" $@39 ":" "constant string"
+#line 863 "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 1666 "dhcp6_parser.cc"
+#line 1686 "dhcp6_parser.cc"
     break;
 
-  case 223:
-#line 853 "dhcp6_parser.yy"
+  case 227: // persist: "persist" ":" "boolean"
+#line 869 "dhcp6_parser.yy"
                                {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("persist", n);
 }
-#line 1675 "dhcp6_parser.cc"
+#line 1695 "dhcp6_parser.cc"
     break;
 
-  case 224:
-#line 858 "dhcp6_parser.yy"
+  case 228: // lfc_interval: "lfc-interval" ":" "integer"
+#line 874 "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 1684 "dhcp6_parser.cc"
+#line 1704 "dhcp6_parser.cc"
     break;
 
-  case 225:
-#line 863 "dhcp6_parser.yy"
+  case 229: // readonly: "readonly" ":" "boolean"
+#line 879 "dhcp6_parser.yy"
                                  {
     ElementPtr n(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("readonly", n);
 }
-#line 1693 "dhcp6_parser.cc"
+#line 1713 "dhcp6_parser.cc"
     break;
 
-  case 226:
-#line 868 "dhcp6_parser.yy"
+  case 230: // connect_timeout: "connect-timeout" ":" "integer"
+#line 884 "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 1702 "dhcp6_parser.cc"
+#line 1722 "dhcp6_parser.cc"
     break;
 
-  case 227:
-#line 873 "dhcp6_parser.yy"
+  case 231: // reconnect_wait_time: "reconnect-wait-time" ":" "integer"
+#line 889 "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 1711 "dhcp6_parser.cc"
+#line 1731 "dhcp6_parser.cc"
     break;
 
-  case 228:
-#line 878 "dhcp6_parser.yy"
+  case 232: // max_row_errors: "max-row-errors" ":" "integer"
+#line 894 "dhcp6_parser.yy"
                                              {
     ElementPtr n(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("max-row-errors", n);
 }
-#line 1720 "dhcp6_parser.cc"
+#line 1740 "dhcp6_parser.cc"
     break;
 
-  case 229:
-#line 883 "dhcp6_parser.yy"
+  case 233: // request_timeout: "request-timeout" ":" "integer"
+#line 899 "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 1729 "dhcp6_parser.cc"
+#line 1749 "dhcp6_parser.cc"
     break;
 
-  case 230:
-#line 888 "dhcp6_parser.yy"
+  case 234: // tcp_keepalive: "tcp-keepalive" ":" "integer"
+#line 904 "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 1738 "dhcp6_parser.cc"
+#line 1758 "dhcp6_parser.cc"
     break;
 
-  case 231:
-#line 893 "dhcp6_parser.yy"
+  case 235: // tcp_nodelay: "tcp-nodelay" ":" "boolean"
+#line 909 "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 1747 "dhcp6_parser.cc"
+#line 1767 "dhcp6_parser.cc"
     break;
 
-  case 232:
-#line 898 "dhcp6_parser.yy"
+  case 236: // $@40: %empty
+#line 914 "dhcp6_parser.yy"
                                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1755 "dhcp6_parser.cc"
+#line 1775 "dhcp6_parser.cc"
     break;
 
-  case 233:
-#line 900 "dhcp6_parser.yy"
+  case 237: // contact_points: "contact-points" $@40 ":" "constant string"
+#line 916 "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 1765 "dhcp6_parser.cc"
+#line 1785 "dhcp6_parser.cc"
     break;
 
-  case 234:
-#line 906 "dhcp6_parser.yy"
+  case 238: // max_reconnect_tries: "max-reconnect-tries" ":" "integer"
+#line 922 "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 1774 "dhcp6_parser.cc"
+#line 1794 "dhcp6_parser.cc"
     break;
 
-  case 235:
-#line 911 "dhcp6_parser.yy"
+  case 239: // $@41: %empty
+#line 927 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1782 "dhcp6_parser.cc"
+#line 1802 "dhcp6_parser.cc"
     break;
 
-  case 236:
-#line 913 "dhcp6_parser.yy"
+  case 240: // keyspace: "keyspace" $@41 ":" "constant string"
+#line 929 "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 1792 "dhcp6_parser.cc"
+#line 1812 "dhcp6_parser.cc"
     break;
 
-  case 237:
-#line 919 "dhcp6_parser.yy"
+  case 241: // $@42: %empty
+#line 935 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1800 "dhcp6_parser.cc"
+#line 1820 "dhcp6_parser.cc"
     break;
 
-  case 238:
-#line 921 "dhcp6_parser.yy"
+  case 242: // consistency: "consistency" $@42 ":" "constant string"
+#line 937 "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 1810 "dhcp6_parser.cc"
+#line 1830 "dhcp6_parser.cc"
     break;
 
-  case 239:
-#line 927 "dhcp6_parser.yy"
+  case 243: // $@43: %empty
+#line 943 "dhcp6_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1818 "dhcp6_parser.cc"
+#line 1838 "dhcp6_parser.cc"
     break;
 
-  case 240:
-#line 929 "dhcp6_parser.yy"
+  case 244: // serial_consistency: "serial-consistency" $@43 ":" "constant string"
+#line 945 "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 1828 "dhcp6_parser.cc"
+#line 1848 "dhcp6_parser.cc"
     break;
 
-  case 241:
-#line 935 "dhcp6_parser.yy"
+  case 245: // $@44: %empty
+#line 951 "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 1839 "dhcp6_parser.cc"
+#line 1859 "dhcp6_parser.cc"
     break;
 
-  case 242:
-#line 940 "dhcp6_parser.yy"
+  case 246: // sanity_checks: "sanity-checks" $@44 ":" "{" sanity_checks_params "}"
+#line 956 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1848 "dhcp6_parser.cc"
+#line 1868 "dhcp6_parser.cc"
     break;
 
-  case 246:
-#line 950 "dhcp6_parser.yy"
+  case 250: // $@45: %empty
+#line 966 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 1856 "dhcp6_parser.cc"
+#line 1876 "dhcp6_parser.cc"
     break;
 
-  case 247:
-#line 952 "dhcp6_parser.yy"
+  case 251: // lease_checks: "lease-checks" $@45 ":" "constant string"
+#line 968 "dhcp6_parser.yy"
                {
 
     if ( (string(yystack_[0].value.as < std::string > ()) == "none") ||
@@ -1872,356 +1892,356 @@ namespace isc { namespace dhcp {
               ", supported values are: none, warn, fix, fix-del, del");
     }
 }
-#line 1876 "dhcp6_parser.cc"
+#line 1896 "dhcp6_parser.cc"
     break;
 
-  case 248:
-#line 968 "dhcp6_parser.yy"
+  case 252: // $@46: %empty
+#line 984 "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 1887 "dhcp6_parser.cc"
+#line 1907 "dhcp6_parser.cc"
     break;
 
-  case 249:
-#line 973 "dhcp6_parser.yy"
+  case 253: // mac_sources: "mac-sources" $@46 ":" "[" mac_sources_list "]"
+#line 989 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1896 "dhcp6_parser.cc"
+#line 1916 "dhcp6_parser.cc"
     break;
 
-  case 254:
-#line 986 "dhcp6_parser.yy"
+  case 258: // duid_id: "duid"
+#line 1002 "dhcp6_parser.yy"
                {
     ElementPtr duid(new StringElement("duid", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1905 "dhcp6_parser.cc"
+#line 1925 "dhcp6_parser.cc"
     break;
 
-  case 255:
-#line 991 "dhcp6_parser.yy"
+  case 259: // string_id: "constant string"
+#line 1007 "dhcp6_parser.yy"
                    {
     ElementPtr duid(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(duid);
 }
-#line 1914 "dhcp6_parser.cc"
+#line 1934 "dhcp6_parser.cc"
     break;
 
-  case 256:
-#line 996 "dhcp6_parser.yy"
+  case 260: // $@47: %empty
+#line 1012 "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 1925 "dhcp6_parser.cc"
+#line 1945 "dhcp6_parser.cc"
     break;
 
-  case 257:
-#line 1001 "dhcp6_parser.yy"
+  case 261: // host_reservation_identifiers: "host-reservation-identifiers" $@47 ":" "[" host_reservation_identifiers_list "]"
+#line 1017 "dhcp6_parser.yy"
                                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1934 "dhcp6_parser.cc"
+#line 1954 "dhcp6_parser.cc"
     break;
 
-  case 263:
-#line 1015 "dhcp6_parser.yy"
+  case 267: // hw_address_id: "hw-address"
+#line 1031 "dhcp6_parser.yy"
                            {
     ElementPtr hwaddr(new StringElement("hw-address", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(hwaddr);
 }
-#line 1943 "dhcp6_parser.cc"
+#line 1963 "dhcp6_parser.cc"
     break;
 
-  case 264:
-#line 1020 "dhcp6_parser.yy"
+  case 268: // flex_id: "flex-id"
+#line 1036 "dhcp6_parser.yy"
                   {
     ElementPtr flex_id(new StringElement("flex-id", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(flex_id);
 }
-#line 1952 "dhcp6_parser.cc"
+#line 1972 "dhcp6_parser.cc"
     break;
 
-  case 265:
-#line 1027 "dhcp6_parser.yy"
+  case 269: // $@48: %empty
+#line 1043 "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 1963 "dhcp6_parser.cc"
+#line 1983 "dhcp6_parser.cc"
     break;
 
-  case 266:
-#line 1032 "dhcp6_parser.yy"
+  case 270: // relay_supplied_options: "relay-supplied-options" $@48 ":" "[" list_content "]"
+#line 1048 "dhcp6_parser.yy"
                                                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1972 "dhcp6_parser.cc"
+#line 1992 "dhcp6_parser.cc"
     break;
 
-  case 267:
-#line 1039 "dhcp6_parser.yy"
+  case 271: // $@49: %empty
+#line 1055 "dhcp6_parser.yy"
                                            {
     ElementPtr mt(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("multi-threading", mt);
     ctx.stack_.push_back(mt);
     ctx.enter(ctx.DHCP_MULTI_THREADING);
 }
-#line 1983 "dhcp6_parser.cc"
+#line 2003 "dhcp6_parser.cc"
     break;
 
-  case 268:
-#line 1044 "dhcp6_parser.yy"
+  case 272: // dhcp_multi_threading: "multi-threading" $@49 ":" "{" multi_threading_params "}"
+#line 1060 "dhcp6_parser.yy"
                                                              {
     // The enable parameter is required.
     ctx.require("enable-multi-threading", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 1994 "dhcp6_parser.cc"
+#line 2014 "dhcp6_parser.cc"
     break;
 
-  case 277:
-#line 1063 "dhcp6_parser.yy"
+  case 281: // enable_multi_threading: "enable-multi-threading" ":" "boolean"
+#line 1079 "dhcp6_parser.yy"
                                                              {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-multi-threading", b);
 }
-#line 2003 "dhcp6_parser.cc"
+#line 2023 "dhcp6_parser.cc"
     break;
 
-  case 278:
-#line 1068 "dhcp6_parser.yy"
+  case 282: // thread_pool_size: "thread-pool-size" ":" "integer"
+#line 1084 "dhcp6_parser.yy"
                                                  {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("thread-pool-size", prf);
 }
-#line 2012 "dhcp6_parser.cc"
+#line 2032 "dhcp6_parser.cc"
     break;
 
-  case 279:
-#line 1073 "dhcp6_parser.yy"
+  case 283: // packet_queue_size: "packet-queue-size" ":" "integer"
+#line 1089 "dhcp6_parser.yy"
                                                    {
     ElementPtr prf(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("packet-queue-size", prf);
 }
-#line 2021 "dhcp6_parser.cc"
+#line 2041 "dhcp6_parser.cc"
     break;
 
-  case 280:
-#line 1078 "dhcp6_parser.yy"
+  case 284: // $@50: %empty
+#line 1094 "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 2032 "dhcp6_parser.cc"
+#line 2052 "dhcp6_parser.cc"
     break;
 
-  case 281:
-#line 1083 "dhcp6_parser.yy"
+  case 285: // hooks_libraries: "hooks-libraries" $@50 ":" "[" hooks_libraries_list "]"
+#line 1099 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2041 "dhcp6_parser.cc"
+#line 2061 "dhcp6_parser.cc"
     break;
 
-  case 286:
-#line 1096 "dhcp6_parser.yy"
+  case 290: // $@51: %empty
+#line 1112 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2051 "dhcp6_parser.cc"
+#line 2071 "dhcp6_parser.cc"
     break;
 
-  case 287:
-#line 1100 "dhcp6_parser.yy"
+  case 291: // hooks_library: "{" $@51 hooks_params "}"
+#line 1116 "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 2061 "dhcp6_parser.cc"
+#line 2081 "dhcp6_parser.cc"
     break;
 
-  case 288:
-#line 1106 "dhcp6_parser.yy"
+  case 292: // $@52: %empty
+#line 1122 "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 2071 "dhcp6_parser.cc"
+#line 2091 "dhcp6_parser.cc"
     break;
 
-  case 289:
-#line 1110 "dhcp6_parser.yy"
+  case 293: // sub_hooks_library: "{" $@52 hooks_params "}"
+#line 1126 "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 2081 "dhcp6_parser.cc"
+#line 2101 "dhcp6_parser.cc"
     break;
 
-  case 295:
-#line 1125 "dhcp6_parser.yy"
+  case 299: // $@53: %empty
+#line 1141 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2089 "dhcp6_parser.cc"
+#line 2109 "dhcp6_parser.cc"
     break;
 
-  case 296:
-#line 1127 "dhcp6_parser.yy"
+  case 300: // library: "library" $@53 ":" "constant string"
+#line 1143 "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 2099 "dhcp6_parser.cc"
+#line 2119 "dhcp6_parser.cc"
     break;
 
-  case 297:
-#line 1133 "dhcp6_parser.yy"
+  case 301: // $@54: %empty
+#line 1149 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2107 "dhcp6_parser.cc"
+#line 2127 "dhcp6_parser.cc"
     break;
 
-  case 298:
-#line 1135 "dhcp6_parser.yy"
+  case 302: // parameters: "parameters" $@54 ":" map_value
+#line 1151 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2116 "dhcp6_parser.cc"
+#line 2136 "dhcp6_parser.cc"
     break;
 
-  case 299:
-#line 1141 "dhcp6_parser.yy"
+  case 303: // $@55: %empty
+#line 1157 "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 2127 "dhcp6_parser.cc"
+#line 2147 "dhcp6_parser.cc"
     break;
 
-  case 300:
-#line 1146 "dhcp6_parser.yy"
+  case 304: // expired_leases_processing: "expired-leases-processing" $@55 ":" "{" expired_leases_params "}"
+#line 1162 "dhcp6_parser.yy"
                                                             {
     // No expired lease parameter is required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2137 "dhcp6_parser.cc"
+#line 2157 "dhcp6_parser.cc"
     break;
 
-  case 309:
-#line 1164 "dhcp6_parser.yy"
+  case 313: // reclaim_timer_wait_time: "reclaim-timer-wait-time" ":" "integer"
+#line 1180 "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 2146 "dhcp6_parser.cc"
+#line 2166 "dhcp6_parser.cc"
     break;
 
-  case 310:
-#line 1169 "dhcp6_parser.yy"
+  case 314: // flush_reclaimed_timer_wait_time: "flush-reclaimed-timer-wait-time" ":" "integer"
+#line 1185 "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 2155 "dhcp6_parser.cc"
+#line 2175 "dhcp6_parser.cc"
     break;
 
-  case 311:
-#line 1174 "dhcp6_parser.yy"
+  case 315: // hold_reclaimed_time: "hold-reclaimed-time" ":" "integer"
+#line 1190 "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 2164 "dhcp6_parser.cc"
+#line 2184 "dhcp6_parser.cc"
     break;
 
-  case 312:
-#line 1179 "dhcp6_parser.yy"
+  case 316: // max_reclaim_leases: "max-reclaim-leases" ":" "integer"
+#line 1195 "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 2173 "dhcp6_parser.cc"
+#line 2193 "dhcp6_parser.cc"
     break;
 
-  case 313:
-#line 1184 "dhcp6_parser.yy"
+  case 317: // max_reclaim_time: "max-reclaim-time" ":" "integer"
+#line 1200 "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 2182 "dhcp6_parser.cc"
+#line 2202 "dhcp6_parser.cc"
     break;
 
-  case 314:
-#line 1189 "dhcp6_parser.yy"
+  case 318: // unwarned_reclaim_cycles: "unwarned-reclaim-cycles" ":" "integer"
+#line 1205 "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 2191 "dhcp6_parser.cc"
+#line 2211 "dhcp6_parser.cc"
     break;
 
-  case 315:
-#line 1197 "dhcp6_parser.yy"
+  case 319: // $@56: %empty
+#line 1213 "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 2202 "dhcp6_parser.cc"
+#line 2222 "dhcp6_parser.cc"
     break;
 
-  case 316:
-#line 1202 "dhcp6_parser.yy"
+  case 320: // subnet6_list: "subnet6" $@56 ":" "[" subnet6_list_content "]"
+#line 1218 "dhcp6_parser.yy"
                                                              {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2211 "dhcp6_parser.cc"
+#line 2231 "dhcp6_parser.cc"
     break;
 
-  case 321:
-#line 1222 "dhcp6_parser.yy"
+  case 325: // $@57: %empty
+#line 1238 "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 2241 "dhcp6_parser.cc"
     break;
 
-  case 322:
-#line 1226 "dhcp6_parser.yy"
+  case 326: // subnet6: "{" $@57 subnet6_params "}"
+#line 1242 "dhcp6_parser.yy"
                                 {
     // Once we reached this place, the subnet parsing is now complete.
     // If we want to, we can implement default values here.
@@ -2243,267 +2263,267 @@ namespace isc { namespace dhcp {
     ctx.require("subnet", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2247 "dhcp6_parser.cc"
+#line 2267 "dhcp6_parser.cc"
     break;
 
-  case 323:
-#line 1248 "dhcp6_parser.yy"
+  case 327: // $@58: %empty
+#line 1264 "dhcp6_parser.yy"
                             {
     // Parse the subnet6 list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2257 "dhcp6_parser.cc"
+#line 2277 "dhcp6_parser.cc"
     break;
 
-  case 324:
-#line 1252 "dhcp6_parser.yy"
+  case 328: // sub_subnet6: "{" $@58 subnet6_params "}"
+#line 1268 "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 2267 "dhcp6_parser.cc"
+#line 2287 "dhcp6_parser.cc"
     break;
 
-  case 363:
-#line 1302 "dhcp6_parser.yy"
+  case 369: // $@59: %empty
+#line 1320 "dhcp6_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2275 "dhcp6_parser.cc"
+#line 2295 "dhcp6_parser.cc"
     break;
 
-  case 364:
-#line 1304 "dhcp6_parser.yy"
+  case 370: // subnet: "subnet" $@59 ":" "constant string"
+#line 1322 "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 2285 "dhcp6_parser.cc"
+#line 2305 "dhcp6_parser.cc"
     break;
 
-  case 365:
-#line 1310 "dhcp6_parser.yy"
+  case 371: // $@60: %empty
+#line 1328 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2293 "dhcp6_parser.cc"
+#line 2313 "dhcp6_parser.cc"
     break;
 
-  case 366:
-#line 1312 "dhcp6_parser.yy"
+  case 372: // interface: "interface" $@60 ":" "constant string"
+#line 1330 "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 2303 "dhcp6_parser.cc"
+#line 2323 "dhcp6_parser.cc"
     break;
 
-  case 367:
-#line 1318 "dhcp6_parser.yy"
+  case 373: // $@61: %empty
+#line 1336 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2311 "dhcp6_parser.cc"
+#line 2331 "dhcp6_parser.cc"
     break;
 
-  case 368:
-#line 1320 "dhcp6_parser.yy"
+  case 374: // interface_id: "interface-id" $@61 ":" "constant string"
+#line 1338 "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 2321 "dhcp6_parser.cc"
+#line 2341 "dhcp6_parser.cc"
     break;
 
-  case 369:
-#line 1326 "dhcp6_parser.yy"
+  case 375: // $@62: %empty
+#line 1344 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2329 "dhcp6_parser.cc"
+#line 2349 "dhcp6_parser.cc"
     break;
 
-  case 370:
-#line 1328 "dhcp6_parser.yy"
+  case 376: // client_class: "client-class" $@62 ":" "constant string"
+#line 1346 "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 2339 "dhcp6_parser.cc"
+#line 2359 "dhcp6_parser.cc"
     break;
 
-  case 371:
-#line 1334 "dhcp6_parser.yy"
+  case 377: // $@63: %empty
+#line 1352 "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 2350 "dhcp6_parser.cc"
+#line 2370 "dhcp6_parser.cc"
     break;
 
-  case 372:
-#line 1339 "dhcp6_parser.yy"
+  case 378: // require_client_classes: "require-client-classes" $@63 ":" list_strings
+#line 1357 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2359 "dhcp6_parser.cc"
+#line 2379 "dhcp6_parser.cc"
     break;
 
-  case 373:
-#line 1344 "dhcp6_parser.yy"
+  case 379: // $@64: %empty
+#line 1362 "dhcp6_parser.yy"
                                    {
     ctx.enter(ctx.RESERVATION_MODE);
 }
-#line 2367 "dhcp6_parser.cc"
+#line 2387 "dhcp6_parser.cc"
     break;
 
-  case 374:
-#line 1346 "dhcp6_parser.yy"
+  case 380: // reservation_mode: "reservation-mode" $@64 ":" hr_mode
+#line 1364 "dhcp6_parser.yy"
                 {
     ctx.stack_.back()->set("reservation-mode", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 2376 "dhcp6_parser.cc"
+#line 2396 "dhcp6_parser.cc"
     break;
 
-  case 375:
-#line 1351 "dhcp6_parser.yy"
+  case 381: // hr_mode: "disabled"
+#line 1369 "dhcp6_parser.yy"
                   { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("disabled", ctx.loc2pos(yystack_[0].location))); }
-#line 2382 "dhcp6_parser.cc"
+#line 2402 "dhcp6_parser.cc"
     break;
 
-  case 376:
-#line 1352 "dhcp6_parser.yy"
+  case 382: // hr_mode: "out-of-pool"
+#line 1370 "dhcp6_parser.yy"
                      { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("out-of-pool", ctx.loc2pos(yystack_[0].location))); }
-#line 2388 "dhcp6_parser.cc"
+#line 2408 "dhcp6_parser.cc"
     break;
 
-  case 377:
-#line 1353 "dhcp6_parser.yy"
+  case 383: // hr_mode: "global"
+#line 1371 "dhcp6_parser.yy"
                 { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("global", ctx.loc2pos(yystack_[0].location))); }
-#line 2394 "dhcp6_parser.cc"
+#line 2414 "dhcp6_parser.cc"
     break;
 
-  case 378:
-#line 1354 "dhcp6_parser.yy"
+  case 384: // hr_mode: "all"
+#line 1372 "dhcp6_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("all", ctx.loc2pos(yystack_[0].location))); }
-#line 2400 "dhcp6_parser.cc"
+#line 2420 "dhcp6_parser.cc"
     break;
 
-  case 379:
-#line 1357 "dhcp6_parser.yy"
+  case 385: // id: "id" ":" "integer"
+#line 1375 "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 2409 "dhcp6_parser.cc"
+#line 2429 "dhcp6_parser.cc"
     break;
 
-  case 380:
-#line 1362 "dhcp6_parser.yy"
+  case 386: // rapid_commit: "rapid-commit" ":" "boolean"
+#line 1380 "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 2418 "dhcp6_parser.cc"
+#line 2438 "dhcp6_parser.cc"
     break;
 
-  case 381:
-#line 1369 "dhcp6_parser.yy"
+  case 387: // $@65: %empty
+#line 1387 "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 2429 "dhcp6_parser.cc"
+#line 2449 "dhcp6_parser.cc"
     break;
 
-  case 382:
-#line 1374 "dhcp6_parser.yy"
+  case 388: // shared_networks: "shared-networks" $@65 ":" "[" shared_networks_content "]"
+#line 1392 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2438 "dhcp6_parser.cc"
+#line 2458 "dhcp6_parser.cc"
     break;
 
-  case 387:
-#line 1389 "dhcp6_parser.yy"
+  case 393: // $@66: %empty
+#line 1407 "dhcp6_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2448 "dhcp6_parser.cc"
+#line 2468 "dhcp6_parser.cc"
     break;
 
-  case 388:
-#line 1393 "dhcp6_parser.yy"
+  case 394: // shared_network: "{" $@66 shared_network_params "}"
+#line 1411 "dhcp6_parser.yy"
                                        {
     ctx.stack_.pop_back();
 }
-#line 2456 "dhcp6_parser.cc"
+#line 2476 "dhcp6_parser.cc"
     break;
 
-  case 424:
-#line 1440 "dhcp6_parser.yy"
+  case 432: // $@67: %empty
+#line 1460 "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 2467 "dhcp6_parser.cc"
+#line 2487 "dhcp6_parser.cc"
     break;
 
-  case 425:
-#line 1445 "dhcp6_parser.yy"
+  case 433: // option_def_list: "option-def" $@67 ":" "[" option_def_list_content "]"
+#line 1465 "dhcp6_parser.yy"
                                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2476 "dhcp6_parser.cc"
+#line 2496 "dhcp6_parser.cc"
     break;
 
-  case 426:
-#line 1453 "dhcp6_parser.yy"
+  case 434: // $@68: %empty
+#line 1473 "dhcp6_parser.yy"
                                     {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2485 "dhcp6_parser.cc"
+#line 2505 "dhcp6_parser.cc"
     break;
 
-  case 427:
-#line 1456 "dhcp6_parser.yy"
+  case 435: // sub_option_def_list: "{" $@68 option_def_list "}"
+#line 1476 "dhcp6_parser.yy"
                                  {
     // parsing completed
 }
-#line 2493 "dhcp6_parser.cc"
+#line 2513 "dhcp6_parser.cc"
     break;
 
-  case 432:
-#line 1472 "dhcp6_parser.yy"
+  case 440: // $@69: %empty
+#line 1492 "dhcp6_parser.yy"
                                  {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2503 "dhcp6_parser.cc"
+#line 2523 "dhcp6_parser.cc"
     break;
 
-  case 433:
-#line 1476 "dhcp6_parser.yy"
+  case 441: // option_def_entry: "{" $@69 option_def_params "}"
+#line 1496 "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));
@@ -2511,21 +2531,21 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2515 "dhcp6_parser.cc"
+#line 2535 "dhcp6_parser.cc"
     break;
 
-  case 434:
-#line 1487 "dhcp6_parser.yy"
+  case 442: // $@70: %empty
+#line 1507 "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 2525 "dhcp6_parser.cc"
+#line 2545 "dhcp6_parser.cc"
     break;
 
-  case 435:
-#line 1491 "dhcp6_parser.yy"
+  case 443: // sub_option_def: "{" $@70 option_def_params "}"
+#line 1511 "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));
@@ -2533,281 +2553,281 @@ namespace isc { namespace dhcp {
     ctx.require("type", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2537 "dhcp6_parser.cc"
+#line 2557 "dhcp6_parser.cc"
     break;
 
-  case 451:
-#line 1523 "dhcp6_parser.yy"
+  case 459: // code: "code" ":" "integer"
+#line 1543 "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 2546 "dhcp6_parser.cc"
+#line 2566 "dhcp6_parser.cc"
     break;
 
-  case 453:
-#line 1530 "dhcp6_parser.yy"
+  case 461: // $@71: %empty
+#line 1550 "dhcp6_parser.yy"
                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2554 "dhcp6_parser.cc"
+#line 2574 "dhcp6_parser.cc"
     break;
 
-  case 454:
-#line 1532 "dhcp6_parser.yy"
+  case 462: // option_def_type: "type" $@71 ":" "constant string"
+#line 1552 "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 2564 "dhcp6_parser.cc"
+#line 2584 "dhcp6_parser.cc"
     break;
 
-  case 455:
-#line 1538 "dhcp6_parser.yy"
+  case 463: // $@72: %empty
+#line 1558 "dhcp6_parser.yy"
                                       {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2572 "dhcp6_parser.cc"
+#line 2592 "dhcp6_parser.cc"
     break;
 
-  case 456:
-#line 1540 "dhcp6_parser.yy"
+  case 464: // option_def_record_types: "record-types" $@72 ":" "constant string"
+#line 1560 "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 2582 "dhcp6_parser.cc"
+#line 2602 "dhcp6_parser.cc"
     break;
 
-  case 457:
-#line 1546 "dhcp6_parser.yy"
+  case 465: // $@73: %empty
+#line 1566 "dhcp6_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2590 "dhcp6_parser.cc"
+#line 2610 "dhcp6_parser.cc"
     break;
 
-  case 458:
-#line 1548 "dhcp6_parser.yy"
+  case 466: // space: "space" $@73 ":" "constant string"
+#line 1568 "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 2600 "dhcp6_parser.cc"
+#line 2620 "dhcp6_parser.cc"
     break;
 
-  case 460:
-#line 1556 "dhcp6_parser.yy"
+  case 468: // $@74: %empty
+#line 1576 "dhcp6_parser.yy"
                                     {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2608 "dhcp6_parser.cc"
+#line 2628 "dhcp6_parser.cc"
     break;
 
-  case 461:
-#line 1558 "dhcp6_parser.yy"
+  case 469: // option_def_encapsulate: "encapsulate" $@74 ":" "constant string"
+#line 1578 "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 2618 "dhcp6_parser.cc"
+#line 2638 "dhcp6_parser.cc"
     break;
 
-  case 462:
-#line 1564 "dhcp6_parser.yy"
+  case 470: // option_def_array: "array" ":" "boolean"
+#line 1584 "dhcp6_parser.yy"
                                       {
     ElementPtr array(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("array", array);
 }
-#line 2627 "dhcp6_parser.cc"
+#line 2647 "dhcp6_parser.cc"
     break;
 
-  case 463:
-#line 1573 "dhcp6_parser.yy"
+  case 471: // $@75: %empty
+#line 1593 "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 2638 "dhcp6_parser.cc"
+#line 2658 "dhcp6_parser.cc"
     break;
 
-  case 464:
-#line 1578 "dhcp6_parser.yy"
+  case 472: // option_data_list: "option-data" $@75 ":" "[" option_data_list_content "]"
+#line 1598 "dhcp6_parser.yy"
                                                                  {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2647 "dhcp6_parser.cc"
+#line 2667 "dhcp6_parser.cc"
     break;
 
-  case 469:
-#line 1597 "dhcp6_parser.yy"
+  case 477: // $@76: %empty
+#line 1617 "dhcp6_parser.yy"
                                   {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2657 "dhcp6_parser.cc"
+#line 2677 "dhcp6_parser.cc"
     break;
 
-  case 470:
-#line 1601 "dhcp6_parser.yy"
+  case 478: // option_data_entry: "{" $@76 option_data_params "}"
+#line 1621 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     ctx.stack_.pop_back();
 }
-#line 2666 "dhcp6_parser.cc"
+#line 2686 "dhcp6_parser.cc"
     break;
 
-  case 471:
-#line 1609 "dhcp6_parser.yy"
+  case 479: // $@77: %empty
+#line 1629 "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 2676 "dhcp6_parser.cc"
+#line 2696 "dhcp6_parser.cc"
     break;
 
-  case 472:
-#line 1613 "dhcp6_parser.yy"
+  case 480: // sub_option_data: "{" $@77 option_data_params "}"
+#line 1633 "dhcp6_parser.yy"
                                     {
     /// @todo: the code or name parameters are required.
     // parsing completed
 }
-#line 2685 "dhcp6_parser.cc"
+#line 2705 "dhcp6_parser.cc"
     break;
 
-  case 487:
-#line 1646 "dhcp6_parser.yy"
+  case 495: // $@78: %empty
+#line 1666 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2693 "dhcp6_parser.cc"
+#line 2713 "dhcp6_parser.cc"
     break;
 
-  case 488:
-#line 1648 "dhcp6_parser.yy"
+  case 496: // option_data_data: "data" $@78 ":" "constant string"
+#line 1668 "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 2703 "dhcp6_parser.cc"
+#line 2723 "dhcp6_parser.cc"
     break;
 
-  case 491:
-#line 1658 "dhcp6_parser.yy"
+  case 499: // option_data_csv_format: "csv-format" ":" "boolean"
+#line 1678 "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 2712 "dhcp6_parser.cc"
+#line 2732 "dhcp6_parser.cc"
     break;
 
-  case 492:
-#line 1663 "dhcp6_parser.yy"
+  case 500: // option_data_always_send: "always-send" ":" "boolean"
+#line 1683 "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 2721 "dhcp6_parser.cc"
+#line 2741 "dhcp6_parser.cc"
     break;
 
-  case 493:
-#line 1671 "dhcp6_parser.yy"
+  case 501: // $@79: %empty
+#line 1691 "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 2732 "dhcp6_parser.cc"
+#line 2752 "dhcp6_parser.cc"
     break;
 
-  case 494:
-#line 1676 "dhcp6_parser.yy"
+  case 502: // pools_list: "pools" $@79 ":" "[" pools_list_content "]"
+#line 1696 "dhcp6_parser.yy"
                                                            {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2741 "dhcp6_parser.cc"
+#line 2761 "dhcp6_parser.cc"
     break;
 
-  case 499:
-#line 1691 "dhcp6_parser.yy"
+  case 507: // $@80: %empty
+#line 1711 "dhcp6_parser.yy"
                                 {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2751 "dhcp6_parser.cc"
+#line 2771 "dhcp6_parser.cc"
     break;
 
-  case 500:
-#line 1695 "dhcp6_parser.yy"
+  case 508: // pool_list_entry: "{" $@80 pool_params "}"
+#line 1715 "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 2761 "dhcp6_parser.cc"
+#line 2781 "dhcp6_parser.cc"
     break;
 
-  case 501:
-#line 1701 "dhcp6_parser.yy"
+  case 509: // $@81: %empty
+#line 1721 "dhcp6_parser.yy"
                           {
     // Parse the pool list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 2771 "dhcp6_parser.cc"
+#line 2791 "dhcp6_parser.cc"
     break;
 
-  case 502:
-#line 1705 "dhcp6_parser.yy"
+  case 510: // sub_pool6: "{" $@81 pool_params "}"
+#line 1725 "dhcp6_parser.yy"
                              {
     // The pool parameter is required.
     ctx.require("pool", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2781 "dhcp6_parser.cc"
+#line 2801 "dhcp6_parser.cc"
     break;
 
-  case 512:
-#line 1724 "dhcp6_parser.yy"
+  case 520: // $@82: %empty
+#line 1744 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2789 "dhcp6_parser.cc"
+#line 2809 "dhcp6_parser.cc"
     break;
 
-  case 513:
-#line 1726 "dhcp6_parser.yy"
+  case 521: // pool_entry: "pool" $@82 ":" "constant string"
+#line 1746 "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 2799 "dhcp6_parser.cc"
+#line 2819 "dhcp6_parser.cc"
     break;
 
-  case 514:
-#line 1732 "dhcp6_parser.yy"
+  case 522: // $@83: %empty
+#line 1752 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2807 "dhcp6_parser.cc"
+#line 2827 "dhcp6_parser.cc"
     break;
 
-  case 515:
-#line 1734 "dhcp6_parser.yy"
+  case 523: // user_context: "user-context" $@83 ":" map_value
+#line 1754 "dhcp6_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context = yystack_[0].value.as < ElementPtr > ();
@@ -2830,19 +2850,19 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2834 "dhcp6_parser.cc"
+#line 2854 "dhcp6_parser.cc"
     break;
 
-  case 516:
-#line 1757 "dhcp6_parser.yy"
+  case 524: // $@84: %empty
+#line 1777 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2842 "dhcp6_parser.cc"
+#line 2862 "dhcp6_parser.cc"
     break;
 
-  case 517:
-#line 1759 "dhcp6_parser.yy"
+  case 525: // comment: "comment" $@84 ":" "constant string"
+#line 1779 "dhcp6_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
     ElementPtr user_context(new MapElement(ctx.loc2pos(yystack_[3].location)));
@@ -2867,41 +2887,41 @@ namespace isc { namespace dhcp {
     parent->set("user-context", user_context);
     ctx.leave();
 }
-#line 2871 "dhcp6_parser.cc"
+#line 2891 "dhcp6_parser.cc"
     break;
 
-  case 518:
-#line 1787 "dhcp6_parser.yy"
+  case 526: // $@85: %empty
+#line 1807 "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 2882 "dhcp6_parser.cc"
+#line 2902 "dhcp6_parser.cc"
     break;
 
-  case 519:
-#line 1792 "dhcp6_parser.yy"
+  case 527: // pd_pools_list: "pd-pools" $@85 ":" "[" pd_pools_list_content "]"
+#line 1812 "dhcp6_parser.yy"
                                                               {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 2891 "dhcp6_parser.cc"
+#line 2911 "dhcp6_parser.cc"
     break;
 
-  case 524:
-#line 1807 "dhcp6_parser.yy"
+  case 532: // $@86: %empty
+#line 1827 "dhcp6_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 2901 "dhcp6_parser.cc"
+#line 2921 "dhcp6_parser.cc"
     break;
 
-  case 525:
-#line 1811 "dhcp6_parser.yy"
+  case 533: // pd_pool_entry: "{" $@86 pd_pool_params "}"
+#line 1831 "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));
@@ -2909,21 +2929,21 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
 }
-#line 2913 "dhcp6_parser.cc"
+#line 2933 "dhcp6_parser.cc"
     break;
 
-  case 526:
-#line 1819 "dhcp6_parser.yy"
+  case 534: // $@87: %empty
+#line 1839 "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 2923 "dhcp6_parser.cc"
+#line 2943 "dhcp6_parser.cc"
     break;
 
-  case 527:
-#line 1823 "dhcp6_parser.yy"
+  case 535: // sub_pd_pool: "{" $@87 pd_pool_params "}"
+#line 1843 "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));
@@ -2931,1114 +2951,1114 @@ namespace isc { namespace dhcp {
     ctx.require("delegated-len", ctx.loc2pos(yystack_[3].location), ctx.loc2pos(yystack_[0].location));
     // parsing completed
 }
-#line 2935 "dhcp6_parser.cc"
+#line 2955 "dhcp6_parser.cc"
     break;
 
-  case 541:
-#line 1848 "dhcp6_parser.yy"
+  case 549: // $@88: %empty
+#line 1868 "dhcp6_parser.yy"
                   {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2943 "dhcp6_parser.cc"
+#line 2963 "dhcp6_parser.cc"
     break;
 
-  case 542:
-#line 1850 "dhcp6_parser.yy"
+  case 550: // pd_prefix: "prefix" $@88 ":" "constant string"
+#line 1870 "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 2953 "dhcp6_parser.cc"
+#line 2973 "dhcp6_parser.cc"
     break;
 
-  case 543:
-#line 1856 "dhcp6_parser.yy"
+  case 551: // pd_prefix_len: "prefix-len" ":" "integer"
+#line 1876 "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 2962 "dhcp6_parser.cc"
+#line 2982 "dhcp6_parser.cc"
     break;
 
-  case 544:
-#line 1861 "dhcp6_parser.yy"
+  case 552: // $@89: %empty
+#line 1881 "dhcp6_parser.yy"
                                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 2970 "dhcp6_parser.cc"
+#line 2990 "dhcp6_parser.cc"
     break;
 
-  case 545:
-#line 1863 "dhcp6_parser.yy"
+  case 553: // excluded_prefix: "excluded-prefix" $@89 ":" "constant string"
+#line 1883 "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 2980 "dhcp6_parser.cc"
+#line 3000 "dhcp6_parser.cc"
     break;
 
-  case 546:
-#line 1869 "dhcp6_parser.yy"
+  case 554: // excluded_prefix_len: "excluded-prefix-len" ":" "integer"
+#line 1889 "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 2989 "dhcp6_parser.cc"
+#line 3009 "dhcp6_parser.cc"
     break;
 
-  case 547:
-#line 1874 "dhcp6_parser.yy"
+  case 555: // pd_delegated_len: "delegated-len" ":" "integer"
+#line 1894 "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 2998 "dhcp6_parser.cc"
+#line 3018 "dhcp6_parser.cc"
     break;
 
-  case 548:
-#line 1882 "dhcp6_parser.yy"
+  case 556: // $@90: %empty
+#line 1902 "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 3009 "dhcp6_parser.cc"
+#line 3029 "dhcp6_parser.cc"
     break;
 
-  case 549:
-#line 1887 "dhcp6_parser.yy"
+  case 557: // reservations: "reservations" $@90 ":" "[" reservations_list "]"
+#line 1907 "dhcp6_parser.yy"
                                                           {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3018 "dhcp6_parser.cc"
+#line 3038 "dhcp6_parser.cc"
     break;
 
-  case 554:
-#line 1900 "dhcp6_parser.yy"
+  case 562: // $@91: %empty
+#line 1920 "dhcp6_parser.yy"
                             {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3028 "dhcp6_parser.cc"
+#line 3048 "dhcp6_parser.cc"
     break;
 
-  case 555:
-#line 1904 "dhcp6_parser.yy"
+  case 563: // reservation: "{" $@91 reservation_params "}"
+#line 1924 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     ctx.stack_.pop_back();
 }
-#line 3037 "dhcp6_parser.cc"
+#line 3057 "dhcp6_parser.cc"
     break;
 
-  case 556:
-#line 1909 "dhcp6_parser.yy"
+  case 564: // $@92: %empty
+#line 1929 "dhcp6_parser.yy"
                                 {
     // Parse the reservations list entry map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3047 "dhcp6_parser.cc"
+#line 3067 "dhcp6_parser.cc"
     break;
 
-  case 557:
-#line 1913 "dhcp6_parser.yy"
+  case 565: // sub_reservation: "{" $@92 reservation_params "}"
+#line 1933 "dhcp6_parser.yy"
                                     {
     /// @todo: an identifier parameter is required.
     // parsing completed
 }
-#line 3056 "dhcp6_parser.cc"
+#line 3076 "dhcp6_parser.cc"
     break;
 
-  case 573:
-#line 1940 "dhcp6_parser.yy"
+  case 581: // $@93: %empty
+#line 1960 "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 3067 "dhcp6_parser.cc"
+#line 3087 "dhcp6_parser.cc"
     break;
 
-  case 574:
-#line 1945 "dhcp6_parser.yy"
+  case 582: // ip_addresses: "ip-addresses" $@93 ":" list_strings
+#line 1965 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3076 "dhcp6_parser.cc"
+#line 3096 "dhcp6_parser.cc"
     break;
 
-  case 575:
-#line 1950 "dhcp6_parser.yy"
+  case 583: // $@94: %empty
+#line 1970 "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 3087 "dhcp6_parser.cc"
+#line 3107 "dhcp6_parser.cc"
     break;
 
-  case 576:
-#line 1955 "dhcp6_parser.yy"
+  case 584: // prefixes: "prefixes" $@94 ":" list_strings
+#line 1975 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3096 "dhcp6_parser.cc"
+#line 3116 "dhcp6_parser.cc"
     break;
 
-  case 577:
-#line 1960 "dhcp6_parser.yy"
+  case 585: // $@95: %empty
+#line 1980 "dhcp6_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3104 "dhcp6_parser.cc"
+#line 3124 "dhcp6_parser.cc"
     break;
 
-  case 578:
-#line 1962 "dhcp6_parser.yy"
+  case 586: // duid: "duid" $@95 ":" "constant string"
+#line 1982 "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 3114 "dhcp6_parser.cc"
+#line 3134 "dhcp6_parser.cc"
     break;
 
-  case 579:
-#line 1968 "dhcp6_parser.yy"
+  case 587: // $@96: %empty
+#line 1988 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3122 "dhcp6_parser.cc"
+#line 3142 "dhcp6_parser.cc"
     break;
 
-  case 580:
-#line 1970 "dhcp6_parser.yy"
+  case 588: // hw_address: "hw-address" $@96 ":" "constant string"
+#line 1990 "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 3132 "dhcp6_parser.cc"
+#line 3152 "dhcp6_parser.cc"
     break;
 
-  case 581:
-#line 1976 "dhcp6_parser.yy"
+  case 589: // $@97: %empty
+#line 1996 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3140 "dhcp6_parser.cc"
+#line 3160 "dhcp6_parser.cc"
     break;
 
-  case 582:
-#line 1978 "dhcp6_parser.yy"
+  case 590: // hostname: "hostname" $@97 ":" "constant string"
+#line 1998 "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 3150 "dhcp6_parser.cc"
+#line 3170 "dhcp6_parser.cc"
     break;
 
-  case 583:
-#line 1984 "dhcp6_parser.yy"
+  case 591: // $@98: %empty
+#line 2004 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3158 "dhcp6_parser.cc"
+#line 3178 "dhcp6_parser.cc"
     break;
 
-  case 584:
-#line 1986 "dhcp6_parser.yy"
+  case 592: // flex_id_value: "flex-id" $@98 ":" "constant string"
+#line 2006 "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 3168 "dhcp6_parser.cc"
+#line 3188 "dhcp6_parser.cc"
     break;
 
-  case 585:
-#line 1992 "dhcp6_parser.yy"
+  case 593: // $@99: %empty
+#line 2012 "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 3179 "dhcp6_parser.cc"
+#line 3199 "dhcp6_parser.cc"
     break;
 
-  case 586:
-#line 1997 "dhcp6_parser.yy"
+  case 594: // reservation_client_classes: "client-classes" $@99 ":" list_strings
+#line 2017 "dhcp6_parser.yy"
                      {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3188 "dhcp6_parser.cc"
+#line 3208 "dhcp6_parser.cc"
     break;
 
-  case 587:
-#line 2005 "dhcp6_parser.yy"
+  case 595: // $@100: %empty
+#line 2025 "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 3199 "dhcp6_parser.cc"
+#line 3219 "dhcp6_parser.cc"
     break;
 
-  case 588:
-#line 2010 "dhcp6_parser.yy"
+  case 596: // relay: "relay" $@100 ":" "{" relay_map "}"
+#line 2030 "dhcp6_parser.yy"
                                                 {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3208 "dhcp6_parser.cc"
+#line 3228 "dhcp6_parser.cc"
     break;
 
-  case 591:
-#line 2019 "dhcp6_parser.yy"
+  case 599: // $@101: %empty
+#line 2039 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3216 "dhcp6_parser.cc"
+#line 3236 "dhcp6_parser.cc"
     break;
 
-  case 592:
-#line 2021 "dhcp6_parser.yy"
+  case 600: // ip_address: "ip-address" $@101 ":" "constant string"
+#line 2041 "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 3226 "dhcp6_parser.cc"
+#line 3246 "dhcp6_parser.cc"
     break;
 
-  case 593:
-#line 2030 "dhcp6_parser.yy"
+  case 601: // $@102: %empty
+#line 2050 "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 3237 "dhcp6_parser.cc"
+#line 3257 "dhcp6_parser.cc"
     break;
 
-  case 594:
-#line 2035 "dhcp6_parser.yy"
+  case 602: // client_classes: "client-classes" $@102 ":" "[" client_classes_list "]"
+#line 2055 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3246 "dhcp6_parser.cc"
+#line 3266 "dhcp6_parser.cc"
     break;
 
-  case 597:
-#line 2044 "dhcp6_parser.yy"
+  case 605: // $@103: %empty
+#line 2064 "dhcp6_parser.yy"
                                    {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3256 "dhcp6_parser.cc"
+#line 3276 "dhcp6_parser.cc"
     break;
 
-  case 598:
-#line 2048 "dhcp6_parser.yy"
+  case 606: // client_class_entry: "{" $@103 client_class_params "}"
+#line 2068 "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 3266 "dhcp6_parser.cc"
+#line 3286 "dhcp6_parser.cc"
     break;
 
-  case 611:
-#line 2073 "dhcp6_parser.yy"
+  case 619: // $@104: %empty
+#line 2093 "dhcp6_parser.yy"
                         {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3274 "dhcp6_parser.cc"
+#line 3294 "dhcp6_parser.cc"
     break;
 
-  case 612:
-#line 2075 "dhcp6_parser.yy"
+  case 620: // client_class_test: "test" $@104 ":" "constant string"
+#line 2095 "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 3284 "dhcp6_parser.cc"
+#line 3304 "dhcp6_parser.cc"
     break;
 
-  case 613:
-#line 2081 "dhcp6_parser.yy"
+  case 621: // only_if_required: "only-if-required" ":" "boolean"
+#line 2101 "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 3293 "dhcp6_parser.cc"
+#line 3313 "dhcp6_parser.cc"
     break;
 
-  case 614:
-#line 2089 "dhcp6_parser.yy"
+  case 622: // $@105: %empty
+#line 2109 "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 3304 "dhcp6_parser.cc"
+#line 3324 "dhcp6_parser.cc"
     break;
 
-  case 615:
-#line 2094 "dhcp6_parser.yy"
+  case 623: // server_id: "server-id" $@105 ":" "{" server_id_params "}"
+#line 2114 "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 3315 "dhcp6_parser.cc"
+#line 3335 "dhcp6_parser.cc"
     break;
 
-  case 627:
-#line 2116 "dhcp6_parser.yy"
+  case 635: // $@106: %empty
+#line 2136 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.DUID_TYPE);
 }
-#line 3323 "dhcp6_parser.cc"
+#line 3343 "dhcp6_parser.cc"
     break;
 
-  case 628:
-#line 2118 "dhcp6_parser.yy"
+  case 636: // server_id_type: "type" $@106 ":" duid_type
+#line 2138 "dhcp6_parser.yy"
                   {
     ctx.stack_.back()->set("type", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3332 "dhcp6_parser.cc"
+#line 3352 "dhcp6_parser.cc"
     break;
 
-  case 629:
-#line 2123 "dhcp6_parser.yy"
+  case 637: // duid_type: "LLT"
+#line 2143 "dhcp6_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LLT", ctx.loc2pos(yystack_[0].location))); }
-#line 3338 "dhcp6_parser.cc"
+#line 3358 "dhcp6_parser.cc"
     break;
 
-  case 630:
-#line 2124 "dhcp6_parser.yy"
+  case 638: // duid_type: "EN"
+#line 2144 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("EN", ctx.loc2pos(yystack_[0].location))); }
-#line 3344 "dhcp6_parser.cc"
+#line 3364 "dhcp6_parser.cc"
     break;
 
-  case 631:
-#line 2125 "dhcp6_parser.yy"
+  case 639: // duid_type: "LL"
+#line 2145 "dhcp6_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("LL", ctx.loc2pos(yystack_[0].location))); }
-#line 3350 "dhcp6_parser.cc"
+#line 3370 "dhcp6_parser.cc"
     break;
 
-  case 632:
-#line 2128 "dhcp6_parser.yy"
+  case 640: // htype: "htype" ":" "integer"
+#line 2148 "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 3359 "dhcp6_parser.cc"
+#line 3379 "dhcp6_parser.cc"
     break;
 
-  case 633:
-#line 2133 "dhcp6_parser.yy"
+  case 641: // $@107: %empty
+#line 2153 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3367 "dhcp6_parser.cc"
+#line 3387 "dhcp6_parser.cc"
     break;
 
-  case 634:
-#line 2135 "dhcp6_parser.yy"
+  case 642: // identifier: "identifier" $@107 ":" "constant string"
+#line 2155 "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 3377 "dhcp6_parser.cc"
+#line 3397 "dhcp6_parser.cc"
     break;
 
-  case 635:
-#line 2141 "dhcp6_parser.yy"
+  case 643: // time: "time" ":" "integer"
+#line 2161 "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 3386 "dhcp6_parser.cc"
+#line 3406 "dhcp6_parser.cc"
     break;
 
-  case 636:
-#line 2146 "dhcp6_parser.yy"
+  case 644: // enterprise_id: "enterprise-id" ":" "integer"
+#line 2166 "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 3395 "dhcp6_parser.cc"
+#line 3415 "dhcp6_parser.cc"
     break;
 
-  case 637:
-#line 2153 "dhcp6_parser.yy"
+  case 645: // dhcp4o6_port: "dhcp4o6-port" ":" "integer"
+#line 2173 "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 3404 "dhcp6_parser.cc"
+#line 3424 "dhcp6_parser.cc"
     break;
 
-  case 638:
-#line 2160 "dhcp6_parser.yy"
+  case 646: // $@108: %empty
+#line 2180 "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 3415 "dhcp6_parser.cc"
+#line 3435 "dhcp6_parser.cc"
     break;
 
-  case 639:
-#line 2165 "dhcp6_parser.yy"
+  case 647: // control_socket: "control-socket" $@108 ":" "{" control_socket_params "}"
+#line 2185 "dhcp6_parser.yy"
                                                             {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3424 "dhcp6_parser.cc"
+#line 3444 "dhcp6_parser.cc"
     break;
 
-  case 647:
-#line 2181 "dhcp6_parser.yy"
+  case 655: // $@109: %empty
+#line 2201 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3432 "dhcp6_parser.cc"
+#line 3452 "dhcp6_parser.cc"
     break;
 
-  case 648:
-#line 2183 "dhcp6_parser.yy"
+  case 656: // socket_type: "socket-type" $@109 ":" "constant string"
+#line 2203 "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 3442 "dhcp6_parser.cc"
+#line 3462 "dhcp6_parser.cc"
     break;
 
-  case 649:
-#line 2189 "dhcp6_parser.yy"
+  case 657: // $@110: %empty
+#line 2209 "dhcp6_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3450 "dhcp6_parser.cc"
+#line 3470 "dhcp6_parser.cc"
     break;
 
-  case 650:
-#line 2191 "dhcp6_parser.yy"
+  case 658: // socket_name: "socket-name" $@110 ":" "constant string"
+#line 2211 "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 3460 "dhcp6_parser.cc"
+#line 3480 "dhcp6_parser.cc"
     break;
 
-  case 651:
-#line 2200 "dhcp6_parser.yy"
+  case 659: // $@111: %empty
+#line 2220 "dhcp6_parser.yy"
                                        {
     ElementPtr qc(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("dhcp-queue-control", qc);
     ctx.stack_.push_back(qc);
     ctx.enter(ctx.DHCP_QUEUE_CONTROL);
 }
-#line 3471 "dhcp6_parser.cc"
+#line 3491 "dhcp6_parser.cc"
     break;
 
-  case 652:
-#line 2205 "dhcp6_parser.yy"
+  case 660: // dhcp_queue_control: "dhcp-queue-control" $@111 ":" "{" queue_control_params "}"
+#line 2225 "dhcp6_parser.yy"
                                                            {
     // The enable queue parameter is required.
     ctx.require("enable-queue", ctx.loc2pos(yystack_[2].location), ctx.loc2pos(yystack_[0].location));
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3482 "dhcp6_parser.cc"
+#line 3502 "dhcp6_parser.cc"
     break;
 
-  case 661:
-#line 2224 "dhcp6_parser.yy"
+  case 669: // enable_queue: "enable-queue" ":" "boolean"
+#line 2244 "dhcp6_parser.yy"
                                          {
     ElementPtr b(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("enable-queue", b);
 }
-#line 3491 "dhcp6_parser.cc"
+#line 3511 "dhcp6_parser.cc"
     break;
 
-  case 662:
-#line 2229 "dhcp6_parser.yy"
+  case 670: // $@112: %empty
+#line 2249 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3499 "dhcp6_parser.cc"
+#line 3519 "dhcp6_parser.cc"
     break;
 
-  case 663:
-#line 2231 "dhcp6_parser.yy"
+  case 671: // queue_type: "queue-type" $@112 ":" "constant string"
+#line 2251 "dhcp6_parser.yy"
                {
     ElementPtr qt(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("queue-type", qt);
     ctx.leave();
 }
-#line 3509 "dhcp6_parser.cc"
+#line 3529 "dhcp6_parser.cc"
     break;
 
-  case 664:
-#line 2237 "dhcp6_parser.yy"
+  case 672: // capacity: "capacity" ":" "integer"
+#line 2257 "dhcp6_parser.yy"
                                  {
     ElementPtr c(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("capacity", c);
 }
-#line 3518 "dhcp6_parser.cc"
+#line 3538 "dhcp6_parser.cc"
     break;
 
-  case 665:
-#line 2242 "dhcp6_parser.yy"
+  case 673: // $@113: %empty
+#line 2262 "dhcp6_parser.yy"
                             {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3526 "dhcp6_parser.cc"
+#line 3546 "dhcp6_parser.cc"
     break;
 
-  case 666:
-#line 2244 "dhcp6_parser.yy"
+  case 674: // arbitrary_map_entry: "constant string" $@113 ":" value
+#line 2264 "dhcp6_parser.yy"
               {
     ctx.stack_.back()->set(yystack_[3].value.as < std::string > (), yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3535 "dhcp6_parser.cc"
+#line 3555 "dhcp6_parser.cc"
     break;
 
-  case 667:
-#line 2251 "dhcp6_parser.yy"
+  case 675: // $@114: %empty
+#line 2271 "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 3546 "dhcp6_parser.cc"
+#line 3566 "dhcp6_parser.cc"
     break;
 
-  case 668:
-#line 2256 "dhcp6_parser.yy"
+  case 676: // dhcp_ddns: "dhcp-ddns" $@114 ":" "{" dhcp_ddns_params "}"
+#line 2276 "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 3557 "dhcp6_parser.cc"
+#line 3577 "dhcp6_parser.cc"
     break;
 
-  case 669:
-#line 2263 "dhcp6_parser.yy"
+  case 677: // $@115: %empty
+#line 2283 "dhcp6_parser.yy"
                               {
     // Parse the dhcp-ddns map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3567 "dhcp6_parser.cc"
+#line 3587 "dhcp6_parser.cc"
     break;
 
-  case 670:
-#line 2267 "dhcp6_parser.yy"
+  case 678: // sub_dhcp_ddns: "{" $@115 dhcp_ddns_params "}"
+#line 2287 "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 3577 "dhcp6_parser.cc"
+#line 3597 "dhcp6_parser.cc"
     break;
 
-  case 691:
-#line 2297 "dhcp6_parser.yy"
+  case 699: // enable_updates: "enable-updates" ":" "boolean"
+#line 2317 "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 3586 "dhcp6_parser.cc"
+#line 3606 "dhcp6_parser.cc"
     break;
 
-  case 692:
-#line 2302 "dhcp6_parser.yy"
+  case 700: // $@116: %empty
+#line 2322 "dhcp6_parser.yy"
                                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3594 "dhcp6_parser.cc"
+#line 3614 "dhcp6_parser.cc"
     break;
 
-  case 693:
-#line 2304 "dhcp6_parser.yy"
+  case 701: // qualifying_suffix: "qualifying-suffix" $@116 ":" "constant string"
+#line 2324 "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 3604 "dhcp6_parser.cc"
+#line 3624 "dhcp6_parser.cc"
     break;
 
-  case 694:
-#line 2310 "dhcp6_parser.yy"
+  case 702: // $@117: %empty
+#line 2330 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3612 "dhcp6_parser.cc"
+#line 3632 "dhcp6_parser.cc"
     break;
 
-  case 695:
-#line 2312 "dhcp6_parser.yy"
+  case 703: // server_ip: "server-ip" $@117 ":" "constant string"
+#line 2332 "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 3622 "dhcp6_parser.cc"
+#line 3642 "dhcp6_parser.cc"
     break;
 
-  case 696:
-#line 2318 "dhcp6_parser.yy"
+  case 704: // server_port: "server-port" ":" "integer"
+#line 2338 "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 3631 "dhcp6_parser.cc"
+#line 3651 "dhcp6_parser.cc"
     break;
 
-  case 697:
-#line 2323 "dhcp6_parser.yy"
+  case 705: // $@118: %empty
+#line 2343 "dhcp6_parser.yy"
                      {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3639 "dhcp6_parser.cc"
+#line 3659 "dhcp6_parser.cc"
     break;
 
-  case 698:
-#line 2325 "dhcp6_parser.yy"
+  case 706: // sender_ip: "sender-ip" $@118 ":" "constant string"
+#line 2345 "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 3649 "dhcp6_parser.cc"
+#line 3669 "dhcp6_parser.cc"
     break;
 
-  case 699:
-#line 2331 "dhcp6_parser.yy"
+  case 707: // sender_port: "sender-port" ":" "integer"
+#line 2351 "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 3658 "dhcp6_parser.cc"
+#line 3678 "dhcp6_parser.cc"
     break;
 
-  case 700:
-#line 2336 "dhcp6_parser.yy"
+  case 708: // max_queue_size: "max-queue-size" ":" "integer"
+#line 2356 "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 3667 "dhcp6_parser.cc"
+#line 3687 "dhcp6_parser.cc"
     break;
 
-  case 701:
-#line 2341 "dhcp6_parser.yy"
+  case 709: // $@119: %empty
+#line 2361 "dhcp6_parser.yy"
                            {
     ctx.enter(ctx.NCR_PROTOCOL);
 }
-#line 3675 "dhcp6_parser.cc"
+#line 3695 "dhcp6_parser.cc"
     break;
 
-  case 702:
-#line 2343 "dhcp6_parser.yy"
+  case 710: // ncr_protocol: "ncr-protocol" $@119 ":" ncr_protocol_value
+#line 2363 "dhcp6_parser.yy"
                            {
     ctx.stack_.back()->set("ncr-protocol", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3684 "dhcp6_parser.cc"
+#line 3704 "dhcp6_parser.cc"
     break;
 
-  case 703:
-#line 2349 "dhcp6_parser.yy"
+  case 711: // ncr_protocol_value: "UDP"
+#line 2369 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("UDP", ctx.loc2pos(yystack_[0].location))); }
-#line 3690 "dhcp6_parser.cc"
+#line 3710 "dhcp6_parser.cc"
     break;
 
-  case 704:
-#line 2350 "dhcp6_parser.yy"
+  case 712: // ncr_protocol_value: "TCP"
+#line 2370 "dhcp6_parser.yy"
         { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("TCP", ctx.loc2pos(yystack_[0].location))); }
-#line 3696 "dhcp6_parser.cc"
+#line 3716 "dhcp6_parser.cc"
     break;
 
-  case 705:
-#line 2353 "dhcp6_parser.yy"
+  case 713: // $@120: %empty
+#line 2373 "dhcp6_parser.yy"
                        {
     ctx.enter(ctx.NCR_FORMAT);
 }
-#line 3704 "dhcp6_parser.cc"
+#line 3724 "dhcp6_parser.cc"
     break;
 
-  case 706:
-#line 2355 "dhcp6_parser.yy"
+  case 714: // ncr_format: "ncr-format" $@120 ":" "JSON"
+#line 2375 "dhcp6_parser.yy"
              {
     ElementPtr json(new StringElement("JSON", ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("ncr-format", json);
     ctx.leave();
 }
-#line 3714 "dhcp6_parser.cc"
+#line 3734 "dhcp6_parser.cc"
     break;
 
-  case 707:
-#line 2362 "dhcp6_parser.yy"
+  case 715: // dep_override_no_update: "override-no-update" ":" "boolean"
+#line 2382 "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 3723 "dhcp6_parser.cc"
+#line 3743 "dhcp6_parser.cc"
     break;
 
-  case 708:
-#line 2368 "dhcp6_parser.yy"
+  case 716: // dep_override_client_update: "override-client-update" ":" "boolean"
+#line 2388 "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 3732 "dhcp6_parser.cc"
+#line 3752 "dhcp6_parser.cc"
     break;
 
-  case 709:
-#line 2374 "dhcp6_parser.yy"
+  case 717: // $@121: %empty
+#line 2394 "dhcp6_parser.yy"
                                              {
     ctx.enter(ctx.REPLACE_CLIENT_NAME);
 }
-#line 3740 "dhcp6_parser.cc"
+#line 3760 "dhcp6_parser.cc"
     break;
 
-  case 710:
-#line 2376 "dhcp6_parser.yy"
+  case 718: // dep_replace_client_name: "replace-client-name" $@121 ":" ddns_replace_client_name_value
+#line 2396 "dhcp6_parser.yy"
                                        {
     ctx.stack_.back()->set("replace-client-name", yystack_[0].value.as < ElementPtr > ());
     ctx.leave();
 }
-#line 3749 "dhcp6_parser.cc"
+#line 3769 "dhcp6_parser.cc"
     break;
 
-  case 711:
-#line 2382 "dhcp6_parser.yy"
+  case 719: // $@122: %empty
+#line 2402 "dhcp6_parser.yy"
                                        {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3757 "dhcp6_parser.cc"
+#line 3777 "dhcp6_parser.cc"
     break;
 
-  case 712:
-#line 2384 "dhcp6_parser.yy"
+  case 720: // dep_generated_prefix: "generated-prefix" $@122 ":" "constant string"
+#line 2404 "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 3767 "dhcp6_parser.cc"
+#line 3787 "dhcp6_parser.cc"
     break;
 
-  case 713:
-#line 2391 "dhcp6_parser.yy"
+  case 721: // $@123: %empty
+#line 2411 "dhcp6_parser.yy"
                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3775 "dhcp6_parser.cc"
+#line 3795 "dhcp6_parser.cc"
     break;
 
-  case 714:
-#line 2393 "dhcp6_parser.yy"
+  case 722: // dep_hostname_char_set: "hostname-char-set" $@123 ":" "constant string"
+#line 2413 "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 3785 "dhcp6_parser.cc"
+#line 3805 "dhcp6_parser.cc"
     break;
 
-  case 715:
-#line 2400 "dhcp6_parser.yy"
+  case 723: // $@124: %empty
+#line 2420 "dhcp6_parser.yy"
                                                          {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3793 "dhcp6_parser.cc"
+#line 3813 "dhcp6_parser.cc"
     break;
 
-  case 716:
-#line 2402 "dhcp6_parser.yy"
+  case 724: // dep_hostname_char_replacement: "hostname-char-replacement" $@124 ":" "constant string"
+#line 2422 "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 3803 "dhcp6_parser.cc"
+#line 3823 "dhcp6_parser.cc"
     break;
 
-  case 717:
-#line 2411 "dhcp6_parser.yy"
+  case 725: // $@125: %empty
+#line 2431 "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 3814 "dhcp6_parser.cc"
+#line 3834 "dhcp6_parser.cc"
     break;
 
-  case 718:
-#line 2416 "dhcp6_parser.yy"
+  case 726: // config_control: "config-control" $@125 ":" "{" config_control_params "}"
+#line 2436 "dhcp6_parser.yy"
                                                             {
     // No config control params are required
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3824 "dhcp6_parser.cc"
+#line 3844 "dhcp6_parser.cc"
     break;
 
-  case 719:
-#line 2422 "dhcp6_parser.yy"
+  case 727: // $@126: %empty
+#line 2442 "dhcp6_parser.yy"
                                    {
     // Parse the config-control map
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.push_back(m);
 }
-#line 3834 "dhcp6_parser.cc"
+#line 3854 "dhcp6_parser.cc"
     break;
 
-  case 720:
-#line 2426 "dhcp6_parser.yy"
+  case 728: // sub_config_control: "{" $@126 config_control_params "}"
+#line 2446 "dhcp6_parser.yy"
                                        {
     // No config_control params are required
     // parsing completed
 }
-#line 3843 "dhcp6_parser.cc"
+#line 3863 "dhcp6_parser.cc"
     break;
 
-  case 725:
-#line 2441 "dhcp6_parser.yy"
+  case 733: // $@127: %empty
+#line 2461 "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 3854 "dhcp6_parser.cc"
+#line 3874 "dhcp6_parser.cc"
     break;
 
-  case 726:
-#line 2446 "dhcp6_parser.yy"
+  case 734: // config_databases: "config-databases" $@127 ":" "[" database_list "]"
+#line 2466 "dhcp6_parser.yy"
                                                       {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3863 "dhcp6_parser.cc"
+#line 3883 "dhcp6_parser.cc"
     break;
 
-  case 727:
-#line 2451 "dhcp6_parser.yy"
+  case 735: // config_fetch_wait_time: "config-fetch-wait-time" ":" "integer"
+#line 2471 "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 3872 "dhcp6_parser.cc"
+#line 3892 "dhcp6_parser.cc"
     break;
 
-  case 728:
-#line 2458 "dhcp6_parser.yy"
+  case 736: // $@128: %empty
+#line 2478 "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 3883 "dhcp6_parser.cc"
+#line 3903 "dhcp6_parser.cc"
     break;
 
-  case 729:
-#line 2463 "dhcp6_parser.yy"
+  case 737: // loggers: "loggers" $@128 ":" "[" loggers_entries "]"
+#line 2483 "dhcp6_parser.yy"
                                                          {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3892 "dhcp6_parser.cc"
+#line 3912 "dhcp6_parser.cc"
     break;
 
-  case 732:
-#line 2475 "dhcp6_parser.yy"
+  case 740: // $@129: %empty
+#line 2495 "dhcp6_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(l);
     ctx.stack_.push_back(l);
 }
-#line 3902 "dhcp6_parser.cc"
+#line 3922 "dhcp6_parser.cc"
     break;
 
-  case 733:
-#line 2479 "dhcp6_parser.yy"
+  case 741: // logger_entry: "{" $@129 logger_params "}"
+#line 2499 "dhcp6_parser.yy"
                                {
     ctx.stack_.pop_back();
 }
-#line 3910 "dhcp6_parser.cc"
+#line 3930 "dhcp6_parser.cc"
     break;
 
-  case 743:
-#line 2496 "dhcp6_parser.yy"
+  case 751: // debuglevel: "debuglevel" ":" "integer"
+#line 2516 "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 3919 "dhcp6_parser.cc"
+#line 3939 "dhcp6_parser.cc"
     break;
 
-  case 744:
-#line 2501 "dhcp6_parser.yy"
+  case 752: // $@130: %empty
+#line 2521 "dhcp6_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3927 "dhcp6_parser.cc"
+#line 3947 "dhcp6_parser.cc"
     break;
 
-  case 745:
-#line 2503 "dhcp6_parser.yy"
+  case 753: // severity: "severity" $@130 ":" "constant string"
+#line 2523 "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 3937 "dhcp6_parser.cc"
+#line 3957 "dhcp6_parser.cc"
     break;
 
-  case 746:
-#line 2509 "dhcp6_parser.yy"
+  case 754: // $@131: %empty
+#line 2529 "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 3948 "dhcp6_parser.cc"
+#line 3968 "dhcp6_parser.cc"
     break;
 
-  case 747:
-#line 2514 "dhcp6_parser.yy"
+  case 755: // output_options_list: "output_options" $@131 ":" "[" output_options_list_content "]"
+#line 2534 "dhcp6_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
     ctx.leave();
 }
-#line 3957 "dhcp6_parser.cc"
+#line 3977 "dhcp6_parser.cc"
     break;
 
-  case 750:
-#line 2523 "dhcp6_parser.yy"
+  case 758: // $@132: %empty
+#line 2543 "dhcp6_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->add(m);
     ctx.stack_.push_back(m);
 }
-#line 3967 "dhcp6_parser.cc"
+#line 3987 "dhcp6_parser.cc"
     break;
 
-  case 751:
-#line 2527 "dhcp6_parser.yy"
+  case 759: // output_entry: "{" $@132 output_params_list "}"
+#line 2547 "dhcp6_parser.yy"
                                     {
     ctx.stack_.pop_back();
 }
-#line 3975 "dhcp6_parser.cc"
+#line 3995 "dhcp6_parser.cc"
     break;
 
-  case 759:
-#line 2542 "dhcp6_parser.yy"
+  case 767: // $@133: %empty
+#line 2562 "dhcp6_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 3983 "dhcp6_parser.cc"
+#line 4003 "dhcp6_parser.cc"
     break;
 
-  case 760:
-#line 2544 "dhcp6_parser.yy"
+  case 768: // output: "output" $@133 ":" "constant string"
+#line 2564 "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 3993 "dhcp6_parser.cc"
+#line 4013 "dhcp6_parser.cc"
     break;
 
-  case 761:
-#line 2550 "dhcp6_parser.yy"
+  case 769: // flush: "flush" ":" "boolean"
+#line 2570 "dhcp6_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("flush", flush);
 }
-#line 4002 "dhcp6_parser.cc"
+#line 4022 "dhcp6_parser.cc"
     break;
 
-  case 762:
-#line 2555 "dhcp6_parser.yy"
+  case 770: // maxsize: "maxsize" ":" "integer"
+#line 2575 "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 4011 "dhcp6_parser.cc"
+#line 4031 "dhcp6_parser.cc"
     break;
 
-  case 763:
-#line 2560 "dhcp6_parser.yy"
+  case 771: // maxver: "maxver" ":" "integer"
+#line 2580 "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 4020 "dhcp6_parser.cc"
+#line 4040 "dhcp6_parser.cc"
     break;
 
-  case 764:
-#line 2565 "dhcp6_parser.yy"
+  case 772: // $@134: %empty
+#line 2585 "dhcp6_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORD);
 }
-#line 4028 "dhcp6_parser.cc"
+#line 4048 "dhcp6_parser.cc"
     break;
 
-  case 765:
-#line 2567 "dhcp6_parser.yy"
+  case 773: // pattern: "pattern" $@134 ":" "constant string"
+#line 2587 "dhcp6_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
     ctx.stack_.back()->set("pattern", sev);
     ctx.leave();
 }
-#line 4038 "dhcp6_parser.cc"
+#line 4058 "dhcp6_parser.cc"
     break;
 
 
-#line 4042 "dhcp6_parser.cc"
+#line 4062 "dhcp6_parser.cc"
 
             default:
               break;
@@ -4387,137 +4407,139 @@ namespace isc { namespace dhcp {
   }
 
 
-  const short Dhcp6Parser::yypact_ninf_ = -929;
+  const short Dhcp6Parser::yypact_ninf_ = -941;
 
   const signed char Dhcp6Parser::yytable_ninf_ = -1;
 
   const short
   Dhcp6Parser::yypact_[] =
   {
-     427,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,    41,    33,    44,    46,    50,
-      52,    56,    62,    89,   101,   109,   132,   134,   148,   179,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,    33,  -123,
-     225,   116,    27,   487,    51,   186,   261,    59,    71,   206,
-     -65,   592,   119,  -929,   249,   259,   262,   255,   271,  -929,
-      75,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,   280,
-     303,   327,   330,   339,   345,   366,   390,   391,   398,   400,
-     401,  -929,   408,   410,   412,   414,   416,  -929,  -929,  -929,
-     417,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,   420,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,   421,  -929,    92,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,   422,  -929,    96,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,   423,   424,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,   112,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,   114,  -929,  -929,  -929,  -929,  -929,   426,
-    -929,   432,   436,  -929,  -929,  -929,  -929,  -929,  -929,   115,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,   289,   350,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,   325,  -929,  -929,
-     437,  -929,  -929,  -929,   440,  -929,  -929,   334,   442,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,   446,   448,  -929,  -929,  -929,  -929,   385,   453,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,   184,  -929,  -929,  -929,   456,  -929,  -929,   457,
-    -929,   460,   462,  -929,  -929,   463,   464,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,   192,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,   465,   205,  -929,  -929,  -929,  -929,    33,    33,
-    -929,   263,   466,   225,  -929,   468,   472,   473,   476,   477,
-     478,   288,   291,   294,   298,   301,   305,   306,   308,   311,
-     292,   302,   314,   480,   316,   318,   319,   320,   321,   511,
-     516,   518,   326,   520,   521,   522,   523,   524,   525,   538,
-     539,   540,   541,   549,   550,   552,   553,   554,   555,   365,
-     557,   558,   559,   560,   562,   564,   565,  -929,   116,  -929,
-     566,   384,    27,  -929,   567,   568,   578,   579,   580,   393,
-     388,   582,   585,   587,   487,  -929,   589,    51,  -929,   590,
-     402,   594,   404,   405,   186,  -929,   597,   598,   600,   601,
-     617,   618,   622,  -929,   261,  -929,   624,   625,   435,   627,
-     628,   629,   438,  -929,    71,   630,   439,   441,  -929,   206,
-     633,   640,    74,  -929,   449,   641,   644,   454,   646,   458,
-     459,   647,   648,   461,   467,   651,   655,   656,   657,   592,
-    -929,   659,   470,   119,  -929,  -929,  -929,   662,   673,  -929,
-     496,   686,   687,   693,   694,   697,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,   509,  -929,
-    -929,  -929,  -929,  -929,  -100,   510,   512,  -929,   700,   702,
-     703,   704,   526,   272,   709,   712,   713,   714,   715,   716,
-     718,   719,   720,   722,  -929,   723,   725,   726,   727,   531,
-     532,   730,  -929,   731,  -929,  -929,   732,   733,   546,   561,
-     563,  -929,  -929,   731,   569,   747,  -929,   570,  -929,   571,
-    -929,   572,  -929,  -929,  -929,   731,   731,   731,   573,   574,
-     575,   576,  -929,   577,   581,  -929,   583,   584,   586,  -929,
-    -929,   588,  -929,  -929,  -929,   591,   704,  -929,  -929,   593,
-     595,  -929,   596,  -929,  -929,    84,   608,  -929,  -929,  -100,
-     602,   603,   604,  -929,   751,  -929,  -929,    33,   116,  -929,
-     119,    27,   285,   285,   752,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,   753,   766,   767,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,   769,   -73,    33,   286,   676,
-     774,   776,   777,   237,    64,    67,   202,   136,   592,  -929,
-    -929,   781,  -929,  -929,   784,   787,  -929,  -929,  -929,  -929,
-    -929,   -61,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,   752,  -929,   216,   223,   235,  -929,  -929,  -929,  -929,
-     754,   791,   795,   796,   797,  -929,   798,   799,  -929,  -929,
-    -929,   800,   801,   802,   803,  -929,   287,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,   293,  -929,
-     804,   805,  -929,  -929,   806,   808,  -929,  -929,   807,   811,
-    -929,  -929,   809,   813,  -929,  -929,   812,   816,  -929,  -929,
-    -929,    78,  -929,  -929,  -929,   814,  -929,  -929,  -929,   146,
-    -929,  -929,  -929,  -929,   296,  -929,  -929,  -929,   198,  -929,
-    -929,   815,   819,  -929,  -929,   817,   821,  -929,   822,   823,
-     824,   825,   826,   827,   297,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,   828,   829,   830,  -929,  -929,  -929,
-    -929,   300,  -929,  -929,  -929,  -929,  -929,  -929,   831,   832,
-     833,  -929,   329,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,   332,  -929,  -929,  -929,   834,  -929,
-     835,  -929,  -929,  -929,   338,  -929,  -929,  -929,  -929,  -929,
-     347,  -929,   233,  -929,   615,  -929,   836,   837,  -929,  -929,
-     838,   840,  -929,  -929,  -929,   839,  -929,   842,  -929,  -929,
-    -929,   841,   845,   846,   847,   658,   649,   660,   661,   664,
-     848,   665,   666,   850,   852,   853,   667,   668,   669,   670,
-     285,  -929,  -929,   285,  -929,   752,   487,  -929,   753,    71,
-    -929,   766,   206,  -929,   767,   623,  -929,   769,   -73,  -929,
-    -929,   286,  -929,   860,   676,  -929,    38,   774,  -929,   261,
-    -929,   776,   -65,  -929,   777,   672,   674,   675,   677,   678,
-     679,   237,  -929,   864,   867,   681,   682,   684,    64,  -929,
-     683,   688,   695,    67,  -929,   888,   889,   202,  -929,   705,
-     904,   729,   905,   136,  -929,  -929,   164,   781,  -929,  -929,
-     915,   907,    51,  -929,   784,   186,  -929,   787,   926,  -929,
-    -929,   386,   631,   742,   755,  -929,  -929,  -929,  -929,  -929,
-     761,  -929,  -929,   764,   768,   771,  -929,  -929,  -929,  -929,
-    -929,   348,  -929,   349,  -929,   953,  -929,   961,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,   374,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,   783,  -929,  -929,
-     977,  -929,  -929,  -929,  -929,  -929,   976,   983,  -929,  -929,
-    -929,  -929,  -929,   980,  -929,   375,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,    81,   818,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,   820,   843,  -929,  -929,   844,  -929,
-      33,  -929,  -929,   987,  -929,  -929,  -929,  -929,  -929,   376,
-    -929,  -929,  -929,  -929,  -929,  -929,   849,   378,  -929,   382,
-    -929,   851,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,   623,  -929,
-    -929,   989,   854,  -929,    38,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,   991,   810,   992,   164,
-    -929,  -929,  -929,  -929,  -929,  -929,   859,  -929,  -929,   994,
-    -929,   861,  -929,  -929,   990,  -929,  -929,   253,  -929,    12,
-     990,  -929,  -929,   996,   997,   998,  -929,   389,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,   999,   857,   862,   863,  1002,
-      12,  -929,   865,  -929,  -929,  -929,   866,  -929,  -929,  -929
+     528,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,    57,    34,    81,   104,   114,
+     125,   131,   135,   151,   198,   216,   222,   232,   234,   244,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,    34,  -143,
+     103,   115,    28,   278,   139,   295,   471,    -9,    66,   118,
+     -84,   530,   182,  -941,   119,   252,   298,   296,   307,  -941,
+      53,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   308,
+     317,   342,   349,   359,   360,   372,   373,   390,   393,   402,
+     403,  -941,   406,   412,   415,   422,   428,  -941,  -941,  -941,
+     448,   450,   454,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   468,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,   476,  -941,    59,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,   480,  -941,    78,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   481,
+     483,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,    96,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   106,
+    -941,  -941,  -941,  -941,  -941,   484,  -941,   485,   486,  -941,
+    -941,  -941,  -941,  -941,  -941,   107,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,   326,   433,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,   410,  -941,  -941,   488,  -941,  -941,  -941,
+     491,  -941,  -941,   461,   453,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   492,   493,
+    -941,  -941,  -941,  -941,   496,   502,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   133,  -941,
+    -941,  -941,   503,  -941,  -941,   506,  -941,   512,   516,  -941,
+    -941,   517,   518,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+     143,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   519,   194,
+    -941,  -941,  -941,  -941,    34,    34,  -941,   310,   520,   103,
+    -941,   521,   522,   526,   527,   531,   532,   311,   337,   340,
+     343,   345,   346,   347,   348,   362,   364,   375,   350,   572,
+     381,   382,   391,   392,   395,   576,   577,   578,   404,   405,
+     407,   585,   597,   598,   601,   603,   604,   605,   606,   608,
+     609,   611,   613,   616,   617,   619,   620,   429,   621,   623,
+     624,   625,   626,   627,   628,  -941,   115,  -941,   632,   439,
+      28,  -941,   635,   636,   637,   638,   639,   447,   446,   642,
+     643,   644,   278,  -941,   650,   139,  -941,   651,   459,   653,
+     462,   463,   295,  -941,   654,   657,   658,   660,   661,   662,
+     664,  -941,   471,  -941,   665,   666,   474,   669,   670,   673,
+     479,  -941,    66,   675,   495,   497,  -941,   118,   676,   691,
+      91,  -941,   498,   694,   695,   507,   699,   533,   534,   720,
+     721,   529,   535,   723,   725,   728,   729,   530,  -941,   731,
+     539,   182,  -941,  -941,  -941,   733,   732,  -941,   542,   734,
+     735,   736,   737,   740,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,   544,  -941,  -941,  -941,
+    -941,  -941,  -121,   550,   551,  -941,  -941,  -941,   743,   744,
+     745,   746,   555,   379,   747,   749,   750,   751,   752,   753,
+     755,   756,   757,   758,  -941,   759,   760,   761,   762,   561,
+     566,   765,  -941,   766,  -941,  -941,   767,   768,   567,   579,
+     580,  -941,  -941,   766,   581,   771,  -941,   583,  -941,   584,
+    -941,   586,  -941,  -941,  -941,   766,   766,   766,   587,   588,
+     589,   590,  -941,   591,   592,  -941,   593,   594,   595,  -941,
+    -941,   596,  -941,  -941,  -941,   599,   746,  -941,  -941,   600,
+     602,  -941,   607,  -941,  -941,   102,   615,  -941,  -941,  -121,
+     610,   612,   614,  -941,   769,  -941,  -941,    34,   115,  -941,
+     182,    28,   242,   242,   786,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,   787,   790,   792,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,   793,   -74,    34,   -46,   696,
+     795,   797,   798,   191,    64,   159,    12,   202,   530,  -941,
+    -941,   800,  -941,  -941,   802,   804,  -941,  -941,  -941,  -941,
+    -941,   -53,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,   786,  -941,   249,   256,   286,  -941,  -941,  -941,  -941,
+     808,   809,   810,   811,   812,  -941,   813,   814,  -941,  -941,
+    -941,   815,   816,   817,   818,  -941,   289,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   290,  -941,
+     819,   820,  -941,  -941,   821,   823,  -941,  -941,   822,   826,
+    -941,  -941,   824,   828,  -941,  -941,   827,   829,  -941,  -941,
+    -941,   144,  -941,  -941,  -941,   830,  -941,  -941,  -941,   208,
+    -941,  -941,  -941,  -941,   344,  -941,  -941,  -941,   219,  -941,
+    -941,   831,   832,  -941,  -941,   833,   835,  -941,   836,   837,
+     838,   839,   840,   841,   351,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,   842,   843,   844,  -941,  -941,  -941,
+    -941,   353,  -941,  -941,  -941,  -941,  -941,  -941,   845,   846,
+     847,  -941,   354,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,   383,  -941,  -941,  -941,   848,  -941,
+     849,  -941,  -941,  -941,   400,  -941,  -941,  -941,  -941,  -941,
+     401,  -941,   330,  -941,   659,  -941,   850,   851,  -941,  -941,
+     852,   854,  -941,  -941,  -941,   853,  -941,   856,  -941,  -941,
+    -941,   855,   859,   860,   861,   663,   667,   671,   668,   672,
+     866,   674,   677,   868,   869,   871,   679,   680,   681,   682,
+     242,  -941,  -941,   242,  -941,   786,   278,  -941,   787,    66,
+    -941,   790,   118,  -941,   792,   504,  -941,   793,   -74,  -941,
+    -941,   -46,  -941,   874,   696,  -941,   304,   795,  -941,   471,
+    -941,   797,   -84,  -941,   798,   684,   685,   686,   687,   689,
+     690,   191,  -941,   886,   888,   698,   702,   703,    64,  -941,
+     704,   705,   712,   159,  -941,   889,   910,    12,  -941,   724,
+     916,   742,   926,   202,  -941,  -941,    60,   800,  -941,  -941,
+     925,   931,   139,  -941,   802,   295,  -941,   804,   936,  -941,
+    -941,    73,   763,   772,   775,  -941,  -941,  -941,  -941,  -941,
+     779,  -941,  -941,   780,   782,   783,  -941,  -941,  -941,  -941,
+    -941,   414,  -941,   417,  -941,   941,  -941,   948,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+     425,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   788,
+    -941,  -941,   961,  -941,  -941,  -941,  -941,  -941,   975,   984,
+    -941,  -941,  -941,  -941,  -941,   982,  -941,   426,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,    55,   796,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,   825,   834,  -941,  -941,
+     857,  -941,    34,  -941,  -941,  1001,  -941,  -941,  -941,  -941,
+    -941,   432,  -941,  -941,  -941,  -941,  -941,  -941,   858,   445,
+    -941,   452,  -941,   862,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+     504,  -941,  -941,  1005,   863,  -941,   304,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  1009,   864,
+    1014,    60,  -941,  -941,  -941,  -941,  -941,  -941,   867,  -941,
+    -941,  1015,  -941,   870,  -941,  -941,  1017,  -941,  -941,   384,
+    -941,   128,  1017,  -941,  -941,  1018,  1021,  1023,  -941,   465,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  1024,   865,   872,
+     873,  1025,   128,  -941,   875,  -941,  -941,  -941,   876,  -941,
+    -941,  -941
   };
 
   const short
@@ -4527,685 +4549,696 @@ 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,    65,     7,   161,     9,   323,    11,
-     501,    13,   526,    15,   556,    17,   426,    19,   434,    21,
-     471,    23,   288,    25,   669,    27,   719,    29,    47,    41,
-       0,     0,     0,     0,     0,     0,   558,     0,   436,   473,
+      35,    36,    58,     5,    65,     7,   165,     9,   327,    11,
+     509,    13,   534,    15,   564,    17,   434,    19,   442,    21,
+     479,    23,   292,    25,   677,    27,   727,    29,    47,    41,
+       0,     0,     0,     0,     0,     0,   566,     0,   444,   481,
        0,     0,     0,    49,     0,    48,     0,     0,    42,    63,
-       0,    60,    62,   122,   717,   159,   173,   175,   177,     0,
+       0,    60,    62,   124,   725,   163,   177,   179,   181,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   157,     0,     0,     0,     0,     0,   139,   146,   148,
-       0,   315,   424,   463,   514,   516,   373,   381,   248,   265,
-     256,   241,   593,   548,   280,   299,   614,     0,   267,   638,
-     651,   667,   150,   152,   728,     0,   121,     0,    67,    69,
-      70,    71,    72,    73,    74,    75,    76,    77,   105,   106,
-     107,    78,   111,   112,   113,   114,   115,   116,   109,   110,
-     117,   118,   119,   103,    81,    82,    83,    84,   100,    85,
-      87,    86,   120,    91,    92,    79,   104,    80,    89,    90,
-      98,    99,   101,    88,    93,    94,    95,    96,    97,   102,
-     108,   170,     0,   169,     0,   163,   165,   166,   167,   168,
-     493,   518,   363,   365,   367,     0,     0,   371,   369,   587,
-     362,   327,   328,   329,   330,   331,   332,   333,   334,   350,
-     351,   352,   355,   356,   357,   358,   359,   360,   353,   354,
-     361,     0,   325,   338,   339,   340,   343,   344,   346,   341,
-     342,   335,   336,   348,   349,   337,   345,   347,   512,   511,
-     507,   508,   506,     0,   503,   505,   509,   510,   541,     0,
-     544,     0,     0,   540,   534,   535,   533,   538,   539,     0,
-     528,   530,   531,   536,   537,   532,   585,   573,   575,   577,
-     579,   581,   583,   572,   569,   570,   571,     0,   559,   560,
-     564,   565,   562,   566,   567,   568,   563,     0,   453,   221,
-       0,   457,   455,   460,     0,   449,   450,     0,   437,   438,
-     440,   452,   441,   442,   443,   459,   444,   445,   446,   447,
-     448,   487,     0,     0,   485,   486,   489,   490,     0,   474,
-     475,   477,   478,   479,   480,   481,   482,   483,   484,   295,
-     297,   292,     0,   290,   293,   294,     0,   692,   694,     0,
-     697,     0,     0,   701,   705,     0,     0,   709,   711,   713,
-     715,   690,   688,   689,     0,   671,   673,   674,   675,   676,
-     677,   678,   679,   680,   681,   682,   683,   684,   685,   686,
-     687,   725,     0,     0,   721,   723,   724,    46,     0,     0,
-      39,     0,     0,     0,    59,     0,     0,     0,     0,     0,
+       0,   161,     0,     0,     0,     0,     0,   141,   148,   150,
+       0,     0,     0,   319,   432,   471,   522,   524,   379,   387,
+     252,   269,   260,   245,   601,   556,   284,   303,   622,     0,
+     271,   646,   659,   675,   154,   156,   736,     0,   123,     0,
+      67,    69,    70,    71,    72,    73,    74,    75,    76,    77,
+     105,   106,   107,    78,   111,   112,   113,   114,   115,   116,
+     117,   118,   109,   110,   119,   120,   121,   103,    81,    82,
+      83,    84,   100,    85,    87,    86,   122,    91,    92,    79,
+     104,    80,    89,    90,    98,    99,   101,    88,    93,    94,
+      95,    96,    97,   102,   108,   174,     0,   173,     0,   167,
+     169,   170,   171,   172,   501,   526,   369,   371,   373,     0,
+       0,   377,   375,   595,   368,   331,   332,   333,   334,   335,
+     336,   337,   338,   354,   355,   356,   359,   360,   361,   362,
+     363,   364,   365,   366,   357,   358,   367,     0,   329,   342,
+     343,   344,   347,   348,   350,   345,   346,   339,   340,   352,
+     353,   341,   349,   351,   520,   519,   515,   516,   514,     0,
+     511,   513,   517,   518,   549,     0,   552,     0,     0,   548,
+     542,   543,   541,   546,   547,     0,   536,   538,   539,   544,
+     545,   540,   593,   581,   583,   585,   587,   589,   591,   580,
+     577,   578,   579,     0,   567,   568,   572,   573,   570,   574,
+     575,   576,   571,     0,   461,   225,     0,   465,   463,   468,
+       0,   457,   458,     0,   445,   446,   448,   460,   449,   450,
+     451,   467,   452,   453,   454,   455,   456,   495,     0,     0,
+     493,   494,   497,   498,     0,   482,   483,   485,   486,   487,
+     488,   489,   490,   491,   492,   299,   301,   296,     0,   294,
+     297,   298,     0,   700,   702,     0,   705,     0,     0,   709,
+     713,     0,     0,   717,   719,   721,   723,   698,   696,   697,
+       0,   679,   681,   682,   683,   684,   685,   686,   687,   688,
+     689,   690,   691,   692,   693,   694,   695,   733,     0,     0,
+     729,   731,   732,    46,     0,     0,    39,     0,     0,     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,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    57,     0,    66,
-       0,     0,     0,   162,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   324,     0,     0,   502,     0,
-       0,     0,     0,     0,     0,   527,     0,     0,     0,     0,
-       0,     0,     0,   557,     0,   427,     0,     0,     0,     0,
-       0,     0,     0,   435,     0,     0,     0,     0,   472,     0,
-       0,     0,     0,   289,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    57,     0,    66,     0,     0,
+       0,   166,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   328,     0,     0,   510,     0,     0,     0,
+       0,     0,     0,   535,     0,     0,     0,     0,     0,     0,
+       0,   565,     0,   435,     0,     0,     0,     0,     0,     0,
+       0,   443,     0,     0,     0,     0,   480,     0,     0,     0,
+       0,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   678,     0,
+       0,     0,   728,    50,    43,     0,     0,    61,     0,     0,
+       0,     0,     0,     0,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   135,   136,   137,     0,   159,   160,   138,
+     139,   140,     0,     0,     0,   152,   153,   158,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     670,     0,     0,     0,   720,    50,    43,     0,     0,    61,
-       0,     0,     0,     0,     0,     0,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,     0,   155,
-     156,   136,   137,   138,     0,     0,     0,   154,     0,     0,
+       0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
+       0,     0,    68,     0,   176,   168,     0,     0,     0,     0,
+       0,   385,   386,     0,     0,     0,   330,     0,   512,     0,
+     551,     0,   554,   555,   537,     0,     0,     0,     0,     0,
+       0,     0,   569,     0,     0,   459,     0,     0,     0,   470,
+     447,     0,   499,   500,   484,     0,     0,   295,   699,     0,
+       0,   704,     0,   707,   708,     0,     0,   715,   716,     0,
+       0,     0,     0,   680,     0,   735,   730,     0,     0,   125,
+       0,     0,     0,     0,   183,   162,   143,   144,   145,   146,
+     147,   142,   149,   151,   321,   436,   473,    40,   523,   525,
+     381,   382,   383,   384,   380,   389,     0,    47,     0,     0,
+       0,   558,   286,     0,     0,     0,     0,     0,     0,   155,
+     157,     0,    51,   175,   503,   528,   370,   372,   374,   378,
+     376,     0,   521,   550,   553,   594,   582,   584,   586,   588,
+     590,   592,   462,   226,   466,   464,   469,   496,   300,   302,
+     701,   703,   706,   711,   712,   710,   714,   718,   720,   722,
+     724,   183,    44,     0,     0,     0,   212,   218,   220,   222,
+       0,     0,     0,     0,     0,   236,     0,     0,   239,   241,
+     243,     0,     0,     0,     0,   211,     0,   189,   191,   192,
+     193,   194,   195,   196,   197,   198,   199,   200,   203,   210,
+     204,   205,   206,   201,   202,   207,   208,   209,     0,   187,
+       0,   184,   185,   325,     0,   322,   323,   440,     0,   437,
+     438,   477,     0,   474,   475,   393,     0,   390,   391,   258,
+     259,     0,   254,   256,   257,     0,   267,   268,   264,     0,
+     262,   265,   266,   250,     0,   247,   249,   605,     0,   603,
+     562,     0,   559,   560,   290,     0,   287,   288,     0,     0,
+       0,     0,     0,     0,     0,   305,   307,   308,   309,   310,
+     311,   312,   635,   641,     0,     0,     0,   634,   631,   632,
+     633,     0,   624,   626,   629,   627,   628,   630,     0,     0,
+       0,   280,     0,   273,   275,   276,   277,   278,   279,   655,
+     657,   654,   652,   653,     0,   648,   650,   651,     0,   670,
+       0,   673,   666,   667,     0,   661,   663,   664,   665,   668,
+       0,   740,     0,   738,    53,   507,     0,   504,   505,   532,
+       0,   529,   530,   599,   598,     0,   597,     0,    64,   726,
+     164,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   637,     0,     0,     0,     0,     0,
-       0,     0,    68,     0,   172,   164,     0,     0,     0,     0,
-       0,   379,   380,     0,     0,     0,   326,     0,   504,     0,
-     543,     0,   546,   547,   529,     0,     0,     0,     0,     0,
-       0,     0,   561,     0,     0,   451,     0,     0,     0,   462,
-     439,     0,   491,   492,   476,     0,     0,   291,   691,     0,
-       0,   696,     0,   699,   700,     0,     0,   707,   708,     0,
-       0,     0,     0,   672,     0,   727,   722,     0,     0,   123,
-       0,     0,     0,     0,   179,   158,   141,   142,   143,   144,
-     145,   140,   147,   149,   317,   428,   465,    40,   515,   517,
-     375,   376,   377,   378,   374,   383,     0,    47,     0,     0,
-       0,   550,   282,     0,     0,     0,     0,     0,     0,   151,
-     153,     0,    51,   171,   495,   520,   364,   366,   368,   372,
-     370,     0,   513,   542,   545,   586,   574,   576,   578,   580,
-     582,   584,   454,   222,   458,   456,   461,   488,   296,   298,
-     693,   695,   698,   703,   704,   702,   706,   710,   712,   714,
-     716,   179,    44,     0,     0,     0,   208,   214,   216,   218,
-       0,     0,     0,     0,     0,   232,     0,     0,   235,   237,
-     239,     0,     0,     0,     0,   207,     0,   185,   187,   188,
-     189,   190,   191,   192,   193,   194,   195,   196,   199,   206,
-     200,   201,   202,   197,   198,   203,   204,   205,     0,   183,
-       0,   180,   181,   321,     0,   318,   319,   432,     0,   429,
-     430,   469,     0,   466,   467,   387,     0,   384,   385,   254,
-     255,     0,   250,   252,   253,     0,   263,   264,   260,     0,
-     258,   261,   262,   246,     0,   243,   245,   597,     0,   595,
-     554,     0,   551,   552,   286,     0,   283,   284,     0,     0,
-       0,     0,     0,     0,     0,   301,   303,   304,   305,   306,
-     307,   308,   627,   633,     0,     0,     0,   626,   623,   624,
-     625,     0,   616,   618,   621,   619,   620,   622,     0,     0,
-       0,   276,     0,   269,   271,   272,   273,   274,   275,   647,
-     649,   646,   644,   645,     0,   640,   642,   643,     0,   662,
-       0,   665,   658,   659,     0,   653,   655,   656,   657,   660,
-       0,   732,     0,   730,    53,   499,     0,   496,   497,   524,
-       0,   521,   522,   591,   590,     0,   589,     0,    64,   718,
-     160,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   174,   176,     0,   178,     0,     0,   316,     0,   436,
-     425,     0,   473,   464,     0,     0,   382,     0,     0,   249,
-     266,     0,   257,     0,     0,   242,   599,     0,   594,   558,
-     549,     0,     0,   281,     0,     0,     0,     0,     0,     0,
-       0,     0,   300,     0,     0,     0,     0,     0,     0,   615,
-       0,     0,     0,     0,   268,     0,     0,     0,   639,     0,
-       0,     0,     0,     0,   652,   668,     0,     0,   729,    55,
-       0,    54,     0,   494,     0,     0,   519,     0,     0,   588,
-     726,     0,     0,     0,     0,   220,   223,   224,   225,   226,
-       0,   234,   227,     0,     0,     0,   229,   230,   231,   228,
-     186,     0,   182,     0,   320,     0,   431,     0,   468,   423,
-     402,   403,   404,   406,   407,   408,   395,   396,   411,   412,
-     413,   416,   417,   418,   419,   420,   421,   414,   415,   422,
-     391,   392,   393,   394,   400,   401,   399,   405,     0,   389,
-     397,   409,   410,   398,   386,   251,   259,     0,   244,   611,
-       0,   609,   610,   606,   607,   608,     0,   600,   601,   603,
-     604,   605,   596,     0,   553,     0,   285,   309,   310,   311,
-     312,   313,   314,   302,     0,     0,   632,   635,   636,   617,
-     277,   278,   279,   270,     0,     0,   641,   661,     0,   664,
-       0,   654,   746,     0,   744,   742,   736,   740,   741,     0,
-     734,   738,   739,   737,   731,    52,     0,     0,   498,     0,
-     523,     0,   210,   211,   212,   213,   209,   215,   217,   219,
-     233,   236,   238,   240,   184,   322,   433,   470,     0,   388,
-     247,     0,     0,   598,     0,   555,   287,   629,   630,   631,
-     628,   634,   648,   650,   663,   666,     0,     0,     0,     0,
-     733,    56,   500,   525,   592,   390,     0,   613,   602,     0,
-     743,     0,   735,   612,     0,   745,   750,     0,   748,     0,
-       0,   747,   759,     0,     0,     0,   764,     0,   752,   754,
-     755,   756,   757,   758,   749,     0,     0,     0,     0,     0,
-       0,   751,     0,   761,   762,   763,     0,   753,   760,   765
+       0,   178,   180,     0,   182,     0,     0,   320,     0,   444,
+     433,     0,   481,   472,     0,     0,   388,     0,     0,   253,
+     270,     0,   261,     0,     0,   246,   607,     0,   602,   566,
+     557,     0,     0,   285,     0,     0,     0,     0,     0,     0,
+       0,     0,   304,     0,     0,     0,     0,     0,     0,   623,
+       0,     0,     0,     0,   272,     0,     0,     0,   647,     0,
+       0,     0,     0,     0,   660,   676,     0,     0,   737,    55,
+       0,    54,     0,   502,     0,     0,   527,     0,     0,   596,
+     734,     0,     0,     0,     0,   224,   227,   228,   229,   230,
+       0,   238,   231,     0,     0,     0,   233,   234,   235,   232,
+     190,     0,   186,     0,   324,     0,   439,     0,   476,   431,
+     408,   409,   410,   412,   413,   414,   401,   402,   417,   418,
+     419,   422,   423,   424,   425,   426,   427,   428,   429,   420,
+     421,   430,   397,   398,   399,   400,   406,   407,   405,   411,
+       0,   395,   403,   415,   416,   404,   392,   255,   263,     0,
+     248,   619,     0,   617,   618,   614,   615,   616,     0,   608,
+     609,   611,   612,   613,   604,     0,   561,     0,   289,   313,
+     314,   315,   316,   317,   318,   306,     0,     0,   640,   643,
+     644,   625,   281,   282,   283,   274,     0,     0,   649,   669,
+       0,   672,     0,   662,   754,     0,   752,   750,   744,   748,
+     749,     0,   742,   746,   747,   745,   739,    52,     0,     0,
+     506,     0,   531,     0,   214,   215,   216,   217,   213,   219,
+     221,   223,   237,   240,   242,   244,   188,   326,   441,   478,
+       0,   394,   251,     0,     0,   606,     0,   563,   291,   637,
+     638,   639,   636,   642,   656,   658,   671,   674,     0,     0,
+       0,     0,   741,    56,   508,   533,   600,   396,     0,   621,
+     610,     0,   751,     0,   743,   620,     0,   753,   758,     0,
+     756,     0,     0,   755,   767,     0,     0,     0,   772,     0,
+     760,   762,   763,   764,   765,   766,   757,     0,     0,     0,
+       0,     0,     0,   759,     0,   769,   770,   771,     0,   761,
+     768,   773
   };
 
   const short
   Dhcp6Parser::yypgoto_[] =
   {
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,   -10,  -929,  -534,  -929,
-     372,  -929,  -929,  -929,  -929,   154,  -929,  -555,  -929,  -929,
-    -929,   -71,  -929,  -929,  -929,   606,  -929,  -929,  -929,  -929,
-     352,   605,  -929,  -929,   -59,   -43,   -42,   -40,   -39,   -28,
-     -27,   -26,   -23,   -21,   -15,  -929,    -9,    -3,    -1,    17,
-    -929,   362,    18,  -929,    20,  -929,    25,  -929,    28,  -929,
-      30,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,   354,
-     556,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-     276,  -929,    76,  -929,  -641,    79,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,   -67,  -929,  -679,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,    58,
-    -929,  -929,  -929,  -929,  -929,    65,  -663,  -929,  -929,  -929,
-    -929,    63,  -929,  -929,  -929,  -929,  -929,  -929,  -929,    34,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,    55,  -929,  -929,
-    -929,    48,   514,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-      49,  -929,  -929,  -929,  -929,  -929,  -929,  -928,  -929,  -929,
-    -929,    83,  -929,  -929,  -929,    86,   599,  -929,  -929,  -927,
-    -929,  -926,  -929,    35,  -929,    37,  -929,    32,  -929,  -929,
-    -929,  -920,  -929,  -929,  -929,  -929,    77,  -929,  -929,  -135,
-     958,  -929,  -929,  -929,  -929,  -929,    85,  -929,  -929,  -929,
-      90,  -929,   536,  -929,   -66,  -929,  -929,  -929,  -929,  -929,
-     -47,  -929,  -929,  -929,  -929,  -929,    13,  -929,  -929,  -929,
-      87,  -929,  -929,  -929,    94,  -929,   533,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,    42,  -929,
-    -929,  -929,    36,   607,  -929,  -929,   -55,  -929,     1,  -929,
-    -929,  -929,  -929,  -929,    45,  -929,  -929,  -929,    29,   609,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,   -57,  -929,  -929,
-    -929,    93,  -929,  -929,  -929,    97,  -929,   610,   356,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -919,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-      98,  -929,  -929,  -929,  -113,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,    80,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,    72,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,    68,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,   377,   543,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929,  -929,   418,   537,  -929,  -929,  -929,
-    -929,  -929,  -929,    69,  -929,  -929,  -115,  -929,  -929,  -929,
-    -929,  -929,  -929,  -133,  -929,  -929,  -151,  -929,  -929,  -929,
-    -929,  -929,  -929,  -929
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,    -4,  -941,  -539,  -941,
+     178,  -941,  -941,  -941,  -941,   137,  -941,  -562,  -941,  -941,
+    -941,   -71,  -941,  -941,  -941,   629,  -941,  -941,  -941,  -941,
+     365,   569,  -941,  -941,   -59,   -43,   -40,   -39,   -37,   -23,
+     -21,   -19,   -18,   -15,    -3,  -941,    -1,    16,    29,    30,
+    -941,   377,    32,  -941,    33,  -941,    35,    45,    46,  -941,
+      47,  -941,    50,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,   361,   570,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,   292,  -941,    82,  -941,  -657,    94,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   -47,  -941,
+    -693,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,    67,  -941,  -941,  -941,  -941,  -941,    77,  -676,  -941,
+    -941,  -941,  -941,    75,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,    44,  -941,  -941,  -941,  -941,  -941,  -941,  -941,    65,
+    -941,  -941,  -941,    68,   536,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,    61,  -941,  -941,  -941,  -941,  -941,  -941,  -940,
+    -941,  -941,  -941,    90,  -941,  -941,  -941,    95,   573,  -941,
+    -941,  -938,  -941,  -937,  -941,     9,  -941,    54,  -941,    51,
+    -941,  -941,  -941,  -936,  -941,  -941,  -941,  -941,    92,  -941,
+    -941,  -123,   983,  -941,  -941,  -941,  -941,  -941,   112,  -941,
+    -941,  -941,   108,  -941,   553,  -941,   -73,  -941,  -941,  -941,
+    -941,  -941,   -66,  -941,  -941,  -941,  -941,  -941,    17,  -941,
+    -941,  -941,   110,  -941,  -941,  -941,   113,  -941,   560,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+      56,  -941,  -941,  -941,    62,   618,  -941,  -941,   -55,  -941,
+       1,  -941,  -941,  -941,  -941,  -941,    41,  -941,  -941,  -941,
+      58,   622,  -941,  -941,  -941,  -941,  -941,  -941,  -941,   -58,
+    -941,  -941,  -941,    97,  -941,  -941,  -941,   109,  -941,   630,
+     366,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -930,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,   105,  -941,  -941,  -941,  -105,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,    87,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,    79,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,    76,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,   385,   554,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941,  -941,   420,   556,  -941,
+    -941,  -941,  -941,  -941,  -941,    83,  -941,  -941,  -109,  -941,
+    -941,  -941,  -941,  -941,  -941,  -128,  -941,  -941,  -147,  -941,
+    -941,  -941,  -941,  -941,  -941,  -941
   };
 
   const short
   Dhcp6Parser::yydefgoto_[] =
   {
-      -1,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+       0,    15,    16,    17,    18,    19,    20,    21,    22,    23,
       24,    25,    26,    27,    28,    29,    83,    39,    40,    69,
-     678,    87,    88,    41,    68,    84,    85,   703,   904,  1010,
-    1011,   765,    43,    70,    90,    91,    92,   402,    45,    71,
-     147,   148,   149,   405,   150,   151,   152,   153,   154,   155,
-     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
-     429,   671,   166,   430,   167,   431,   168,   454,   169,   455,
-     170,   171,   172,   173,   423,   174,   407,    47,    72,   204,
-     205,   206,   460,   207,   175,   408,   176,   409,   177,   410,
-     790,   791,   792,   943,   766,   767,   768,   921,  1156,   769,
-     922,   770,   923,   771,   924,   772,   773,   497,   774,   775,
-     776,   777,   778,   779,   780,   781,   782,   783,   930,   784,
-     785,   933,   786,   934,   787,   935,   178,   443,   824,   825,
-     826,   963,   179,   440,   811,   812,   813,   814,   180,   442,
-     819,   820,   821,   822,   181,   441,   182,   450,   872,   873,
-     874,   875,   876,   183,   446,   835,   836,   837,   972,    63,
-      80,   352,   353,   354,   510,   355,   511,   184,   447,   844,
-     845,   846,   847,   848,   849,   850,   851,   185,   433,   794,
-     795,   796,   946,    49,    73,   241,   242,   243,   466,   244,
-     467,   245,   468,   246,   472,   247,   471,   186,   438,   684,
-     249,   250,   187,   439,   806,   807,   808,   955,  1078,  1079,
-     188,   434,    57,    77,   798,   799,   800,   949,    59,    78,
-     317,   318,   319,   320,   321,   322,   323,   496,   324,   500,
-     325,   499,   326,   327,   501,   328,   189,   435,   802,   803,
-     804,   952,    61,    79,   338,   339,   340,   341,   342,   505,
-     343,   344,   345,   346,   252,   464,   906,   907,   908,  1012,
-      51,    74,   263,   264,   265,   476,   190,   436,   191,   437,
-     255,   465,   910,   911,   912,  1015,    53,    75,   279,   280,
-     281,   479,   282,   283,   481,   284,   285,   192,   445,   831,
-     832,   833,   969,    55,    76,   297,   298,   299,   300,   487,
-     301,   488,   302,   489,   303,   490,   304,   491,   305,   492,
-     306,   486,   257,   473,   915,   916,  1018,   193,   444,   828,
-     829,   966,  1096,  1097,  1098,  1099,  1100,  1171,  1101,   194,
-     448,   861,   862,   863,   983,  1180,   864,   865,   984,   866,
-     867,   195,   196,   451,   884,   885,   886,   995,   887,   996,
-     197,   452,   894,   895,   896,   897,  1000,   898,   899,  1002,
-     198,   453,    65,    81,   374,   375,   376,   377,   515,   378,
-     516,   379,   380,   518,   381,   382,   383,   521,   735,   384,
-     522,   385,   386,   387,   525,   388,   526,   389,   527,   390,
-     528,   199,   406,    67,    82,   393,   394,   395,   531,   396,
-     200,   456,   902,   903,  1006,  1139,  1140,  1141,  1142,  1188,
-    1143,  1186,  1207,  1208,  1209,  1217,  1218,  1219,  1225,  1220,
-    1221,  1222,  1223,  1229
+     688,    87,    88,    41,    68,    84,    85,   713,   914,  1020,
+    1021,   775,    43,    70,    90,    91,    92,   408,    45,    71,
+     149,   150,   151,   411,   152,   153,   154,   155,   156,   157,
+     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
+     435,   681,   168,   436,   169,   437,   170,   171,   172,   462,
+     173,   463,   174,   175,   176,   177,   429,   178,   413,    47,
+      72,   208,   209,   210,   468,   211,   179,   414,   180,   415,
+     181,   416,   800,   801,   802,   953,   776,   777,   778,   931,
+    1168,   779,   932,   780,   933,   781,   934,   782,   783,   505,
+     784,   785,   786,   787,   788,   789,   790,   791,   792,   793,
+     940,   794,   795,   943,   796,   944,   797,   945,   182,   451,
+     834,   835,   836,   973,   183,   448,   821,   822,   823,   824,
+     184,   450,   829,   830,   831,   832,   185,   449,   186,   458,
+     882,   883,   884,   885,   886,   187,   454,   845,   846,   847,
+     982,    63,    80,   358,   359,   360,   518,   361,   519,   188,
+     455,   854,   855,   856,   857,   858,   859,   860,   861,   189,
+     441,   804,   805,   806,   956,    49,    73,   247,   248,   249,
+     474,   250,   475,   251,   476,   252,   480,   253,   479,   190,
+     446,   694,   255,   256,   191,   447,   816,   817,   818,   965,
+    1090,  1091,   192,   442,    57,    77,   808,   809,   810,   959,
+      59,    78,   323,   324,   325,   326,   327,   328,   329,   504,
+     330,   508,   331,   507,   332,   333,   509,   334,   193,   443,
+     812,   813,   814,   962,    61,    79,   344,   345,   346,   347,
+     348,   513,   349,   350,   351,   352,   258,   472,   916,   917,
+     918,  1022,    51,    74,   269,   270,   271,   484,   194,   444,
+     195,   445,   261,   473,   920,   921,   922,  1025,    53,    75,
+     285,   286,   287,   487,   288,   289,   489,   290,   291,   196,
+     453,   841,   842,   843,   979,    55,    76,   303,   304,   305,
+     306,   495,   307,   496,   308,   497,   309,   498,   310,   499,
+     311,   500,   312,   494,   263,   481,   925,   926,  1028,   197,
+     452,   838,   839,   976,  1108,  1109,  1110,  1111,  1112,  1183,
+    1113,   198,   456,   871,   872,   873,   993,  1192,   874,   875,
+     994,   876,   877,   199,   200,   459,   894,   895,   896,  1005,
+     897,  1006,   201,   460,   904,   905,   906,   907,  1010,   908,
+     909,  1012,   202,   461,    65,    81,   380,   381,   382,   383,
+     523,   384,   524,   385,   386,   526,   387,   388,   389,   529,
+     745,   390,   530,   391,   392,   393,   533,   394,   534,   395,
+     535,   396,   536,   203,   412,    67,    82,   399,   400,   401,
+     539,   402,   204,   464,   912,   913,  1016,  1151,  1152,  1153,
+    1154,  1200,  1155,  1198,  1219,  1220,  1221,  1229,  1230,  1231,
+    1237,  1232,  1233,  1234,  1235,  1241
   };
 
   const short
   Dhcp6Parser::yytable_[] =
   {
-     146,   203,   220,   259,   273,   293,    38,   315,   334,   351,
-     371,   316,   335,   336,   221,   858,   256,   208,   253,   266,
-     277,   295,   788,   329,   347,   818,   372,  1071,  1072,  1073,
-     222,   223,   337,   224,   225,  1077,  1083,   677,    31,   809,
-      32,    30,    33,   201,   202,   226,   227,   228,   709,   287,
-     229,    42,   230,    44,   349,   350,   913,    46,   231,    48,
-     715,   716,   717,    50,   232,   666,   667,   668,   669,    52,
-     233,    86,   234,   209,   254,   267,   278,   296,   403,   330,
-     348,   958,   373,   404,   959,   852,   251,   262,   276,   294,
-     235,   236,   308,   237,   751,   458,    54,   670,   238,   462,
-     459,   239,   677,   240,   463,   248,   123,   309,    56,   260,
-     274,   261,   275,   124,   125,   474,    58,   477,   484,   123,
-     475,   810,   478,   485,   124,   125,   122,    93,    94,   145,
-     258,    95,   391,   392,    96,    97,    98,   124,   125,    60,
-     309,    62,   310,   311,  1089,  1090,   312,   313,   314,   961,
-     124,   125,   962,   124,   125,    64,   217,   124,   125,   218,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
-     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     119,   120,   121,   122,   123,  1212,    66,   512,  1213,  1214,
-    1215,  1216,   513,   349,   350,   529,   853,   854,   855,   856,
-     530,   967,   124,   125,   968,   868,   869,   870,   533,   126,
-    1177,  1178,  1179,   534,   127,   128,   129,   130,   131,   458,
-     132,   145,   124,   125,   918,   133,   533,    34,    35,    36,
-      37,   919,   145,   309,   134,    89,  1007,   135,   462,  1008,
-    1071,  1072,  1073,   920,   136,   145,   733,   734,  1077,  1083,
-     124,   125,   137,   138,   123,   397,  1210,   139,   145,  1211,
-     140,   145,   398,   400,   141,   145,   399,   268,   269,   270,
-     271,   272,   124,   125,   401,   309,   331,   310,   311,   332,
-     333,   888,   889,   890,   411,   142,   143,   144,   124,   125,
-     940,   217,   124,   125,   218,   941,   940,   493,   818,   964,
-     981,   942,  1041,   988,   965,   982,   746,   412,   989,   858,
-     145,   747,   748,   749,   750,   751,   752,   753,   754,   755,
-     756,   757,   758,   759,   760,   761,   762,   763,   764,   123,
-     891,   413,   993,   495,   414,   997,  1132,   994,  1133,  1134,
-     998,  1003,   503,   415,   879,   880,  1004,   124,   125,   416,
-     529,   940,   474,   494,   309,  1005,  1164,  1165,   145,   838,
-     839,   840,   841,   842,   843,   286,   680,   681,   682,   683,
-     417,   287,   288,   289,   290,   291,   292,  1168,   512,  1189,
-     145,   477,  1169,  1176,  1190,   484,  1192,   146,   535,   536,
-    1193,   203,  1230,   508,   418,   419,   145,  1231,   809,   816,
-     145,   817,   420,   220,   421,   422,   259,   208,  1152,  1153,
-    1154,  1155,   424,   273,   425,   221,   426,   256,   427,   253,
-     428,   432,   266,   293,   449,   457,   461,   469,   470,   277,
-     480,   222,   223,   315,   224,   225,   482,   316,   334,   295,
-     483,   498,   335,   336,   502,   504,   226,   227,   228,   329,
-     506,   229,   507,   230,   347,   145,   509,   537,   371,   231,
-     514,   517,   337,   209,   519,   232,   520,   523,   524,   532,
-     538,   233,   540,   234,   372,   254,   541,   542,   267,   145,
-     543,   544,   545,   546,   558,   278,   547,   251,   555,   548,
-     262,   235,   236,   549,   237,   296,   550,   276,   556,   238,
-     551,   552,   239,   553,   240,   330,   248,   294,   554,   557,
-     348,   559,   260,   560,   261,   564,   561,   562,   563,   274,
-     565,   275,   566,   567,   568,   569,   570,   571,   572,   573,
-     373,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   574,   575,   576,   577,   114,   115,   116,   117,
-     118,   119,   120,   578,   579,   123,   580,   581,   582,   583,
-     584,   585,   586,   587,   588,   210,   589,   211,   590,   591,
-     593,   596,   597,   124,   125,   212,   213,   214,   215,   216,
-     126,   594,   598,   599,   600,   602,   603,   146,   601,   604,
-     203,   605,   217,   607,   609,   218,   133,   610,   611,   612,
-     613,   615,   616,   219,   617,   618,   208,     1,     2,     3,
-       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
-      14,   619,   620,   857,   871,   881,   621,   371,   623,   624,
-     625,   626,   627,   628,   631,   629,   632,   635,   633,   859,
-     877,   882,   892,   372,   636,   639,   638,   742,   640,   641,
-     642,   645,   646,   643,   644,   649,   142,   143,   647,   650,
-     651,   652,   209,   654,   648,   655,   657,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,   124,   125,
-     658,   145,   114,   115,   116,   117,   118,   119,   120,   121,
-     659,   123,   309,   660,   661,   860,   878,   883,   893,   373,
-     662,   663,   664,   665,   672,   674,   673,   675,   676,   124,
-     125,    32,   213,   214,   685,   216,   126,   686,   687,   688,
-     679,   690,   689,   691,   692,   699,   700,   693,   217,   694,
-     695,   218,   696,   697,   698,   701,   702,   704,   705,   219,
-     706,   356,   357,   358,   359,   360,   361,   362,   363,   364,
-     365,   366,   367,   368,   711,   707,   741,   708,   925,   789,
-     793,   369,   370,   710,   712,   713,   714,   718,   719,   720,
-     721,   722,   736,   797,   801,   723,   805,   724,   725,   823,
-     726,   827,   727,   830,   834,   728,   145,   730,   901,   731,
-     732,   905,   142,   143,   909,   926,   738,   739,   740,   927,
-     928,   929,   931,   932,   936,   937,   938,   939,   945,  1009,
-     944,   948,   947,   950,   951,   953,   954,   145,   956,   957,
-     960,   970,   971,   973,   974,  1157,   975,   976,   977,   978,
-     979,   980,   985,   986,   987,   990,   991,   992,   999,  1001,
-    1014,   815,  1013,  1017,  1016,  1021,  1026,  1019,  1020,  1022,
-    1023,  1024,  1030,  1025,  1033,  1027,  1034,  1035,  1028,  1029,
-    1031,  1032,  1036,  1037,  1087,  1039,  1038,  1107,  1114,  1108,
-    1109,  1115,  1110,  1111,  1112,   220,  1116,  1117,   315,  1118,
-    1120,   334,   316,  1121,  1049,   335,   336,   221,  1070,   256,
-    1122,   253,  1124,  1125,   329,  1091,  1050,   347,   293,  1092,
-    1081,   351,  1127,   222,   223,   337,   224,   225,  1128,  1130,
-    1146,  1094,  1051,  1052,   295,  1053,  1054,   857,   226,   227,
-     228,  1145,   871,   229,  1129,   230,   881,  1055,  1056,  1057,
-    1151,   231,  1058,   859,  1059,  1135,  1158,   232,   877,  1136,
-    1060,   259,   882,   233,   273,   234,  1061,   254,   892,  1159,
-     330,  1137,  1062,   348,  1063,  1160,  1082,   266,  1161,   251,
-     277,  1166,  1162,   235,   236,  1163,   237,  1095,  1080,  1167,
-     296,   238,  1064,  1065,   239,  1066,   240,  1170,   248,  1093,
-    1067,  1172,   294,  1068,  1173,  1069,  1174,  1076,  1175,   860,
-    1074,  1187,  1075,  1196,   878,  1199,  1201,  1206,   883,  1204,
-    1226,  1227,  1228,  1232,   893,  1200,  1236,  1138,   729,   539,
-     743,   737,  1181,   267,  1182,   745,   278,   917,   595,  1040,
-    1105,  1042,  1088,  1085,  1086,   262,   637,  1123,   276,  1106,
-    1113,  1044,  1043,  1195,  1084,   307,  1046,  1183,  1184,  1045,
-     630,  1048,   634,  1191,  1149,  1194,  1047,   260,  1147,   261,
-     274,  1197,   275,  1203,  1233,  1205,  1148,  1234,  1235,  1238,
-    1239,  1198,  1150,   592,  1104,  1102,  1103,   914,  1119,  1126,
-     656,  1131,   653,   606,  1202,   900,  1144,  1224,   744,  1237,
-       0,     0,     0,     0,   608,     0,     0,     0,     0,     0,
-       0,     0,     0,   614,     0,     0,     0,  1049,     0,     0,
-       0,  1070,     0,  1091,   622,     0,     0,  1092,     0,  1050,
-       0,     0,     0,  1081,     0,     0,     0,     0,  1135,  1094,
-    1185,     0,  1136,     0,     0,  1051,  1052,     0,  1053,  1054,
-       0,     0,     0,     0,  1137,     0,     0,     0,     0,     0,
-    1055,  1056,  1057,     0,     0,  1058,     0,  1059,     0,     0,
-       0,     0,     0,  1060,     0,     0,     0,     0,     0,  1061,
-       0,     0,     0,     0,     0,  1062,     0,  1063,     0,  1082,
-       0,     0,     0,     0,     0,  1095,     0,     0,     0,     0,
-       0,  1080,     0,     0,     0,  1064,  1065,  1093,  1066,     0,
-    1138,     0,     0,  1067,     0,     0,  1068,     0,  1069,     0,
-    1076,     0,     0,  1074,     0,  1075
+     148,   207,   224,   265,   279,   299,   342,   321,   340,   357,
+     377,   868,    38,   343,   225,   262,   798,   212,   259,   272,
+     283,   301,   828,   335,   353,  1083,   378,  1084,  1085,  1089,
+     226,   322,   341,   227,   228,  1095,   229,   355,   356,    31,
+     819,    32,   687,    33,   205,   206,   676,   677,   678,   679,
+     230,   719,   231,    86,   232,   233,   409,    30,   234,   293,
+     124,   410,   466,   725,   726,   727,   923,   467,   819,   826,
+     235,   827,   236,   213,   260,   273,   284,   302,   680,   336,
+     354,   470,   379,   266,   280,   862,   471,   314,    42,   237,
+     257,   268,   282,   300,   761,  1164,  1165,  1166,  1167,   482,
+     126,   127,   238,   239,   483,   240,   241,   687,   242,   485,
+     492,    44,   147,    89,   486,   493,   126,   127,   243,   244,
+     245,    46,   820,   246,   254,   403,    93,    94,   267,   281,
+      95,   315,    48,    96,    97,    98,   520,   315,    50,   316,
+     317,   521,    52,   318,   319,   320,   537,   968,   126,   127,
+     969,   538,   126,   127,   126,   127,   889,   890,    54,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     110,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     120,   121,   122,   123,   124,   125,  1189,  1190,  1191,   315,
+     337,   316,   317,   338,   339,   397,   398,   541,   863,   864,
+     865,   866,   542,   126,   127,    56,   126,   127,   147,   125,
+     128,   971,   355,   356,   972,   129,   130,   131,   132,   133,
+     264,   134,   977,    58,   147,   978,   135,   126,   127,    60,
+      34,    35,    36,    37,  1144,   136,  1145,  1146,   137,    62,
+    1083,    64,  1084,  1085,  1089,   138,   221,   126,   127,   222,
+    1095,    66,   466,   139,   140,   404,   147,   928,   141,   541,
+     147,   142,   147,   756,   929,   143,   743,   744,   757,   758,
+     759,   760,   761,   762,   763,   764,   765,   766,   767,   768,
+     769,   770,   771,   772,   773,   774,   144,   145,   146,   470,
+     126,   127,   950,   950,   930,   828,  1051,   951,   952,   878,
+     879,   880,   405,  1224,   406,   868,  1225,  1226,  1227,  1228,
+     407,   147,   417,   315,   147,   848,   849,   850,   851,   852,
+     853,   418,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,   108,   109,  1017,   501,   147,  1018,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   419,   974,   125,   898,
+     899,   900,   975,   420,   991,   147,   998,  1003,   214,   992,
+     215,   999,  1004,   421,   422,   125,   126,   127,   216,   217,
+     218,   219,   220,   128,   125,   315,   423,   424,   274,   275,
+     276,   277,   278,   126,   127,   221,  1007,  1222,   222,   135,
+    1223,  1008,   126,   127,   425,   148,   223,   426,   901,   207,
+     543,   544,   221,  1013,   537,   222,   427,   428,  1014,  1015,
+     430,   224,  1101,  1102,   265,   212,   431,   950,   503,   432,
+     482,   279,  1176,   225,   262,  1177,   433,   259,  1180,   520,
+     272,   299,   434,  1181,  1188,  1201,   502,   283,   147,   226,
+    1202,   321,   227,   228,   342,   229,   340,   301,   485,   144,
+     145,   343,   438,  1204,   439,   492,   512,   335,   440,   230,
+    1205,   231,   353,   232,   233,   322,   377,   234,  1242,   511,
+     341,   213,   457,  1243,   147,   690,   691,   692,   693,   235,
+     465,   236,   378,   260,   469,   477,   273,   478,   488,   490,
+     491,   147,   506,   284,   266,   510,   514,   515,   237,   257,
+     147,   280,   268,   302,   516,   517,   545,   522,   554,   282,
+     525,   238,   239,   336,   240,   241,   527,   242,   354,   300,
+     528,   531,   532,   540,   546,   548,   549,   243,   244,   245,
+     550,   551,   246,   254,   555,   552,   553,   556,   379,   267,
+     557,   125,   558,   559,   560,   561,   281,   565,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,   126,
+     127,   562,   563,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   564,   125,   315,   566,   292,   567,   568,
+     572,   573,   574,   293,   294,   295,   296,   297,   298,   578,
+     569,   570,   126,   127,   571,   217,   218,   148,   220,   128,
+     207,   579,   580,   575,   576,   581,   577,   582,   583,   584,
+     585,   221,   586,   587,   222,   588,   212,   589,   126,   127,
+     590,   591,   223,   592,   593,   595,   594,   596,   597,   598,
+     599,   600,   601,   867,   881,   891,   603,   377,   604,   606,
+     607,   608,   609,   610,   611,   612,   613,   614,   615,   869,
+     887,   892,   902,   378,   617,   619,   620,   621,   625,   622,
+     623,   626,   627,   752,   628,   629,   630,   147,   631,   633,
+     634,   635,   213,   636,   637,   144,   145,   638,   639,   641,
+     645,   362,   363,   364,   365,   366,   367,   368,   369,   370,
+     371,   372,   373,   374,   642,   646,   643,   648,   649,   650,
+     147,   375,   376,   652,   651,   870,   888,   893,   903,   379,
+       1,     2,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,   655,   656,   147,   659,   657,   660,
+     653,   654,   661,   662,   658,   664,   665,   667,   669,   668,
+     675,   670,   671,   672,   673,   674,   682,   683,   684,   685,
+     686,   689,   695,    32,   696,   697,   698,   709,   700,   699,
+     701,   702,   710,   716,   703,   704,   705,   706,   707,   708,
+     711,   712,   714,   715,   751,   717,   718,   720,   721,   722,
+     723,   746,   724,   728,   729,   730,   731,   732,   733,   734,
+     735,   736,   737,   799,   803,   738,   740,   807,   741,   811,
+     815,   833,   837,   742,   840,   844,   748,   911,   749,   915,
+     750,   919,   935,   936,   937,   938,   939,   941,   942,   946,
+     947,   948,   949,   955,   739,   954,   958,   957,   960,   961,
+     963,   964,   967,   966,   825,   981,   970,   980,   984,   983,
+     985,   986,   987,   988,   989,   990,   995,   996,   997,  1000,
+    1001,  1002,  1009,  1011,  1024,  1019,  1023,  1027,  1026,  1031,
+    1035,  1029,  1030,  1032,  1033,  1034,  1036,  1038,  1037,  1039,
+    1040,  1041,  1043,  1044,  1042,  1045,  1046,  1047,  1099,  1049,
+    1048,  1119,  1120,  1121,  1122,   224,  1123,  1124,   321,   342,
+    1126,   340,  1127,  1136,  1059,  1128,   343,   225,   262,  1129,
+    1130,   259,  1133,  1132,   335,  1103,  1060,   353,   299,  1134,
+    1093,   357,   322,   226,  1137,   341,   227,   228,  1082,   229,
+    1140,  1106,  1061,  1139,   301,  1062,  1063,   867,  1064,  1104,
+    1142,  1157,   881,   230,  1158,   231,   891,   232,   233,  1141,
+    1163,   234,  1065,   869,  1066,  1147,  1067,  1068,   887,  1178,
+    1069,   265,   892,   235,   279,   236,  1179,   260,   902,  1169,
+     336,  1149,  1070,   354,  1071,  1184,  1094,   272,  1170,  1148,
+     283,  1171,   237,   257,  1086,  1172,  1173,  1107,  1174,  1175,
+     302,  1072,  1092,  1185,  1182,   238,   239,  1186,   240,   241,
+    1187,   242,  1193,  1105,  1073,  1074,   300,  1075,  1076,   870,
+    1077,   243,   244,   245,   888,  1199,   246,   254,   893,  1208,
+    1078,  1079,  1080,  1211,   903,  1081,  1088,  1150,  1213,  1087,
+    1216,  1194,  1238,   273,  1218,  1239,   284,  1240,  1244,  1248,
+    1195,   266,   755,   753,   280,   602,   747,  1052,   547,   268,
+     605,  1100,   282,   927,  1050,  1097,  1098,  1135,  1054,  1118,
+    1117,  1053,  1125,  1196,  1203,   616,   647,  1207,  1206,  1096,
+     313,  1212,  1209,  1215,  1245,   640,  1217,  1055,  1162,  1246,
+    1247,  1250,  1251,  1056,  1058,  1057,   267,   644,  1116,   281,
+    1160,  1210,  1114,  1161,  1159,  1131,  1138,   924,  1115,  1143,
+     754,   663,  1214,   910,  1236,  1249,     0,   666,     0,     0,
+    1156,     0,     0,   618,     0,     0,     0,     0,     0,  1059,
+       0,     0,     0,     0,   624,  1103,     0,     0,     0,     0,
+       0,  1060,     0,     0,     0,  1093,     0,     0,     0,     0,
+    1147,  1106,   632,  1082,     0,     0,     0,  1061,  1197,  1104,
+    1062,  1063,     0,  1064,     0,     0,  1149,     0,     0,     0,
+       0,     0,     0,     0,  1148,     0,     0,  1065,     0,  1066,
+       0,  1067,  1068,     0,     0,  1069,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1070,     0,  1071,
+       0,  1094,     0,     0,     0,     0,     0,  1107,     0,  1086,
+       0,     0,     0,     0,     0,     0,  1072,  1092,     0,     0,
+       0,     0,  1150,  1105,     0,     0,     0,     0,     0,  1073,
+    1074,     0,  1075,  1076,     0,  1077,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1078,  1079,  1080,     0,     0,
+    1081,  1088,     0,     0,  1087
   };
 
   const short
   Dhcp6Parser::yycheck_[] =
   {
-      71,    72,    73,    74,    75,    76,    16,    78,    79,    80,
-      81,    78,    79,    79,    73,   694,    73,    72,    73,    74,
-      75,    76,   663,    78,    79,   688,    81,   955,   955,   955,
-      73,    73,    79,    73,    73,   955,   955,   571,     5,   112,
-       7,     0,     9,    16,    17,    73,    73,    73,   603,   110,
-      73,     7,    73,     7,   119,   120,   117,     7,    73,     7,
-     615,   616,   617,     7,    73,   165,   166,   167,   168,     7,
-      73,   194,    73,    72,    73,    74,    75,    76,     3,    78,
-      79,     3,    81,     8,     6,    21,    73,    74,    75,    76,
-      73,    73,    21,    73,    30,     3,     7,   197,    73,     3,
-       8,    73,   636,    73,     8,    73,    68,    69,     7,    74,
-      75,    74,    75,    86,    87,     3,     7,     3,     3,    68,
-       8,   194,     8,     8,    86,    87,    67,    11,    12,   194,
-      79,    15,    13,    14,    18,    19,    20,    86,    87,     7,
-      69,     7,    71,    72,   106,   107,    75,    76,    77,     3,
-      86,    87,     6,    86,    87,     7,   105,    86,    87,   108,
-      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,   173,     7,     3,   176,   177,
-     178,   179,     8,   119,   120,     3,   132,   133,   134,   135,
-       8,     3,    86,    87,     6,   138,   139,   140,     3,    93,
-     129,   130,   131,     8,    98,    99,   100,   101,   102,     3,
-     104,   194,    86,    87,     8,   109,     3,   194,   195,   196,
-     197,     8,   194,    69,   118,    10,     3,   121,     3,     6,
-    1168,  1168,  1168,     8,   128,   194,   162,   163,  1168,  1168,
-      86,    87,   136,   137,    68,     6,     3,   141,   194,     6,
-     144,   194,     3,     8,   148,   194,     4,    81,    82,    83,
-      84,    85,    86,    87,     3,    69,    70,    71,    72,    73,
-      74,   145,   146,   147,     4,   169,   170,   171,    86,    87,
-       3,   105,    86,    87,   108,     8,     3,     8,   961,     3,
-       3,     8,   943,     3,     8,     8,    21,     4,     8,   988,
-     194,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    43,    68,
-     194,     4,     3,     8,     4,     3,   172,     8,   174,   175,
-       8,     3,     8,     4,   142,   143,     8,    86,    87,     4,
-       3,     3,     3,     3,    69,     8,     8,     8,   194,   122,
-     123,   124,   125,   126,   127,   104,    94,    95,    96,    97,
-       4,   110,   111,   112,   113,   114,   115,     3,     3,     3,
-     194,     3,     8,     8,     8,     3,     8,   458,   398,   399,
-       8,   462,     3,     8,     4,     4,   194,     8,   112,   113,
-     194,   115,     4,   474,     4,     4,   477,   462,    22,    23,
-      24,    25,     4,   484,     4,   474,     4,   474,     4,   474,
-       4,     4,   477,   494,     4,     4,     4,     4,     4,   484,
-       4,   474,   474,   504,   474,   474,     4,   504,   509,   494,
-       4,     4,   509,   509,     4,     3,   474,   474,   474,   504,
-       4,   474,     4,   474,   509,   194,     3,   194,   529,   474,
-       4,     4,   509,   462,     4,   474,     4,     4,     4,     4,
-       4,   474,     4,   474,   529,   474,     4,     4,   477,   194,
-       4,     4,     4,   195,     4,   484,   195,   474,   196,   195,
-     477,   474,   474,   195,   474,   494,   195,   484,   196,   474,
-     195,   195,   474,   195,   474,   504,   474,   494,   197,   195,
-     509,   195,   477,   195,   477,     4,   197,   197,   197,   484,
-       4,   484,     4,   197,     4,     4,     4,     4,     4,     4,
-     529,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,     4,     4,     4,     4,    59,    60,    61,    62,
-      63,    64,    65,     4,     4,    68,     4,     4,     4,     4,
-     195,     4,     4,     4,     4,    78,     4,    80,     4,     4,
-       4,     4,     4,    86,    87,    88,    89,    90,    91,    92,
-      93,   197,     4,     4,     4,   197,     4,   658,   195,     4,
-     661,     4,   105,     4,     4,   108,   109,   195,     4,   195,
-     195,     4,     4,   116,     4,     4,   661,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     193,     4,     4,   694,   695,   696,     4,   698,     4,     4,
-     195,     4,     4,     4,     4,   197,   197,     4,   197,   694,
-     695,   696,   697,   698,     4,     4,   197,   657,     4,   195,
-       4,     4,     4,   195,   195,     4,   169,   170,   197,     4,
-       4,     4,   661,     4,   197,   195,     4,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    86,    87,
-       7,   194,    59,    60,    61,    62,    63,    64,    65,    66,
-     194,    68,    69,     7,     7,   694,   695,   696,   697,   698,
-       7,     7,     5,   194,   194,     5,   194,     5,     5,    86,
-      87,     7,    89,    90,     5,    92,    93,     5,     5,     5,
-     194,     5,     7,     5,     5,   194,   194,     7,   105,     7,
-       7,   108,     7,     7,     7,     5,     5,     5,     5,   116,
-     194,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,     7,   194,     5,   194,     4,     7,
-       7,   169,   170,   194,   194,   194,   194,   194,   194,   194,
-     194,   194,   164,     7,     7,   194,     7,   194,   194,   103,
-     194,     7,   194,     7,     7,   194,   194,   194,     7,   194,
-     194,     7,   169,   170,     7,     4,   194,   194,   194,     4,
-       4,     4,     4,     4,     4,     4,     4,     4,     3,   194,
-       6,     3,     6,     6,     3,     6,     3,   194,     6,     3,
-       6,     6,     3,     6,     3,   194,     4,     4,     4,     4,
+      71,    72,    73,    74,    75,    76,    79,    78,    79,    80,
+      81,   704,    16,    79,    73,    73,   673,    72,    73,    74,
+      75,    76,   698,    78,    79,   965,    81,   965,   965,   965,
+      73,    78,    79,    73,    73,   965,    73,   121,   122,     5,
+     114,     7,   581,     9,    16,    17,   167,   168,   169,   170,
+      73,   613,    73,   196,    73,    73,     3,     0,    73,   112,
+      69,     8,     3,   625,   626,   627,   119,     8,   114,   115,
+      73,   117,    73,    72,    73,    74,    75,    76,   199,    78,
+      79,     3,    81,    74,    75,    21,     8,    21,     7,    73,
+      73,    74,    75,    76,    30,    22,    23,    24,    25,     3,
+      88,    89,    73,    73,     8,    73,    73,   646,    73,     3,
+       3,     7,   196,    10,     8,     8,    88,    89,    73,    73,
+      73,     7,   196,    73,    73,     6,    11,    12,    74,    75,
+      15,    71,     7,    18,    19,    20,     3,    71,     7,    73,
+      74,     8,     7,    77,    78,    79,     3,     3,    88,    89,
+       6,     8,    88,    89,    88,    89,   144,   145,     7,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,   131,   132,   133,    71,
+      72,    73,    74,    75,    76,    13,    14,     3,   134,   135,
+     136,   137,     8,    88,    89,     7,    88,    89,   196,    70,
+      95,     3,   121,   122,     6,   100,   101,   102,   103,   104,
+      81,   106,     3,     7,   196,     6,   111,    88,    89,     7,
+     196,   197,   198,   199,   174,   120,   176,   177,   123,     7,
+    1180,     7,  1180,  1180,  1180,   130,   107,    88,    89,   110,
+    1180,     7,     3,   138,   139,     3,   196,     8,   143,     3,
+     196,   146,   196,    21,     8,   150,   164,   165,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
+      38,    39,    40,    41,    42,    43,   171,   172,   173,     3,
+      88,    89,     3,     3,     8,   971,   953,     8,     8,   140,
+     141,   142,     4,   175,     8,   998,   178,   179,   180,   181,
+       3,   196,     4,    71,   196,   124,   125,   126,   127,   128,
+     129,     4,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,     3,     8,   196,     6,    59,    60,    61,
+      62,    63,    64,    65,    66,    67,     4,     3,    70,   147,
+     148,   149,     8,     4,     3,   196,     3,     3,    80,     8,
+      82,     8,     8,     4,     4,    70,    88,    89,    90,    91,
+      92,    93,    94,    95,    70,    71,     4,     4,    83,    84,
+      85,    86,    87,    88,    89,   107,     3,     3,   110,   111,
+       6,     8,    88,    89,     4,   466,   118,     4,   196,   470,
+     404,   405,   107,     3,     3,   110,     4,     4,     8,     8,
+       4,   482,   108,   109,   485,   470,     4,     3,     8,     4,
+       3,   492,     8,   482,   482,     8,     4,   482,     3,     3,
+     485,   502,     4,     8,     8,     3,     3,   492,   196,   482,
+       8,   512,   482,   482,   517,   482,   517,   502,     3,   171,
+     172,   517,     4,     8,     4,     3,     3,   512,     4,   482,
+       8,   482,   517,   482,   482,   512,   537,   482,     3,     8,
+     517,   470,     4,     8,   196,    96,    97,    98,    99,   482,
+       4,   482,   537,   482,     4,     4,   485,     4,     4,     4,
+       4,   196,     4,   492,   485,     4,     4,     4,   482,   482,
+     196,   492,   485,   502,     8,     3,   196,     4,   197,   492,
+       4,   482,   482,   512,   482,   482,     4,   482,   517,   502,
+       4,     4,     4,     4,     4,     4,     4,   482,   482,   482,
+       4,     4,   482,   482,   197,     4,     4,   197,   537,   485,
+     197,    70,   197,   197,   197,   197,   492,   197,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    88,
+      89,   199,   198,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,   198,    70,    71,     4,   106,   197,   197,
+       4,     4,     4,   112,   113,   114,   115,   116,   117,     4,
+     199,   199,    88,    89,   199,    91,    92,   668,    94,    95,
+     671,     4,     4,   199,   199,     4,   199,     4,     4,     4,
+       4,   107,     4,     4,   110,     4,   671,     4,    88,    89,
+       4,     4,   118,     4,     4,     4,   197,     4,     4,     4,
+       4,     4,     4,   704,   705,   706,     4,   708,   199,     4,
+       4,     4,     4,     4,   197,   199,     4,     4,     4,   704,
+     705,   706,   707,   708,     4,     4,   197,     4,     4,   197,
+     197,     4,     4,   667,     4,     4,     4,   196,     4,     4,
+       4,   197,   671,     4,     4,   171,   172,     4,   199,     4,
+       4,   151,   152,   153,   154,   155,   156,   157,   158,   159,
+     160,   161,   162,   163,   199,     4,   199,   199,     4,     4,
+     196,   171,   172,     4,   197,   704,   705,   706,   707,   708,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,     4,     4,   196,     4,   199,     4,
+     197,   197,     4,     4,   199,     4,   197,     4,   196,     7,
+     196,     7,     7,     7,     7,     5,   196,   196,     5,     5,
+       5,   196,     5,     7,     5,     5,     5,   196,     5,     7,
+       5,     5,   196,   196,     7,     7,     7,     7,     7,     7,
+       5,     5,     5,     5,     5,   196,   196,   196,     7,   196,
+     196,   166,   196,   196,   196,   196,   196,   196,   196,   196,
+     196,   196,   196,     7,     7,   196,   196,     7,   196,     7,
+       7,   105,     7,   196,     7,     7,   196,     7,   196,     7,
+     196,     7,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     3,   646,     6,     3,     6,     6,     3,
+       6,     3,     3,     6,   697,     3,     6,     6,     3,     6,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       3,   687,     6,     3,     6,     4,   197,     8,     6,     4,
-       4,     4,     4,   195,     4,   195,     4,     4,   197,   195,
-     195,   195,   195,   195,     4,   195,   197,   195,     4,   195,
-     195,     4,   195,   195,   195,   946,   195,   195,   949,   195,
-     197,   952,   949,   195,   955,   952,   952,   946,   955,   946,
-     195,   946,     4,     4,   949,   966,   955,   952,   969,   966,
-     955,   972,   197,   946,   946,   952,   946,   946,     4,     4,
-       3,   966,   955,   955,   969,   955,   955,   988,   946,   946,
-     946,     6,   993,   946,   195,   946,   997,   955,   955,   955,
-       4,   946,   955,   988,   955,  1006,   194,   946,   993,  1006,
-     955,  1012,   997,   946,  1015,   946,   955,   946,  1003,   194,
-     949,  1006,   955,   952,   955,   194,   955,  1012,   194,   946,
-    1015,     8,   194,   946,   946,   194,   946,   966,   955,     8,
-     969,   946,   955,   955,   946,   955,   946,   194,   946,   966,
-     955,     4,   969,   955,     8,   955,     3,   955,     8,   988,
-     955,     4,   955,     4,   993,     4,     4,     7,   997,     5,
-       4,     4,     4,     4,  1003,   195,     4,  1006,   636,   403,
-     658,   649,   194,  1012,   194,   661,  1015,   741,   462,   940,
-     972,   945,   964,   958,   961,  1012,   512,   993,  1015,   974,
-     981,   948,   946,  1168,   957,    77,   951,   194,   194,   949,
-     504,   954,   509,   194,  1015,   194,   952,  1012,  1012,  1012,
-    1015,   197,  1015,   194,   197,   194,  1014,   195,   195,   194,
-     194,  1174,  1017,   458,   971,   967,   969,   711,   988,   997,
-     533,  1003,   529,   474,  1189,   698,  1007,  1210,   660,  1230,
-      -1,    -1,    -1,    -1,   477,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   484,    -1,    -1,    -1,  1168,    -1,    -1,
-      -1,  1168,    -1,  1174,   494,    -1,    -1,  1174,    -1,  1168,
-      -1,    -1,    -1,  1168,    -1,    -1,    -1,    -1,  1189,  1174,
-    1130,    -1,  1189,    -1,    -1,  1168,  1168,    -1,  1168,  1168,
-      -1,    -1,    -1,    -1,  1189,    -1,    -1,    -1,    -1,    -1,
-    1168,  1168,  1168,    -1,    -1,  1168,    -1,  1168,    -1,    -1,
-      -1,    -1,    -1,  1168,    -1,    -1,    -1,    -1,    -1,  1168,
-      -1,    -1,    -1,    -1,    -1,  1168,    -1,  1168,    -1,  1168,
-      -1,    -1,    -1,    -1,    -1,  1174,    -1,    -1,    -1,    -1,
-      -1,  1168,    -1,    -1,    -1,  1168,  1168,  1174,  1168,    -1,
-    1189,    -1,    -1,  1168,    -1,    -1,  1168,    -1,  1168,    -1,
-    1168,    -1,    -1,  1168,    -1,  1168
+       4,     4,     4,     4,     3,   196,     6,     3,     6,     4,
+     197,     8,     6,     4,     4,     4,   199,   199,   197,   197,
+       4,   197,     4,     4,   197,     4,   197,   197,     4,   197,
+     199,   197,   197,   197,   197,   956,   197,   197,   959,   962,
+       4,   962,     4,     4,   965,   197,   962,   956,   956,   197,
+     197,   956,   197,   199,   959,   976,   965,   962,   979,   197,
+     965,   982,   959,   956,     4,   962,   956,   956,   965,   956,
+       4,   976,   965,   199,   979,   965,   965,   998,   965,   976,
+       4,     6,  1003,   956,     3,   956,  1007,   956,   956,   197,
+       4,   956,   965,   998,   965,  1016,   965,   965,  1003,     8,
+     965,  1022,  1007,   956,  1025,   956,     8,   956,  1013,   196,
+     959,  1016,   965,   962,   965,     4,   965,  1022,   196,  1016,
+    1025,   196,   956,   956,   965,   196,   196,   976,   196,   196,
+     979,   965,   965,     8,   196,   956,   956,     3,   956,   956,
+       8,   956,   196,   976,   965,   965,   979,   965,   965,   998,
+     965,   956,   956,   956,  1003,     4,   956,   956,  1007,     4,
+     965,   965,   965,     4,  1013,   965,   965,  1016,     4,   965,
+       5,   196,     4,  1022,     7,     4,  1025,     4,     4,     4,
+     196,  1022,   671,   668,  1025,   466,   659,   955,   409,  1022,
+     470,   974,  1025,   751,   950,   968,   971,  1003,   958,   984,
+     982,   956,   991,   196,   196,   482,   520,  1180,   196,   967,
+      77,   197,   199,   196,   199,   512,   196,   959,  1027,   197,
+     197,   196,   196,   961,   964,   962,  1022,   517,   981,  1025,
+    1024,  1186,   977,  1025,  1022,   998,  1007,   721,   979,  1013,
+     670,   537,  1201,   708,  1222,  1242,    -1,   541,    -1,    -1,
+    1017,    -1,    -1,   485,    -1,    -1,    -1,    -1,    -1,  1180,
+      -1,    -1,    -1,    -1,   492,  1186,    -1,    -1,    -1,    -1,
+      -1,  1180,    -1,    -1,    -1,  1180,    -1,    -1,    -1,    -1,
+    1201,  1186,   502,  1180,    -1,    -1,    -1,  1180,  1142,  1186,
+    1180,  1180,    -1,  1180,    -1,    -1,  1201,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1201,    -1,    -1,  1180,    -1,  1180,
+      -1,  1180,  1180,    -1,    -1,  1180,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1180,    -1,  1180,
+      -1,  1180,    -1,    -1,    -1,    -1,    -1,  1186,    -1,  1180,
+      -1,    -1,    -1,    -1,    -1,    -1,  1180,  1180,    -1,    -1,
+      -1,    -1,  1201,  1186,    -1,    -1,    -1,    -1,    -1,  1180,
+    1180,    -1,  1180,  1180,    -1,  1180,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1180,  1180,  1180,    -1,    -1,
+    1180,  1180,    -1,    -1,  1180
   };
 
   const short
   Dhcp6Parser::yystos_[] =
   {
-       0,   180,   181,   182,   183,   184,   185,   186,   187,   188,
-     189,   190,   191,   192,   193,   199,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
-       0,     5,     7,     9,   194,   195,   196,   197,   214,   215,
-     216,   221,     7,   230,     7,   236,     7,   275,     7,   381,
-       7,   458,     7,   474,     7,   491,     7,   410,     7,   416,
-       7,   440,     7,   357,     7,   560,     7,   591,   222,   217,
-     231,   237,   276,   382,   459,   475,   492,   411,   417,   441,
-     358,   561,   592,   214,   223,   224,   194,   219,   220,    10,
-     232,   233,   234,    11,    12,    15,    18,    19,    20,    44,
+       0,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
+       0,     5,     7,     9,   196,   197,   198,   199,   216,   217,
+     218,   223,     7,   232,     7,   238,     7,   279,     7,   385,
+       7,   462,     7,   478,     7,   495,     7,   414,     7,   420,
+       7,   444,     7,   361,     7,   564,     7,   595,   224,   219,
+     233,   239,   280,   386,   463,   479,   496,   415,   421,   445,
+     362,   565,   596,   216,   225,   226,   196,   221,   222,    10,
+     234,   235,   236,    11,    12,    15,    18,    19,    20,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    86,    87,    93,    98,    99,   100,
-     101,   102,   104,   109,   118,   121,   128,   136,   137,   141,
-     144,   148,   169,   170,   171,   194,   229,   238,   239,   240,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   255,   256,   257,   260,   262,   264,   266,
-     268,   269,   270,   271,   273,   282,   284,   286,   324,   330,
-     336,   342,   344,   351,   365,   375,   395,   400,   408,   434,
-     464,   466,   485,   515,   527,   539,   540,   548,   558,   589,
-     598,    16,    17,   229,   277,   278,   279,   281,   464,   466,
-      78,    80,    88,    89,    90,    91,    92,   105,   108,   116,
-     229,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   254,   255,   256,   257,   260,   262,   264,   266,
-     268,   383,   384,   385,   387,   389,   391,   393,   395,   398,
-     399,   434,   452,   464,   466,   468,   485,   510,    79,   229,
-     391,   393,   434,   460,   461,   462,   464,   466,    81,    82,
-      83,    84,    85,   229,   391,   393,   434,   464,   466,   476,
-     477,   478,   480,   481,   483,   484,   104,   110,   111,   112,
-     113,   114,   115,   229,   434,   464,   466,   493,   494,   495,
-     496,   498,   500,   502,   504,   506,   508,   408,    21,    69,
-      71,    72,    75,    76,    77,   229,   304,   418,   419,   420,
-     421,   422,   423,   424,   426,   428,   430,   431,   433,   464,
-     466,    70,    73,    74,   229,   304,   422,   428,   442,   443,
-     444,   445,   446,   448,   449,   450,   451,   464,   466,   119,
-     120,   229,   359,   360,   361,   363,   149,   150,   151,   152,
-     153,   154,   155,   156,   157,   158,   159,   160,   161,   169,
-     170,   229,   464,   466,   562,   563,   564,   565,   567,   569,
-     570,   572,   573,   574,   577,   579,   580,   581,   583,   585,
-     587,    13,    14,   593,   594,   595,   597,     6,     3,     4,
-       8,     3,   235,     3,     8,   241,   590,   274,   283,   285,
-     287,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,   272,     4,     4,     4,     4,     4,   258,
-     261,   263,     4,   376,   409,   435,   465,   467,   396,   401,
-     331,   343,   337,   325,   516,   486,   352,   366,   528,     4,
-     345,   541,   549,   559,   265,   267,   599,     4,     3,     8,
-     280,     4,     3,     8,   453,   469,   386,   388,   390,     4,
-       4,   394,   392,   511,     3,     8,   463,     3,     8,   479,
-       4,   482,     4,     4,     3,     8,   509,   497,   499,   501,
-     503,   505,   507,     8,     3,     8,   425,   305,     4,   429,
-     427,   432,     4,     8,     3,   447,     4,     4,     8,     3,
-     362,   364,     3,     8,     4,   566,   568,     4,   571,     4,
-       4,   575,   578,     4,     4,   582,   584,   586,   588,     3,
-       8,   596,     4,     3,     8,   214,   214,   194,     4,   233,
-       4,     4,     4,     4,     4,     4,   195,   195,   195,   195,
-     195,   195,   195,   195,   197,   196,   196,   195,     4,   195,
-     195,   197,   197,   197,     4,     4,     4,   197,     4,     4,
+      65,    66,    67,    68,    69,    70,    88,    89,    95,   100,
+     101,   102,   103,   104,   106,   111,   120,   123,   130,   138,
+     139,   143,   146,   150,   171,   172,   173,   196,   231,   240,
+     241,   242,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   262,   264,
+     266,   267,   268,   270,   272,   273,   274,   275,   277,   286,
+     288,   290,   328,   334,   340,   346,   348,   355,   369,   379,
+     399,   404,   412,   438,   468,   470,   489,   519,   531,   543,
+     544,   552,   562,   593,   602,    16,    17,   231,   281,   282,
+     283,   285,   468,   470,    80,    82,    90,    91,    92,    93,
+      94,   107,   110,   118,   231,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   256,   257,   258,   259,
+     262,   264,   266,   267,   268,   270,   272,   387,   388,   389,
+     391,   393,   395,   397,   399,   402,   403,   438,   456,   468,
+     470,   472,   489,   514,    81,   231,   395,   397,   438,   464,
+     465,   466,   468,   470,    83,    84,    85,    86,    87,   231,
+     395,   397,   438,   468,   470,   480,   481,   482,   484,   485,
+     487,   488,   106,   112,   113,   114,   115,   116,   117,   231,
+     438,   468,   470,   497,   498,   499,   500,   502,   504,   506,
+     508,   510,   512,   412,    21,    71,    73,    74,    77,    78,
+      79,   231,   308,   422,   423,   424,   425,   426,   427,   428,
+     430,   432,   434,   435,   437,   468,   470,    72,    75,    76,
+     231,   308,   426,   432,   446,   447,   448,   449,   450,   452,
+     453,   454,   455,   468,   470,   121,   122,   231,   363,   364,
+     365,   367,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   171,   172,   231,   468,   470,
+     566,   567,   568,   569,   571,   573,   574,   576,   577,   578,
+     581,   583,   584,   585,   587,   589,   591,    13,    14,   597,
+     598,   599,   601,     6,     3,     4,     8,     3,   237,     3,
+       8,   243,   594,   278,   287,   289,   291,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     4,     4,   276,
+       4,     4,     4,     4,     4,   260,   263,   265,     4,     4,
+       4,   380,   413,   439,   469,   471,   400,   405,   335,   347,
+     341,   329,   520,   490,   356,   370,   532,     4,   349,   545,
+     553,   563,   269,   271,   603,     4,     3,     8,   284,     4,
+       3,     8,   457,   473,   390,   392,   394,     4,     4,   398,
+     396,   515,     3,     8,   467,     3,     8,   483,     4,   486,
+       4,     4,     3,     8,   513,   501,   503,   505,   507,   509,
+     511,     8,     3,     8,   429,   309,     4,   433,   431,   436,
+       4,     8,     3,   451,     4,     4,     8,     3,   366,   368,
+       3,     8,     4,   570,   572,     4,   575,     4,     4,   579,
+     582,     4,     4,   586,   588,   590,   592,     3,     8,   600,
+       4,     3,     8,   216,   216,   196,     4,   235,     4,     4,
+       4,     4,     4,     4,   197,   197,   197,   197,   197,   197,
+     197,   197,   199,   198,   198,   197,     4,   197,   197,   199,
+     199,   199,     4,     4,     4,   199,   199,   199,     4,     4,
        4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,   195,     4,     4,     4,     4,     4,
-       4,     4,   239,     4,   197,   278,     4,     4,     4,     4,
-       4,   195,   197,     4,     4,     4,   384,     4,   461,     4,
-     195,     4,   195,   195,   477,     4,     4,     4,     4,     4,
-       4,     4,   495,     4,     4,   195,     4,     4,     4,   197,
-     420,     4,   197,   197,   444,     4,     4,   360,   197,     4,
-       4,   195,     4,   195,   195,     4,     4,   197,   197,     4,
-       4,     4,     4,   563,     4,   195,   594,     4,     7,   194,
-       7,     7,     7,     7,     5,   194,   165,   166,   167,   168,
-     197,   259,   194,   194,     5,     5,     5,   216,   218,   194,
-      94,    95,    96,    97,   397,     5,     5,     5,     5,     7,
-       5,     5,     5,     7,     7,     7,     7,     7,     7,   194,
-     194,     5,     5,   225,     5,     5,   194,   194,   194,   225,
-     194,     7,   194,   194,   194,   225,   225,   225,   194,   194,
-     194,   194,   194,   194,   194,   194,   194,   194,   194,   218,
-     194,   194,   194,   162,   163,   576,   164,   259,   194,   194,
-     194,     5,   214,   238,   593,   277,    21,    26,    27,    28,
+       4,     4,     4,     4,   197,     4,     4,     4,     4,     4,
+       4,     4,   241,     4,   199,   282,     4,     4,     4,     4,
+       4,   197,   199,     4,     4,     4,   388,     4,   465,     4,
+     197,     4,   197,   197,   481,     4,     4,     4,     4,     4,
+       4,     4,   499,     4,     4,   197,     4,     4,     4,   199,
+     424,     4,   199,   199,   448,     4,     4,   364,   199,     4,
+       4,   197,     4,   197,   197,     4,     4,   199,   199,     4,
+       4,     4,     4,   567,     4,   197,   598,     4,     7,   196,
+       7,     7,     7,     7,     5,   196,   167,   168,   169,   170,
+     199,   261,   196,   196,     5,     5,     5,   218,   220,   196,
+      96,    97,    98,    99,   401,     5,     5,     5,     5,     7,
+       5,     5,     5,     7,     7,     7,     7,     7,     7,   196,
+     196,     5,     5,   227,     5,     5,   196,   196,   196,   227,
+     196,     7,   196,   196,   196,   227,   227,   227,   196,   196,
+     196,   196,   196,   196,   196,   196,   196,   196,   196,   220,
+     196,   196,   196,   164,   165,   580,   166,   261,   196,   196,
+     196,     5,   216,   240,   597,   281,    21,    26,    27,    28,
       29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    43,   229,   292,   293,   294,   297,
-     299,   301,   303,   304,   306,   307,   308,   309,   310,   311,
-     312,   313,   314,   315,   317,   318,   320,   322,   292,     7,
-     288,   289,   290,     7,   377,   378,   379,     7,   412,   413,
-     414,     7,   436,   437,   438,     7,   402,   403,   404,   112,
-     194,   332,   333,   334,   335,   223,   113,   115,   334,   338,
-     339,   340,   341,   103,   326,   327,   328,     7,   517,   518,
-       7,   487,   488,   489,     7,   353,   354,   355,   122,   123,
-     124,   125,   126,   127,   367,   368,   369,   370,   371,   372,
-     373,   374,    21,   132,   133,   134,   135,   229,   306,   464,
-     466,   529,   530,   531,   534,   535,   537,   538,   138,   139,
-     140,   229,   346,   347,   348,   349,   350,   464,   466,   142,
-     143,   229,   464,   466,   542,   543,   544,   546,   145,   146,
-     147,   194,   464,   466,   550,   551,   552,   553,   555,   556,
-     562,     7,   600,   601,   226,     7,   454,   455,   456,     7,
-     470,   471,   472,   117,   496,   512,   513,   288,     8,     8,
-       8,   295,   298,   300,   302,     4,     4,     4,     4,     4,
-     316,     4,     4,   319,   321,   323,     4,     4,     4,     4,
-       3,     8,     8,   291,     6,     3,   380,     6,     3,   415,
-       6,     3,   439,     6,     3,   405,     6,     3,     3,     6,
-       6,     3,     6,   329,     3,     8,   519,     3,     6,   490,
-       6,     3,   356,     6,     3,     4,     4,     4,     4,     4,
-       4,     3,     8,   532,   536,     4,     4,     4,     3,     8,
-       4,     4,     4,     3,     8,   545,   547,     3,     8,     4,
-     554,     4,   557,     3,     8,     8,   602,     3,     6,   194,
-     227,   228,   457,     6,     3,   473,     6,     3,   514,     8,
-       6,     4,     4,     4,     4,   195,   197,   195,   197,   195,
-       4,   195,   195,     4,     4,     4,   195,   195,   197,   195,
-     293,   292,   290,   383,   379,   418,   414,   442,   438,   229,
-     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
-     252,   254,   255,   256,   257,   260,   262,   264,   266,   268,
-     304,   375,   387,   389,   391,   393,   395,   399,   406,   407,
-     434,   464,   466,   510,   404,   333,   339,     4,   327,   106,
-     107,   229,   304,   434,   464,   466,   520,   521,   522,   523,
-     524,   526,   518,   493,   489,   359,   355,   195,   195,   195,
-     195,   195,   195,   368,     4,     4,   195,   195,   195,   530,
-     197,   195,   195,   347,     4,     4,   543,   197,     4,   195,
-       4,   551,   172,   174,   175,   229,   304,   464,   466,   603,
-     604,   605,   606,   608,   601,     6,     3,   460,   456,   476,
-     472,     4,    22,    23,    24,    25,   296,   194,   194,   194,
-     194,   194,   194,   194,     8,     8,     8,     8,     3,     8,
-     194,   525,     4,     8,     3,     8,     8,   129,   130,   131,
-     533,   194,   194,   194,   194,   214,   609,     4,   607,     3,
-       8,   194,     8,     8,   194,   407,     4,   197,   522,     4,
-     195,     4,   604,   194,     5,   194,     7,   610,   611,   612,
-       3,     6,   173,   176,   177,   178,   179,   613,   614,   615,
-     617,   618,   619,   620,   611,   616,     4,     4,     4,   621,
-       3,     8,     4,   197,   195,   195,     4,   614,   194,   194
+      39,    40,    41,    42,    43,   231,   296,   297,   298,   301,
+     303,   305,   307,   308,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   321,   322,   324,   326,   296,     7,
+     292,   293,   294,     7,   381,   382,   383,     7,   416,   417,
+     418,     7,   440,   441,   442,     7,   406,   407,   408,   114,
+     196,   336,   337,   338,   339,   225,   115,   117,   338,   342,
+     343,   344,   345,   105,   330,   331,   332,     7,   521,   522,
+       7,   491,   492,   493,     7,   357,   358,   359,   124,   125,
+     126,   127,   128,   129,   371,   372,   373,   374,   375,   376,
+     377,   378,    21,   134,   135,   136,   137,   231,   310,   468,
+     470,   533,   534,   535,   538,   539,   541,   542,   140,   141,
+     142,   231,   350,   351,   352,   353,   354,   468,   470,   144,
+     145,   231,   468,   470,   546,   547,   548,   550,   147,   148,
+     149,   196,   468,   470,   554,   555,   556,   557,   559,   560,
+     566,     7,   604,   605,   228,     7,   458,   459,   460,     7,
+     474,   475,   476,   119,   500,   516,   517,   292,     8,     8,
+       8,   299,   302,   304,   306,     4,     4,     4,     4,     4,
+     320,     4,     4,   323,   325,   327,     4,     4,     4,     4,
+       3,     8,     8,   295,     6,     3,   384,     6,     3,   419,
+       6,     3,   443,     6,     3,   409,     6,     3,     3,     6,
+       6,     3,     6,   333,     3,     8,   523,     3,     6,   494,
+       6,     3,   360,     6,     3,     4,     4,     4,     4,     4,
+       4,     3,     8,   536,   540,     4,     4,     4,     3,     8,
+       4,     4,     4,     3,     8,   549,   551,     3,     8,     4,
+     558,     4,   561,     3,     8,     8,   606,     3,     6,   196,
+     229,   230,   461,     6,     3,   477,     6,     3,   518,     8,
+       6,     4,     4,     4,     4,   197,   199,   197,   199,   197,
+       4,   197,   197,     4,     4,     4,   197,   197,   199,   197,
+     297,   296,   294,   387,   383,   422,   418,   446,   442,   231,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   256,   257,   258,   259,   262,   264,   266,   267,   268,
+     270,   272,   308,   379,   391,   393,   395,   397,   399,   403,
+     410,   411,   438,   468,   470,   514,   408,   337,   343,     4,
+     331,   108,   109,   231,   308,   438,   468,   470,   524,   525,
+     526,   527,   528,   530,   522,   497,   493,   363,   359,   197,
+     197,   197,   197,   197,   197,   372,     4,     4,   197,   197,
+     197,   534,   199,   197,   197,   351,     4,     4,   547,   199,
+       4,   197,     4,   555,   174,   176,   177,   231,   308,   468,
+     470,   607,   608,   609,   610,   612,   605,     6,     3,   464,
+     460,   480,   476,     4,    22,    23,    24,    25,   300,   196,
+     196,   196,   196,   196,   196,   196,     8,     8,     8,     8,
+       3,     8,   196,   529,     4,     8,     3,     8,     8,   131,
+     132,   133,   537,   196,   196,   196,   196,   216,   613,     4,
+     611,     3,     8,   196,     8,     8,   196,   411,     4,   199,
+     526,     4,   197,     4,   608,   196,     5,   196,     7,   614,
+     615,   616,     3,     6,   175,   178,   179,   180,   181,   617,
+     618,   619,   621,   622,   623,   624,   615,   620,     4,     4,
+       4,   625,     3,     8,     4,   199,   197,   197,     4,   618,
+     196,   196
   };
 
   const short
   Dhcp6Parser::yyr1_[] =
   {
-       0,   198,   200,   199,   201,   199,   202,   199,   203,   199,
-     204,   199,   205,   199,   206,   199,   207,   199,   208,   199,
-     209,   199,   210,   199,   211,   199,   212,   199,   213,   199,
-     214,   214,   214,   214,   214,   214,   214,   215,   217,   216,
-     218,   219,   219,   220,   220,   222,   221,   223,   223,   224,
-     224,   226,   225,   227,   227,   228,   228,   229,   231,   230,
-     232,   232,   233,   235,   234,   237,   236,   238,   238,   239,
-     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-     239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
-     239,   239,   241,   240,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   258,
-     257,   259,   259,   259,   259,   259,   261,   260,   263,   262,
-     265,   264,   267,   266,   268,   269,   270,   272,   271,   274,
-     273,   276,   275,   277,   277,   278,   278,   278,   278,   278,
-     280,   279,   281,   283,   282,   285,   284,   287,   286,   288,
-     288,   289,   289,   291,   290,   292,   292,   293,   293,   293,
-     293,   293,   293,   293,   293,   293,   293,   293,   293,   293,
-     293,   293,   293,   293,   293,   293,   293,   293,   295,   294,
-     296,   296,   296,   296,   298,   297,   300,   299,   302,   301,
-     303,   305,   304,   306,   307,   308,   309,   310,   311,   312,
-     313,   314,   316,   315,   317,   319,   318,   321,   320,   323,
-     322,   325,   324,   326,   326,   327,   329,   328,   331,   330,
-     332,   332,   333,   333,   334,   335,   337,   336,   338,   338,
-     339,   339,   339,   340,   341,   343,   342,   345,   344,   346,
-     346,   347,   347,   347,   347,   347,   347,   348,   349,   350,
-     352,   351,   353,   353,   354,   354,   356,   355,   358,   357,
-     359,   359,   359,   360,   360,   362,   361,   364,   363,   366,
-     365,   367,   367,   368,   368,   368,   368,   368,   368,   369,
-     370,   371,   372,   373,   374,   376,   375,   377,   377,   378,
-     378,   380,   379,   382,   381,   383,   383,   384,   384,   384,
-     384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
-     384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
-     384,   384,   384,   384,   384,   384,   384,   384,   384,   384,
-     384,   384,   384,   386,   385,   388,   387,   390,   389,   392,
-     391,   394,   393,   396,   395,   397,   397,   397,   397,   398,
-     399,   401,   400,   402,   402,   403,   403,   405,   404,   406,
-     406,   407,   407,   407,   407,   407,   407,   407,   407,   407,
-     407,   407,   407,   407,   407,   407,   407,   407,   407,   407,
-     407,   407,   407,   407,   407,   407,   407,   407,   407,   407,
-     407,   407,   407,   407,   409,   408,   411,   410,   412,   412,
-     413,   413,   415,   414,   417,   416,   418,   418,   419,   419,
-     420,   420,   420,   420,   420,   420,   420,   420,   420,   420,
-     421,   422,   423,   425,   424,   427,   426,   429,   428,   430,
-     432,   431,   433,   435,   434,   436,   436,   437,   437,   439,
-     438,   441,   440,   442,   442,   443,   443,   444,   444,   444,
-     444,   444,   444,   444,   444,   444,   445,   447,   446,   448,
-     449,   450,   451,   453,   452,   454,   454,   455,   455,   457,
-     456,   459,   458,   460,   460,   461,   461,   461,   461,   461,
-     461,   461,   463,   462,   465,   464,   467,   466,   469,   468,
-     470,   470,   471,   471,   473,   472,   475,   474,   476,   476,
-     477,   477,   477,   477,   477,   477,   477,   477,   477,   477,
-     477,   479,   478,   480,   482,   481,   483,   484,   486,   485,
-     487,   487,   488,   488,   490,   489,   492,   491,   493,   493,
-     494,   494,   495,   495,   495,   495,   495,   495,   495,   495,
-     495,   495,   495,   497,   496,   499,   498,   501,   500,   503,
-     502,   505,   504,   507,   506,   509,   508,   511,   510,   512,
-     512,   514,   513,   516,   515,   517,   517,   519,   518,   520,
-     520,   521,   521,   522,   522,   522,   522,   522,   522,   522,
-     523,   525,   524,   526,   528,   527,   529,   529,   530,   530,
-     530,   530,   530,   530,   530,   530,   530,   532,   531,   533,
-     533,   533,   534,   536,   535,   537,   538,   539,   541,   540,
-     542,   542,   543,   543,   543,   543,   543,   545,   544,   547,
-     546,   549,   548,   550,   550,   551,   551,   551,   551,   551,
-     551,   552,   554,   553,   555,   557,   556,   559,   558,   561,
-     560,   562,   562,   563,   563,   563,   563,   563,   563,   563,
-     563,   563,   563,   563,   563,   563,   563,   563,   563,   563,
-     563,   564,   566,   565,   568,   567,   569,   571,   570,   572,
-     573,   575,   574,   576,   576,   578,   577,   579,   580,   582,
-     581,   584,   583,   586,   585,   588,   587,   590,   589,   592,
-     591,   593,   593,   594,   594,   596,   595,   597,   599,   598,
-     600,   600,   602,   601,   603,   603,   604,   604,   604,   604,
-     604,   604,   604,   605,   607,   606,   609,   608,   610,   610,
-     612,   611,   613,   613,   614,   614,   614,   614,   614,   616,
-     615,   617,   618,   619,   621,   620
+       0,   200,   202,   201,   203,   201,   204,   201,   205,   201,
+     206,   201,   207,   201,   208,   201,   209,   201,   210,   201,
+     211,   201,   212,   201,   213,   201,   214,   201,   215,   201,
+     216,   216,   216,   216,   216,   216,   216,   217,   219,   218,
+     220,   221,   221,   222,   222,   224,   223,   225,   225,   226,
+     226,   228,   227,   229,   229,   230,   230,   231,   233,   232,
+     234,   234,   235,   237,   236,   239,   238,   240,   240,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   241,   241,   241,   241,   241,   241,
+     241,   241,   241,   241,   243,   242,   244,   245,   246,   247,
+     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
+     258,   260,   259,   261,   261,   261,   261,   261,   263,   262,
+     265,   264,   266,   267,   269,   268,   271,   270,   272,   273,
+     274,   276,   275,   278,   277,   280,   279,   281,   281,   282,
+     282,   282,   282,   282,   284,   283,   285,   287,   286,   289,
+     288,   291,   290,   292,   292,   293,   293,   295,   294,   296,
+     296,   297,   297,   297,   297,   297,   297,   297,   297,   297,
+     297,   297,   297,   297,   297,   297,   297,   297,   297,   297,
+     297,   297,   299,   298,   300,   300,   300,   300,   302,   301,
+     304,   303,   306,   305,   307,   309,   308,   310,   311,   312,
+     313,   314,   315,   316,   317,   318,   320,   319,   321,   323,
+     322,   325,   324,   327,   326,   329,   328,   330,   330,   331,
+     333,   332,   335,   334,   336,   336,   337,   337,   338,   339,
+     341,   340,   342,   342,   343,   343,   343,   344,   345,   347,
+     346,   349,   348,   350,   350,   351,   351,   351,   351,   351,
+     351,   352,   353,   354,   356,   355,   357,   357,   358,   358,
+     360,   359,   362,   361,   363,   363,   363,   364,   364,   366,
+     365,   368,   367,   370,   369,   371,   371,   372,   372,   372,
+     372,   372,   372,   373,   374,   375,   376,   377,   378,   380,
+     379,   381,   381,   382,   382,   384,   383,   386,   385,   387,
+     387,   388,   388,   388,   388,   388,   388,   388,   388,   388,
+     388,   388,   388,   388,   388,   388,   388,   388,   388,   388,
+     388,   388,   388,   388,   388,   388,   388,   388,   388,   388,
+     388,   388,   388,   388,   388,   388,   388,   388,   388,   390,
+     389,   392,   391,   394,   393,   396,   395,   398,   397,   400,
+     399,   401,   401,   401,   401,   402,   403,   405,   404,   406,
+     406,   407,   407,   409,   408,   410,   410,   411,   411,   411,
+     411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
+     411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
+     411,   411,   411,   411,   411,   411,   411,   411,   411,   411,
+     411,   411,   413,   412,   415,   414,   416,   416,   417,   417,
+     419,   418,   421,   420,   422,   422,   423,   423,   424,   424,
+     424,   424,   424,   424,   424,   424,   424,   424,   425,   426,
+     427,   429,   428,   431,   430,   433,   432,   434,   436,   435,
+     437,   439,   438,   440,   440,   441,   441,   443,   442,   445,
+     444,   446,   446,   447,   447,   448,   448,   448,   448,   448,
+     448,   448,   448,   448,   449,   451,   450,   452,   453,   454,
+     455,   457,   456,   458,   458,   459,   459,   461,   460,   463,
+     462,   464,   464,   465,   465,   465,   465,   465,   465,   465,
+     467,   466,   469,   468,   471,   470,   473,   472,   474,   474,
+     475,   475,   477,   476,   479,   478,   480,   480,   481,   481,
+     481,   481,   481,   481,   481,   481,   481,   481,   481,   483,
+     482,   484,   486,   485,   487,   488,   490,   489,   491,   491,
+     492,   492,   494,   493,   496,   495,   497,   497,   498,   498,
+     499,   499,   499,   499,   499,   499,   499,   499,   499,   499,
+     499,   501,   500,   503,   502,   505,   504,   507,   506,   509,
+     508,   511,   510,   513,   512,   515,   514,   516,   516,   518,
+     517,   520,   519,   521,   521,   523,   522,   524,   524,   525,
+     525,   526,   526,   526,   526,   526,   526,   526,   527,   529,
+     528,   530,   532,   531,   533,   533,   534,   534,   534,   534,
+     534,   534,   534,   534,   534,   536,   535,   537,   537,   537,
+     538,   540,   539,   541,   542,   543,   545,   544,   546,   546,
+     547,   547,   547,   547,   547,   549,   548,   551,   550,   553,
+     552,   554,   554,   555,   555,   555,   555,   555,   555,   556,
+     558,   557,   559,   561,   560,   563,   562,   565,   564,   566,
+     566,   567,   567,   567,   567,   567,   567,   567,   567,   567,
+     567,   567,   567,   567,   567,   567,   567,   567,   567,   568,
+     570,   569,   572,   571,   573,   575,   574,   576,   577,   579,
+     578,   580,   580,   582,   581,   583,   584,   586,   585,   588,
+     587,   590,   589,   592,   591,   594,   593,   596,   595,   597,
+     597,   598,   598,   600,   599,   601,   603,   602,   604,   604,
+     606,   605,   607,   607,   608,   608,   608,   608,   608,   608,
+     608,   609,   611,   610,   613,   612,   614,   614,   616,   615,
+     617,   617,   618,   618,   618,   618,   618,   620,   619,   621,
+     622,   623,   625,   624
   };
 
   const signed char
@@ -5223,71 +5256,72 @@ 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,     0,     4,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     3,     3,     3,     0,
-       4,     1,     1,     1,     1,     1,     0,     4,     0,     4,
-       0,     4,     0,     4,     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,     0,     4,
-       1,     1,     1,     1,     0,     4,     0,     4,     0,     4,
-       3,     0,     4,     3,     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,     1,
-       3,     1,     1,     1,     1,     1,     1,     3,     3,     3,
-       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,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     0,     4,     1,     1,     1,     1,     1,     0,     4,
+       0,     4,     3,     3,     0,     4,     0,     4,     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,     0,     4,     0,     4,     0,     4,     0,
-       4,     0,     4,     0,     4,     1,     1,     1,     1,     3,
-       3,     0,     6,     0,     1,     1,     3,     0,     4,     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,     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,     1,     3,     1,     1,     1,     1,     1,
+       1,     3,     3,     3,     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,     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,     0,
+       4,     0,     4,     0,     4,     0,     4,     0,     4,     0,
+       4,     1,     1,     1,     1,     3,     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,     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,     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,     6,     1,     3,     1,     1,     1,     1,     1,
-       1,     3,     0,     4,     3,     0,     4,     0,     6,     0,
+       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,     3,     0,     4,     0,     4,     3,     0,     4,     3,
-       3,     0,     4,     1,     1,     0,     4,     3,     3,     0,
-       4,     0,     4,     0,     4,     0,     4,     0,     6,     0,
-       4,     1,     3,     1,     1,     0,     6,     3,     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,     1,     0,
-       4,     3,     3,     3,     0,     4
+       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,     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,
+       6,     1,     3,     1,     1,     1,     1,     1,     1,     3,
+       0,     4,     3,     0,     4,     0,     6,     0,     4,     1,
+       3,     1,     1,     1,     1,     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,     0,
+       4,     0,     4,     0,     4,     0,     6,     0,     4,     1,
+       3,     1,     1,     0,     6,     3,     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,     1,     0,     4,     3,
+       3,     3,     0,     4
   };
 
 
@@ -5317,16 +5351,17 @@ namespace isc { namespace dhcp {
   "\"statistic-default-sample-age\"", "\"ddns-send-updates\"",
   "\"ddns-override-no-update\"", "\"ddns-override-client-update\"",
   "\"ddns-replace-client-name\"", "\"ddns-generated-prefix\"",
-  "\"ddns-qualifying-suffix\"", "\"store-extended-info\"", "\"subnet6\"",
-  "\"option-def\"", "\"option-data\"", "\"name\"", "\"data\"", "\"code\"",
-  "\"space\"", "\"csv-format\"", "\"always-send\"", "\"record-types\"",
-  "\"encapsulate\"", "\"array\"", "\"pools\"", "\"pool\"", "\"pd-pools\"",
-  "\"prefix\"", "\"prefix-len\"", "\"excluded-prefix\"",
-  "\"excluded-prefix-len\"", "\"delegated-len\"", "\"user-context\"",
-  "\"comment\"", "\"subnet\"", "\"interface\"", "\"interface-id\"",
-  "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"", "\"disabled\"",
-  "\"out-of-pool\"", "\"global\"", "\"all\"", "\"shared-networks\"",
-  "\"mac-sources\"", "\"relay-supplied-options\"",
+  "\"ddns-qualifying-suffix\"", "\"ddns-update-on-renew\"",
+  "\"ddns-use-conflict-resolution\"", "\"store-extended-info\"",
+  "\"subnet6\"", "\"option-def\"", "\"option-data\"", "\"name\"",
+  "\"data\"", "\"code\"", "\"space\"", "\"csv-format\"", "\"always-send\"",
+  "\"record-types\"", "\"encapsulate\"", "\"array\"", "\"pools\"",
+  "\"pool\"", "\"pd-pools\"", "\"prefix\"", "\"prefix-len\"",
+  "\"excluded-prefix\"", "\"excluded-prefix-len\"", "\"delegated-len\"",
+  "\"user-context\"", "\"comment\"", "\"subnet\"", "\"interface\"",
+  "\"interface-id\"", "\"id\"", "\"rapid-commit\"", "\"reservation-mode\"",
+  "\"disabled\"", "\"out-of-pool\"", "\"global\"", "\"all\"",
+  "\"shared-networks\"", "\"mac-sources\"", "\"relay-supplied-options\"",
   "\"host-reservation-identifiers\"", "\"sanity-checks\"",
   "\"lease-checks\"", "\"client-classes\"", "\"require-client-classes\"",
   "\"test\"", "\"only-if-required\"", "\"client-class\"",
@@ -5372,6 +5407,7 @@ namespace isc { namespace dhcp {
   "ddns_override_no_update", "ddns_override_client_update",
   "ddns_replace_client_name", "$@22", "ddns_replace_client_name_value",
   "ddns_generated_prefix", "$@23", "ddns_qualifying_suffix", "$@24",
+  "ddns_update_on_renew", "ddns_use_conflict_resolution",
   "hostname_char_set", "$@25", "hostname_char_replacement", "$@26",
   "store_extended_info", "statistic_default_sample_count",
   "statistic_default_sample_age", "server_tag", "$@27",
@@ -5469,83 +5505,84 @@ namespace isc { namespace dhcp {
   const short
   Dhcp6Parser::yyrline_[] =
   {
-       0,   283,   283,   283,   284,   284,   285,   285,   286,   286,
-     287,   287,   288,   288,   289,   289,   290,   290,   291,   291,
-     292,   292,   293,   293,   294,   294,   295,   295,   296,   296,
-     304,   305,   306,   307,   308,   309,   310,   313,   318,   318,
-     329,   332,   333,   336,   340,   347,   347,   354,   355,   358,
-     362,   369,   369,   376,   377,   380,   384,   395,   404,   404,
-     419,   420,   424,   427,   427,   444,   444,   453,   454,   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,   491,   492,   493,   494,   495,   496,   497,   498,   499,
-     500,   501,   502,   503,   504,   505,   506,   507,   508,   509,
-     510,   511,   514,   514,   522,   527,   532,   537,   542,   547,
-     552,   557,   562,   567,   572,   577,   582,   587,   592,   597,
-     597,   605,   608,   611,   614,   617,   623,   623,   631,   631,
-     639,   639,   647,   647,   655,   660,   665,   670,   670,   678,
-     678,   689,   689,   698,   699,   702,   703,   704,   705,   706,
-     709,   709,   719,   724,   724,   736,   736,   748,   748,   758,
-     759,   762,   763,   766,   766,   776,   777,   780,   781,   782,
-     783,   784,   785,   786,   787,   788,   789,   790,   791,   792,
-     793,   794,   795,   796,   797,   798,   799,   800,   803,   803,
-     810,   811,   812,   813,   816,   816,   824,   824,   832,   832,
-     840,   845,   845,   853,   858,   863,   868,   873,   878,   883,
-     888,   893,   898,   898,   906,   911,   911,   919,   919,   927,
-     927,   935,   935,   945,   946,   948,   950,   950,   968,   968,
-     978,   979,   982,   983,   986,   991,   996,   996,  1006,  1007,
-    1010,  1011,  1012,  1015,  1020,  1027,  1027,  1039,  1039,  1051,
-    1052,  1055,  1056,  1057,  1058,  1059,  1060,  1063,  1068,  1073,
-    1078,  1078,  1088,  1089,  1092,  1093,  1096,  1096,  1106,  1106,
-    1116,  1117,  1118,  1121,  1122,  1125,  1125,  1133,  1133,  1141,
-    1141,  1152,  1153,  1156,  1157,  1158,  1159,  1160,  1161,  1164,
-    1169,  1174,  1179,  1184,  1189,  1197,  1197,  1210,  1211,  1214,
-    1215,  1222,  1222,  1248,  1248,  1259,  1260,  1264,  1265,  1266,
-    1267,  1268,  1269,  1270,  1271,  1272,  1273,  1274,  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,  1302,  1302,  1310,  1310,  1318,  1318,  1326,
-    1326,  1334,  1334,  1344,  1344,  1351,  1352,  1353,  1354,  1357,
-    1362,  1369,  1369,  1380,  1381,  1385,  1386,  1389,  1389,  1397,
-    1398,  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,  1440,  1440,  1453,  1453,  1462,  1463,
-    1466,  1467,  1472,  1472,  1487,  1487,  1501,  1502,  1505,  1506,
-    1509,  1510,  1511,  1512,  1513,  1514,  1515,  1516,  1517,  1518,
-    1521,  1523,  1528,  1530,  1530,  1538,  1538,  1546,  1546,  1554,
-    1556,  1556,  1564,  1573,  1573,  1585,  1586,  1591,  1592,  1597,
-    1597,  1609,  1609,  1621,  1622,  1627,  1628,  1633,  1634,  1635,
-    1636,  1637,  1638,  1639,  1640,  1641,  1644,  1646,  1646,  1654,
-    1656,  1658,  1663,  1671,  1671,  1683,  1684,  1687,  1688,  1691,
-    1691,  1701,  1701,  1711,  1712,  1715,  1716,  1717,  1718,  1719,
-    1720,  1721,  1724,  1724,  1732,  1732,  1757,  1757,  1787,  1787,
-    1799,  1800,  1803,  1804,  1807,  1807,  1819,  1819,  1831,  1832,
-    1835,  1836,  1837,  1838,  1839,  1840,  1841,  1842,  1843,  1844,
-    1845,  1848,  1848,  1856,  1861,  1861,  1869,  1874,  1882,  1882,
-    1892,  1893,  1896,  1897,  1900,  1900,  1909,  1909,  1918,  1919,
-    1922,  1923,  1927,  1928,  1929,  1930,  1931,  1932,  1933,  1934,
-    1935,  1936,  1937,  1940,  1940,  1950,  1950,  1960,  1960,  1968,
-    1968,  1976,  1976,  1984,  1984,  1992,  1992,  2005,  2005,  2015,
-    2016,  2019,  2019,  2030,  2030,  2040,  2041,  2044,  2044,  2054,
-    2055,  2058,  2059,  2062,  2063,  2064,  2065,  2066,  2067,  2068,
-    2071,  2073,  2073,  2081,  2089,  2089,  2101,  2102,  2105,  2106,
-    2107,  2108,  2109,  2110,  2111,  2112,  2113,  2116,  2116,  2123,
-    2124,  2125,  2128,  2133,  2133,  2141,  2146,  2153,  2160,  2160,
-    2170,  2171,  2174,  2175,  2176,  2177,  2178,  2181,  2181,  2189,
-    2189,  2200,  2200,  2212,  2213,  2216,  2217,  2218,  2219,  2220,
-    2221,  2224,  2229,  2229,  2237,  2242,  2242,  2251,  2251,  2263,
-    2263,  2273,  2274,  2277,  2278,  2279,  2280,  2281,  2282,  2283,
-    2284,  2285,  2286,  2287,  2288,  2289,  2290,  2291,  2292,  2293,
-    2294,  2297,  2302,  2302,  2310,  2310,  2318,  2323,  2323,  2331,
-    2336,  2341,  2341,  2349,  2350,  2353,  2353,  2362,  2368,  2374,
-    2374,  2382,  2382,  2391,  2391,  2400,  2400,  2411,  2411,  2422,
-    2422,  2432,  2433,  2437,  2438,  2441,  2441,  2451,  2458,  2458,
-    2470,  2471,  2475,  2475,  2483,  2484,  2487,  2488,  2489,  2490,
-    2491,  2492,  2493,  2496,  2501,  2501,  2509,  2509,  2519,  2520,
-    2523,  2523,  2531,  2532,  2535,  2536,  2537,  2538,  2539,  2542,
-    2542,  2550,  2555,  2560,  2565,  2565
+       0,   285,   285,   285,   286,   286,   287,   287,   288,   288,
+     289,   289,   290,   290,   291,   291,   292,   292,   293,   293,
+     294,   294,   295,   295,   296,   296,   297,   297,   298,   298,
+     306,   307,   308,   309,   310,   311,   312,   315,   320,   320,
+     331,   334,   335,   338,   342,   349,   349,   356,   357,   360,
+     364,   371,   371,   378,   379,   382,   386,   397,   406,   406,
+     421,   422,   426,   429,   429,   446,   446,   455,   456,   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,   491,
+     492,   493,   494,   495,   496,   497,   498,   499,   500,   501,
+     502,   503,   504,   505,   506,   507,   508,   509,   510,   511,
+     512,   513,   514,   515,   518,   518,   526,   531,   536,   541,
+     546,   551,   556,   561,   566,   571,   576,   581,   586,   591,
+     596,   601,   601,   609,   612,   615,   618,   621,   627,   627,
+     635,   635,   643,   649,   655,   655,   663,   663,   671,   676,
+     681,   686,   686,   694,   694,   705,   705,   714,   715,   718,
+     719,   720,   721,   722,   725,   725,   735,   740,   740,   752,
+     752,   764,   764,   774,   775,   778,   779,   782,   782,   792,
+     793,   796,   797,   798,   799,   800,   801,   802,   803,   804,
+     805,   806,   807,   808,   809,   810,   811,   812,   813,   814,
+     815,   816,   819,   819,   826,   827,   828,   829,   832,   832,
+     840,   840,   848,   848,   856,   861,   861,   869,   874,   879,
+     884,   889,   894,   899,   904,   909,   914,   914,   922,   927,
+     927,   935,   935,   943,   943,   951,   951,   961,   962,   964,
+     966,   966,   984,   984,   994,   995,   998,   999,  1002,  1007,
+    1012,  1012,  1022,  1023,  1026,  1027,  1028,  1031,  1036,  1043,
+    1043,  1055,  1055,  1067,  1068,  1071,  1072,  1073,  1074,  1075,
+    1076,  1079,  1084,  1089,  1094,  1094,  1104,  1105,  1108,  1109,
+    1112,  1112,  1122,  1122,  1132,  1133,  1134,  1137,  1138,  1141,
+    1141,  1149,  1149,  1157,  1157,  1168,  1169,  1172,  1173,  1174,
+    1175,  1176,  1177,  1180,  1185,  1190,  1195,  1200,  1205,  1213,
+    1213,  1226,  1227,  1230,  1231,  1238,  1238,  1264,  1264,  1275,
+    1276,  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,  1320,
+    1320,  1328,  1328,  1336,  1336,  1344,  1344,  1352,  1352,  1362,
+    1362,  1369,  1370,  1371,  1372,  1375,  1380,  1387,  1387,  1398,
+    1399,  1403,  1404,  1407,  1407,  1415,  1416,  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,  1460,  1460,  1473,  1473,  1482,  1483,  1486,  1487,
+    1492,  1492,  1507,  1507,  1521,  1522,  1525,  1526,  1529,  1530,
+    1531,  1532,  1533,  1534,  1535,  1536,  1537,  1538,  1541,  1543,
+    1548,  1550,  1550,  1558,  1558,  1566,  1566,  1574,  1576,  1576,
+    1584,  1593,  1593,  1605,  1606,  1611,  1612,  1617,  1617,  1629,
+    1629,  1641,  1642,  1647,  1648,  1653,  1654,  1655,  1656,  1657,
+    1658,  1659,  1660,  1661,  1664,  1666,  1666,  1674,  1676,  1678,
+    1683,  1691,  1691,  1703,  1704,  1707,  1708,  1711,  1711,  1721,
+    1721,  1731,  1732,  1735,  1736,  1737,  1738,  1739,  1740,  1741,
+    1744,  1744,  1752,  1752,  1777,  1777,  1807,  1807,  1819,  1820,
+    1823,  1824,  1827,  1827,  1839,  1839,  1851,  1852,  1855,  1856,
+    1857,  1858,  1859,  1860,  1861,  1862,  1863,  1864,  1865,  1868,
+    1868,  1876,  1881,  1881,  1889,  1894,  1902,  1902,  1912,  1913,
+    1916,  1917,  1920,  1920,  1929,  1929,  1938,  1939,  1942,  1943,
+    1947,  1948,  1949,  1950,  1951,  1952,  1953,  1954,  1955,  1956,
+    1957,  1960,  1960,  1970,  1970,  1980,  1980,  1988,  1988,  1996,
+    1996,  2004,  2004,  2012,  2012,  2025,  2025,  2035,  2036,  2039,
+    2039,  2050,  2050,  2060,  2061,  2064,  2064,  2074,  2075,  2078,
+    2079,  2082,  2083,  2084,  2085,  2086,  2087,  2088,  2091,  2093,
+    2093,  2101,  2109,  2109,  2121,  2122,  2125,  2126,  2127,  2128,
+    2129,  2130,  2131,  2132,  2133,  2136,  2136,  2143,  2144,  2145,
+    2148,  2153,  2153,  2161,  2166,  2173,  2180,  2180,  2190,  2191,
+    2194,  2195,  2196,  2197,  2198,  2201,  2201,  2209,  2209,  2220,
+    2220,  2232,  2233,  2236,  2237,  2238,  2239,  2240,  2241,  2244,
+    2249,  2249,  2257,  2262,  2262,  2271,  2271,  2283,  2283,  2293,
+    2294,  2297,  2298,  2299,  2300,  2301,  2302,  2303,  2304,  2305,
+    2306,  2307,  2308,  2309,  2310,  2311,  2312,  2313,  2314,  2317,
+    2322,  2322,  2330,  2330,  2338,  2343,  2343,  2351,  2356,  2361,
+    2361,  2369,  2370,  2373,  2373,  2382,  2388,  2394,  2394,  2402,
+    2402,  2411,  2411,  2420,  2420,  2431,  2431,  2442,  2442,  2452,
+    2453,  2457,  2458,  2461,  2461,  2471,  2478,  2478,  2490,  2491,
+    2495,  2495,  2503,  2504,  2507,  2508,  2509,  2510,  2511,  2512,
+    2513,  2516,  2521,  2521,  2529,  2529,  2539,  2540,  2543,  2543,
+    2551,  2552,  2555,  2556,  2557,  2558,  2559,  2562,  2562,  2570,
+    2575,  2580,  2585,  2585
   };
 
   void
@@ -5578,9 +5615,9 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5582 "dhcp6_parser.cc"
+#line 5619 "dhcp6_parser.cc"
 
-#line 2573 "dhcp6_parser.yy"
+#line 2593 "dhcp6_parser.yy"
 
 
 void
index 599c1fef826855d32b2476a11007523e99cfa221..1d36650590aa4270026e47b50ef7191ab9743dfb 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -104,9 +104,9 @@ using namespace std;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef YY_ASSERT
+#ifndef PARSER6__ASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define PARSER6__ASSERT assert
 #endif
 
 
@@ -128,9 +128,9 @@ using namespace std;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -232,7 +232,7 @@ namespace isc { namespace dhcp {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER6__ASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
@@ -246,7 +246,7 @@ namespace isc { namespace dhcp {
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      YY_ASSERT (!yytypeid_);
+      PARSER6__ASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -255,8 +255,8 @@ namespace isc { namespace dhcp {
     T&
     emplace (U&&... u)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER6__ASSERT (!yytypeid_);
+      PARSER6__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -266,8 +266,8 @@ namespace isc { namespace dhcp {
     T&
     emplace ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER6__ASSERT (!yytypeid_);
+      PARSER6__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -277,8 +277,8 @@ namespace isc { namespace dhcp {
     T&
     emplace (const T& t)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER6__ASSERT (!yytypeid_);
+      PARSER6__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -307,9 +307,9 @@ namespace isc { namespace dhcp {
     T&
     as () YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER6__ASSERT (yytypeid_);
+      PARSER6__ASSERT (*yytypeid_ == typeid (T));
+      PARSER6__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -318,9 +318,9 @@ namespace isc { namespace dhcp {
     const T&
     as () const YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      PARSER6__ASSERT (yytypeid_);
+      PARSER6__ASSERT (*yytypeid_ == typeid (T));
+      PARSER6__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -336,8 +336,8 @@ namespace isc { namespace dhcp {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+      PARSER6__ASSERT (yytypeid_);
+      PARSER6__ASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -547,139 +547,141 @@ namespace isc { namespace dhcp {
     TOKEN_DDNS_REPLACE_CLIENT_NAME = 317, // "ddns-replace-client-name"
     TOKEN_DDNS_GENERATED_PREFIX = 318, // "ddns-generated-prefix"
     TOKEN_DDNS_QUALIFYING_SUFFIX = 319, // "ddns-qualifying-suffix"
-    TOKEN_STORE_EXTENDED_INFO = 320, // "store-extended-info"
-    TOKEN_SUBNET6 = 321,           // "subnet6"
-    TOKEN_OPTION_DEF = 322,        // "option-def"
-    TOKEN_OPTION_DATA = 323,       // "option-data"
-    TOKEN_NAME = 324,              // "name"
-    TOKEN_DATA = 325,              // "data"
-    TOKEN_CODE = 326,              // "code"
-    TOKEN_SPACE = 327,             // "space"
-    TOKEN_CSV_FORMAT = 328,        // "csv-format"
-    TOKEN_ALWAYS_SEND = 329,       // "always-send"
-    TOKEN_RECORD_TYPES = 330,      // "record-types"
-    TOKEN_ENCAPSULATE = 331,       // "encapsulate"
-    TOKEN_ARRAY = 332,             // "array"
-    TOKEN_POOLS = 333,             // "pools"
-    TOKEN_POOL = 334,              // "pool"
-    TOKEN_PD_POOLS = 335,          // "pd-pools"
-    TOKEN_PREFIX = 336,            // "prefix"
-    TOKEN_PREFIX_LEN = 337,        // "prefix-len"
-    TOKEN_EXCLUDED_PREFIX = 338,   // "excluded-prefix"
-    TOKEN_EXCLUDED_PREFIX_LEN = 339, // "excluded-prefix-len"
-    TOKEN_DELEGATED_LEN = 340,     // "delegated-len"
-    TOKEN_USER_CONTEXT = 341,      // "user-context"
-    TOKEN_COMMENT = 342,           // "comment"
-    TOKEN_SUBNET = 343,            // "subnet"
-    TOKEN_INTERFACE = 344,         // "interface"
-    TOKEN_INTERFACE_ID = 345,      // "interface-id"
-    TOKEN_ID = 346,                // "id"
-    TOKEN_RAPID_COMMIT = 347,      // "rapid-commit"
-    TOKEN_RESERVATION_MODE = 348,  // "reservation-mode"
-    TOKEN_DISABLED = 349,          // "disabled"
-    TOKEN_OUT_OF_POOL = 350,       // "out-of-pool"
-    TOKEN_GLOBAL = 351,            // "global"
-    TOKEN_ALL = 352,               // "all"
-    TOKEN_SHARED_NETWORKS = 353,   // "shared-networks"
-    TOKEN_MAC_SOURCES = 354,       // "mac-sources"
-    TOKEN_RELAY_SUPPLIED_OPTIONS = 355, // "relay-supplied-options"
-    TOKEN_HOST_RESERVATION_IDENTIFIERS = 356, // "host-reservation-identifiers"
-    TOKEN_SANITY_CHECKS = 357,     // "sanity-checks"
-    TOKEN_LEASE_CHECKS = 358,      // "lease-checks"
-    TOKEN_CLIENT_CLASSES = 359,    // "client-classes"
-    TOKEN_REQUIRE_CLIENT_CLASSES = 360, // "require-client-classes"
-    TOKEN_TEST = 361,              // "test"
-    TOKEN_ONLY_IF_REQUIRED = 362,  // "only-if-required"
-    TOKEN_CLIENT_CLASS = 363,      // "client-class"
-    TOKEN_RESERVATIONS = 364,      // "reservations"
-    TOKEN_IP_ADDRESSES = 365,      // "ip-addresses"
-    TOKEN_PREFIXES = 366,          // "prefixes"
-    TOKEN_DUID = 367,              // "duid"
-    TOKEN_HW_ADDRESS = 368,        // "hw-address"
-    TOKEN_HOSTNAME = 369,          // "hostname"
-    TOKEN_FLEX_ID = 370,           // "flex-id"
-    TOKEN_RELAY = 371,             // "relay"
-    TOKEN_IP_ADDRESS = 372,        // "ip-address"
-    TOKEN_HOOKS_LIBRARIES = 373,   // "hooks-libraries"
-    TOKEN_LIBRARY = 374,           // "library"
-    TOKEN_PARAMETERS = 375,        // "parameters"
-    TOKEN_EXPIRED_LEASES_PROCESSING = 376, // "expired-leases-processing"
-    TOKEN_RECLAIM_TIMER_WAIT_TIME = 377, // "reclaim-timer-wait-time"
-    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 378, // "flush-reclaimed-timer-wait-time"
-    TOKEN_HOLD_RECLAIMED_TIME = 379, // "hold-reclaimed-time"
-    TOKEN_MAX_RECLAIM_LEASES = 380, // "max-reclaim-leases"
-    TOKEN_MAX_RECLAIM_TIME = 381,  // "max-reclaim-time"
-    TOKEN_UNWARNED_RECLAIM_CYCLES = 382, // "unwarned-reclaim-cycles"
-    TOKEN_SERVER_ID = 383,         // "server-id"
-    TOKEN_LLT = 384,               // "LLT"
-    TOKEN_EN = 385,                // "EN"
-    TOKEN_LL = 386,                // "LL"
-    TOKEN_IDENTIFIER = 387,        // "identifier"
-    TOKEN_HTYPE = 388,             // "htype"
-    TOKEN_TIME = 389,              // "time"
-    TOKEN_ENTERPRISE_ID = 390,     // "enterprise-id"
-    TOKEN_DHCP4O6_PORT = 391,      // "dhcp4o6-port"
-    TOKEN_DHCP_MULTI_THREADING = 392, // "multi-threading"
-    TOKEN_ENABLE_MULTI_THREADING = 393, // "enable-multi-threading"
-    TOKEN_THREAD_POOL_SIZE = 394,  // "thread-pool-size"
-    TOKEN_PACKET_QUEUE_SIZE = 395, // "packet-queue-size"
-    TOKEN_CONTROL_SOCKET = 396,    // "control-socket"
-    TOKEN_SOCKET_TYPE = 397,       // "socket-type"
-    TOKEN_SOCKET_NAME = 398,       // "socket-name"
-    TOKEN_DHCP_QUEUE_CONTROL = 399, // "dhcp-queue-control"
-    TOKEN_ENABLE_QUEUE = 400,      // "enable-queue"
-    TOKEN_QUEUE_TYPE = 401,        // "queue-type"
-    TOKEN_CAPACITY = 402,          // "capacity"
-    TOKEN_DHCP_DDNS = 403,         // "dhcp-ddns"
-    TOKEN_ENABLE_UPDATES = 404,    // "enable-updates"
-    TOKEN_QUALIFYING_SUFFIX = 405, // "qualifying-suffix"
-    TOKEN_SERVER_IP = 406,         // "server-ip"
-    TOKEN_SERVER_PORT = 407,       // "server-port"
-    TOKEN_SENDER_IP = 408,         // "sender-ip"
-    TOKEN_SENDER_PORT = 409,       // "sender-port"
-    TOKEN_MAX_QUEUE_SIZE = 410,    // "max-queue-size"
-    TOKEN_NCR_PROTOCOL = 411,      // "ncr-protocol"
-    TOKEN_NCR_FORMAT = 412,        // "ncr-format"
-    TOKEN_OVERRIDE_NO_UPDATE = 413, // "override-no-update"
-    TOKEN_OVERRIDE_CLIENT_UPDATE = 414, // "override-client-update"
-    TOKEN_REPLACE_CLIENT_NAME = 415, // "replace-client-name"
-    TOKEN_GENERATED_PREFIX = 416,  // "generated-prefix"
-    TOKEN_UDP = 417,               // "UDP"
-    TOKEN_TCP = 418,               // "TCP"
-    TOKEN_JSON = 419,              // "JSON"
-    TOKEN_WHEN_PRESENT = 420,      // "when-present"
-    TOKEN_NEVER = 421,             // "never"
-    TOKEN_ALWAYS = 422,            // "always"
-    TOKEN_WHEN_NOT_PRESENT = 423,  // "when-not-present"
-    TOKEN_HOSTNAME_CHAR_SET = 424, // "hostname-char-set"
-    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 425, // "hostname-char-replacement"
-    TOKEN_LOGGERS = 426,           // "loggers"
-    TOKEN_OUTPUT_OPTIONS = 427,    // "output_options"
-    TOKEN_OUTPUT = 428,            // "output"
-    TOKEN_DEBUGLEVEL = 429,        // "debuglevel"
-    TOKEN_SEVERITY = 430,          // "severity"
-    TOKEN_FLUSH = 431,             // "flush"
-    TOKEN_MAXSIZE = 432,           // "maxsize"
-    TOKEN_MAXVER = 433,            // "maxver"
-    TOKEN_PATTERN = 434,           // "pattern"
-    TOKEN_TOPLEVEL_JSON = 435,     // TOPLEVEL_JSON
-    TOKEN_TOPLEVEL_DHCP6 = 436,    // TOPLEVEL_DHCP6
-    TOKEN_SUB_DHCP6 = 437,         // SUB_DHCP6
-    TOKEN_SUB_INTERFACES6 = 438,   // SUB_INTERFACES6
-    TOKEN_SUB_SUBNET6 = 439,       // SUB_SUBNET6
-    TOKEN_SUB_POOL6 = 440,         // SUB_POOL6
-    TOKEN_SUB_PD_POOL = 441,       // SUB_PD_POOL
-    TOKEN_SUB_RESERVATION = 442,   // SUB_RESERVATION
-    TOKEN_SUB_OPTION_DEFS = 443,   // SUB_OPTION_DEFS
-    TOKEN_SUB_OPTION_DEF = 444,    // SUB_OPTION_DEF
-    TOKEN_SUB_OPTION_DATA = 445,   // SUB_OPTION_DATA
-    TOKEN_SUB_HOOKS_LIBRARY = 446, // SUB_HOOKS_LIBRARY
-    TOKEN_SUB_DHCP_DDNS = 447,     // SUB_DHCP_DDNS
-    TOKEN_SUB_CONFIG_CONTROL = 448, // SUB_CONFIG_CONTROL
-    TOKEN_STRING = 449,            // "constant string"
-    TOKEN_INTEGER = 450,           // "integer"
-    TOKEN_FLOAT = 451,             // "floating point"
-    TOKEN_BOOLEAN = 452            // "boolean"
+    TOKEN_DDNS_UPDATE_ON_RENEW = 320, // "ddns-update-on-renew"
+    TOKEN_DDNS_USE_CONFLICT_RESOLUTION = 321, // "ddns-use-conflict-resolution"
+    TOKEN_STORE_EXTENDED_INFO = 322, // "store-extended-info"
+    TOKEN_SUBNET6 = 323,           // "subnet6"
+    TOKEN_OPTION_DEF = 324,        // "option-def"
+    TOKEN_OPTION_DATA = 325,       // "option-data"
+    TOKEN_NAME = 326,              // "name"
+    TOKEN_DATA = 327,              // "data"
+    TOKEN_CODE = 328,              // "code"
+    TOKEN_SPACE = 329,             // "space"
+    TOKEN_CSV_FORMAT = 330,        // "csv-format"
+    TOKEN_ALWAYS_SEND = 331,       // "always-send"
+    TOKEN_RECORD_TYPES = 332,      // "record-types"
+    TOKEN_ENCAPSULATE = 333,       // "encapsulate"
+    TOKEN_ARRAY = 334,             // "array"
+    TOKEN_POOLS = 335,             // "pools"
+    TOKEN_POOL = 336,              // "pool"
+    TOKEN_PD_POOLS = 337,          // "pd-pools"
+    TOKEN_PREFIX = 338,            // "prefix"
+    TOKEN_PREFIX_LEN = 339,        // "prefix-len"
+    TOKEN_EXCLUDED_PREFIX = 340,   // "excluded-prefix"
+    TOKEN_EXCLUDED_PREFIX_LEN = 341, // "excluded-prefix-len"
+    TOKEN_DELEGATED_LEN = 342,     // "delegated-len"
+    TOKEN_USER_CONTEXT = 343,      // "user-context"
+    TOKEN_COMMENT = 344,           // "comment"
+    TOKEN_SUBNET = 345,            // "subnet"
+    TOKEN_INTERFACE = 346,         // "interface"
+    TOKEN_INTERFACE_ID = 347,      // "interface-id"
+    TOKEN_ID = 348,                // "id"
+    TOKEN_RAPID_COMMIT = 349,      // "rapid-commit"
+    TOKEN_RESERVATION_MODE = 350,  // "reservation-mode"
+    TOKEN_DISABLED = 351,          // "disabled"
+    TOKEN_OUT_OF_POOL = 352,       // "out-of-pool"
+    TOKEN_GLOBAL = 353,            // "global"
+    TOKEN_ALL = 354,               // "all"
+    TOKEN_SHARED_NETWORKS = 355,   // "shared-networks"
+    TOKEN_MAC_SOURCES = 356,       // "mac-sources"
+    TOKEN_RELAY_SUPPLIED_OPTIONS = 357, // "relay-supplied-options"
+    TOKEN_HOST_RESERVATION_IDENTIFIERS = 358, // "host-reservation-identifiers"
+    TOKEN_SANITY_CHECKS = 359,     // "sanity-checks"
+    TOKEN_LEASE_CHECKS = 360,      // "lease-checks"
+    TOKEN_CLIENT_CLASSES = 361,    // "client-classes"
+    TOKEN_REQUIRE_CLIENT_CLASSES = 362, // "require-client-classes"
+    TOKEN_TEST = 363,              // "test"
+    TOKEN_ONLY_IF_REQUIRED = 364,  // "only-if-required"
+    TOKEN_CLIENT_CLASS = 365,      // "client-class"
+    TOKEN_RESERVATIONS = 366,      // "reservations"
+    TOKEN_IP_ADDRESSES = 367,      // "ip-addresses"
+    TOKEN_PREFIXES = 368,          // "prefixes"
+    TOKEN_DUID = 369,              // "duid"
+    TOKEN_HW_ADDRESS = 370,        // "hw-address"
+    TOKEN_HOSTNAME = 371,          // "hostname"
+    TOKEN_FLEX_ID = 372,           // "flex-id"
+    TOKEN_RELAY = 373,             // "relay"
+    TOKEN_IP_ADDRESS = 374,        // "ip-address"
+    TOKEN_HOOKS_LIBRARIES = 375,   // "hooks-libraries"
+    TOKEN_LIBRARY = 376,           // "library"
+    TOKEN_PARAMETERS = 377,        // "parameters"
+    TOKEN_EXPIRED_LEASES_PROCESSING = 378, // "expired-leases-processing"
+    TOKEN_RECLAIM_TIMER_WAIT_TIME = 379, // "reclaim-timer-wait-time"
+    TOKEN_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 380, // "flush-reclaimed-timer-wait-time"
+    TOKEN_HOLD_RECLAIMED_TIME = 381, // "hold-reclaimed-time"
+    TOKEN_MAX_RECLAIM_LEASES = 382, // "max-reclaim-leases"
+    TOKEN_MAX_RECLAIM_TIME = 383,  // "max-reclaim-time"
+    TOKEN_UNWARNED_RECLAIM_CYCLES = 384, // "unwarned-reclaim-cycles"
+    TOKEN_SERVER_ID = 385,         // "server-id"
+    TOKEN_LLT = 386,               // "LLT"
+    TOKEN_EN = 387,                // "EN"
+    TOKEN_LL = 388,                // "LL"
+    TOKEN_IDENTIFIER = 389,        // "identifier"
+    TOKEN_HTYPE = 390,             // "htype"
+    TOKEN_TIME = 391,              // "time"
+    TOKEN_ENTERPRISE_ID = 392,     // "enterprise-id"
+    TOKEN_DHCP4O6_PORT = 393,      // "dhcp4o6-port"
+    TOKEN_DHCP_MULTI_THREADING = 394, // "multi-threading"
+    TOKEN_ENABLE_MULTI_THREADING = 395, // "enable-multi-threading"
+    TOKEN_THREAD_POOL_SIZE = 396,  // "thread-pool-size"
+    TOKEN_PACKET_QUEUE_SIZE = 397, // "packet-queue-size"
+    TOKEN_CONTROL_SOCKET = 398,    // "control-socket"
+    TOKEN_SOCKET_TYPE = 399,       // "socket-type"
+    TOKEN_SOCKET_NAME = 400,       // "socket-name"
+    TOKEN_DHCP_QUEUE_CONTROL = 401, // "dhcp-queue-control"
+    TOKEN_ENABLE_QUEUE = 402,      // "enable-queue"
+    TOKEN_QUEUE_TYPE = 403,        // "queue-type"
+    TOKEN_CAPACITY = 404,          // "capacity"
+    TOKEN_DHCP_DDNS = 405,         // "dhcp-ddns"
+    TOKEN_ENABLE_UPDATES = 406,    // "enable-updates"
+    TOKEN_QUALIFYING_SUFFIX = 407, // "qualifying-suffix"
+    TOKEN_SERVER_IP = 408,         // "server-ip"
+    TOKEN_SERVER_PORT = 409,       // "server-port"
+    TOKEN_SENDER_IP = 410,         // "sender-ip"
+    TOKEN_SENDER_PORT = 411,       // "sender-port"
+    TOKEN_MAX_QUEUE_SIZE = 412,    // "max-queue-size"
+    TOKEN_NCR_PROTOCOL = 413,      // "ncr-protocol"
+    TOKEN_NCR_FORMAT = 414,        // "ncr-format"
+    TOKEN_OVERRIDE_NO_UPDATE = 415, // "override-no-update"
+    TOKEN_OVERRIDE_CLIENT_UPDATE = 416, // "override-client-update"
+    TOKEN_REPLACE_CLIENT_NAME = 417, // "replace-client-name"
+    TOKEN_GENERATED_PREFIX = 418,  // "generated-prefix"
+    TOKEN_UDP = 419,               // "UDP"
+    TOKEN_TCP = 420,               // "TCP"
+    TOKEN_JSON = 421,              // "JSON"
+    TOKEN_WHEN_PRESENT = 422,      // "when-present"
+    TOKEN_NEVER = 423,             // "never"
+    TOKEN_ALWAYS = 424,            // "always"
+    TOKEN_WHEN_NOT_PRESENT = 425,  // "when-not-present"
+    TOKEN_HOSTNAME_CHAR_SET = 426, // "hostname-char-set"
+    TOKEN_HOSTNAME_CHAR_REPLACEMENT = 427, // "hostname-char-replacement"
+    TOKEN_LOGGERS = 428,           // "loggers"
+    TOKEN_OUTPUT_OPTIONS = 429,    // "output_options"
+    TOKEN_OUTPUT = 430,            // "output"
+    TOKEN_DEBUGLEVEL = 431,        // "debuglevel"
+    TOKEN_SEVERITY = 432,          // "severity"
+    TOKEN_FLUSH = 433,             // "flush"
+    TOKEN_MAXSIZE = 434,           // "maxsize"
+    TOKEN_MAXVER = 435,            // "maxver"
+    TOKEN_PATTERN = 436,           // "pattern"
+    TOKEN_TOPLEVEL_JSON = 437,     // TOPLEVEL_JSON
+    TOKEN_TOPLEVEL_DHCP6 = 438,    // TOPLEVEL_DHCP6
+    TOKEN_SUB_DHCP6 = 439,         // SUB_DHCP6
+    TOKEN_SUB_INTERFACES6 = 440,   // SUB_INTERFACES6
+    TOKEN_SUB_SUBNET6 = 441,       // SUB_SUBNET6
+    TOKEN_SUB_POOL6 = 442,         // SUB_POOL6
+    TOKEN_SUB_PD_POOL = 443,       // SUB_PD_POOL
+    TOKEN_SUB_RESERVATION = 444,   // SUB_RESERVATION
+    TOKEN_SUB_OPTION_DEFS = 445,   // SUB_OPTION_DEFS
+    TOKEN_SUB_OPTION_DEF = 446,    // SUB_OPTION_DEF
+    TOKEN_SUB_OPTION_DATA = 447,   // SUB_OPTION_DATA
+    TOKEN_SUB_HOOKS_LIBRARY = 448, // SUB_HOOKS_LIBRARY
+    TOKEN_SUB_DHCP_DDNS = 449,     // SUB_DHCP_DDNS
+    TOKEN_SUB_CONFIG_CONTROL = 450, // SUB_CONFIG_CONTROL
+    TOKEN_STRING = 451,            // "constant string"
+    TOKEN_INTEGER = 452,           // "integer"
+    TOKEN_FLOAT = 453,             // "floating point"
+    TOKEN_BOOLEAN = 454            // "boolean"
       };
       /// Backward compatibility alias (Bison 3.6).
       typedef token_kind_type yytokentype;
@@ -696,7 +698,7 @@ namespace isc { namespace dhcp {
     {
       enum symbol_kind_type
       {
-        YYNTOKENS = 198, ///< Number of tokens.
+        YYNTOKENS = 200, ///< Number of tokens.
         S_YYEMPTY = -2,
         S_YYEOF = 0,                             // "end of file"
         S_YYerror = 1,                           // error
@@ -763,563 +765,567 @@ namespace isc { namespace dhcp {
         S_DDNS_REPLACE_CLIENT_NAME = 62,         // "ddns-replace-client-name"
         S_DDNS_GENERATED_PREFIX = 63,            // "ddns-generated-prefix"
         S_DDNS_QUALIFYING_SUFFIX = 64,           // "ddns-qualifying-suffix"
-        S_STORE_EXTENDED_INFO = 65,              // "store-extended-info"
-        S_SUBNET6 = 66,                          // "subnet6"
-        S_OPTION_DEF = 67,                       // "option-def"
-        S_OPTION_DATA = 68,                      // "option-data"
-        S_NAME = 69,                             // "name"
-        S_DATA = 70,                             // "data"
-        S_CODE = 71,                             // "code"
-        S_SPACE = 72,                            // "space"
-        S_CSV_FORMAT = 73,                       // "csv-format"
-        S_ALWAYS_SEND = 74,                      // "always-send"
-        S_RECORD_TYPES = 75,                     // "record-types"
-        S_ENCAPSULATE = 76,                      // "encapsulate"
-        S_ARRAY = 77,                            // "array"
-        S_POOLS = 78,                            // "pools"
-        S_POOL = 79,                             // "pool"
-        S_PD_POOLS = 80,                         // "pd-pools"
-        S_PREFIX = 81,                           // "prefix"
-        S_PREFIX_LEN = 82,                       // "prefix-len"
-        S_EXCLUDED_PREFIX = 83,                  // "excluded-prefix"
-        S_EXCLUDED_PREFIX_LEN = 84,              // "excluded-prefix-len"
-        S_DELEGATED_LEN = 85,                    // "delegated-len"
-        S_USER_CONTEXT = 86,                     // "user-context"
-        S_COMMENT = 87,                          // "comment"
-        S_SUBNET = 88,                           // "subnet"
-        S_INTERFACE = 89,                        // "interface"
-        S_INTERFACE_ID = 90,                     // "interface-id"
-        S_ID = 91,                               // "id"
-        S_RAPID_COMMIT = 92,                     // "rapid-commit"
-        S_RESERVATION_MODE = 93,                 // "reservation-mode"
-        S_DISABLED = 94,                         // "disabled"
-        S_OUT_OF_POOL = 95,                      // "out-of-pool"
-        S_GLOBAL = 96,                           // "global"
-        S_ALL = 97,                              // "all"
-        S_SHARED_NETWORKS = 98,                  // "shared-networks"
-        S_MAC_SOURCES = 99,                      // "mac-sources"
-        S_RELAY_SUPPLIED_OPTIONS = 100,          // "relay-supplied-options"
-        S_HOST_RESERVATION_IDENTIFIERS = 101,    // "host-reservation-identifiers"
-        S_SANITY_CHECKS = 102,                   // "sanity-checks"
-        S_LEASE_CHECKS = 103,                    // "lease-checks"
-        S_CLIENT_CLASSES = 104,                  // "client-classes"
-        S_REQUIRE_CLIENT_CLASSES = 105,          // "require-client-classes"
-        S_TEST = 106,                            // "test"
-        S_ONLY_IF_REQUIRED = 107,                // "only-if-required"
-        S_CLIENT_CLASS = 108,                    // "client-class"
-        S_RESERVATIONS = 109,                    // "reservations"
-        S_IP_ADDRESSES = 110,                    // "ip-addresses"
-        S_PREFIXES = 111,                        // "prefixes"
-        S_DUID = 112,                            // "duid"
-        S_HW_ADDRESS = 113,                      // "hw-address"
-        S_HOSTNAME = 114,                        // "hostname"
-        S_FLEX_ID = 115,                         // "flex-id"
-        S_RELAY = 116,                           // "relay"
-        S_IP_ADDRESS = 117,                      // "ip-address"
-        S_HOOKS_LIBRARIES = 118,                 // "hooks-libraries"
-        S_LIBRARY = 119,                         // "library"
-        S_PARAMETERS = 120,                      // "parameters"
-        S_EXPIRED_LEASES_PROCESSING = 121,       // "expired-leases-processing"
-        S_RECLAIM_TIMER_WAIT_TIME = 122,         // "reclaim-timer-wait-time"
-        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 123, // "flush-reclaimed-timer-wait-time"
-        S_HOLD_RECLAIMED_TIME = 124,             // "hold-reclaimed-time"
-        S_MAX_RECLAIM_LEASES = 125,              // "max-reclaim-leases"
-        S_MAX_RECLAIM_TIME = 126,                // "max-reclaim-time"
-        S_UNWARNED_RECLAIM_CYCLES = 127,         // "unwarned-reclaim-cycles"
-        S_SERVER_ID = 128,                       // "server-id"
-        S_LLT = 129,                             // "LLT"
-        S_EN = 130,                              // "EN"
-        S_LL = 131,                              // "LL"
-        S_IDENTIFIER = 132,                      // "identifier"
-        S_HTYPE = 133,                           // "htype"
-        S_TIME = 134,                            // "time"
-        S_ENTERPRISE_ID = 135,                   // "enterprise-id"
-        S_DHCP4O6_PORT = 136,                    // "dhcp4o6-port"
-        S_DHCP_MULTI_THREADING = 137,            // "multi-threading"
-        S_ENABLE_MULTI_THREADING = 138,          // "enable-multi-threading"
-        S_THREAD_POOL_SIZE = 139,                // "thread-pool-size"
-        S_PACKET_QUEUE_SIZE = 140,               // "packet-queue-size"
-        S_CONTROL_SOCKET = 141,                  // "control-socket"
-        S_SOCKET_TYPE = 142,                     // "socket-type"
-        S_SOCKET_NAME = 143,                     // "socket-name"
-        S_DHCP_QUEUE_CONTROL = 144,              // "dhcp-queue-control"
-        S_ENABLE_QUEUE = 145,                    // "enable-queue"
-        S_QUEUE_TYPE = 146,                      // "queue-type"
-        S_CAPACITY = 147,                        // "capacity"
-        S_DHCP_DDNS = 148,                       // "dhcp-ddns"
-        S_ENABLE_UPDATES = 149,                  // "enable-updates"
-        S_QUALIFYING_SUFFIX = 150,               // "qualifying-suffix"
-        S_SERVER_IP = 151,                       // "server-ip"
-        S_SERVER_PORT = 152,                     // "server-port"
-        S_SENDER_IP = 153,                       // "sender-ip"
-        S_SENDER_PORT = 154,                     // "sender-port"
-        S_MAX_QUEUE_SIZE = 155,                  // "max-queue-size"
-        S_NCR_PROTOCOL = 156,                    // "ncr-protocol"
-        S_NCR_FORMAT = 157,                      // "ncr-format"
-        S_OVERRIDE_NO_UPDATE = 158,              // "override-no-update"
-        S_OVERRIDE_CLIENT_UPDATE = 159,          // "override-client-update"
-        S_REPLACE_CLIENT_NAME = 160,             // "replace-client-name"
-        S_GENERATED_PREFIX = 161,                // "generated-prefix"
-        S_UDP = 162,                             // "UDP"
-        S_TCP = 163,                             // "TCP"
-        S_JSON = 164,                            // "JSON"
-        S_WHEN_PRESENT = 165,                    // "when-present"
-        S_NEVER = 166,                           // "never"
-        S_ALWAYS = 167,                          // "always"
-        S_WHEN_NOT_PRESENT = 168,                // "when-not-present"
-        S_HOSTNAME_CHAR_SET = 169,               // "hostname-char-set"
-        S_HOSTNAME_CHAR_REPLACEMENT = 170,       // "hostname-char-replacement"
-        S_LOGGERS = 171,                         // "loggers"
-        S_OUTPUT_OPTIONS = 172,                  // "output_options"
-        S_OUTPUT = 173,                          // "output"
-        S_DEBUGLEVEL = 174,                      // "debuglevel"
-        S_SEVERITY = 175,                        // "severity"
-        S_FLUSH = 176,                           // "flush"
-        S_MAXSIZE = 177,                         // "maxsize"
-        S_MAXVER = 178,                          // "maxver"
-        S_PATTERN = 179,                         // "pattern"
-        S_TOPLEVEL_JSON = 180,                   // TOPLEVEL_JSON
-        S_TOPLEVEL_DHCP6 = 181,                  // TOPLEVEL_DHCP6
-        S_SUB_DHCP6 = 182,                       // SUB_DHCP6
-        S_SUB_INTERFACES6 = 183,                 // SUB_INTERFACES6
-        S_SUB_SUBNET6 = 184,                     // SUB_SUBNET6
-        S_SUB_POOL6 = 185,                       // SUB_POOL6
-        S_SUB_PD_POOL = 186,                     // SUB_PD_POOL
-        S_SUB_RESERVATION = 187,                 // SUB_RESERVATION
-        S_SUB_OPTION_DEFS = 188,                 // SUB_OPTION_DEFS
-        S_SUB_OPTION_DEF = 189,                  // SUB_OPTION_DEF
-        S_SUB_OPTION_DATA = 190,                 // SUB_OPTION_DATA
-        S_SUB_HOOKS_LIBRARY = 191,               // SUB_HOOKS_LIBRARY
-        S_SUB_DHCP_DDNS = 192,                   // SUB_DHCP_DDNS
-        S_SUB_CONFIG_CONTROL = 193,              // SUB_CONFIG_CONTROL
-        S_STRING = 194,                          // "constant string"
-        S_INTEGER = 195,                         // "integer"
-        S_FLOAT = 196,                           // "floating point"
-        S_BOOLEAN = 197,                         // "boolean"
-        S_YYACCEPT = 198,                        // $accept
-        S_start = 199,                           // start
-        S_200_1 = 200,                           // $@1
-        S_201_2 = 201,                           // $@2
-        S_202_3 = 202,                           // $@3
-        S_203_4 = 203,                           // $@4
-        S_204_5 = 204,                           // $@5
-        S_205_6 = 205,                           // $@6
-        S_206_7 = 206,                           // $@7
-        S_207_8 = 207,                           // $@8
-        S_208_9 = 208,                           // $@9
-        S_209_10 = 209,                          // $@10
-        S_210_11 = 210,                          // $@11
-        S_211_12 = 211,                          // $@12
-        S_212_13 = 212,                          // $@13
-        S_213_14 = 213,                          // $@14
-        S_value = 214,                           // value
-        S_sub_json = 215,                        // sub_json
-        S_map2 = 216,                            // map2
-        S_217_15 = 217,                          // $@15
-        S_map_value = 218,                       // map_value
-        S_map_content = 219,                     // map_content
-        S_not_empty_map = 220,                   // not_empty_map
-        S_list_generic = 221,                    // list_generic
-        S_222_16 = 222,                          // $@16
-        S_list_content = 223,                    // list_content
-        S_not_empty_list = 224,                  // not_empty_list
-        S_list_strings = 225,                    // list_strings
-        S_226_17 = 226,                          // $@17
-        S_list_strings_content = 227,            // list_strings_content
-        S_not_empty_list_strings = 228,          // not_empty_list_strings
-        S_unknown_map_entry = 229,               // unknown_map_entry
-        S_syntax_map = 230,                      // syntax_map
-        S_231_18 = 231,                          // $@18
-        S_global_objects = 232,                  // global_objects
-        S_global_object = 233,                   // global_object
-        S_dhcp6_object = 234,                    // dhcp6_object
-        S_235_19 = 235,                          // $@19
-        S_sub_dhcp6 = 236,                       // sub_dhcp6
-        S_237_20 = 237,                          // $@20
-        S_global_params = 238,                   // global_params
-        S_global_param = 239,                    // global_param
-        S_data_directory = 240,                  // data_directory
-        S_241_21 = 241,                          // $@21
-        S_preferred_lifetime = 242,              // preferred_lifetime
-        S_min_preferred_lifetime = 243,          // min_preferred_lifetime
-        S_max_preferred_lifetime = 244,          // max_preferred_lifetime
-        S_valid_lifetime = 245,                  // valid_lifetime
-        S_min_valid_lifetime = 246,              // min_valid_lifetime
-        S_max_valid_lifetime = 247,              // max_valid_lifetime
-        S_renew_timer = 248,                     // renew_timer
-        S_rebind_timer = 249,                    // rebind_timer
-        S_calculate_tee_times = 250,             // calculate_tee_times
-        S_t1_percent = 251,                      // t1_percent
-        S_t2_percent = 252,                      // t2_percent
-        S_decline_probation_period = 253,        // decline_probation_period
-        S_ddns_send_updates = 254,               // ddns_send_updates
-        S_ddns_override_no_update = 255,         // ddns_override_no_update
-        S_ddns_override_client_update = 256,     // ddns_override_client_update
-        S_ddns_replace_client_name = 257,        // ddns_replace_client_name
-        S_258_22 = 258,                          // $@22
-        S_ddns_replace_client_name_value = 259,  // ddns_replace_client_name_value
-        S_ddns_generated_prefix = 260,           // ddns_generated_prefix
-        S_261_23 = 261,                          // $@23
-        S_ddns_qualifying_suffix = 262,          // ddns_qualifying_suffix
-        S_263_24 = 263,                          // $@24
-        S_hostname_char_set = 264,               // hostname_char_set
-        S_265_25 = 265,                          // $@25
-        S_hostname_char_replacement = 266,       // hostname_char_replacement
-        S_267_26 = 267,                          // $@26
-        S_store_extended_info = 268,             // store_extended_info
-        S_statistic_default_sample_count = 269,  // statistic_default_sample_count
-        S_statistic_default_sample_age = 270,    // statistic_default_sample_age
-        S_server_tag = 271,                      // server_tag
-        S_272_27 = 272,                          // $@27
-        S_interfaces_config = 273,               // interfaces_config
-        S_274_28 = 274,                          // $@28
-        S_sub_interfaces6 = 275,                 // sub_interfaces6
-        S_276_29 = 276,                          // $@29
-        S_interfaces_config_params = 277,        // interfaces_config_params
-        S_interfaces_config_param = 278,         // interfaces_config_param
-        S_interfaces_list = 279,                 // interfaces_list
-        S_280_30 = 280,                          // $@30
-        S_re_detect = 281,                       // re_detect
-        S_lease_database = 282,                  // lease_database
-        S_283_31 = 283,                          // $@31
-        S_hosts_database = 284,                  // hosts_database
-        S_285_32 = 285,                          // $@32
-        S_hosts_databases = 286,                 // hosts_databases
-        S_287_33 = 287,                          // $@33
-        S_database_list = 288,                   // database_list
-        S_not_empty_database_list = 289,         // not_empty_database_list
-        S_database = 290,                        // database
-        S_291_34 = 291,                          // $@34
-        S_database_map_params = 292,             // database_map_params
-        S_database_map_param = 293,              // database_map_param
-        S_database_type = 294,                   // database_type
-        S_295_35 = 295,                          // $@35
-        S_db_type = 296,                         // db_type
-        S_user = 297,                            // user
-        S_298_36 = 298,                          // $@36
-        S_password = 299,                        // password
-        S_300_37 = 300,                          // $@37
-        S_host = 301,                            // host
-        S_302_38 = 302,                          // $@38
-        S_port = 303,                            // port
-        S_name = 304,                            // name
-        S_305_39 = 305,                          // $@39
-        S_persist = 306,                         // persist
-        S_lfc_interval = 307,                    // lfc_interval
-        S_readonly = 308,                        // readonly
-        S_connect_timeout = 309,                 // connect_timeout
-        S_reconnect_wait_time = 310,             // reconnect_wait_time
-        S_max_row_errors = 311,                  // max_row_errors
-        S_request_timeout = 312,                 // request_timeout
-        S_tcp_keepalive = 313,                   // tcp_keepalive
-        S_tcp_nodelay = 314,                     // tcp_nodelay
-        S_contact_points = 315,                  // contact_points
-        S_316_40 = 316,                          // $@40
-        S_max_reconnect_tries = 317,             // max_reconnect_tries
-        S_keyspace = 318,                        // keyspace
-        S_319_41 = 319,                          // $@41
-        S_consistency = 320,                     // consistency
-        S_321_42 = 321,                          // $@42
-        S_serial_consistency = 322,              // serial_consistency
-        S_323_43 = 323,                          // $@43
-        S_sanity_checks = 324,                   // sanity_checks
-        S_325_44 = 325,                          // $@44
-        S_sanity_checks_params = 326,            // sanity_checks_params
-        S_sanity_checks_param = 327,             // sanity_checks_param
-        S_lease_checks = 328,                    // lease_checks
-        S_329_45 = 329,                          // $@45
-        S_mac_sources = 330,                     // mac_sources
-        S_331_46 = 331,                          // $@46
-        S_mac_sources_list = 332,                // mac_sources_list
-        S_mac_sources_value = 333,               // mac_sources_value
-        S_duid_id = 334,                         // duid_id
-        S_string_id = 335,                       // string_id
-        S_host_reservation_identifiers = 336,    // host_reservation_identifiers
-        S_337_47 = 337,                          // $@47
-        S_host_reservation_identifiers_list = 338, // host_reservation_identifiers_list
-        S_host_reservation_identifier = 339,     // host_reservation_identifier
-        S_hw_address_id = 340,                   // hw_address_id
-        S_flex_id = 341,                         // flex_id
-        S_relay_supplied_options = 342,          // relay_supplied_options
-        S_343_48 = 343,                          // $@48
-        S_dhcp_multi_threading = 344,            // dhcp_multi_threading
-        S_345_49 = 345,                          // $@49
-        S_multi_threading_params = 346,          // multi_threading_params
-        S_multi_threading_param = 347,           // multi_threading_param
-        S_enable_multi_threading = 348,          // enable_multi_threading
-        S_thread_pool_size = 349,                // thread_pool_size
-        S_packet_queue_size = 350,               // packet_queue_size
-        S_hooks_libraries = 351,                 // hooks_libraries
-        S_352_50 = 352,                          // $@50
-        S_hooks_libraries_list = 353,            // hooks_libraries_list
-        S_not_empty_hooks_libraries_list = 354,  // not_empty_hooks_libraries_list
-        S_hooks_library = 355,                   // hooks_library
-        S_356_51 = 356,                          // $@51
-        S_sub_hooks_library = 357,               // sub_hooks_library
-        S_358_52 = 358,                          // $@52
-        S_hooks_params = 359,                    // hooks_params
-        S_hooks_param = 360,                     // hooks_param
-        S_library = 361,                         // library
-        S_362_53 = 362,                          // $@53
-        S_parameters = 363,                      // parameters
-        S_364_54 = 364,                          // $@54
-        S_expired_leases_processing = 365,       // expired_leases_processing
-        S_366_55 = 366,                          // $@55
-        S_expired_leases_params = 367,           // expired_leases_params
-        S_expired_leases_param = 368,            // expired_leases_param
-        S_reclaim_timer_wait_time = 369,         // reclaim_timer_wait_time
-        S_flush_reclaimed_timer_wait_time = 370, // flush_reclaimed_timer_wait_time
-        S_hold_reclaimed_time = 371,             // hold_reclaimed_time
-        S_max_reclaim_leases = 372,              // max_reclaim_leases
-        S_max_reclaim_time = 373,                // max_reclaim_time
-        S_unwarned_reclaim_cycles = 374,         // unwarned_reclaim_cycles
-        S_subnet6_list = 375,                    // subnet6_list
-        S_376_56 = 376,                          // $@56
-        S_subnet6_list_content = 377,            // subnet6_list_content
-        S_not_empty_subnet6_list = 378,          // not_empty_subnet6_list
-        S_subnet6 = 379,                         // subnet6
-        S_380_57 = 380,                          // $@57
-        S_sub_subnet6 = 381,                     // sub_subnet6
-        S_382_58 = 382,                          // $@58
-        S_subnet6_params = 383,                  // subnet6_params
-        S_subnet6_param = 384,                   // subnet6_param
-        S_subnet = 385,                          // subnet
-        S_386_59 = 386,                          // $@59
-        S_interface = 387,                       // interface
-        S_388_60 = 388,                          // $@60
-        S_interface_id = 389,                    // interface_id
-        S_390_61 = 390,                          // $@61
-        S_client_class = 391,                    // client_class
-        S_392_62 = 392,                          // $@62
-        S_require_client_classes = 393,          // require_client_classes
-        S_394_63 = 394,                          // $@63
-        S_reservation_mode = 395,                // reservation_mode
-        S_396_64 = 396,                          // $@64
-        S_hr_mode = 397,                         // hr_mode
-        S_id = 398,                              // id
-        S_rapid_commit = 399,                    // rapid_commit
-        S_shared_networks = 400,                 // shared_networks
-        S_401_65 = 401,                          // $@65
-        S_shared_networks_content = 402,         // shared_networks_content
-        S_shared_networks_list = 403,            // shared_networks_list
-        S_shared_network = 404,                  // shared_network
-        S_405_66 = 405,                          // $@66
-        S_shared_network_params = 406,           // shared_network_params
-        S_shared_network_param = 407,            // shared_network_param
-        S_option_def_list = 408,                 // option_def_list
-        S_409_67 = 409,                          // $@67
-        S_sub_option_def_list = 410,             // sub_option_def_list
-        S_411_68 = 411,                          // $@68
-        S_option_def_list_content = 412,         // option_def_list_content
-        S_not_empty_option_def_list = 413,       // not_empty_option_def_list
-        S_option_def_entry = 414,                // option_def_entry
-        S_415_69 = 415,                          // $@69
-        S_sub_option_def = 416,                  // sub_option_def
-        S_417_70 = 417,                          // $@70
-        S_option_def_params = 418,               // option_def_params
-        S_not_empty_option_def_params = 419,     // not_empty_option_def_params
-        S_option_def_param = 420,                // option_def_param
-        S_option_def_name = 421,                 // option_def_name
-        S_code = 422,                            // code
-        S_option_def_code = 423,                 // option_def_code
-        S_option_def_type = 424,                 // option_def_type
-        S_425_71 = 425,                          // $@71
-        S_option_def_record_types = 426,         // option_def_record_types
-        S_427_72 = 427,                          // $@72
-        S_space = 428,                           // space
-        S_429_73 = 429,                          // $@73
-        S_option_def_space = 430,                // option_def_space
-        S_option_def_encapsulate = 431,          // option_def_encapsulate
-        S_432_74 = 432,                          // $@74
-        S_option_def_array = 433,                // option_def_array
-        S_option_data_list = 434,                // option_data_list
-        S_435_75 = 435,                          // $@75
-        S_option_data_list_content = 436,        // option_data_list_content
-        S_not_empty_option_data_list = 437,      // not_empty_option_data_list
-        S_option_data_entry = 438,               // option_data_entry
-        S_439_76 = 439,                          // $@76
-        S_sub_option_data = 440,                 // sub_option_data
-        S_441_77 = 441,                          // $@77
-        S_option_data_params = 442,              // option_data_params
-        S_not_empty_option_data_params = 443,    // not_empty_option_data_params
-        S_option_data_param = 444,               // option_data_param
-        S_option_data_name = 445,                // option_data_name
-        S_option_data_data = 446,                // option_data_data
-        S_447_78 = 447,                          // $@78
-        S_option_data_code = 448,                // option_data_code
-        S_option_data_space = 449,               // option_data_space
-        S_option_data_csv_format = 450,          // option_data_csv_format
-        S_option_data_always_send = 451,         // option_data_always_send
-        S_pools_list = 452,                      // pools_list
-        S_453_79 = 453,                          // $@79
-        S_pools_list_content = 454,              // pools_list_content
-        S_not_empty_pools_list = 455,            // not_empty_pools_list
-        S_pool_list_entry = 456,                 // pool_list_entry
-        S_457_80 = 457,                          // $@80
-        S_sub_pool6 = 458,                       // sub_pool6
-        S_459_81 = 459,                          // $@81
-        S_pool_params = 460,                     // pool_params
-        S_pool_param = 461,                      // pool_param
-        S_pool_entry = 462,                      // pool_entry
-        S_463_82 = 463,                          // $@82
-        S_user_context = 464,                    // user_context
-        S_465_83 = 465,                          // $@83
-        S_comment = 466,                         // comment
-        S_467_84 = 467,                          // $@84
-        S_pd_pools_list = 468,                   // pd_pools_list
-        S_469_85 = 469,                          // $@85
-        S_pd_pools_list_content = 470,           // pd_pools_list_content
-        S_not_empty_pd_pools_list = 471,         // not_empty_pd_pools_list
-        S_pd_pool_entry = 472,                   // pd_pool_entry
-        S_473_86 = 473,                          // $@86
-        S_sub_pd_pool = 474,                     // sub_pd_pool
-        S_475_87 = 475,                          // $@87
-        S_pd_pool_params = 476,                  // pd_pool_params
-        S_pd_pool_param = 477,                   // pd_pool_param
-        S_pd_prefix = 478,                       // pd_prefix
-        S_479_88 = 479,                          // $@88
-        S_pd_prefix_len = 480,                   // pd_prefix_len
-        S_excluded_prefix = 481,                 // excluded_prefix
-        S_482_89 = 482,                          // $@89
-        S_excluded_prefix_len = 483,             // excluded_prefix_len
-        S_pd_delegated_len = 484,                // pd_delegated_len
-        S_reservations = 485,                    // reservations
-        S_486_90 = 486,                          // $@90
-        S_reservations_list = 487,               // reservations_list
-        S_not_empty_reservations_list = 488,     // not_empty_reservations_list
-        S_reservation = 489,                     // reservation
-        S_490_91 = 490,                          // $@91
-        S_sub_reservation = 491,                 // sub_reservation
-        S_492_92 = 492,                          // $@92
-        S_reservation_params = 493,              // reservation_params
-        S_not_empty_reservation_params = 494,    // not_empty_reservation_params
-        S_reservation_param = 495,               // reservation_param
-        S_ip_addresses = 496,                    // ip_addresses
-        S_497_93 = 497,                          // $@93
-        S_prefixes = 498,                        // prefixes
-        S_499_94 = 499,                          // $@94
-        S_duid = 500,                            // duid
-        S_501_95 = 501,                          // $@95
-        S_hw_address = 502,                      // hw_address
-        S_503_96 = 503,                          // $@96
-        S_hostname = 504,                        // hostname
-        S_505_97 = 505,                          // $@97
-        S_flex_id_value = 506,                   // flex_id_value
-        S_507_98 = 507,                          // $@98
-        S_reservation_client_classes = 508,      // reservation_client_classes
-        S_509_99 = 509,                          // $@99
-        S_relay = 510,                           // relay
-        S_511_100 = 511,                         // $@100
-        S_relay_map = 512,                       // relay_map
-        S_ip_address = 513,                      // ip_address
-        S_514_101 = 514,                         // $@101
-        S_client_classes = 515,                  // client_classes
-        S_516_102 = 516,                         // $@102
-        S_client_classes_list = 517,             // client_classes_list
-        S_client_class_entry = 518,              // client_class_entry
-        S_519_103 = 519,                         // $@103
-        S_client_class_params = 520,             // client_class_params
-        S_not_empty_client_class_params = 521,   // not_empty_client_class_params
-        S_client_class_param = 522,              // client_class_param
-        S_client_class_name = 523,               // client_class_name
-        S_client_class_test = 524,               // client_class_test
-        S_525_104 = 525,                         // $@104
-        S_only_if_required = 526,                // only_if_required
-        S_server_id = 527,                       // server_id
-        S_528_105 = 528,                         // $@105
-        S_server_id_params = 529,                // server_id_params
-        S_server_id_param = 530,                 // server_id_param
-        S_server_id_type = 531,                  // server_id_type
-        S_532_106 = 532,                         // $@106
-        S_duid_type = 533,                       // duid_type
-        S_htype = 534,                           // htype
-        S_identifier = 535,                      // identifier
-        S_536_107 = 536,                         // $@107
-        S_time = 537,                            // time
-        S_enterprise_id = 538,                   // enterprise_id
-        S_dhcp4o6_port = 539,                    // dhcp4o6_port
-        S_control_socket = 540,                  // control_socket
-        S_541_108 = 541,                         // $@108
-        S_control_socket_params = 542,           // control_socket_params
-        S_control_socket_param = 543,            // control_socket_param
-        S_socket_type = 544,                     // socket_type
-        S_545_109 = 545,                         // $@109
-        S_socket_name = 546,                     // socket_name
-        S_547_110 = 547,                         // $@110
-        S_dhcp_queue_control = 548,              // dhcp_queue_control
-        S_549_111 = 549,                         // $@111
-        S_queue_control_params = 550,            // queue_control_params
-        S_queue_control_param = 551,             // queue_control_param
-        S_enable_queue = 552,                    // enable_queue
-        S_queue_type = 553,                      // queue_type
-        S_554_112 = 554,                         // $@112
-        S_capacity = 555,                        // capacity
-        S_arbitrary_map_entry = 556,             // arbitrary_map_entry
-        S_557_113 = 557,                         // $@113
-        S_dhcp_ddns = 558,                       // dhcp_ddns
-        S_559_114 = 559,                         // $@114
-        S_sub_dhcp_ddns = 560,                   // sub_dhcp_ddns
-        S_561_115 = 561,                         // $@115
-        S_dhcp_ddns_params = 562,                // dhcp_ddns_params
-        S_dhcp_ddns_param = 563,                 // dhcp_ddns_param
-        S_enable_updates = 564,                  // enable_updates
-        S_qualifying_suffix = 565,               // qualifying_suffix
-        S_566_116 = 566,                         // $@116
-        S_server_ip = 567,                       // server_ip
-        S_568_117 = 568,                         // $@117
-        S_server_port = 569,                     // server_port
-        S_sender_ip = 570,                       // sender_ip
-        S_571_118 = 571,                         // $@118
-        S_sender_port = 572,                     // sender_port
-        S_max_queue_size = 573,                  // max_queue_size
-        S_ncr_protocol = 574,                    // ncr_protocol
-        S_575_119 = 575,                         // $@119
-        S_ncr_protocol_value = 576,              // ncr_protocol_value
-        S_ncr_format = 577,                      // ncr_format
-        S_578_120 = 578,                         // $@120
-        S_dep_override_no_update = 579,          // dep_override_no_update
-        S_dep_override_client_update = 580,      // dep_override_client_update
-        S_dep_replace_client_name = 581,         // dep_replace_client_name
-        S_582_121 = 582,                         // $@121
-        S_dep_generated_prefix = 583,            // dep_generated_prefix
-        S_584_122 = 584,                         // $@122
-        S_dep_hostname_char_set = 585,           // dep_hostname_char_set
-        S_586_123 = 586,                         // $@123
-        S_dep_hostname_char_replacement = 587,   // dep_hostname_char_replacement
-        S_588_124 = 588,                         // $@124
-        S_config_control = 589,                  // config_control
-        S_590_125 = 590,                         // $@125
-        S_sub_config_control = 591,              // sub_config_control
-        S_592_126 = 592,                         // $@126
-        S_config_control_params = 593,           // config_control_params
-        S_config_control_param = 594,            // config_control_param
-        S_config_databases = 595,                // config_databases
-        S_596_127 = 596,                         // $@127
-        S_config_fetch_wait_time = 597,          // config_fetch_wait_time
-        S_loggers = 598,                         // loggers
-        S_599_128 = 599,                         // $@128
-        S_loggers_entries = 600,                 // loggers_entries
-        S_logger_entry = 601,                    // logger_entry
-        S_602_129 = 602,                         // $@129
-        S_logger_params = 603,                   // logger_params
-        S_logger_param = 604,                    // logger_param
-        S_debuglevel = 605,                      // debuglevel
-        S_severity = 606,                        // severity
-        S_607_130 = 607,                         // $@130
-        S_output_options_list = 608,             // output_options_list
-        S_609_131 = 609,                         // $@131
-        S_output_options_list_content = 610,     // output_options_list_content
-        S_output_entry = 611,                    // output_entry
-        S_612_132 = 612,                         // $@132
-        S_output_params_list = 613,              // output_params_list
-        S_output_params = 614,                   // output_params
-        S_output = 615,                          // output
-        S_616_133 = 616,                         // $@133
-        S_flush = 617,                           // flush
-        S_maxsize = 618,                         // maxsize
-        S_maxver = 619,                          // maxver
-        S_pattern = 620,                         // pattern
-        S_621_134 = 621                          // $@134
+        S_DDNS_UPDATE_ON_RENEW = 65,             // "ddns-update-on-renew"
+        S_DDNS_USE_CONFLICT_RESOLUTION = 66,     // "ddns-use-conflict-resolution"
+        S_STORE_EXTENDED_INFO = 67,              // "store-extended-info"
+        S_SUBNET6 = 68,                          // "subnet6"
+        S_OPTION_DEF = 69,                       // "option-def"
+        S_OPTION_DATA = 70,                      // "option-data"
+        S_NAME = 71,                             // "name"
+        S_DATA = 72,                             // "data"
+        S_CODE = 73,                             // "code"
+        S_SPACE = 74,                            // "space"
+        S_CSV_FORMAT = 75,                       // "csv-format"
+        S_ALWAYS_SEND = 76,                      // "always-send"
+        S_RECORD_TYPES = 77,                     // "record-types"
+        S_ENCAPSULATE = 78,                      // "encapsulate"
+        S_ARRAY = 79,                            // "array"
+        S_POOLS = 80,                            // "pools"
+        S_POOL = 81,                             // "pool"
+        S_PD_POOLS = 82,                         // "pd-pools"
+        S_PREFIX = 83,                           // "prefix"
+        S_PREFIX_LEN = 84,                       // "prefix-len"
+        S_EXCLUDED_PREFIX = 85,                  // "excluded-prefix"
+        S_EXCLUDED_PREFIX_LEN = 86,              // "excluded-prefix-len"
+        S_DELEGATED_LEN = 87,                    // "delegated-len"
+        S_USER_CONTEXT = 88,                     // "user-context"
+        S_COMMENT = 89,                          // "comment"
+        S_SUBNET = 90,                           // "subnet"
+        S_INTERFACE = 91,                        // "interface"
+        S_INTERFACE_ID = 92,                     // "interface-id"
+        S_ID = 93,                               // "id"
+        S_RAPID_COMMIT = 94,                     // "rapid-commit"
+        S_RESERVATION_MODE = 95,                 // "reservation-mode"
+        S_DISABLED = 96,                         // "disabled"
+        S_OUT_OF_POOL = 97,                      // "out-of-pool"
+        S_GLOBAL = 98,                           // "global"
+        S_ALL = 99,                              // "all"
+        S_SHARED_NETWORKS = 100,                 // "shared-networks"
+        S_MAC_SOURCES = 101,                     // "mac-sources"
+        S_RELAY_SUPPLIED_OPTIONS = 102,          // "relay-supplied-options"
+        S_HOST_RESERVATION_IDENTIFIERS = 103,    // "host-reservation-identifiers"
+        S_SANITY_CHECKS = 104,                   // "sanity-checks"
+        S_LEASE_CHECKS = 105,                    // "lease-checks"
+        S_CLIENT_CLASSES = 106,                  // "client-classes"
+        S_REQUIRE_CLIENT_CLASSES = 107,          // "require-client-classes"
+        S_TEST = 108,                            // "test"
+        S_ONLY_IF_REQUIRED = 109,                // "only-if-required"
+        S_CLIENT_CLASS = 110,                    // "client-class"
+        S_RESERVATIONS = 111,                    // "reservations"
+        S_IP_ADDRESSES = 112,                    // "ip-addresses"
+        S_PREFIXES = 113,                        // "prefixes"
+        S_DUID = 114,                            // "duid"
+        S_HW_ADDRESS = 115,                      // "hw-address"
+        S_HOSTNAME = 116,                        // "hostname"
+        S_FLEX_ID = 117,                         // "flex-id"
+        S_RELAY = 118,                           // "relay"
+        S_IP_ADDRESS = 119,                      // "ip-address"
+        S_HOOKS_LIBRARIES = 120,                 // "hooks-libraries"
+        S_LIBRARY = 121,                         // "library"
+        S_PARAMETERS = 122,                      // "parameters"
+        S_EXPIRED_LEASES_PROCESSING = 123,       // "expired-leases-processing"
+        S_RECLAIM_TIMER_WAIT_TIME = 124,         // "reclaim-timer-wait-time"
+        S_FLUSH_RECLAIMED_TIMER_WAIT_TIME = 125, // "flush-reclaimed-timer-wait-time"
+        S_HOLD_RECLAIMED_TIME = 126,             // "hold-reclaimed-time"
+        S_MAX_RECLAIM_LEASES = 127,              // "max-reclaim-leases"
+        S_MAX_RECLAIM_TIME = 128,                // "max-reclaim-time"
+        S_UNWARNED_RECLAIM_CYCLES = 129,         // "unwarned-reclaim-cycles"
+        S_SERVER_ID = 130,                       // "server-id"
+        S_LLT = 131,                             // "LLT"
+        S_EN = 132,                              // "EN"
+        S_LL = 133,                              // "LL"
+        S_IDENTIFIER = 134,                      // "identifier"
+        S_HTYPE = 135,                           // "htype"
+        S_TIME = 136,                            // "time"
+        S_ENTERPRISE_ID = 137,                   // "enterprise-id"
+        S_DHCP4O6_PORT = 138,                    // "dhcp4o6-port"
+        S_DHCP_MULTI_THREADING = 139,            // "multi-threading"
+        S_ENABLE_MULTI_THREADING = 140,          // "enable-multi-threading"
+        S_THREAD_POOL_SIZE = 141,                // "thread-pool-size"
+        S_PACKET_QUEUE_SIZE = 142,               // "packet-queue-size"
+        S_CONTROL_SOCKET = 143,                  // "control-socket"
+        S_SOCKET_TYPE = 144,                     // "socket-type"
+        S_SOCKET_NAME = 145,                     // "socket-name"
+        S_DHCP_QUEUE_CONTROL = 146,              // "dhcp-queue-control"
+        S_ENABLE_QUEUE = 147,                    // "enable-queue"
+        S_QUEUE_TYPE = 148,                      // "queue-type"
+        S_CAPACITY = 149,                        // "capacity"
+        S_DHCP_DDNS = 150,                       // "dhcp-ddns"
+        S_ENABLE_UPDATES = 151,                  // "enable-updates"
+        S_QUALIFYING_SUFFIX = 152,               // "qualifying-suffix"
+        S_SERVER_IP = 153,                       // "server-ip"
+        S_SERVER_PORT = 154,                     // "server-port"
+        S_SENDER_IP = 155,                       // "sender-ip"
+        S_SENDER_PORT = 156,                     // "sender-port"
+        S_MAX_QUEUE_SIZE = 157,                  // "max-queue-size"
+        S_NCR_PROTOCOL = 158,                    // "ncr-protocol"
+        S_NCR_FORMAT = 159,                      // "ncr-format"
+        S_OVERRIDE_NO_UPDATE = 160,              // "override-no-update"
+        S_OVERRIDE_CLIENT_UPDATE = 161,          // "override-client-update"
+        S_REPLACE_CLIENT_NAME = 162,             // "replace-client-name"
+        S_GENERATED_PREFIX = 163,                // "generated-prefix"
+        S_UDP = 164,                             // "UDP"
+        S_TCP = 165,                             // "TCP"
+        S_JSON = 166,                            // "JSON"
+        S_WHEN_PRESENT = 167,                    // "when-present"
+        S_NEVER = 168,                           // "never"
+        S_ALWAYS = 169,                          // "always"
+        S_WHEN_NOT_PRESENT = 170,                // "when-not-present"
+        S_HOSTNAME_CHAR_SET = 171,               // "hostname-char-set"
+        S_HOSTNAME_CHAR_REPLACEMENT = 172,       // "hostname-char-replacement"
+        S_LOGGERS = 173,                         // "loggers"
+        S_OUTPUT_OPTIONS = 174,                  // "output_options"
+        S_OUTPUT = 175,                          // "output"
+        S_DEBUGLEVEL = 176,                      // "debuglevel"
+        S_SEVERITY = 177,                        // "severity"
+        S_FLUSH = 178,                           // "flush"
+        S_MAXSIZE = 179,                         // "maxsize"
+        S_MAXVER = 180,                          // "maxver"
+        S_PATTERN = 181,                         // "pattern"
+        S_TOPLEVEL_JSON = 182,                   // TOPLEVEL_JSON
+        S_TOPLEVEL_DHCP6 = 183,                  // TOPLEVEL_DHCP6
+        S_SUB_DHCP6 = 184,                       // SUB_DHCP6
+        S_SUB_INTERFACES6 = 185,                 // SUB_INTERFACES6
+        S_SUB_SUBNET6 = 186,                     // SUB_SUBNET6
+        S_SUB_POOL6 = 187,                       // SUB_POOL6
+        S_SUB_PD_POOL = 188,                     // SUB_PD_POOL
+        S_SUB_RESERVATION = 189,                 // SUB_RESERVATION
+        S_SUB_OPTION_DEFS = 190,                 // SUB_OPTION_DEFS
+        S_SUB_OPTION_DEF = 191,                  // SUB_OPTION_DEF
+        S_SUB_OPTION_DATA = 192,                 // SUB_OPTION_DATA
+        S_SUB_HOOKS_LIBRARY = 193,               // SUB_HOOKS_LIBRARY
+        S_SUB_DHCP_DDNS = 194,                   // SUB_DHCP_DDNS
+        S_SUB_CONFIG_CONTROL = 195,              // SUB_CONFIG_CONTROL
+        S_STRING = 196,                          // "constant string"
+        S_INTEGER = 197,                         // "integer"
+        S_FLOAT = 198,                           // "floating point"
+        S_BOOLEAN = 199,                         // "boolean"
+        S_YYACCEPT = 200,                        // $accept
+        S_start = 201,                           // start
+        S_202_1 = 202,                           // $@1
+        S_203_2 = 203,                           // $@2
+        S_204_3 = 204,                           // $@3
+        S_205_4 = 205,                           // $@4
+        S_206_5 = 206,                           // $@5
+        S_207_6 = 207,                           // $@6
+        S_208_7 = 208,                           // $@7
+        S_209_8 = 209,                           // $@8
+        S_210_9 = 210,                           // $@9
+        S_211_10 = 211,                          // $@10
+        S_212_11 = 212,                          // $@11
+        S_213_12 = 213,                          // $@12
+        S_214_13 = 214,                          // $@13
+        S_215_14 = 215,                          // $@14
+        S_value = 216,                           // value
+        S_sub_json = 217,                        // sub_json
+        S_map2 = 218,                            // map2
+        S_219_15 = 219,                          // $@15
+        S_map_value = 220,                       // map_value
+        S_map_content = 221,                     // map_content
+        S_not_empty_map = 222,                   // not_empty_map
+        S_list_generic = 223,                    // list_generic
+        S_224_16 = 224,                          // $@16
+        S_list_content = 225,                    // list_content
+        S_not_empty_list = 226,                  // not_empty_list
+        S_list_strings = 227,                    // list_strings
+        S_228_17 = 228,                          // $@17
+        S_list_strings_content = 229,            // list_strings_content
+        S_not_empty_list_strings = 230,          // not_empty_list_strings
+        S_unknown_map_entry = 231,               // unknown_map_entry
+        S_syntax_map = 232,                      // syntax_map
+        S_233_18 = 233,                          // $@18
+        S_global_objects = 234,                  // global_objects
+        S_global_object = 235,                   // global_object
+        S_dhcp6_object = 236,                    // dhcp6_object
+        S_237_19 = 237,                          // $@19
+        S_sub_dhcp6 = 238,                       // sub_dhcp6
+        S_239_20 = 239,                          // $@20
+        S_global_params = 240,                   // global_params
+        S_global_param = 241,                    // global_param
+        S_data_directory = 242,                  // data_directory
+        S_243_21 = 243,                          // $@21
+        S_preferred_lifetime = 244,              // preferred_lifetime
+        S_min_preferred_lifetime = 245,          // min_preferred_lifetime
+        S_max_preferred_lifetime = 246,          // max_preferred_lifetime
+        S_valid_lifetime = 247,                  // valid_lifetime
+        S_min_valid_lifetime = 248,              // min_valid_lifetime
+        S_max_valid_lifetime = 249,              // max_valid_lifetime
+        S_renew_timer = 250,                     // renew_timer
+        S_rebind_timer = 251,                    // rebind_timer
+        S_calculate_tee_times = 252,             // calculate_tee_times
+        S_t1_percent = 253,                      // t1_percent
+        S_t2_percent = 254,                      // t2_percent
+        S_decline_probation_period = 255,        // decline_probation_period
+        S_ddns_send_updates = 256,               // ddns_send_updates
+        S_ddns_override_no_update = 257,         // ddns_override_no_update
+        S_ddns_override_client_update = 258,     // ddns_override_client_update
+        S_ddns_replace_client_name = 259,        // ddns_replace_client_name
+        S_260_22 = 260,                          // $@22
+        S_ddns_replace_client_name_value = 261,  // ddns_replace_client_name_value
+        S_ddns_generated_prefix = 262,           // ddns_generated_prefix
+        S_263_23 = 263,                          // $@23
+        S_ddns_qualifying_suffix = 264,          // ddns_qualifying_suffix
+        S_265_24 = 265,                          // $@24
+        S_ddns_update_on_renew = 266,            // ddns_update_on_renew
+        S_ddns_use_conflict_resolution = 267,    // ddns_use_conflict_resolution
+        S_hostname_char_set = 268,               // hostname_char_set
+        S_269_25 = 269,                          // $@25
+        S_hostname_char_replacement = 270,       // hostname_char_replacement
+        S_271_26 = 271,                          // $@26
+        S_store_extended_info = 272,             // store_extended_info
+        S_statistic_default_sample_count = 273,  // statistic_default_sample_count
+        S_statistic_default_sample_age = 274,    // statistic_default_sample_age
+        S_server_tag = 275,                      // server_tag
+        S_276_27 = 276,                          // $@27
+        S_interfaces_config = 277,               // interfaces_config
+        S_278_28 = 278,                          // $@28
+        S_sub_interfaces6 = 279,                 // sub_interfaces6
+        S_280_29 = 280,                          // $@29
+        S_interfaces_config_params = 281,        // interfaces_config_params
+        S_interfaces_config_param = 282,         // interfaces_config_param
+        S_interfaces_list = 283,                 // interfaces_list
+        S_284_30 = 284,                          // $@30
+        S_re_detect = 285,                       // re_detect
+        S_lease_database = 286,                  // lease_database
+        S_287_31 = 287,                          // $@31
+        S_hosts_database = 288,                  // hosts_database
+        S_289_32 = 289,                          // $@32
+        S_hosts_databases = 290,                 // hosts_databases
+        S_291_33 = 291,                          // $@33
+        S_database_list = 292,                   // database_list
+        S_not_empty_database_list = 293,         // not_empty_database_list
+        S_database = 294,                        // database
+        S_295_34 = 295,                          // $@34
+        S_database_map_params = 296,             // database_map_params
+        S_database_map_param = 297,              // database_map_param
+        S_database_type = 298,                   // database_type
+        S_299_35 = 299,                          // $@35
+        S_db_type = 300,                         // db_type
+        S_user = 301,                            // user
+        S_302_36 = 302,                          // $@36
+        S_password = 303,                        // password
+        S_304_37 = 304,                          // $@37
+        S_host = 305,                            // host
+        S_306_38 = 306,                          // $@38
+        S_port = 307,                            // port
+        S_name = 308,                            // name
+        S_309_39 = 309,                          // $@39
+        S_persist = 310,                         // persist
+        S_lfc_interval = 311,                    // lfc_interval
+        S_readonly = 312,                        // readonly
+        S_connect_timeout = 313,                 // connect_timeout
+        S_reconnect_wait_time = 314,             // reconnect_wait_time
+        S_max_row_errors = 315,                  // max_row_errors
+        S_request_timeout = 316,                 // request_timeout
+        S_tcp_keepalive = 317,                   // tcp_keepalive
+        S_tcp_nodelay = 318,                     // tcp_nodelay
+        S_contact_points = 319,                  // contact_points
+        S_320_40 = 320,                          // $@40
+        S_max_reconnect_tries = 321,             // max_reconnect_tries
+        S_keyspace = 322,                        // keyspace
+        S_323_41 = 323,                          // $@41
+        S_consistency = 324,                     // consistency
+        S_325_42 = 325,                          // $@42
+        S_serial_consistency = 326,              // serial_consistency
+        S_327_43 = 327,                          // $@43
+        S_sanity_checks = 328,                   // sanity_checks
+        S_329_44 = 329,                          // $@44
+        S_sanity_checks_params = 330,            // sanity_checks_params
+        S_sanity_checks_param = 331,             // sanity_checks_param
+        S_lease_checks = 332,                    // lease_checks
+        S_333_45 = 333,                          // $@45
+        S_mac_sources = 334,                     // mac_sources
+        S_335_46 = 335,                          // $@46
+        S_mac_sources_list = 336,                // mac_sources_list
+        S_mac_sources_value = 337,               // mac_sources_value
+        S_duid_id = 338,                         // duid_id
+        S_string_id = 339,                       // string_id
+        S_host_reservation_identifiers = 340,    // host_reservation_identifiers
+        S_341_47 = 341,                          // $@47
+        S_host_reservation_identifiers_list = 342, // host_reservation_identifiers_list
+        S_host_reservation_identifier = 343,     // host_reservation_identifier
+        S_hw_address_id = 344,                   // hw_address_id
+        S_flex_id = 345,                         // flex_id
+        S_relay_supplied_options = 346,          // relay_supplied_options
+        S_347_48 = 347,                          // $@48
+        S_dhcp_multi_threading = 348,            // dhcp_multi_threading
+        S_349_49 = 349,                          // $@49
+        S_multi_threading_params = 350,          // multi_threading_params
+        S_multi_threading_param = 351,           // multi_threading_param
+        S_enable_multi_threading = 352,          // enable_multi_threading
+        S_thread_pool_size = 353,                // thread_pool_size
+        S_packet_queue_size = 354,               // packet_queue_size
+        S_hooks_libraries = 355,                 // hooks_libraries
+        S_356_50 = 356,                          // $@50
+        S_hooks_libraries_list = 357,            // hooks_libraries_list
+        S_not_empty_hooks_libraries_list = 358,  // not_empty_hooks_libraries_list
+        S_hooks_library = 359,                   // hooks_library
+        S_360_51 = 360,                          // $@51
+        S_sub_hooks_library = 361,               // sub_hooks_library
+        S_362_52 = 362,                          // $@52
+        S_hooks_params = 363,                    // hooks_params
+        S_hooks_param = 364,                     // hooks_param
+        S_library = 365,                         // library
+        S_366_53 = 366,                          // $@53
+        S_parameters = 367,                      // parameters
+        S_368_54 = 368,                          // $@54
+        S_expired_leases_processing = 369,       // expired_leases_processing
+        S_370_55 = 370,                          // $@55
+        S_expired_leases_params = 371,           // expired_leases_params
+        S_expired_leases_param = 372,            // expired_leases_param
+        S_reclaim_timer_wait_time = 373,         // reclaim_timer_wait_time
+        S_flush_reclaimed_timer_wait_time = 374, // flush_reclaimed_timer_wait_time
+        S_hold_reclaimed_time = 375,             // hold_reclaimed_time
+        S_max_reclaim_leases = 376,              // max_reclaim_leases
+        S_max_reclaim_time = 377,                // max_reclaim_time
+        S_unwarned_reclaim_cycles = 378,         // unwarned_reclaim_cycles
+        S_subnet6_list = 379,                    // subnet6_list
+        S_380_56 = 380,                          // $@56
+        S_subnet6_list_content = 381,            // subnet6_list_content
+        S_not_empty_subnet6_list = 382,          // not_empty_subnet6_list
+        S_subnet6 = 383,                         // subnet6
+        S_384_57 = 384,                          // $@57
+        S_sub_subnet6 = 385,                     // sub_subnet6
+        S_386_58 = 386,                          // $@58
+        S_subnet6_params = 387,                  // subnet6_params
+        S_subnet6_param = 388,                   // subnet6_param
+        S_subnet = 389,                          // subnet
+        S_390_59 = 390,                          // $@59
+        S_interface = 391,                       // interface
+        S_392_60 = 392,                          // $@60
+        S_interface_id = 393,                    // interface_id
+        S_394_61 = 394,                          // $@61
+        S_client_class = 395,                    // client_class
+        S_396_62 = 396,                          // $@62
+        S_require_client_classes = 397,          // require_client_classes
+        S_398_63 = 398,                          // $@63
+        S_reservation_mode = 399,                // reservation_mode
+        S_400_64 = 400,                          // $@64
+        S_hr_mode = 401,                         // hr_mode
+        S_id = 402,                              // id
+        S_rapid_commit = 403,                    // rapid_commit
+        S_shared_networks = 404,                 // shared_networks
+        S_405_65 = 405,                          // $@65
+        S_shared_networks_content = 406,         // shared_networks_content
+        S_shared_networks_list = 407,            // shared_networks_list
+        S_shared_network = 408,                  // shared_network
+        S_409_66 = 409,                          // $@66
+        S_shared_network_params = 410,           // shared_network_params
+        S_shared_network_param = 411,            // shared_network_param
+        S_option_def_list = 412,                 // option_def_list
+        S_413_67 = 413,                          // $@67
+        S_sub_option_def_list = 414,             // sub_option_def_list
+        S_415_68 = 415,                          // $@68
+        S_option_def_list_content = 416,         // option_def_list_content
+        S_not_empty_option_def_list = 417,       // not_empty_option_def_list
+        S_option_def_entry = 418,                // option_def_entry
+        S_419_69 = 419,                          // $@69
+        S_sub_option_def = 420,                  // sub_option_def
+        S_421_70 = 421,                          // $@70
+        S_option_def_params = 422,               // option_def_params
+        S_not_empty_option_def_params = 423,     // not_empty_option_def_params
+        S_option_def_param = 424,                // option_def_param
+        S_option_def_name = 425,                 // option_def_name
+        S_code = 426,                            // code
+        S_option_def_code = 427,                 // option_def_code
+        S_option_def_type = 428,                 // option_def_type
+        S_429_71 = 429,                          // $@71
+        S_option_def_record_types = 430,         // option_def_record_types
+        S_431_72 = 431,                          // $@72
+        S_space = 432,                           // space
+        S_433_73 = 433,                          // $@73
+        S_option_def_space = 434,                // option_def_space
+        S_option_def_encapsulate = 435,          // option_def_encapsulate
+        S_436_74 = 436,                          // $@74
+        S_option_def_array = 437,                // option_def_array
+        S_option_data_list = 438,                // option_data_list
+        S_439_75 = 439,                          // $@75
+        S_option_data_list_content = 440,        // option_data_list_content
+        S_not_empty_option_data_list = 441,      // not_empty_option_data_list
+        S_option_data_entry = 442,               // option_data_entry
+        S_443_76 = 443,                          // $@76
+        S_sub_option_data = 444,                 // sub_option_data
+        S_445_77 = 445,                          // $@77
+        S_option_data_params = 446,              // option_data_params
+        S_not_empty_option_data_params = 447,    // not_empty_option_data_params
+        S_option_data_param = 448,               // option_data_param
+        S_option_data_name = 449,                // option_data_name
+        S_option_data_data = 450,                // option_data_data
+        S_451_78 = 451,                          // $@78
+        S_option_data_code = 452,                // option_data_code
+        S_option_data_space = 453,               // option_data_space
+        S_option_data_csv_format = 454,          // option_data_csv_format
+        S_option_data_always_send = 455,         // option_data_always_send
+        S_pools_list = 456,                      // pools_list
+        S_457_79 = 457,                          // $@79
+        S_pools_list_content = 458,              // pools_list_content
+        S_not_empty_pools_list = 459,            // not_empty_pools_list
+        S_pool_list_entry = 460,                 // pool_list_entry
+        S_461_80 = 461,                          // $@80
+        S_sub_pool6 = 462,                       // sub_pool6
+        S_463_81 = 463,                          // $@81
+        S_pool_params = 464,                     // pool_params
+        S_pool_param = 465,                      // pool_param
+        S_pool_entry = 466,                      // pool_entry
+        S_467_82 = 467,                          // $@82
+        S_user_context = 468,                    // user_context
+        S_469_83 = 469,                          // $@83
+        S_comment = 470,                         // comment
+        S_471_84 = 471,                          // $@84
+        S_pd_pools_list = 472,                   // pd_pools_list
+        S_473_85 = 473,                          // $@85
+        S_pd_pools_list_content = 474,           // pd_pools_list_content
+        S_not_empty_pd_pools_list = 475,         // not_empty_pd_pools_list
+        S_pd_pool_entry = 476,                   // pd_pool_entry
+        S_477_86 = 477,                          // $@86
+        S_sub_pd_pool = 478,                     // sub_pd_pool
+        S_479_87 = 479,                          // $@87
+        S_pd_pool_params = 480,                  // pd_pool_params
+        S_pd_pool_param = 481,                   // pd_pool_param
+        S_pd_prefix = 482,                       // pd_prefix
+        S_483_88 = 483,                          // $@88
+        S_pd_prefix_len = 484,                   // pd_prefix_len
+        S_excluded_prefix = 485,                 // excluded_prefix
+        S_486_89 = 486,                          // $@89
+        S_excluded_prefix_len = 487,             // excluded_prefix_len
+        S_pd_delegated_len = 488,                // pd_delegated_len
+        S_reservations = 489,                    // reservations
+        S_490_90 = 490,                          // $@90
+        S_reservations_list = 491,               // reservations_list
+        S_not_empty_reservations_list = 492,     // not_empty_reservations_list
+        S_reservation = 493,                     // reservation
+        S_494_91 = 494,                          // $@91
+        S_sub_reservation = 495,                 // sub_reservation
+        S_496_92 = 496,                          // $@92
+        S_reservation_params = 497,              // reservation_params
+        S_not_empty_reservation_params = 498,    // not_empty_reservation_params
+        S_reservation_param = 499,               // reservation_param
+        S_ip_addresses = 500,                    // ip_addresses
+        S_501_93 = 501,                          // $@93
+        S_prefixes = 502,                        // prefixes
+        S_503_94 = 503,                          // $@94
+        S_duid = 504,                            // duid
+        S_505_95 = 505,                          // $@95
+        S_hw_address = 506,                      // hw_address
+        S_507_96 = 507,                          // $@96
+        S_hostname = 508,                        // hostname
+        S_509_97 = 509,                          // $@97
+        S_flex_id_value = 510,                   // flex_id_value
+        S_511_98 = 511,                          // $@98
+        S_reservation_client_classes = 512,      // reservation_client_classes
+        S_513_99 = 513,                          // $@99
+        S_relay = 514,                           // relay
+        S_515_100 = 515,                         // $@100
+        S_relay_map = 516,                       // relay_map
+        S_ip_address = 517,                      // ip_address
+        S_518_101 = 518,                         // $@101
+        S_client_classes = 519,                  // client_classes
+        S_520_102 = 520,                         // $@102
+        S_client_classes_list = 521,             // client_classes_list
+        S_client_class_entry = 522,              // client_class_entry
+        S_523_103 = 523,                         // $@103
+        S_client_class_params = 524,             // client_class_params
+        S_not_empty_client_class_params = 525,   // not_empty_client_class_params
+        S_client_class_param = 526,              // client_class_param
+        S_client_class_name = 527,               // client_class_name
+        S_client_class_test = 528,               // client_class_test
+        S_529_104 = 529,                         // $@104
+        S_only_if_required = 530,                // only_if_required
+        S_server_id = 531,                       // server_id
+        S_532_105 = 532,                         // $@105
+        S_server_id_params = 533,                // server_id_params
+        S_server_id_param = 534,                 // server_id_param
+        S_server_id_type = 535,                  // server_id_type
+        S_536_106 = 536,                         // $@106
+        S_duid_type = 537,                       // duid_type
+        S_htype = 538,                           // htype
+        S_identifier = 539,                      // identifier
+        S_540_107 = 540,                         // $@107
+        S_time = 541,                            // time
+        S_enterprise_id = 542,                   // enterprise_id
+        S_dhcp4o6_port = 543,                    // dhcp4o6_port
+        S_control_socket = 544,                  // control_socket
+        S_545_108 = 545,                         // $@108
+        S_control_socket_params = 546,           // control_socket_params
+        S_control_socket_param = 547,            // control_socket_param
+        S_socket_type = 548,                     // socket_type
+        S_549_109 = 549,                         // $@109
+        S_socket_name = 550,                     // socket_name
+        S_551_110 = 551,                         // $@110
+        S_dhcp_queue_control = 552,              // dhcp_queue_control
+        S_553_111 = 553,                         // $@111
+        S_queue_control_params = 554,            // queue_control_params
+        S_queue_control_param = 555,             // queue_control_param
+        S_enable_queue = 556,                    // enable_queue
+        S_queue_type = 557,                      // queue_type
+        S_558_112 = 558,                         // $@112
+        S_capacity = 559,                        // capacity
+        S_arbitrary_map_entry = 560,             // arbitrary_map_entry
+        S_561_113 = 561,                         // $@113
+        S_dhcp_ddns = 562,                       // dhcp_ddns
+        S_563_114 = 563,                         // $@114
+        S_sub_dhcp_ddns = 564,                   // sub_dhcp_ddns
+        S_565_115 = 565,                         // $@115
+        S_dhcp_ddns_params = 566,                // dhcp_ddns_params
+        S_dhcp_ddns_param = 567,                 // dhcp_ddns_param
+        S_enable_updates = 568,                  // enable_updates
+        S_qualifying_suffix = 569,               // qualifying_suffix
+        S_570_116 = 570,                         // $@116
+        S_server_ip = 571,                       // server_ip
+        S_572_117 = 572,                         // $@117
+        S_server_port = 573,                     // server_port
+        S_sender_ip = 574,                       // sender_ip
+        S_575_118 = 575,                         // $@118
+        S_sender_port = 576,                     // sender_port
+        S_max_queue_size = 577,                  // max_queue_size
+        S_ncr_protocol = 578,                    // ncr_protocol
+        S_579_119 = 579,                         // $@119
+        S_ncr_protocol_value = 580,              // ncr_protocol_value
+        S_ncr_format = 581,                      // ncr_format
+        S_582_120 = 582,                         // $@120
+        S_dep_override_no_update = 583,          // dep_override_no_update
+        S_dep_override_client_update = 584,      // dep_override_client_update
+        S_dep_replace_client_name = 585,         // dep_replace_client_name
+        S_586_121 = 586,                         // $@121
+        S_dep_generated_prefix = 587,            // dep_generated_prefix
+        S_588_122 = 588,                         // $@122
+        S_dep_hostname_char_set = 589,           // dep_hostname_char_set
+        S_590_123 = 590,                         // $@123
+        S_dep_hostname_char_replacement = 591,   // dep_hostname_char_replacement
+        S_592_124 = 592,                         // $@124
+        S_config_control = 593,                  // config_control
+        S_594_125 = 594,                         // $@125
+        S_sub_config_control = 595,              // sub_config_control
+        S_596_126 = 596,                         // $@126
+        S_config_control_params = 597,           // config_control_params
+        S_config_control_param = 598,            // config_control_param
+        S_config_databases = 599,                // config_databases
+        S_600_127 = 600,                         // $@127
+        S_config_fetch_wait_time = 601,          // config_fetch_wait_time
+        S_loggers = 602,                         // loggers
+        S_603_128 = 603,                         // $@128
+        S_loggers_entries = 604,                 // loggers_entries
+        S_logger_entry = 605,                    // logger_entry
+        S_606_129 = 606,                         // $@129
+        S_logger_params = 607,                   // logger_params
+        S_logger_param = 608,                    // logger_param
+        S_debuglevel = 609,                      // debuglevel
+        S_severity = 610,                        // severity
+        S_611_130 = 611,                         // $@130
+        S_output_options_list = 612,             // output_options_list
+        S_613_131 = 613,                         // $@131
+        S_output_options_list_content = 614,     // output_options_list_content
+        S_output_entry = 615,                    // output_entry
+        S_616_132 = 616,                         // $@132
+        S_output_params_list = 617,              // output_params_list
+        S_output_params = 618,                   // output_params
+        S_output = 619,                          // output
+        S_620_133 = 620,                         // $@133
+        S_flush = 621,                           // flush
+        S_maxsize = 622,                         // maxsize
+        S_maxver = 623,                          // maxver
+        S_pattern = 624,                         // pattern
+        S_625_134 = 625                          // $@134
       };
     };
 
@@ -1356,29 +1362,29 @@ namespace isc { namespace dhcp {
       {
         switch (this->kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -1392,7 +1398,7 @@ namespace isc { namespace dhcp {
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructor for valueless symbols, and symbols from each type.
+      /// Constructors for typed symbols.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -1404,6 +1410,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
         : Base (t)
@@ -1417,6 +1424,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
         : Base (t)
@@ -1430,6 +1438,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
         : Base (t)
@@ -1443,6 +1452,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
         : Base (t)
@@ -1456,6 +1466,7 @@ namespace isc { namespace dhcp {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -1477,7 +1488,7 @@ namespace isc { namespace dhcp {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear ()
+      void clear () YY_NOEXCEPT
       {
         // User destructor.
         symbol_kind_type yykind = this->kind ();
@@ -1492,29 +1503,29 @@ namespace isc { namespace dhcp {
         // Value type destructor.
 switch (yykind)
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -1574,7 +1585,7 @@ switch (yykind)
       by_kind (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear ();
+      void clear () YY_NOEXCEPT;
 
       /// Steal the symbol kind from \a that.
       void move (by_kind& that);
@@ -1607,68 +1618,54 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_UNDEF || 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_MAX_ROW_ERRORS || 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_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_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_PATTERN || 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_CONFIG_CONTROL);
-      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_PARSER6_error || tok == token::TOKEN_PARSER6_UNDEF || 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_MAX_ROW_ERRORS || 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_STATISTIC_DEFAULT_SAMPLE_COUNT || tok == token::TOKEN_STATISTIC_DEFAULT_SAMPLE_AGE || tok == token::TOKEN_DDNS_SEND_UPDATES || tok == token::TOKEN_DDNS_OVERRIDE_NO_UPDATE || tok == token::TOKEN_DDNS_OVERRIDE_CLIENT_UPDATE || tok == token::TOKEN_DDNS_REPLACE_CLIENT_NAME || tok == token::TOKEN_DDNS_GENERATED_PREFIX || tok == token::TOKEN_DDNS_QUALIFYING_SUFFIX || tok == token::TOKEN_STORE_EXTENDED_INFO || 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_DHCP_MULTI_THREADING || tok == token::TOKEN_ENABLE_MULTI_THREADING || tok == token::TOKEN_THREAD_POOL_SIZE || tok == token::TOKEN_PACKET_QUEUE_SIZE || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_DHCP_QUEUE_CONTROL || tok == token::TOKEN_ENABLE_QUEUE || tok == token::TOKEN_QUEUE_TYPE || tok == token::TOKEN_CAPACITY || 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_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_PATTERN || 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_CONFIG_CONTROL);
+        PARSER6__ASSERT (tok == token::TOKEN_END
+                   || (token::TOKEN_PARSER6_error <= tok && tok <= token::TOKEN_SUB_CONFIG_CONTROL));
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, bool v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
 #else
       symbol_type (int tok, const bool& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+        PARSER6__ASSERT (tok == token::TOKEN_BOOLEAN);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, double v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
 #else
       symbol_type (int tok, const double& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
+        PARSER6__ASSERT (tok == token::TOKEN_FLOAT);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, int64_t v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
 #else
       symbol_type (int tok, const int64_t& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
+        PARSER6__ASSERT (tok == token::TOKEN_INTEGER);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_STRING);
+        PARSER6__ASSERT (tok == token::TOKEN_STRING);
       }
-#endif
     };
 
     /// Build a parser object.
@@ -2692,6 +2689,36 @@ switch (yykind)
         return symbol_type (token::TOKEN_DDNS_QUALIFYING_SUFFIX, l);
       }
 #endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_DDNS_UPDATE_ON_RENEW (location_type l)
+      {
+        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_DDNS_UPDATE_ON_RENEW (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_DDNS_UPDATE_ON_RENEW, l);
+      }
+#endif
+#if 201103L <= YY_CPLUSPLUS
+      static
+      symbol_type
+      make_DDNS_USE_CONFLICT_RESOLUTION (location_type l)
+      {
+        return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, std::move (l));
+      }
+#else
+      static
+      symbol_type
+      make_DDNS_USE_CONFLICT_RESOLUTION (const location_type& l)
+      {
+        return symbol_type (token::TOKEN_DDNS_USE_CONFLICT_RESOLUTION, l);
+      }
+#endif
 #if 201103L <= YY_CPLUSPLUS
       static
       symbol_type
@@ -4693,9 +4720,9 @@ switch (yykind)
     {
     public:
       context (const Dhcp6Parser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
+      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
+      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
 
       /// Put in YYARG at most YYARGN of the expected tokens, and return the
       /// number of tokens stored in YYARG.  If YYARG is null, return the
@@ -4838,7 +4865,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -5017,8 +5044,8 @@ switch (yykind)
     /// Constants.
     enum
     {
-      yylast_ = 1205,     ///< Last index in yytable_.
-      yynnts_ = 424,  ///< Number of nonterminal symbols.
+      yylast_ = 1234,     ///< Last index in yytable_.
+      yynnts_ = 426,  ///< Number of nonterminal symbols.
       yyfinal_ = 30 ///< Termination state number.
     };
 
@@ -5083,13 +5110,14 @@ switch (yykind)
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196,   197
+     195,   196,   197,   198,   199
     };
-    const int user_token_number_max_ = 452;
+    // Last valid token kind.
+    const int code_max = 454;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -5104,29 +5132,29 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -5159,29 +5187,29 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 214: // value
-      case 218: // map_value
-      case 259: // ddns_replace_client_name_value
-      case 296: // db_type
-      case 397: // hr_mode
-      case 533: // duid_type
-      case 576: // ncr_protocol_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_ddns_replace_client_name_value: // ddns_replace_client_name_value
+      case symbol_kind::S_db_type: // db_type
+      case symbol_kind::S_hr_mode: // hr_mode
+      case symbol_kind::S_duid_type: // duid_type
+      case symbol_kind::S_ncr_protocol_value: // ncr_protocol_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 197: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 196: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 195: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 194: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -5219,7 +5247,7 @@ switch (yykind)
 
   inline
   void
-  Dhcp6Parser::by_kind::clear ()
+  Dhcp6Parser::by_kind::clear () YY_NOEXCEPT
   {
     kind_ = symbol_kind::S_YYEMPTY;
   }
@@ -5248,8 +5276,7 @@ switch (yykind)
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 5252 "dhcp6_parser.h"
-
+#line 5280 "dhcp6_parser.h"
 
 
 
index 379258154457a693553dc2af3cae5d04eaddbaa8..e8036de559a089e89850e3f6830884b673a0ed56 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -16,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -62,11 +61,13 @@ namespace isc { namespace dhcp {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +77,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +106,7 @@ namespace isc { namespace dhcp {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +149,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +166,8 @@ namespace isc { namespace dhcp {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +184,7 @@ namespace isc { namespace dhcp {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +193,7 @@ namespace isc { namespace dhcp {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +275,6 @@ namespace isc { namespace dhcp {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +301,6 @@ namespace isc { namespace dhcp {
 
 #line 14 "dhcp6_parser.yy"
 } } // isc::dhcp
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_PARSER6_LOCATION_HH_INCLUDED
index e0ad5903214a86d7e78a5891735cac93e3811489..6575075df1ad61270c3f7cd42643f0307b57d944 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6c46cc8d62f44563bfc05d4eb598371b04b58c3 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index cdae8cb4149e1760e4665aa60bf183e88f9ea658..7a07bc26fa5446f6d7d1e3649debd0033e469409 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -16,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -62,11 +61,13 @@ namespace isc { namespace netconf {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +77,7 @@ namespace isc { namespace netconf {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +106,7 @@ namespace isc { namespace netconf {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +149,6 @@ namespace isc { namespace netconf {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +166,8 @@ namespace isc { namespace netconf {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +184,7 @@ namespace isc { namespace netconf {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +193,7 @@ namespace isc { namespace netconf {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +275,6 @@ namespace isc { namespace netconf {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +301,6 @@ namespace isc { namespace netconf {
 
 #line 14 "netconf_parser.yy"
 } } // isc::netconf
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_NETCONF_LOCATION_HH_INCLUDED
index da867c58b87c10fd84feca4f53ed667f706a2434..5f7918c961d968fe40324ba9b679510e7fb42552 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 #else // !NETCONF_DEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
@@ -209,25 +209,25 @@ namespace isc { namespace netconf {
   {
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.YY_MOVE_OR_COPY< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.YY_MOVE_OR_COPY< bool > (YY_MOVE (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.YY_MOVE_OR_COPY< double > (YY_MOVE (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.YY_MOVE_OR_COPY< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
@@ -246,25 +246,25 @@ namespace isc { namespace netconf {
   {
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
@@ -283,25 +283,25 @@ namespace isc { namespace netconf {
     state = that.state;
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (that.value);
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (that.value);
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (that.value);
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (that.value);
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (that.value);
         break;
 
@@ -319,25 +319,25 @@ namespace isc { namespace netconf {
     state = that.state;
     switch (that.kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (that.value);
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (that.value);
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (that.value);
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (that.value);
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (that.value);
         break;
 
@@ -366,7 +366,7 @@ namespace isc { namespace netconf {
   NetconfParser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YYUSE (yyoutput);
+    YY_USE (yyoutput);
     if (yysym.empty ())
       yyo << "empty symbol";
     else
@@ -377,43 +377,43 @@ namespace isc { namespace netconf {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 384 "netconf_parser.cc"
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < int64_t > (); }
 #line 390 "netconf_parser.cc"
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < double > (); }
 #line 396 "netconf_parser.cc"
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < bool > (); }
 #line 402 "netconf_parser.cc"
         break;
 
-      case 57: // value
+      case symbol_kind::S_value: // value
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 408 "netconf_parser.cc"
         break;
 
-      case 60: // map_value
+      case symbol_kind::S_map_value: // map_value
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 414 "netconf_parser.cc"
         break;
 
-      case 119: // socket_type_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
 #line 107 "netconf_parser.yy"
                  { yyoutput << yysym.value.template as < ElementPtr > (); }
 #line 420 "netconf_parser.cc"
@@ -646,25 +646,25 @@ namespace isc { namespace netconf {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         yylhs.value.emplace< ElementPtr > ();
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         yylhs.value.emplace< bool > ();
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         yylhs.value.emplace< double > ();
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         yylhs.value.emplace< int64_t > ();
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         yylhs.value.emplace< std::string > ();
         break;
 
@@ -688,25 +688,25 @@ namespace isc { namespace netconf {
         {
           switch (yyn)
             {
-  case 2:
+  case 2: // $@1: %empty
 #line 118 "netconf_parser.yy"
                        { ctx.ctx_ = ctx.NO_KEYWORDS; }
 #line 695 "netconf_parser.cc"
     break;
 
-  case 4:
+  case 4: // $@2: %empty
 #line 119 "netconf_parser.yy"
                          { ctx.ctx_ = ctx.CONFIG; }
 #line 701 "netconf_parser.cc"
     break;
 
-  case 6:
+  case 6: // $@3: %empty
 #line 120 "netconf_parser.yy"
                          { ctx.ctx_ = ctx.NETCONF; }
 #line 707 "netconf_parser.cc"
     break;
 
-  case 8:
+  case 8: // $@4: %empty
 #line 128 "netconf_parser.yy"
                             {
     // Parse the Netconf map
@@ -716,7 +716,7 @@ namespace isc { namespace netconf {
 #line 717 "netconf_parser.cc"
     break;
 
-  case 9:
+  case 9: // sub_netconf: "{" $@4 global_params "}"
 #line 132 "netconf_parser.yy"
                                {
     // parsing completed
@@ -724,7 +724,7 @@ namespace isc { namespace netconf {
 #line 725 "netconf_parser.cc"
     break;
 
-  case 10:
+  case 10: // json: value
 #line 139 "netconf_parser.yy"
             {
     // Push back the JSON value on the stack
@@ -733,49 +733,49 @@ namespace isc { namespace netconf {
 #line 734 "netconf_parser.cc"
     break;
 
-  case 11:
+  case 11: // value: "integer"
 #line 145 "netconf_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location))); }
 #line 740 "netconf_parser.cc"
     break;
 
-  case 12:
+  case 12: // value: "floating point"
 #line 146 "netconf_parser.yy"
              { yylhs.value.as < ElementPtr > () = ElementPtr(new DoubleElement(yystack_[0].value.as < double > (), ctx.loc2pos(yystack_[0].location))); }
 #line 746 "netconf_parser.cc"
     break;
 
-  case 13:
+  case 13: // value: "boolean"
 #line 147 "netconf_parser.yy"
                { yylhs.value.as < ElementPtr > () = ElementPtr(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location))); }
 #line 752 "netconf_parser.cc"
     break;
 
-  case 14:
+  case 14: // value: "constant string"
 #line 148 "netconf_parser.yy"
               { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location))); }
 #line 758 "netconf_parser.cc"
     break;
 
-  case 15:
+  case 15: // value: "null"
 #line 149 "netconf_parser.yy"
                  { yylhs.value.as < ElementPtr > () = ElementPtr(new NullElement(ctx.loc2pos(yystack_[0].location))); }
 #line 764 "netconf_parser.cc"
     break;
 
-  case 16:
+  case 16: // value: map
 #line 150 "netconf_parser.yy"
            { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 770 "netconf_parser.cc"
     break;
 
-  case 17:
+  case 17: // value: list_generic
 #line 151 "netconf_parser.yy"
                     { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 776 "netconf_parser.cc"
     break;
 
-  case 18:
+  case 18: // $@5: %empty
 #line 155 "netconf_parser.yy"
                     {
     // This code is executed when we're about to start parsing
@@ -786,7 +786,7 @@ namespace isc { namespace netconf {
 #line 787 "netconf_parser.cc"
     break;
 
-  case 19:
+  case 19: // map: "{" $@5 map_content "}"
 #line 160 "netconf_parser.yy"
                              {
     // map parsing completed. If we ever want to do any wrap up
@@ -796,13 +796,13 @@ namespace isc { namespace netconf {
 #line 797 "netconf_parser.cc"
     break;
 
-  case 20:
+  case 20: // map_value: map
 #line 166 "netconf_parser.yy"
                { yylhs.value.as < ElementPtr > () = ctx.stack_.back(); ctx.stack_.pop_back(); }
 #line 803 "netconf_parser.cc"
     break;
 
-  case 23:
+  case 23: // not_empty_map: "constant string" ":" value
 #line 180 "netconf_parser.yy"
                                   {
                   // map containing a single entry
@@ -811,7 +811,7 @@ namespace isc { namespace netconf {
 #line 812 "netconf_parser.cc"
     break;
 
-  case 24:
+  case 24: // not_empty_map: not_empty_map "," "constant string" ":" value
 #line 184 "netconf_parser.yy"
                                                       {
                   // map consisting of a shorter map followed by
@@ -821,7 +821,7 @@ namespace isc { namespace netconf {
 #line 822 "netconf_parser.cc"
     break;
 
-  case 25:
+  case 25: // $@6: %empty
 #line 191 "netconf_parser.yy"
                               {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -830,14 +830,14 @@ namespace isc { namespace netconf {
 #line 831 "netconf_parser.cc"
     break;
 
-  case 26:
+  case 26: // list_generic: "[" $@6 list_content "]"
 #line 194 "netconf_parser.yy"
                                {
 }
 #line 838 "netconf_parser.cc"
     break;
 
-  case 29:
+  case 29: // not_empty_list: value
 #line 201 "netconf_parser.yy"
                       {
                   // List consisting of a single element.
@@ -846,7 +846,7 @@ namespace isc { namespace netconf {
 #line 847 "netconf_parser.cc"
     break;
 
-  case 30:
+  case 30: // not_empty_list: not_empty_list "," value
 #line 205 "netconf_parser.yy"
                                            {
                   // List ending with , and a value.
@@ -855,7 +855,7 @@ namespace isc { namespace netconf {
 #line 856 "netconf_parser.cc"
     break;
 
-  case 31:
+  case 31: // unknown_map_entry: "constant string" ":"
 #line 218 "netconf_parser.yy"
                                 {
     const std::string& where = ctx.contextName();
@@ -866,7 +866,7 @@ namespace isc { namespace netconf {
 #line 867 "netconf_parser.cc"
     break;
 
-  case 32:
+  case 32: // $@7: %empty
 #line 226 "netconf_parser.yy"
                                    {
     // This code is executed when we're about to start parsing
@@ -877,7 +877,7 @@ namespace isc { namespace netconf {
 #line 878 "netconf_parser.cc"
     break;
 
-  case 33:
+  case 33: // netconf_syntax_map: "{" $@7 global_objects "}"
 #line 231 "netconf_parser.yy"
                                 {
     // map parsing completed. If we ever want to do any wrap up
@@ -887,7 +887,7 @@ namespace isc { namespace netconf {
 #line 888 "netconf_parser.cc"
     break;
 
-  case 37:
+  case 37: // $@8: %empty
 #line 247 "netconf_parser.yy"
                         {
 
@@ -906,7 +906,7 @@ namespace isc { namespace netconf {
 #line 907 "netconf_parser.cc"
     break;
 
-  case 38:
+  case 38: // netconf_object: "Netconf" $@8 ":" "{" global_params "}"
 #line 260 "netconf_parser.yy"
                                                     {
     // Ok, we're done with parsing Netconf. Let's take the map
@@ -917,7 +917,7 @@ namespace isc { namespace netconf {
 #line 918 "netconf_parser.cc"
     break;
 
-  case 52:
+  case 52: // boot_update: "boot-update" ":" "boolean"
 #line 288 "netconf_parser.yy"
                                        {
     ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -926,7 +926,7 @@ namespace isc { namespace netconf {
 #line 927 "netconf_parser.cc"
     break;
 
-  case 53:
+  case 53: // subscribe_changes: "subscribe-changes" ":" "boolean"
 #line 293 "netconf_parser.yy"
                                                    {
     ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -935,7 +935,7 @@ namespace isc { namespace netconf {
 #line 936 "netconf_parser.cc"
     break;
 
-  case 54:
+  case 54: // validate_changes: "validate-changes" ":" "boolean"
 #line 298 "netconf_parser.yy"
                                                  {
     ElementPtr flag(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -944,7 +944,7 @@ namespace isc { namespace netconf {
 #line 945 "netconf_parser.cc"
     break;
 
-  case 55:
+  case 55: // $@9: %empty
 #line 303 "netconf_parser.yy"
                            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -952,7 +952,7 @@ namespace isc { namespace netconf {
 #line 953 "netconf_parser.cc"
     break;
 
-  case 56:
+  case 56: // user_context: "user-context" $@9 ":" map_value
 #line 305 "netconf_parser.yy"
                   {
     ElementPtr parent = ctx.stack_.back();
@@ -979,7 +979,7 @@ namespace isc { namespace netconf {
 #line 980 "netconf_parser.cc"
     break;
 
-  case 57:
+  case 57: // $@10: %empty
 #line 328 "netconf_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -987,7 +987,7 @@ namespace isc { namespace netconf {
 #line 988 "netconf_parser.cc"
     break;
 
-  case 58:
+  case 58: // comment: "comment" $@10 ":" "constant string"
 #line 330 "netconf_parser.yy"
                {
     ElementPtr parent = ctx.stack_.back();
@@ -1016,7 +1016,7 @@ namespace isc { namespace netconf {
 #line 1017 "netconf_parser.cc"
     break;
 
-  case 59:
+  case 59: // $@11: %empty
 #line 356 "netconf_parser.yy"
                                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1027,7 +1027,7 @@ namespace isc { namespace netconf {
 #line 1028 "netconf_parser.cc"
     break;
 
-  case 60:
+  case 60: // hooks_libraries: "hooks-libraries" $@11 ":" "[" hooks_libraries_list "]"
 #line 361 "netconf_parser.yy"
                                                              {
     ctx.stack_.pop_back();
@@ -1036,7 +1036,7 @@ namespace isc { namespace netconf {
 #line 1037 "netconf_parser.cc"
     break;
 
-  case 65:
+  case 65: // $@12: %empty
 #line 374 "netconf_parser.yy"
                               {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1046,7 +1046,7 @@ namespace isc { namespace netconf {
 #line 1047 "netconf_parser.cc"
     break;
 
-  case 66:
+  case 66: // hooks_library: "{" $@12 hooks_params "}"
 #line 378 "netconf_parser.yy"
                               {
     ctx.stack_.pop_back();
@@ -1054,7 +1054,7 @@ namespace isc { namespace netconf {
 #line 1055 "netconf_parser.cc"
     break;
 
-  case 72:
+  case 72: // $@13: %empty
 #line 391 "netconf_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1062,7 +1062,7 @@ namespace isc { namespace netconf {
 #line 1063 "netconf_parser.cc"
     break;
 
-  case 73:
+  case 73: // library: "library" $@13 ":" "constant string"
 #line 393 "netconf_parser.yy"
                {
     ElementPtr lib(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1072,7 +1072,7 @@ namespace isc { namespace netconf {
 #line 1073 "netconf_parser.cc"
     break;
 
-  case 74:
+  case 74: // $@14: %empty
 #line 399 "netconf_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1080,7 +1080,7 @@ namespace isc { namespace netconf {
 #line 1081 "netconf_parser.cc"
     break;
 
-  case 75:
+  case 75: // parameters: "parameters" $@14 ":" map_value
 #line 401 "netconf_parser.yy"
                   {
     ctx.stack_.back()->set("parameters", yystack_[0].value.as < ElementPtr > ());
@@ -1089,7 +1089,7 @@ namespace isc { namespace netconf {
 #line 1090 "netconf_parser.cc"
     break;
 
-  case 76:
+  case 76: // $@15: %empty
 #line 409 "netconf_parser.yy"
                                                       {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[2].location)));
@@ -1100,7 +1100,7 @@ namespace isc { namespace netconf {
 #line 1101 "netconf_parser.cc"
     break;
 
-  case 77:
+  case 77: // managed_servers: "managed-servers" ":" "{" $@15 servers_entries "}"
 #line 414 "netconf_parser.yy"
                                  {
     ctx.stack_.pop_back();
@@ -1109,7 +1109,7 @@ namespace isc { namespace netconf {
 #line 1110 "netconf_parser.cc"
     break;
 
-  case 87:
+  case 87: // $@16: %empty
 #line 438 "netconf_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1120,7 +1120,7 @@ namespace isc { namespace netconf {
 #line 1121 "netconf_parser.cc"
     break;
 
-  case 88:
+  case 88: // dhcp4_server: "dhcp4" $@16 ":" "{" managed_server_params "}"
 #line 443 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1129,7 +1129,7 @@ namespace isc { namespace netconf {
 #line 1130 "netconf_parser.cc"
     break;
 
-  case 89:
+  case 89: // $@17: %empty
 #line 449 "netconf_parser.yy"
                            {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1140,7 +1140,7 @@ namespace isc { namespace netconf {
 #line 1141 "netconf_parser.cc"
     break;
 
-  case 90:
+  case 90: // dhcp6_server: "dhcp6" $@17 ":" "{" managed_server_params "}"
 #line 454 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1149,7 +1149,7 @@ namespace isc { namespace netconf {
 #line 1150 "netconf_parser.cc"
     break;
 
-  case 91:
+  case 91: // $@18: %empty
 #line 460 "netconf_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1160,7 +1160,7 @@ namespace isc { namespace netconf {
 #line 1161 "netconf_parser.cc"
     break;
 
-  case 92:
+  case 92: // d2_server: "d2" $@18 ":" "{" managed_server_params "}"
 #line 465 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1169,7 +1169,7 @@ namespace isc { namespace netconf {
 #line 1170 "netconf_parser.cc"
     break;
 
-  case 93:
+  case 93: // $@19: %empty
 #line 471 "netconf_parser.yy"
                      {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1180,7 +1180,7 @@ namespace isc { namespace netconf {
 #line 1181 "netconf_parser.cc"
     break;
 
-  case 94:
+  case 94: // ca_server: "ca" $@19 ":" "{" managed_server_params "}"
 #line 476 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1189,7 +1189,7 @@ namespace isc { namespace netconf {
 #line 1190 "netconf_parser.cc"
     break;
 
-  case 105:
+  case 105: // $@20: %empty
 #line 498 "netconf_parser.yy"
              {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1197,7 +1197,7 @@ namespace isc { namespace netconf {
 #line 1198 "netconf_parser.cc"
     break;
 
-  case 106:
+  case 106: // model: "model" $@20 ":" "constant string"
 #line 500 "netconf_parser.yy"
                {
     ElementPtr model(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1207,7 +1207,7 @@ namespace isc { namespace netconf {
 #line 1208 "netconf_parser.cc"
     break;
 
-  case 107:
+  case 107: // $@21: %empty
 #line 507 "netconf_parser.yy"
                                {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1218,7 +1218,7 @@ namespace isc { namespace netconf {
 #line 1219 "netconf_parser.cc"
     break;
 
-  case 108:
+  case 108: // control_socket: "control-socket" $@21 ":" "{" control_socket_params "}"
 #line 512 "netconf_parser.yy"
                                                             {
     ctx.stack_.pop_back();
@@ -1227,7 +1227,7 @@ namespace isc { namespace netconf {
 #line 1228 "netconf_parser.cc"
     break;
 
-  case 117:
+  case 117: // $@22: %empty
 #line 530 "netconf_parser.yy"
                          {
     ctx.enter(ctx.SOCKET_TYPE);
@@ -1235,7 +1235,7 @@ namespace isc { namespace netconf {
 #line 1236 "netconf_parser.cc"
     break;
 
-  case 118:
+  case 118: // socket_type: "socket-type" $@22 ":" socket_type_value
 #line 532 "netconf_parser.yy"
                           {
     ctx.stack_.back()->set("socket-type", yystack_[0].value.as < ElementPtr > ());
@@ -1244,25 +1244,25 @@ namespace isc { namespace netconf {
 #line 1245 "netconf_parser.cc"
     break;
 
-  case 119:
+  case 119: // socket_type_value: "unix"
 #line 538 "netconf_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("unix", ctx.loc2pos(yystack_[0].location))); }
 #line 1251 "netconf_parser.cc"
     break;
 
-  case 120:
+  case 120: // socket_type_value: "http"
 #line 539 "netconf_parser.yy"
                          { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("http", ctx.loc2pos(yystack_[0].location))); }
 #line 1257 "netconf_parser.cc"
     break;
 
-  case 121:
+  case 121: // socket_type_value: "stdout"
 #line 540 "netconf_parser.yy"
                            { yylhs.value.as < ElementPtr > () = ElementPtr(new StringElement("stdout", ctx.loc2pos(yystack_[0].location))); }
 #line 1263 "netconf_parser.cc"
     break;
 
-  case 122:
+  case 122: // $@23: %empty
 #line 543 "netconf_parser.yy"
                          {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1270,7 +1270,7 @@ namespace isc { namespace netconf {
 #line 1271 "netconf_parser.cc"
     break;
 
-  case 123:
+  case 123: // socket_name: "socket-name" $@23 ":" "constant string"
 #line 545 "netconf_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1280,7 +1280,7 @@ namespace isc { namespace netconf {
 #line 1281 "netconf_parser.cc"
     break;
 
-  case 124:
+  case 124: // $@24: %empty
 #line 552 "netconf_parser.yy"
                        {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1288,7 +1288,7 @@ namespace isc { namespace netconf {
 #line 1289 "netconf_parser.cc"
     break;
 
-  case 125:
+  case 125: // socket_url: "socket-url" $@24 ":" "constant string"
 #line 554 "netconf_parser.yy"
                {
     ElementPtr url(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1298,7 +1298,7 @@ namespace isc { namespace netconf {
 #line 1299 "netconf_parser.cc"
     break;
 
-  case 126:
+  case 126: // $@25: %empty
 #line 564 "netconf_parser.yy"
                  {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1309,7 +1309,7 @@ namespace isc { namespace netconf {
 #line 1310 "netconf_parser.cc"
     break;
 
-  case 127:
+  case 127: // loggers: "loggers" $@25 ":" "[" loggers_entries "]"
 #line 569 "netconf_parser.yy"
                                                          {
     ctx.stack_.pop_back();
@@ -1318,7 +1318,7 @@ namespace isc { namespace netconf {
 #line 1319 "netconf_parser.cc"
     break;
 
-  case 130:
+  case 130: // $@26: %empty
 #line 581 "netconf_parser.yy"
                              {
     ElementPtr l(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1328,7 +1328,7 @@ namespace isc { namespace netconf {
 #line 1329 "netconf_parser.cc"
     break;
 
-  case 131:
+  case 131: // logger_entry: "{" $@26 logger_params "}"
 #line 585 "netconf_parser.yy"
                                {
     ctx.stack_.pop_back();
@@ -1336,7 +1336,7 @@ namespace isc { namespace netconf {
 #line 1337 "netconf_parser.cc"
     break;
 
-  case 141:
+  case 141: // $@27: %empty
 #line 602 "netconf_parser.yy"
            {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1344,7 +1344,7 @@ namespace isc { namespace netconf {
 #line 1345 "netconf_parser.cc"
     break;
 
-  case 142:
+  case 142: // name: "name" $@27 ":" "constant string"
 #line 604 "netconf_parser.yy"
                {
     ElementPtr name(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1354,7 +1354,7 @@ namespace isc { namespace netconf {
 #line 1355 "netconf_parser.cc"
     break;
 
-  case 143:
+  case 143: // debuglevel: "debuglevel" ":" "integer"
 #line 610 "netconf_parser.yy"
                                      {
     ElementPtr dl(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1363,7 +1363,7 @@ namespace isc { namespace netconf {
 #line 1364 "netconf_parser.cc"
     break;
 
-  case 144:
+  case 144: // $@28: %empty
 #line 615 "netconf_parser.yy"
                    {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1371,7 +1371,7 @@ namespace isc { namespace netconf {
 #line 1372 "netconf_parser.cc"
     break;
 
-  case 145:
+  case 145: // severity: "severity" $@28 ":" "constant string"
 #line 617 "netconf_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1381,7 +1381,7 @@ namespace isc { namespace netconf {
 #line 1382 "netconf_parser.cc"
     break;
 
-  case 146:
+  case 146: // $@29: %empty
 #line 623 "netconf_parser.yy"
                                     {
     ElementPtr l(new ListElement(ctx.loc2pos(yystack_[0].location)));
@@ -1392,7 +1392,7 @@ namespace isc { namespace netconf {
 #line 1393 "netconf_parser.cc"
     break;
 
-  case 147:
+  case 147: // output_options_list: "output_options" $@29 ":" "[" output_options_list_content "]"
 #line 628 "netconf_parser.yy"
                                                                     {
     ctx.stack_.pop_back();
@@ -1401,7 +1401,7 @@ namespace isc { namespace netconf {
 #line 1402 "netconf_parser.cc"
     break;
 
-  case 150:
+  case 150: // $@30: %empty
 #line 637 "netconf_parser.yy"
                              {
     ElementPtr m(new MapElement(ctx.loc2pos(yystack_[0].location)));
@@ -1411,7 +1411,7 @@ namespace isc { namespace netconf {
 #line 1412 "netconf_parser.cc"
     break;
 
-  case 151:
+  case 151: // output_entry: "{" $@30 output_params_list "}"
 #line 641 "netconf_parser.yy"
                                     {
     ctx.stack_.pop_back();
@@ -1419,7 +1419,7 @@ namespace isc { namespace netconf {
 #line 1420 "netconf_parser.cc"
     break;
 
-  case 159:
+  case 159: // $@31: %empty
 #line 656 "netconf_parser.yy"
                {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1427,7 +1427,7 @@ namespace isc { namespace netconf {
 #line 1428 "netconf_parser.cc"
     break;
 
-  case 160:
+  case 160: // output: "output" $@31 ":" "constant string"
 #line 658 "netconf_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1437,7 +1437,7 @@ namespace isc { namespace netconf {
 #line 1438 "netconf_parser.cc"
     break;
 
-  case 161:
+  case 161: // flush: "flush" ":" "boolean"
 #line 664 "netconf_parser.yy"
                            {
     ElementPtr flush(new BoolElement(yystack_[0].value.as < bool > (), ctx.loc2pos(yystack_[0].location)));
@@ -1446,7 +1446,7 @@ namespace isc { namespace netconf {
 #line 1447 "netconf_parser.cc"
     break;
 
-  case 162:
+  case 162: // maxsize: "maxsize" ":" "integer"
 #line 669 "netconf_parser.yy"
                                {
     ElementPtr maxsize(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1455,7 +1455,7 @@ namespace isc { namespace netconf {
 #line 1456 "netconf_parser.cc"
     break;
 
-  case 163:
+  case 163: // maxver: "maxver" ":" "integer"
 #line 674 "netconf_parser.yy"
                              {
     ElementPtr maxver(new IntElement(yystack_[0].value.as < int64_t > (), ctx.loc2pos(yystack_[0].location)));
@@ -1464,7 +1464,7 @@ namespace isc { namespace netconf {
 #line 1465 "netconf_parser.cc"
     break;
 
-  case 164:
+  case 164: // $@32: %empty
 #line 679 "netconf_parser.yy"
                  {
     ctx.enter(ctx.NO_KEYWORDS);
@@ -1472,7 +1472,7 @@ namespace isc { namespace netconf {
 #line 1473 "netconf_parser.cc"
     break;
 
-  case 165:
+  case 165: // pattern: "pattern" $@32 ":" "constant string"
 #line 681 "netconf_parser.yy"
                {
     ElementPtr sev(new StringElement(yystack_[0].value.as < std::string > (), ctx.loc2pos(yystack_[0].location)));
@@ -1921,7 +1921,7 @@ namespace isc { namespace netconf {
   const short
   NetconfParser::yydefgoto_[] =
   {
-      -1,     4,     5,     6,     7,    23,    27,    16,    17,    18,
+       0,     4,     5,     6,     7,    23,    27,    16,    17,    18,
       25,    95,    32,    33,    19,    24,    29,    30,   177,    21,
       26,    35,    36,    37,    64,    48,    49,    50,   178,   179,
      180,   181,    67,   182,    68,    56,    73,   115,   116,   117,
index 6cab9da3bef9a2db51548534fb10aa235a552376..40999458ce94c5fa97456aad5abfc51712fe5af6 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -103,9 +103,9 @@ using namespace std;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef YY_ASSERT
+#ifndef NETCONF__ASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define NETCONF__ASSERT assert
 #endif
 
 
@@ -127,9 +127,9 @@ using namespace std;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -231,7 +231,7 @@ namespace isc { namespace netconf {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YY_ASSERT (sizeof (T) <= size);
+      NETCONF__ASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
@@ -245,7 +245,7 @@ namespace isc { namespace netconf {
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      YY_ASSERT (!yytypeid_);
+      NETCONF__ASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -254,8 +254,8 @@ namespace isc { namespace netconf {
     T&
     emplace (U&&... u)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      NETCONF__ASSERT (!yytypeid_);
+      NETCONF__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -265,8 +265,8 @@ namespace isc { namespace netconf {
     T&
     emplace ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      NETCONF__ASSERT (!yytypeid_);
+      NETCONF__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -276,8 +276,8 @@ namespace isc { namespace netconf {
     T&
     emplace (const T& t)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      NETCONF__ASSERT (!yytypeid_);
+      NETCONF__ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -306,9 +306,9 @@ namespace isc { namespace netconf {
     T&
     as () YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      NETCONF__ASSERT (yytypeid_);
+      NETCONF__ASSERT (*yytypeid_ == typeid (T));
+      NETCONF__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -317,9 +317,9 @@ namespace isc { namespace netconf {
     const T&
     as () const YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      NETCONF__ASSERT (yytypeid_);
+      NETCONF__ASSERT (*yytypeid_ == typeid (T));
+      NETCONF__ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -335,8 +335,8 @@ namespace isc { namespace netconf {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+      NETCONF__ASSERT (yytypeid_);
+      NETCONF__ASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -730,25 +730,25 @@ namespace isc { namespace netconf {
       {
         switch (this->kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (std::move (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (std::move (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (std::move (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (std::move (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (std::move (that.value));
         break;
 
@@ -762,7 +762,7 @@ namespace isc { namespace netconf {
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructor for valueless symbols, and symbols from each type.
+      /// Constructors for typed symbols.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -774,6 +774,7 @@ namespace isc { namespace netconf {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, ElementPtr&& v, location_type&& l)
         : Base (t)
@@ -787,6 +788,7 @@ namespace isc { namespace netconf {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, bool&& v, location_type&& l)
         : Base (t)
@@ -800,6 +802,7 @@ namespace isc { namespace netconf {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, double&& v, location_type&& l)
         : Base (t)
@@ -813,6 +816,7 @@ namespace isc { namespace netconf {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int64_t&& v, location_type&& l)
         : Base (t)
@@ -826,6 +830,7 @@ namespace isc { namespace netconf {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -847,7 +852,7 @@ namespace isc { namespace netconf {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear ()
+      void clear () YY_NOEXCEPT
       {
         // User destructor.
         symbol_kind_type yykind = this->kind ();
@@ -862,25 +867,25 @@ namespace isc { namespace netconf {
         // Value type destructor.
 switch (yykind)
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.template destroy< ElementPtr > ();
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.template destroy< bool > ();
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.template destroy< double > ();
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.template destroy< int64_t > ();
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.template destroy< std::string > ();
         break;
 
@@ -940,7 +945,7 @@ switch (yykind)
       by_kind (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear ();
+      void clear () YY_NOEXCEPT;
 
       /// Steal the symbol kind from \a that.
       void move (by_kind& that);
@@ -973,68 +978,54 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_NETCONF_error || tok == token::TOKEN_NETCONF_UNDEF || 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_NETCONF || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_BOOT_UPDATE || tok == token::TOKEN_SUBSCRIBE_CHANGES || tok == token::TOKEN_VALIDATE_CHANGES || tok == token::TOKEN_MANAGED_SERVERS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_CA_SERVER || tok == token::TOKEN_MODEL || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HTTP || tok == token::TOKEN_STDOUT || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_URL || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_NETCONF || tok == token::TOKEN_START_SUB_NETCONF);
-      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_NETCONF_error || tok == token::TOKEN_NETCONF_UNDEF || 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_NETCONF || tok == token::TOKEN_USER_CONTEXT || tok == token::TOKEN_COMMENT || tok == token::TOKEN_BOOT_UPDATE || tok == token::TOKEN_SUBSCRIBE_CHANGES || tok == token::TOKEN_VALIDATE_CHANGES || tok == token::TOKEN_MANAGED_SERVERS || tok == token::TOKEN_DHCP4_SERVER || tok == token::TOKEN_DHCP6_SERVER || tok == token::TOKEN_D2_SERVER || tok == token::TOKEN_CA_SERVER || tok == token::TOKEN_MODEL || tok == token::TOKEN_CONTROL_SOCKET || tok == token::TOKEN_SOCKET_TYPE || tok == token::TOKEN_UNIX || tok == token::TOKEN_HTTP || tok == token::TOKEN_STDOUT || tok == token::TOKEN_SOCKET_NAME || tok == token::TOKEN_SOCKET_URL || tok == token::TOKEN_HOOKS_LIBRARIES || tok == token::TOKEN_LIBRARY || tok == token::TOKEN_PARAMETERS || tok == token::TOKEN_LOGGERS || tok == token::TOKEN_NAME || 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_PATTERN || tok == token::TOKEN_START_JSON || tok == token::TOKEN_START_NETCONF || tok == token::TOKEN_START_SUB_NETCONF);
+        NETCONF__ASSERT (tok == token::TOKEN_END
+                   || (token::TOKEN_NETCONF_error <= tok && tok <= token::TOKEN_START_SUB_NETCONF));
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, bool v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
-      }
 #else
       symbol_type (int tok, const bool& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_BOOLEAN);
+        NETCONF__ASSERT (tok == token::TOKEN_BOOLEAN);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, double v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
-      }
 #else
       symbol_type (int tok, const double& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_FLOAT);
+        NETCONF__ASSERT (tok == token::TOKEN_FLOAT);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, int64_t v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
-      }
 #else
       symbol_type (int tok, const int64_t& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_INTEGER);
+        NETCONF__ASSERT (tok == token::TOKEN_INTEGER);
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING);
-      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_STRING);
+        NETCONF__ASSERT (tok == token::TOKEN_STRING);
       }
-#endif
     };
 
     /// Build a parser object.
@@ -1824,9 +1815,9 @@ switch (yykind)
     {
     public:
       context (const NetconfParser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
+      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
+      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
 
       /// Put in YYARG at most YYARGN of the expected tokens, and return the
       /// number of tokens stored in YYARG.  If YYARG is null, return the
@@ -1969,7 +1960,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2201,11 +2192,12 @@ switch (yykind)
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48
     };
-    const int user_token_number_max_ = 303;
+    // Last valid token kind.
+    const int code_max = 303;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2220,25 +2212,25 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.copy< ElementPtr > (YY_MOVE (that.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.copy< bool > (YY_MOVE (that.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.copy< double > (YY_MOVE (that.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.copy< int64_t > (YY_MOVE (that.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
@@ -2271,25 +2263,25 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 57: // value
-      case 60: // map_value
-      case 119: // socket_type_value
+      case symbol_kind::S_value: // value
+      case symbol_kind::S_map_value: // map_value
+      case symbol_kind::S_socket_type_value: // socket_type_value
         value.move< ElementPtr > (YY_MOVE (s.value));
         break;
 
-      case 48: // "boolean"
+      case symbol_kind::S_BOOLEAN: // "boolean"
         value.move< bool > (YY_MOVE (s.value));
         break;
 
-      case 47: // "floating point"
+      case symbol_kind::S_FLOAT: // "floating point"
         value.move< double > (YY_MOVE (s.value));
         break;
 
-      case 46: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
         value.move< int64_t > (YY_MOVE (s.value));
         break;
 
-      case 45: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
@@ -2327,7 +2319,7 @@ switch (yykind)
 
   inline
   void
-  NetconfParser::by_kind::clear ()
+  NetconfParser::by_kind::clear () YY_NOEXCEPT
   {
     kind_ = symbol_kind::S_YYEMPTY;
   }
@@ -2356,8 +2348,7 @@ switch (yykind)
 
 #line 14 "netconf_parser.yy"
 } } // isc::netconf
-#line 2360 "netconf_parser.h"
-
+#line 2352 "netconf_parser.h"
 
 
 
index e0ad5903214a86d7e78a5891735cac93e3811489..6575075df1ad61270c3f7cd42643f0307b57d944 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6c46cc8d62f44563bfc05d4eb598371b04b58c3 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.
index 84738804b9ef907516b0bb290c34e16882990686..f25b5a9e2f45489b2df8c0e28490cdd6f4cfa7ea 100644 (file)
@@ -1,9 +1,8 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Locations for Bison parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -16,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -62,11 +61,13 @@ namespace isc { namespace eval {
   class position
   {
   public:
+    /// Type for file name.
+    typedef const std::string filename_type;
     /// Type for line and column numbers.
     typedef int counter_type;
 
     /// Construct a position.
-    explicit position (std::string* f = YY_NULLPTR,
+    explicit position (filename_type* f = YY_NULLPTR,
                        counter_type l = 1,
                        counter_type c = 1)
       : filename (f)
@@ -76,7 +77,7 @@ namespace isc { namespace eval {
 
 
     /// Initialization.
-    void initialize (std::string* fn = YY_NULLPTR,
+    void initialize (filename_type* fn = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -105,7 +106,7 @@ namespace isc { namespace eval {
     /** \} */
 
     /// File name to which this position refers.
-    std::string* filename;
+    filename_type* filename;
     /// Current line number.
     counter_type line;
     /// Current column number.
@@ -148,24 +149,6 @@ namespace isc { namespace eval {
     return res -= width;
   }
 
-  /// Compare two position objects.
-  inline bool
-  operator== (const position& pos1, const position& pos2)
-  {
-    return (pos1.line == pos2.line
-            && pos1.column == pos2.column
-            && (pos1.filename == pos2.filename
-                || (pos1.filename && pos2.filename
-                    && *pos1.filename == *pos2.filename)));
-  }
-
-  /// Compare two position objects.
-  inline bool
-  operator!= (const position& pos1, const position& pos2)
-  {
-    return !(pos1 == pos2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
@@ -183,6 +166,8 @@ namespace isc { namespace eval {
   class location
   {
   public:
+    /// Type for file name.
+    typedef position::filename_type filename_type;
     /// Type for line and column numbers.
     typedef position::counter_type counter_type;
 
@@ -199,7 +184,7 @@ namespace isc { namespace eval {
     {}
 
     /// Construct a 0-width location in \a f, \a l, \a c.
-    explicit location (std::string* f,
+    explicit location (filename_type* f,
                        counter_type l = 1,
                        counter_type c = 1)
       : begin (f, l, c)
@@ -208,7 +193,7 @@ namespace isc { namespace eval {
 
 
     /// Initialization.
-    void initialize (std::string* f = YY_NULLPTR,
+    void initialize (filename_type* f = YY_NULLPTR,
                      counter_type l = 1,
                      counter_type c = 1)
     {
@@ -290,20 +275,6 @@ namespace isc { namespace eval {
     return res -= width;
   }
 
-  /// Compare two location objects.
-  inline bool
-  operator== (const location& loc1, const location& loc2)
-  {
-    return loc1.begin == loc2.begin && loc1.end == loc2.end;
-  }
-
-  /// Compare two location objects.
-  inline bool
-  operator!= (const location& loc1, const location& loc2)
-  {
-    return !(loc1 == loc2);
-  }
-
   /** \brief Intercept output stream redirection.
    ** \param ostr the destination output stream
    ** \param loc a reference to the location to redirect
@@ -330,6 +301,6 @@ namespace isc { namespace eval {
 
 #line 14 "parser.yy"
 } } // isc::eval
-#line 333 "location.hh"
+#line 305 "location.hh"
 
 #endif // !YY_EVAL_LOCATION_HH_INCLUDED
index 6c824d73335e9150ccfdc7a26dfb819fb8700ce1..22d0ad8268e93b323c41091e3864f6d7de39c6ca 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton implementation for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
 #else // !EVALDEBUG
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Symbol)  YYUSE (Symbol)
+# define YY_SYMBOL_PRINT(Title, Symbol)  YY_USE (Symbol)
 # define YY_REDUCE_PRINT(Rule)           static_cast<void> (0)
 # define YY_STACK_PRINT()                static_cast<void> (0)
 
@@ -209,45 +209,45 @@ namespace isc { namespace eval {
   {
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.YY_MOVE_OR_COPY< TokenOption::RepresentationType > (YY_MOVE (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.YY_MOVE_OR_COPY< TokenPkt4::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.YY_MOVE_OR_COPY< TokenPkt6::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.YY_MOVE_OR_COPY< TokenPkt::MetadataType > (YY_MOVE (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.YY_MOVE_OR_COPY< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.YY_MOVE_OR_COPY< int8_t > (YY_MOVE (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.YY_MOVE_OR_COPY< std::string > (YY_MOVE (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.YY_MOVE_OR_COPY< uint16_t > (YY_MOVE (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.YY_MOVE_OR_COPY< uint32_t > (YY_MOVE (that.value));
         break;
 
@@ -266,45 +266,45 @@ namespace isc { namespace eval {
   {
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (YY_MOVE (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (YY_MOVE (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (YY_MOVE (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (YY_MOVE (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (YY_MOVE (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (YY_MOVE (that.value));
         break;
 
@@ -323,45 +323,45 @@ namespace isc { namespace eval {
     state = that.state;
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.copy< TokenOption::RepresentationType > (that.value);
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.copy< TokenPkt4::FieldType > (that.value);
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.copy< TokenPkt6::FieldType > (that.value);
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.copy< TokenPkt::MetadataType > (that.value);
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.copy< TokenRelay6Field::FieldType > (that.value);
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.copy< int8_t > (that.value);
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.copy< std::string > (that.value);
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.copy< uint16_t > (that.value);
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.copy< uint32_t > (that.value);
         break;
 
@@ -379,45 +379,45 @@ namespace isc { namespace eval {
     state = that.state;
     switch (that.kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (that.value);
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (that.value);
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (that.value);
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (that.value);
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (that.value);
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (that.value);
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (that.value);
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (that.value);
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (that.value);
         break;
 
@@ -446,7 +446,7 @@ namespace isc { namespace eval {
   EvalParser::yy_print_ (std::ostream& yyo, const basic_symbol<Base>& yysym) const
   {
     std::ostream& yyoutput = yyo;
-    YYUSE (yyoutput);
+    YY_USE (yyoutput);
     if (yysym.empty ())
       yyo << "empty symbol";
     else
@@ -457,91 +457,91 @@ namespace isc { namespace eval {
             << yysym.location << ": ";
         switch (yykind)
     {
-      case 50: // "constant string"
+      case symbol_kind::S_STRING: // "constant string"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 464 "parser.cc"
         break;
 
-      case 51: // "integer"
+      case symbol_kind::S_INTEGER: // "integer"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 470 "parser.cc"
         break;
 
-      case 52: // "constant hexstring"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 476 "parser.cc"
         break;
 
-      case 53: // "option name"
+      case symbol_kind::S_OPTION_NAME: // "option name"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 482 "parser.cc"
         break;
 
-      case 54: // "ip address"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < std::string > (); }
 #line 488 "parser.cc"
         break;
 
-      case 60: // integer_expr
+      case symbol_kind::S_integer_expr: // integer_expr
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint32_t > (); }
 #line 494 "parser.cc"
         break;
 
-      case 61: // option_code
+      case symbol_kind::S_option_code: // option_code
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint16_t > (); }
 #line 500 "parser.cc"
         break;
 
-      case 62: // sub_option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint16_t > (); }
 #line 506 "parser.cc"
         break;
 
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenOption::RepresentationType > (); }
 #line 512 "parser.cc"
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < int8_t > (); }
 #line 518 "parser.cc"
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt::MetadataType > (); }
 #line 524 "parser.cc"
         break;
 
-      case 66: // enterprise_id
+      case symbol_kind::S_enterprise_id: // enterprise_id
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < uint32_t > (); }
 #line 530 "parser.cc"
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt4::FieldType > (); }
 #line 536 "parser.cc"
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenPkt6::FieldType > (); }
 #line 542 "parser.cc"
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
 #line 112 "parser.yy"
                  { yyoutput << yysym.value.template as < TokenRelay6Field::FieldType > (); }
 #line 548 "parser.cc"
@@ -774,45 +774,45 @@ namespace isc { namespace eval {
          when using variants.  */
       switch (yyr1_[yyn])
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         yylhs.value.emplace< TokenOption::RepresentationType > ();
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         yylhs.value.emplace< TokenPkt4::FieldType > ();
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         yylhs.value.emplace< TokenPkt6::FieldType > ();
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         yylhs.value.emplace< TokenPkt::MetadataType > ();
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         yylhs.value.emplace< TokenRelay6Field::FieldType > ();
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         yylhs.value.emplace< int8_t > ();
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         yylhs.value.emplace< std::string > ();
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         yylhs.value.emplace< uint16_t > ();
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         yylhs.value.emplace< uint32_t > ();
         break;
 
@@ -836,7 +836,7 @@ namespace isc { namespace eval {
         {
           switch (yyn)
             {
-  case 6:
+  case 6: // bool_expr: "not" bool_expr
 #line 132 "parser.yy"
                 {
                     TokenPtr neg(new TokenNot());
@@ -845,7 +845,7 @@ namespace isc { namespace eval {
 #line 846 "parser.cc"
     break;
 
-  case 7:
+  case 7: // bool_expr: bool_expr "and" bool_expr
 #line 137 "parser.yy"
                 {
                     TokenPtr neg(new TokenAnd());
@@ -854,7 +854,7 @@ namespace isc { namespace eval {
 #line 855 "parser.cc"
     break;
 
-  case 8:
+  case 8: // bool_expr: bool_expr "or" bool_expr
 #line 142 "parser.yy"
                 {
                     TokenPtr neg(new TokenOr());
@@ -863,7 +863,7 @@ namespace isc { namespace eval {
 #line 864 "parser.cc"
     break;
 
-  case 9:
+  case 9: // bool_expr: string_expr "==" string_expr
 #line 147 "parser.yy"
                 {
                     TokenPtr eq(new TokenEqual());
@@ -872,7 +872,7 @@ namespace isc { namespace eval {
 #line 873 "parser.cc"
     break;
 
-  case 10:
+  case 10: // bool_expr: "option" "[" option_code "]" "." "exists"
 #line 152 "parser.yy"
                 {
                     TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
@@ -881,7 +881,7 @@ namespace isc { namespace eval {
 #line 882 "parser.cc"
     break;
 
-  case 11:
+  case 11: // bool_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." "exists"
 #line 157 "parser.yy"
                 {
                     TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), TokenOption::EXISTS));
@@ -890,7 +890,7 @@ namespace isc { namespace eval {
 #line 891 "parser.cc"
     break;
 
-  case 12:
+  case 12: // bool_expr: "relay4" "[" sub_option_code "]" "." "exists"
 #line 162 "parser.yy"
                 {
                    switch (ctx.getUniverse()) {
@@ -914,7 +914,7 @@ namespace isc { namespace eval {
 #line 915 "parser.cc"
     break;
 
-  case 13:
+  case 13: // bool_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." "exists"
 #line 182 "parser.yy"
                 {
                     switch (ctx.getUniverse()) {
@@ -932,7 +932,7 @@ namespace isc { namespace eval {
 #line 933 "parser.cc"
     break;
 
-  case 14:
+  case 14: // bool_expr: "vendor-class" "[" enterprise_id "]" "." "exists"
 #line 196 "parser.yy"
               {
                   // Expression: vendor-class[1234].exists
@@ -945,7 +945,7 @@ namespace isc { namespace eval {
 #line 946 "parser.cc"
     break;
 
-  case 15:
+  case 15: // bool_expr: "vendor" "[" enterprise_id "]" "." "exists"
 #line 205 "parser.yy"
               {
                   // Expression: vendor[1234].exists
@@ -958,7 +958,7 @@ namespace isc { namespace eval {
 #line 959 "parser.cc"
     break;
 
-  case 16:
+  case 16: // bool_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." "exists"
 #line 214 "parser.yy"
               {
                   // Expression vendor[1234].option[123].exists
@@ -972,7 +972,7 @@ namespace isc { namespace eval {
 #line 973 "parser.cc"
     break;
 
-  case 17:
+  case 17: // bool_expr: "member" "(" "constant string" ")"
 #line 224 "parser.yy"
               {
                   // Expression member('foo')
@@ -991,7 +991,7 @@ namespace isc { namespace eval {
 #line 992 "parser.cc"
     break;
 
-  case 18:
+  case 18: // string_expr: "constant string"
 #line 241 "parser.yy"
                   {
                       TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
@@ -1000,7 +1000,7 @@ namespace isc { namespace eval {
 #line 1001 "parser.cc"
     break;
 
-  case 19:
+  case 19: // string_expr: "constant hexstring"
 #line 246 "parser.yy"
                   {
                       TokenPtr hex(new TokenHexString(yystack_[0].value.as < std::string > ()));
@@ -1009,7 +1009,7 @@ namespace isc { namespace eval {
 #line 1010 "parser.cc"
     break;
 
-  case 20:
+  case 20: // string_expr: "ip address"
 #line 251 "parser.yy"
                   {
                       TokenPtr ip(new TokenIpAddress(yystack_[0].value.as < std::string > ()));
@@ -1018,7 +1018,7 @@ namespace isc { namespace eval {
 #line 1019 "parser.cc"
     break;
 
-  case 21:
+  case 21: // string_expr: "option" "[" option_code "]" "." option_repr_type
 #line 256 "parser.yy"
                   {
                       TokenPtr opt(new TokenOption(yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
@@ -1027,7 +1027,7 @@ namespace isc { namespace eval {
 #line 1028 "parser.cc"
     break;
 
-  case 22:
+  case 22: // string_expr: "option" "[" option_code "]" "." "option" "[" sub_option_code "]" "." option_repr_type
 #line 261 "parser.yy"
                   {
                       TokenPtr opt(new TokenSubOption(yystack_[8].value.as < uint16_t > (), yystack_[3].value.as < uint16_t > (), yystack_[0].value.as < TokenOption::RepresentationType > ()));
@@ -1036,7 +1036,7 @@ namespace isc { namespace eval {
 #line 1037 "parser.cc"
     break;
 
-  case 23:
+  case 23: // string_expr: "relay4" "[" sub_option_code "]" "." option_repr_type
 #line 266 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1060,7 +1060,7 @@ namespace isc { namespace eval {
 #line 1061 "parser.cc"
     break;
 
-  case 24:
+  case 24: // string_expr: "relay6" "[" nest_level "]" "." "option" "[" sub_option_code "]" "." option_repr_type
 #line 287 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1078,7 +1078,7 @@ namespace isc { namespace eval {
 #line 1079 "parser.cc"
     break;
 
-  case 25:
+  case 25: // string_expr: "pkt" "." pkt_metadata
 #line 302 "parser.yy"
                   {
                       TokenPtr pkt_metadata(new TokenPkt(yystack_[0].value.as < TokenPkt::MetadataType > ()));
@@ -1087,7 +1087,7 @@ namespace isc { namespace eval {
 #line 1088 "parser.cc"
     break;
 
-  case 26:
+  case 26: // string_expr: "pkt4" "." pkt4_field
 #line 307 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1105,7 +1105,7 @@ namespace isc { namespace eval {
 #line 1106 "parser.cc"
     break;
 
-  case 27:
+  case 27: // string_expr: "pkt6" "." pkt6_field
 #line 321 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1123,7 +1123,7 @@ namespace isc { namespace eval {
 #line 1124 "parser.cc"
     break;
 
-  case 28:
+  case 28: // string_expr: "relay6" "[" nest_level "]" "." relay6_field
 #line 335 "parser.yy"
                   {
                      switch (ctx.getUniverse()) {
@@ -1141,7 +1141,7 @@ namespace isc { namespace eval {
 #line 1142 "parser.cc"
     break;
 
-  case 29:
+  case 29: // string_expr: "substring" "(" string_expr "," start_expr "," length_expr ")"
 #line 350 "parser.yy"
                   {
                       TokenPtr sub(new TokenSubstring());
@@ -1150,7 +1150,7 @@ namespace isc { namespace eval {
 #line 1151 "parser.cc"
     break;
 
-  case 30:
+  case 30: // string_expr: "concat" "(" string_expr "," string_expr ")"
 #line 355 "parser.yy"
                   {
                       TokenPtr conc(new TokenConcat());
@@ -1159,7 +1159,7 @@ namespace isc { namespace eval {
 #line 1160 "parser.cc"
     break;
 
-  case 31:
+  case 31: // string_expr: "ifelse" "(" bool_expr "," string_expr "," string_expr ")"
 #line 360 "parser.yy"
                   {
                       TokenPtr cond(new TokenIfElse());
@@ -1168,7 +1168,7 @@ namespace isc { namespace eval {
 #line 1169 "parser.cc"
     break;
 
-  case 32:
+  case 32: // string_expr: "hexstring" "(" string_expr "," string_expr ")"
 #line 365 "parser.yy"
                   {
                       TokenPtr tohex(new TokenToHexString());
@@ -1177,7 +1177,7 @@ namespace isc { namespace eval {
 #line 1178 "parser.cc"
     break;
 
-  case 33:
+  case 33: // string_expr: "vendor" "." "enterprise"
 #line 370 "parser.yy"
                 {
                     // expression: vendor.enterprise
@@ -1190,7 +1190,7 @@ namespace isc { namespace eval {
 #line 1191 "parser.cc"
     break;
 
-  case 34:
+  case 34: // string_expr: "vendor-class" "." "enterprise"
 #line 379 "parser.yy"
                 {
                     // expression: vendor-class.enterprise
@@ -1204,7 +1204,7 @@ namespace isc { namespace eval {
 #line 1205 "parser.cc"
     break;
 
-  case 35:
+  case 35: // string_expr: "vendor" "[" enterprise_id "]" "." "option" "[" sub_option_code "]" "." option_repr_type
 #line 389 "parser.yy"
                 {
                     // This token will search for vendor option with
@@ -1217,7 +1217,7 @@ namespace isc { namespace eval {
 #line 1218 "parser.cc"
     break;
 
-  case 36:
+  case 36: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data"
 #line 398 "parser.yy"
                 {
                     // expression: vendor-class[1234].data
@@ -1234,7 +1234,7 @@ namespace isc { namespace eval {
 #line 1235 "parser.cc"
     break;
 
-  case 37:
+  case 37: // string_expr: "vendor-class" "[" enterprise_id "]" "." "data" "[" "integer" "]"
 #line 411 "parser.yy"
                 {
                     // expression: vendor-class[1234].data[5]
@@ -1251,7 +1251,7 @@ namespace isc { namespace eval {
 #line 1252 "parser.cc"
     break;
 
-  case 38:
+  case 38: // string_expr: integer_expr
 #line 424 "parser.yy"
                 {
                     TokenPtr integer(new TokenInteger(yystack_[0].value.as < uint32_t > ()));
@@ -1260,7 +1260,7 @@ namespace isc { namespace eval {
 #line 1261 "parser.cc"
     break;
 
-  case 39:
+  case 39: // integer_expr: "integer"
 #line 431 "parser.yy"
                  {
                      yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1268,7 +1268,7 @@ namespace isc { namespace eval {
 #line 1269 "parser.cc"
     break;
 
-  case 40:
+  case 40: // option_code: "integer"
 #line 437 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1276,7 +1276,7 @@ namespace isc { namespace eval {
 #line 1277 "parser.cc"
     break;
 
-  case 41:
+  case 41: // option_code: "option name"
 #line 441 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionName(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1284,7 +1284,7 @@ namespace isc { namespace eval {
 #line 1285 "parser.cc"
     break;
 
-  case 42:
+  case 42: // sub_option_code: "integer"
 #line 447 "parser.yy"
                  {
                      yylhs.value.as < uint16_t > () = ctx.convertOptionCode(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1292,7 +1292,7 @@ namespace isc { namespace eval {
 #line 1293 "parser.cc"
     break;
 
-  case 43:
+  case 43: // option_repr_type: "text"
 #line 453 "parser.yy"
                       {
                           yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::TEXTUAL;
@@ -1300,7 +1300,7 @@ namespace isc { namespace eval {
 #line 1301 "parser.cc"
     break;
 
-  case 44:
+  case 44: // option_repr_type: "hex"
 #line 457 "parser.yy"
                       {
                           yylhs.value.as < TokenOption::RepresentationType > () = TokenOption::HEXADECIMAL;
@@ -1308,7 +1308,7 @@ namespace isc { namespace eval {
 #line 1309 "parser.cc"
     break;
 
-  case 45:
+  case 45: // nest_level: "integer"
 #line 463 "parser.yy"
                  {
                      yylhs.value.as < int8_t > () = ctx.convertNestLevelNumber(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1316,7 +1316,7 @@ namespace isc { namespace eval {
 #line 1317 "parser.cc"
     break;
 
-  case 46:
+  case 46: // pkt_metadata: "iface"
 #line 472 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::IFACE;
@@ -1324,7 +1324,7 @@ namespace isc { namespace eval {
 #line 1325 "parser.cc"
     break;
 
-  case 47:
+  case 47: // pkt_metadata: "src"
 #line 476 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::SRC;
@@ -1332,7 +1332,7 @@ namespace isc { namespace eval {
 #line 1333 "parser.cc"
     break;
 
-  case 48:
+  case 48: // pkt_metadata: "dst"
 #line 480 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::DST;
@@ -1340,7 +1340,7 @@ namespace isc { namespace eval {
 #line 1341 "parser.cc"
     break;
 
-  case 49:
+  case 49: // pkt_metadata: "len"
 #line 484 "parser.yy"
                   {
                       yylhs.value.as < TokenPkt::MetadataType > () = TokenPkt::LEN;
@@ -1348,7 +1348,7 @@ namespace isc { namespace eval {
 #line 1349 "parser.cc"
     break;
 
-  case 50:
+  case 50: // enterprise_id: "integer"
 #line 490 "parser.yy"
                    {
                        yylhs.value.as < uint32_t > () = ctx.convertUint32(yystack_[0].value.as < std::string > (), yystack_[0].location);
@@ -1356,7 +1356,7 @@ namespace isc { namespace eval {
 #line 1357 "parser.cc"
     break;
 
-  case 51:
+  case 51: // enterprise_id: "*"
 #line 494 "parser.yy"
                    {
                        yylhs.value.as < uint32_t > () = 0;
@@ -1364,7 +1364,7 @@ namespace isc { namespace eval {
 #line 1365 "parser.cc"
     break;
 
-  case 52:
+  case 52: // pkt4_field: "mac"
 #line 500 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CHADDR;
@@ -1372,7 +1372,7 @@ namespace isc { namespace eval {
 #line 1373 "parser.cc"
     break;
 
-  case 53:
+  case 53: // pkt4_field: "hlen"
 #line 504 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HLEN;
@@ -1380,7 +1380,7 @@ namespace isc { namespace eval {
 #line 1381 "parser.cc"
     break;
 
-  case 54:
+  case 54: // pkt4_field: "htype"
 #line 508 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::HTYPE;
@@ -1388,7 +1388,7 @@ namespace isc { namespace eval {
 #line 1389 "parser.cc"
     break;
 
-  case 55:
+  case 55: // pkt4_field: "ciaddr"
 #line 512 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::CIADDR;
@@ -1396,7 +1396,7 @@ namespace isc { namespace eval {
 #line 1397 "parser.cc"
     break;
 
-  case 56:
+  case 56: // pkt4_field: "giaddr"
 #line 516 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::GIADDR;
@@ -1404,7 +1404,7 @@ namespace isc { namespace eval {
 #line 1405 "parser.cc"
     break;
 
-  case 57:
+  case 57: // pkt4_field: "yiaddr"
 #line 520 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::YIADDR;
@@ -1412,7 +1412,7 @@ namespace isc { namespace eval {
 #line 1413 "parser.cc"
     break;
 
-  case 58:
+  case 58: // pkt4_field: "siaddr"
 #line 524 "parser.yy"
                 {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::SIADDR;
@@ -1420,7 +1420,7 @@ namespace isc { namespace eval {
 #line 1421 "parser.cc"
     break;
 
-  case 59:
+  case 59: // pkt4_field: "msgtype"
 #line 528 "parser.yy"
                  {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::MSGTYPE;
@@ -1428,7 +1428,7 @@ namespace isc { namespace eval {
 #line 1429 "parser.cc"
     break;
 
-  case 60:
+  case 60: // pkt4_field: "transid"
 #line 532 "parser.yy"
                  {
                     yylhs.value.as < TokenPkt4::FieldType > () = TokenPkt4::TRANSID;
@@ -1436,7 +1436,7 @@ namespace isc { namespace eval {
 #line 1437 "parser.cc"
     break;
 
-  case 61:
+  case 61: // pkt6_field: "msgtype"
 #line 538 "parser.yy"
                  {
                      yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::MSGTYPE;
@@ -1444,7 +1444,7 @@ namespace isc { namespace eval {
 #line 1445 "parser.cc"
     break;
 
-  case 62:
+  case 62: // pkt6_field: "transid"
 #line 542 "parser.yy"
                  {
                      yylhs.value.as < TokenPkt6::FieldType > () = TokenPkt6::TRANSID;
@@ -1452,7 +1452,7 @@ namespace isc { namespace eval {
 #line 1453 "parser.cc"
     break;
 
-  case 63:
+  case 63: // relay6_field: "peeraddr"
 #line 548 "parser.yy"
                    {
                        yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::PEERADDR;
@@ -1460,7 +1460,7 @@ namespace isc { namespace eval {
 #line 1461 "parser.cc"
     break;
 
-  case 64:
+  case 64: // relay6_field: "linkaddr"
 #line 552 "parser.yy"
                    {
                        yylhs.value.as < TokenRelay6Field::FieldType > () = TokenRelay6Field::LINKADDR;
@@ -1468,7 +1468,7 @@ namespace isc { namespace eval {
 #line 1469 "parser.cc"
     break;
 
-  case 65:
+  case 65: // start_expr: "integer"
 #line 558 "parser.yy"
                 {
                     TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
@@ -1477,7 +1477,7 @@ namespace isc { namespace eval {
 #line 1478 "parser.cc"
     break;
 
-  case 66:
+  case 66: // length_expr: "integer"
 #line 565 "parser.yy"
                  {
                      TokenPtr str(new TokenString(yystack_[0].value.as < std::string > ()));
@@ -1486,7 +1486,7 @@ namespace isc { namespace eval {
 #line 1487 "parser.cc"
     break;
 
-  case 67:
+  case 67: // length_expr: "all"
 #line 570 "parser.yy"
                  {
                      TokenPtr str(new TokenString("all"));
@@ -1906,10 +1906,10 @@ namespace isc { namespace eval {
     -120,   -11,  -120,  -120,  -120,  -120,  -120
   };
 
-  const short
+  const unsigned char
   EvalParser::yydefgoto_[] =
   {
-      -1,     3,    23,    24,    25,    26,    62,    64,   138,    66,
+       0,     3,    23,    24,    25,    26,    62,    64,   138,    66,
       72,    92,    82,    89,   144,   123,   160
   };
 
index a752f55ade61ecaad2ab99bc79cd53a424cb57ae..9e770e1a84abc34ea975d01338185eb4ea646795 100644 (file)
@@ -1,8 +1,8 @@
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Skeleton interface for Bison LALR(1) parsers in C++
 
-// Copyright (C) 2002-2015, 2018-2020 Free Software Foundation, Inc.
+// Copyright (C) 2002-2015, 2018-2021 Free Software Foundation, Inc.
 
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
 // GNU General Public License for more details.
 
 // You should have received a copy of the GNU General Public License
-// along with this program.  If not, see <http://www.gnu.org/licenses/>.
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 // As a special exception, you may create a larger work that contains
 // part or all of the Bison parser skeleton and distribute that work
@@ -103,9 +103,9 @@ using namespace isc::eval;
 #endif
 # include "location.hh"
 #include <typeinfo>
-#ifndef YY_ASSERT
+#ifndef EVAL_ASSERT
 # include <cassert>
-# define YY_ASSERT assert
+# define EVAL_ASSERT assert
 #endif
 
 
@@ -127,9 +127,9 @@ using namespace isc::eval;
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
 #else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
 #endif
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -231,7 +231,7 @@ namespace isc { namespace eval {
     semantic_type (YY_RVREF (T) t)
       : yytypeid_ (&typeid (T))
     {
-      YY_ASSERT (sizeof (T) <= size);
+      EVAL_ASSERT (sizeof (T) <= size);
       new (yyas_<T> ()) T (YY_MOVE (t));
     }
 
@@ -245,7 +245,7 @@ namespace isc { namespace eval {
     /// Destruction, allowed only if empty.
     ~semantic_type () YY_NOEXCEPT
     {
-      YY_ASSERT (!yytypeid_);
+      EVAL_ASSERT (!yytypeid_);
     }
 
 # if 201103L <= YY_CPLUSPLUS
@@ -254,8 +254,8 @@ namespace isc { namespace eval {
     T&
     emplace (U&&... u)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      EVAL_ASSERT (!yytypeid_);
+      EVAL_ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (std::forward <U>(u)...);
     }
@@ -265,8 +265,8 @@ namespace isc { namespace eval {
     T&
     emplace ()
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      EVAL_ASSERT (!yytypeid_);
+      EVAL_ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T ();
     }
@@ -276,8 +276,8 @@ namespace isc { namespace eval {
     T&
     emplace (const T& t)
     {
-      YY_ASSERT (!yytypeid_);
-      YY_ASSERT (sizeof (T) <= size);
+      EVAL_ASSERT (!yytypeid_);
+      EVAL_ASSERT (sizeof (T) <= size);
       yytypeid_ = & typeid (T);
       return *new (yyas_<T> ()) T (t);
     }
@@ -306,9 +306,9 @@ namespace isc { namespace eval {
     T&
     as () YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      EVAL_ASSERT (yytypeid_);
+      EVAL_ASSERT (*yytypeid_ == typeid (T));
+      EVAL_ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -317,9 +317,9 @@ namespace isc { namespace eval {
     const T&
     as () const YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == typeid (T));
-      YY_ASSERT (sizeof (T) <= size);
+      EVAL_ASSERT (yytypeid_);
+      EVAL_ASSERT (*yytypeid_ == typeid (T));
+      EVAL_ASSERT (sizeof (T) <= size);
       return *yyas_<T> ();
     }
 
@@ -335,8 +335,8 @@ namespace isc { namespace eval {
     void
     swap (self_type& that) YY_NOEXCEPT
     {
-      YY_ASSERT (yytypeid_);
-      YY_ASSERT (*yytypeid_ == *that.yytypeid_);
+      EVAL_ASSERT (yytypeid_);
+      EVAL_ASSERT (*yytypeid_ == *that.yytypeid_);
       std::swap (as<T> (), that.as<T> ());
     }
 
@@ -674,45 +674,45 @@ namespace isc { namespace eval {
       {
         switch (this->kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (std::move (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (std::move (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (std::move (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (std::move (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (std::move (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (std::move (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (std::move (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (std::move (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (std::move (that.value));
         break;
 
@@ -726,7 +726,7 @@ namespace isc { namespace eval {
       /// Copy constructor.
       basic_symbol (const basic_symbol& that);
 
-      /// Constructor for valueless symbols, and symbols from each type.
+      /// Constructors for typed symbols.
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, location_type&& l)
         : Base (t)
@@ -738,6 +738,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, TokenOption::RepresentationType&& v, location_type&& l)
         : Base (t)
@@ -751,6 +752,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, TokenPkt4::FieldType&& v, location_type&& l)
         : Base (t)
@@ -764,6 +766,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, TokenPkt6::FieldType&& v, location_type&& l)
         : Base (t)
@@ -777,6 +780,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, TokenPkt::MetadataType&& v, location_type&& l)
         : Base (t)
@@ -790,6 +794,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, TokenRelay6Field::FieldType&& v, location_type&& l)
         : Base (t)
@@ -803,6 +808,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, int8_t&& v, location_type&& l)
         : Base (t)
@@ -816,6 +822,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, std::string&& v, location_type&& l)
         : Base (t)
@@ -829,6 +836,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, uint16_t&& v, location_type&& l)
         : Base (t)
@@ -842,6 +850,7 @@ namespace isc { namespace eval {
         , location (l)
       {}
 #endif
+
 #if 201103L <= YY_CPLUSPLUS
       basic_symbol (typename Base::kind_type t, uint32_t&& v, location_type&& l)
         : Base (t)
@@ -863,7 +872,7 @@ namespace isc { namespace eval {
       }
 
       /// Destroy contents, and record that is empty.
-      void clear ()
+      void clear () YY_NOEXCEPT
       {
         // User destructor.
         symbol_kind_type yykind = this->kind ();
@@ -878,45 +887,45 @@ namespace isc { namespace eval {
         // Value type destructor.
 switch (yykind)
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.template destroy< TokenOption::RepresentationType > ();
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.template destroy< TokenPkt4::FieldType > ();
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.template destroy< TokenPkt6::FieldType > ();
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.template destroy< TokenPkt::MetadataType > ();
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.template destroy< TokenRelay6Field::FieldType > ();
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.template destroy< int8_t > ();
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.template destroy< std::string > ();
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.template destroy< uint16_t > ();
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.template destroy< uint32_t > ();
         break;
 
@@ -976,7 +985,7 @@ switch (yykind)
       by_kind (kind_type t);
 
       /// Record that this symbol is empty.
-      void clear ();
+      void clear () YY_NOEXCEPT;
 
       /// Steal the symbol kind from \a that.
       void move (by_kind& that);
@@ -1009,29 +1018,24 @@ switch (yykind)
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, location_type l)
         : super_type(token_type (tok), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_EVALerror || tok == token::TOKEN_EVALUNDEF || tok == token::TOKEN_LPAREN || tok == token::TOKEN_RPAREN || tok == token::TOKEN_NOT || tok == token::TOKEN_AND || tok == token::TOKEN_OR || tok == token::TOKEN_EQUAL || tok == token::TOKEN_OPTION || tok == token::TOKEN_RELAY4 || tok == token::TOKEN_RELAY6 || tok == token::TOKEN_MEMBER || tok == token::TOKEN_PEERADDR || tok == token::TOKEN_LINKADDR || tok == token::TOKEN_LBRACKET || tok == token::TOKEN_RBRACKET || tok == token::TOKEN_DOT || tok == token::TOKEN_TEXT || tok == token::TOKEN_HEX || tok == token::TOKEN_EXISTS || tok == token::TOKEN_PKT || tok == token::TOKEN_IFACE || tok == token::TOKEN_SRC || tok == token::TOKEN_DST || tok == token::TOKEN_LEN || tok == token::TOKEN_PKT4 || tok == token::TOKEN_CHADDR || tok == token::TOKEN_HLEN || tok == token::TOKEN_HTYPE || tok == token::TOKEN_CIADDR || tok == token::TOKEN_GIADDR || tok == token::TOKEN_YIADDR || tok == token::TOKEN_SIADDR || tok == token::TOKEN_SUBSTRING || tok == token::TOKEN_ALL || tok == token::TOKEN_COMA || tok == token::TOKEN_CONCAT || tok == token::TOKEN_IFELSE || tok == token::TOKEN_TOHEXSTRING || tok == token::TOKEN_PKT6 || tok == token::TOKEN_MSGTYPE || tok == token::TOKEN_TRANSID || tok == token::TOKEN_VENDOR_CLASS || tok == token::TOKEN_VENDOR || tok == token::TOKEN_ANY || tok == token::TOKEN_DATA || tok == token::TOKEN_ENTERPRISE || tok == token::TOKEN_TOPLEVEL_BOOL || tok == token::TOKEN_TOPLEVEL_STRING);
-      }
 #else
       symbol_type (int tok, const location_type& l)
         : super_type(token_type (tok), l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_END || tok == token::TOKEN_EVALerror || tok == token::TOKEN_EVALUNDEF || tok == token::TOKEN_LPAREN || tok == token::TOKEN_RPAREN || tok == token::TOKEN_NOT || tok == token::TOKEN_AND || tok == token::TOKEN_OR || tok == token::TOKEN_EQUAL || tok == token::TOKEN_OPTION || tok == token::TOKEN_RELAY4 || tok == token::TOKEN_RELAY6 || tok == token::TOKEN_MEMBER || tok == token::TOKEN_PEERADDR || tok == token::TOKEN_LINKADDR || tok == token::TOKEN_LBRACKET || tok == token::TOKEN_RBRACKET || tok == token::TOKEN_DOT || tok == token::TOKEN_TEXT || tok == token::TOKEN_HEX || tok == token::TOKEN_EXISTS || tok == token::TOKEN_PKT || tok == token::TOKEN_IFACE || tok == token::TOKEN_SRC || tok == token::TOKEN_DST || tok == token::TOKEN_LEN || tok == token::TOKEN_PKT4 || tok == token::TOKEN_CHADDR || tok == token::TOKEN_HLEN || tok == token::TOKEN_HTYPE || tok == token::TOKEN_CIADDR || tok == token::TOKEN_GIADDR || tok == token::TOKEN_YIADDR || tok == token::TOKEN_SIADDR || tok == token::TOKEN_SUBSTRING || tok == token::TOKEN_ALL || tok == token::TOKEN_COMA || tok == token::TOKEN_CONCAT || tok == token::TOKEN_IFELSE || tok == token::TOKEN_TOHEXSTRING || tok == token::TOKEN_PKT6 || tok == token::TOKEN_MSGTYPE || tok == token::TOKEN_TRANSID || tok == token::TOKEN_VENDOR_CLASS || tok == token::TOKEN_VENDOR || tok == token::TOKEN_ANY || tok == token::TOKEN_DATA || tok == token::TOKEN_ENTERPRISE || tok == token::TOKEN_TOPLEVEL_BOOL || tok == token::TOKEN_TOPLEVEL_STRING);
+        EVAL_ASSERT (tok == token::TOKEN_END
+                   || (token::TOKEN_EVALerror <= tok && tok <= token::TOKEN_TOPLEVEL_STRING));
       }
-#endif
 #if 201103L <= YY_CPLUSPLUS
       symbol_type (int tok, std::string v, location_type l)
         : super_type(token_type (tok), std::move (v), std::move (l))
-      {
-        YY_ASSERT (tok == token::TOKEN_STRING || tok == token::TOKEN_INTEGER || tok == token::TOKEN_HEXSTRING || tok == token::TOKEN_OPTION_NAME || tok == token::TOKEN_IP_ADDRESS);
-      }
 #else
       symbol_type (int tok, const std::string& v, const location_type& l)
         : super_type(token_type (tok), v, l)
+#endif
       {
-        YY_ASSERT (tok == token::TOKEN_STRING || tok == token::TOKEN_INTEGER || tok == token::TOKEN_HEXSTRING || tok == token::TOKEN_OPTION_NAME || tok == token::TOKEN_IP_ADDRESS);
+        EVAL_ASSERT ((token::TOKEN_STRING <= tok && tok <= token::TOKEN_IP_ADDRESS));
       }
-#endif
     };
 
     /// Build a parser object.
@@ -1911,9 +1915,9 @@ switch (yykind)
     {
     public:
       context (const EvalParser& yyparser, const symbol_type& yyla);
-      const symbol_type& lookahead () const { return yyla_; }
-      symbol_kind_type token () const { return yyla_.kind (); }
-      const location_type& location () const { return yyla_.location; }
+      const symbol_type& lookahead () const YY_NOEXCEPT { return yyla_; }
+      symbol_kind_type token () const YY_NOEXCEPT { return yyla_.kind (); }
+      const location_type& location () const YY_NOEXCEPT { return yyla_.location; }
 
       /// Put in YYARG at most YYARGN of the expected tokens, and return the
       /// number of tokens stored in YYARG.  If YYARG is null, return the
@@ -1986,7 +1990,7 @@ switch (yykind)
     static const short yypgoto_[];
 
     // YYDEFGOTO[NTERM-NUM].
-    static const short yydefgoto_[];
+    static const unsigned char yydefgoto_[];
 
     // YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
     // positive, shift that token.  If negative, reduce the rule whose
@@ -2056,7 +2060,7 @@ switch (yykind)
       void move (by_state& that);
 
       /// The symbol kind (corresponding to \a state).
-      /// \a S_YYEMPTY when empty.
+      /// \a symbol_kind::S_YYEMPTY when empty.
       symbol_kind_type kind () const YY_NOEXCEPT;
 
       /// The state number used to denote an empty symbol.
@@ -2288,11 +2292,12 @@ switch (yykind)
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54
     };
-    const int user_token_number_max_ = 309;
+    // Last valid token kind.
+    const int code_max = 309;
 
     if (t <= 0)
       return symbol_kind::S_YYEOF;
-    else if (t <= user_token_number_max_)
+    else if (t <= code_max)
       return YY_CAST (symbol_kind_type, translate_table[t]);
     else
       return symbol_kind::S_YYUNDEF;
@@ -2307,45 +2312,45 @@ switch (yykind)
   {
     switch (this->kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.copy< TokenOption::RepresentationType > (YY_MOVE (that.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.copy< TokenPkt4::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.copy< TokenPkt6::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.copy< TokenPkt::MetadataType > (YY_MOVE (that.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.copy< TokenRelay6Field::FieldType > (YY_MOVE (that.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.copy< int8_t > (YY_MOVE (that.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.copy< std::string > (YY_MOVE (that.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.copy< uint16_t > (YY_MOVE (that.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.copy< uint32_t > (YY_MOVE (that.value));
         break;
 
@@ -2378,45 +2383,45 @@ switch (yykind)
     super_type::move (s);
     switch (this->kind ())
     {
-      case 63: // option_repr_type
+      case symbol_kind::S_option_repr_type: // option_repr_type
         value.move< TokenOption::RepresentationType > (YY_MOVE (s.value));
         break;
 
-      case 67: // pkt4_field
+      case symbol_kind::S_pkt4_field: // pkt4_field
         value.move< TokenPkt4::FieldType > (YY_MOVE (s.value));
         break;
 
-      case 68: // pkt6_field
+      case symbol_kind::S_pkt6_field: // pkt6_field
         value.move< TokenPkt6::FieldType > (YY_MOVE (s.value));
         break;
 
-      case 65: // pkt_metadata
+      case symbol_kind::S_pkt_metadata: // pkt_metadata
         value.move< TokenPkt::MetadataType > (YY_MOVE (s.value));
         break;
 
-      case 69: // relay6_field
+      case symbol_kind::S_relay6_field: // relay6_field
         value.move< TokenRelay6Field::FieldType > (YY_MOVE (s.value));
         break;
 
-      case 64: // nest_level
+      case symbol_kind::S_nest_level: // nest_level
         value.move< int8_t > (YY_MOVE (s.value));
         break;
 
-      case 50: // "constant string"
-      case 51: // "integer"
-      case 52: // "constant hexstring"
-      case 53: // "option name"
-      case 54: // "ip address"
+      case symbol_kind::S_STRING: // "constant string"
+      case symbol_kind::S_INTEGER: // "integer"
+      case symbol_kind::S_HEXSTRING: // "constant hexstring"
+      case symbol_kind::S_OPTION_NAME: // "option name"
+      case symbol_kind::S_IP_ADDRESS: // "ip address"
         value.move< std::string > (YY_MOVE (s.value));
         break;
 
-      case 61: // option_code
-      case 62: // sub_option_code
+      case symbol_kind::S_option_code: // option_code
+      case symbol_kind::S_sub_option_code: // sub_option_code
         value.move< uint16_t > (YY_MOVE (s.value));
         break;
 
-      case 60: // integer_expr
-      case 66: // enterprise_id
+      case symbol_kind::S_integer_expr: // integer_expr
+      case symbol_kind::S_enterprise_id: // enterprise_id
         value.move< uint32_t > (YY_MOVE (s.value));
         break;
 
@@ -2454,7 +2459,7 @@ switch (yykind)
 
   inline
   void
-  EvalParser::by_kind::clear ()
+  EvalParser::by_kind::clear () YY_NOEXCEPT
   {
     kind_ = symbol_kind::S_YYEMPTY;
   }
@@ -2483,8 +2488,7 @@ switch (yykind)
 
 #line 14 "parser.yy"
 } } // isc::eval
-#line 2487 "parser.h"
-
+#line 2492 "parser.h"
 
 
 
index e0ad5903214a86d7e78a5891735cac93e3811489..6575075df1ad61270c3f7cd42643f0307b57d944 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined in "location.hh".
index 8dbe273f87ac707010c4edac08747b6428530cc3..e6c46cc8d62f44563bfc05d4eb598371b04b58c3 100644 (file)
@@ -1,5 +1,4 @@
-// Generated 202007240900
-// A Bison parser, made by GNU Bison 3.6.4.
+// A Bison parser, made by GNU Bison 3.7.6.
 
 // Starting with Bison 3.2, this file is useless: the structure it
 // used to define is now defined with the parser itself.