]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Added qname-minimisation-strict config option.
authorRalph Dolmans <ralph@nlnetlabs.nl>
Tue, 11 Oct 2016 11:32:50 +0000 (11:32 +0000)
committerRalph Dolmans <ralph@nlnetlabs.nl>
Tue, 11 Oct 2016 11:32:50 +0000 (11:32 +0000)
git-svn-id: file:///svn/unbound/trunk@3878 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
iterator/iterator.c
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y

index baec77ee9a4c8fc356a88f54b4a9b2af145f6813..fcf8d662a009535a63c09ec4e8d45109bec8d6e1 100644 (file)
@@ -1,3 +1,6 @@
+11 October 2016:
+       - Added qname-minimisation-strict config option.
+
 5 October 2016: Ralph
        - Added views functionality.
        - Fix #1117: spelling errors, from Robert Edmonds.
index bcef2ee6a0477639b2be6e8b2d439d7b2dca6e24..3761270afaf8053ed9f79108e6591049dde293ad 100644 (file)
@@ -346,6 +346,12 @@ server:
        # privacy. Only sent minimum required labels of the QNAME and set QTYPE
        # to NS when possible.
        # qname-minimisation: no
+       
+       # QNAME minimisation in strict mode. Do not fall-back to sending full
+       # QNAME to potentially broken nameservers. A lot of domains will not be
+       # resolvable when this option in enabled.
+       # This option only has effect when qname-minimisation is enabled.
+       # qname-minimisation-strict: no
 
        # Use 0x20-encoded random bits in the query to foil spoof attempts.
        # This feature is an experimental implementation of draft dns-0x20.
index 5b56200eda0e3412d49fd253e63b939d89ebcbd7..21575ce1dcb79b3a3f77fd208018cd536a14823e 100644 (file)
@@ -661,8 +661,15 @@ Can be given multiple times, for different domains.
 .B qname\-minimisation: \fI<yes or no>
 Send minimum amount of information to upstream servers to enhance privacy.
 Only sent minimum required labels of the QNAME and set QTYPE to NS when 
-possible. Best effort approach, full QNAME and original QTYPE will be sent when
-upstream replies with a RCODE other than NOERROR. Default is off.
+possible. Best effort approach; full QNAME and original QTYPE will be sent when
+upstream replies with a RCODE other than NOERROR, except when receiving
+NXDOMAIN from a DNSSEC signed zone. Default is off.
+.TP
+.B qname\-minimisation\-strict: \fI<yes or no>
+QNAME minimisation in strict mode. Do not fall-back to sending full QNAME to
+potentially broken nameservers. A lot of domains will not be resolvable when
+this option in enabled. Only use if you know what you are doing.
+This option only has effect when qname-minimisation is enabled. Default is off.
 .TP
 .B private\-address: \fI<IP address or subnet>
 Give IPv4 of IPv6 addresses or classless subnets. These are addresses
index cc7e9378c9e76c68a9a7995f3702fca35d973e6e..2afb244968e218bb17ad5925999d555e355509da 100644 (file)
@@ -2088,7 +2088,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
                        /* Do not increment qname, continue incrementing next 
                         * iteration */
                        iq->minimisation_state = MINIMISE_STATE;
-               else
+               else if(!qstate->env->cfg->qname_minimisation_strict)
                        /* Too many time-outs detected for this QNAME and QTYPE.
                         * We give up, disable QNAME minimisation. */
                        iq->minimisation_state = DONOT_MINIMISE_STATE;
@@ -2275,12 +2275,15 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
                                &qstate->reply->addr, qstate->reply->addrlen, 
                                qstate->region);
                if(iq->minimisation_state != DONOT_MINIMISE_STATE) {
-                       /* Best effort qname-minimisation. 
-                        * Stop minimising and send full query when RCODE
-                        * is not NOERROR. */
                        if(FLAGS_GET_RCODE(iq->response->rep->flags) != 
-                               LDNS_RCODE_NOERROR)
+                               LDNS_RCODE_NOERROR) {
+                               if(qstate->env->cfg->qname_minimisation_strict)
+                                       return final_state(iq);
+                               /* Best effort qname-minimisation. 
+                                * Stop minimising and send full query when
+                                * RCODE is not NOERROR. */
                                iq->minimisation_state = DONOT_MINIMISE_STATE;
+                       }
                        if(FLAGS_GET_RCODE(iq->response->rep->flags) ==
                                LDNS_RCODE_NXDOMAIN) {
                                /* Stop resolving when NXDOMAIN is DNSSEC
@@ -2527,7 +2530,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
        /* LAME, THROWAWAY and "unknown" all end up here.
         * Recycle to the QUERYTARGETS state to hopefully try a 
         * different target. */
-       if (qstate->env->cfg->qname_minimisation)
+       if (qstate->env->cfg->qname_minimisation &&
+               !qstate->env->cfg->qname_minimisation_strict)
                iq->minimisation_state = DONOT_MINIMISE_STATE;
        return next_state(iq, QUERYTARGETS_STATE);
 }
index 7d89d2cde04ab17933f9bb31a03f0890b8e1daf1..cce33de5ab034bb69eff6dd95f27748b706dc222 100644 (file)
@@ -247,6 +247,7 @@ config_create(void)
        cfg->ratelimit_below_domain = NULL;
        cfg->ratelimit_factor = 10;
        cfg->qname_minimisation = 0;
+       cfg->qname_minimisation_strict = 0;
        return cfg;
 error_exit:
        config_delete(cfg); 
@@ -486,6 +487,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
        else S_POW2("ratelimit-slabs:", ratelimit_slabs)
        else S_NUMBER_OR_ZERO("ratelimit-factor:", ratelimit_factor)
        else S_YNO("qname-minimisation:", qname_minimisation)
+       else S_YNO("qname-minimisation-strict:", qname_minimisation_strict)
        else if(strcmp(opt, "define-tag:") ==0) {
                return config_add_tag(cfg, val);
        /* val_sig_skew_min and max are copied into val_env during init,
@@ -791,6 +793,7 @@ config_get_option(struct config_file* cfg, const char* opt,
        else O_DEC(opt, "val-sig-skew-min", val_sig_skew_min)
        else O_DEC(opt, "val-sig-skew-max", val_sig_skew_max)
        else O_YNO(opt, "qname-minimisation", qname_minimisation)
+       else O_YNO(opt, "qname-minimisation-strict", qname_minimisation_strict)
        else O_IFC(opt, "define-tag", num_tags, tagname)
        else O_LTG(opt, "local-zone-tag", local_zone_tags)
        else O_LTG(opt, "access-control-tag", acl_tags)
index be8ce02c30c70cbe6bb3196f4f79b54ead3d8401..55aa5c7c97a391e9a2f4111aa1b80aa4216f5c2d 100644 (file)
@@ -401,6 +401,9 @@ struct config_file {
        int ratelimit_factor;
        /** minimise outgoing QNAME and hide original QTYPE if possible */
        int qname_minimisation;
+       /** minimise QNAME in strict mode, minimise according to RFC.
+        *  Do not apply fallback */
+       int qname_minimisation_strict;
 };
 
 /** from cfg username, after daemonise setup performed */
index 07ac1a982e972f4d196ba7937982e2b7a130c69a..4968e6d0b4e60daa90da67d707ce6d3b4f2062c2 100644 (file)
@@ -371,8 +371,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 191
-#define YY_END_OF_BUFFER 192
+#define YY_NUM_RULES 192
+#define YY_END_OF_BUFFER 193
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -380,217 +380,218 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1896] =
+static yyconst flex_int16_t yy_accept[1904] =
     {   0,
-        1,    1,  173,  173,  177,  177,  181,  181,  185,  185,
-        1,    1,  192,  189,    1,  171,  171,  190,    2,  190,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      173,  174,  174,  175,  190,  177,  178,  178,  179,  190,
-      184,  181,  182,  182,  183,  190,  185,  186,  186,  187,
-      190,  188,  172,    2,  176,  190,  188,  189,    0,    1,
-        2,    2,    2,    2,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  173,    0,  177,
-        0,  184,    0,  181,  185,    0,  188,    0,    2,    2,
-      188,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  188,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  188,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,   75,  189,  189,  189,  189,  189,
-      189,    7,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,   84,  188,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  188,  189,
-      189,  189,  189,  189,   35,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  151,  189,   13,   14,  189,
-
-       17,   16,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  137,  189,  189,  189,  189,  189,
-      189,  189,    3,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  188,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  180,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-       38,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,   39,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,   19,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,   92,  189,  180,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,   91,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,   73,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,   24,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,   36,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,   37,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,   26,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  165,  189,  189,  189,
-
-      189,  189,  189,   30,  189,   31,  189,  189,  189,   76,
-      189,   77,  189,   74,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,    6,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  144,  189,  189,  189,  189,   94,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,   27,  189,  189,  189,  189,  189,  189,
-      120,  189,  119,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  189,  189,   15,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,   40,
-      189,  189,  189,  189,  189,  189,  189,  189,   79,   78,
-      189,  189,  189,  189,  189,  189,  189,  116,  189,  189,
-      189,  189,  189,  189,  189,   85,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-       58,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,   62,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,   34,  189,
-
-      189,  189,  189,  189,  189,  189,  189,  118,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,    5,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  112,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  130,
-      189,  113,  189,  189,  142,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,   25,  189,  189,  189,  189,
-       81,  189,   82,   80,  189,  189,  189,  189,  189,  189,
-
-      189,   90,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  114,  189,  189,  189,  189,  189,
-      189,  141,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,   72,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-       32,  189,  189,   21,  189,  189,  189,   18,  189,   99,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,   47,   49,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  152,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,   83,
-
-      189,  189,  189,  189,  189,  189,   89,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,   93,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      136,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  103,  189,  107,  189,  189,  189,  189,
-      189,   88,  189,  189,   68,  189,  128,  189,  189,  189,
-      189,  189,  143,  189,  189,  189,  189,  189,  189,  189,
-      157,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-
-      189,  189,  106,  189,  189,  189,  189,  189,   50,   51,
-      189,  189,   33,   57,  108,  189,  121,  189,  145,  117,
-      189,  189,   43,  189,  110,  189,  189,  189,  189,  189,
-        8,  189,  189,  189,   71,  189,  189,  189,  189,  167,
-      189,  127,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,   95,  156,  189,  189,  189,  189,  189,  189,
-      189,  189,  138,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  109,  189,
-
-      189,   42,   44,  189,  189,  189,  189,  189,  189,  189,
-       70,  189,  189,  189,  189,  166,  189,  189,  189,  189,
-      132,   22,   23,  189,  189,  189,  189,  189,  189,  189,
-       67,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  134,  131,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,   41,  189,  189,  189,  189,  189,
-      189,  189,   12,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,   11,  189,  189,   20,  189,  189,  189,
-      170,  189,   45,  189,  140,  133,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  102,  101,  189,
-
-      189,  189,  189,  135,  129,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,   52,  189,  189,  189,  139,  189,
-      189,  189,  189,  189,  189,  189,  189,   46,  189,  189,
-      189,   96,   98,  122,  189,  189,  189,  100,  189,  189,
-      146,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  153,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  123,  189,  189,  189,   28,  189,
-      189,  189,    4,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  149,  189,  189,  189,  189,  189,
-
-      189,  189,  189,  155,  189,  189,  126,  189,  189,  189,
-      189,  189,  189,  189,   55,  189,   29,  150,  189,   10,
-      189,  189,  189,  189,  189,  124,   59,  189,  189,  189,
-      105,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  154,   86,  189,  189,  189,  189,   61,   65,   60,
-      189,   53,  189,    9,  189,  189,  168,  189,  189,  104,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,   66,   64,  189,   54,  189,  115,  189,
-      125,  189,  189,  189,  189,   97,   48,  189,  189,  189,
-      189,  189,  189,  189,   87,   63,   56,  169,  189,  189,
-
-      189,  148,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,   69,
-      189,  147,  164,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      111,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  160,
-      189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
-      189,  189,  189,  158,  189,  161,  162,  189,  189,  189,
-      189,  189,  159,  163,    0
-
+        1,    1,  174,  174,  178,  178,  182,  182,  186,  186,
+        1,    1,  193,  190,    1,  172,  172,  191,    2,  191,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      174,  175,  175,  176,  191,  178,  179,  179,  180,  191,
+      185,  182,  183,  183,  184,  191,  186,  187,  187,  188,
+      191,  189,  173,    2,  177,  191,  189,  190,    0,    1,
+        2,    2,    2,    2,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  174,    0,  178,
+        0,  185,    0,  182,  186,    0,  189,    0,    2,    2,
+      189,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  189,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  189,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,   76,  190,  190,  190,  190,  190,
+      190,    8,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,   85,  189,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  189,  190,
+      190,  190,  190,  190,   36,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  152,  190,   14,   15,  190,
+
+       18,   17,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  138,  190,  190,  190,  190,  190,
+      190,  190,    3,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  189,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  181,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+       39,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,   40,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,   20,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,   93,  190,  181,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,   92,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,   74,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,   25,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,   37,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,   38,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,   27,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  166,  190,  190,  190,
+
+      190,  190,  190,   31,  190,   32,  190,  190,  190,   77,
+      190,   78,  190,   75,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,    7,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  145,  190,  190,  190,  190,   95,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,   28,  190,  190,  190,  190,  190,  190,
+      121,  190,  120,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  190,  190,   16,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,   41,
+      190,  190,  190,  190,  190,  190,  190,  190,   80,   79,
+      190,  190,  190,  190,  190,  190,  190,  117,  190,  190,
+      190,  190,  190,  190,  190,   86,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+       59,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,   63,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,   35,  190,
+
+      190,  190,  190,  190,  190,  190,  190,  119,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,    6,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  113,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  131,
+      190,  114,  190,  190,  143,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,   26,  190,  190,  190,  190,
+       82,  190,   83,   81,  190,  190,  190,  190,  190,  190,
+
+      190,   91,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  115,  190,  190,  190,  190,  190,
+      190,  142,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,   73,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+       33,  190,  190,   22,  190,  190,  190,   19,  190,  100,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,   48,   50,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  153,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,   84,
+
+      190,  190,  190,  190,  190,  190,   90,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,   94,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      137,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  104,  190,  108,  190,  190,  190,  190,
+      190,   89,  190,  190,   69,  190,  129,  190,  190,  190,
+      190,  190,  144,  190,  190,  190,  190,  190,  190,  190,
+      158,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+
+      190,  190,  107,  190,  190,  190,  190,  190,   51,   52,
+      190,  190,   34,   58,  109,  190,  122,  190,  146,  118,
+      190,  190,   44,  190,  111,  190,  190,  190,  190,  190,
+        9,  190,  190,  190,   72,  190,  190,  190,  190,  168,
+      190,  128,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,   96,  157,  190,  190,  190,  190,  190,  190,
+      190,  190,  139,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  110,  190,
+
+      190,   43,   45,  190,  190,  190,  190,  190,  190,  190,
+       71,  190,  190,  190,  190,  167,  190,  190,  190,  190,
+      133,   23,   24,  190,  190,  190,  190,  190,  190,  190,
+       68,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  135,  132,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,   42,  190,  190,  190,  190,  190,
+      190,  190,   13,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,   12,  190,  190,   21,  190,  190,  190,
+      171,  190,   46,  190,  141,  134,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  103,  102,  190,
+
+      190,  190,  190,  136,  130,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,   53,  190,  190,  190,  140,  190,
+      190,  190,  190,  190,  190,  190,  190,   47,  190,  190,
+      190,   97,   99,  123,  190,  190,  190,  101,  190,  190,
+      147,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  154,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  124,  190,  190,  190,   29,  190,
+      190,  190,  190,    4,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  150,  190,  190,  190,  190,
+
+      190,  190,  190,  190,  156,  190,  190,  127,  190,  190,
+      190,  190,  190,  190,  190,   56,  190,   30,  151,  190,
+       11,  190,  190,  190,  190,  190,  190,  125,   60,  190,
+      190,  190,  106,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  155,   87,  190,  190,  190,  190,   62,
+       66,   61,  190,   54,  190,   10,  190,  190,  190,  169,
+      190,  190,  105,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,   67,   65,  190,   55,
+      190,  116,  190,  190,  126,  190,  190,  190,  190,   98,
+       49,  190,  190,  190,  190,  190,  190,  190,   88,   64,
+
+       57,  190,  170,  190,  190,  190,  149,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,   70,  190,  148,  165,
+      190,  190,  190,  190,  190,  190,    5,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  112,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  161,  190,  190,
+      190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
+      190,  159,  190,  162,  163,  190,  190,  190,  190,  190,
+
+      160,  164,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -633,15 +634,15 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1910] =
+static yyconst flex_int16_t yy_base[1918] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2353, 2241,   50, 3749, 3749, 3749,  129,   94,
+       87,  108, 2353, 2241,   50, 3751, 3751, 3751,  129,   94,
        70,  104,  130,   90,   92,  115,  127,   95,   84,  111,
       137,  148,   50,  170,  122,  150,  157,  160,  140,  181,
-     2186, 3749, 3749, 3749,   70, 2176, 3749, 3749, 3749,   42,
-     1744, 1619, 3749, 3749, 3749,  200, 1496, 3749, 3749, 3749,
-      141, 1425, 3749,  207, 3749,  211,  166, 1292,  217,  120,
+     2186, 3751, 3751, 3751,   70, 2176, 3751, 3751, 3751,   42,
+     1744, 1619, 3751, 3751, 3751,  200, 1496, 3751, 3751, 3751,
+      141, 1425, 3751,  207, 3751,  211,  166, 1292,  217,  120,
         0,  228,    0,    0,  103,  167,  164,  210,  197,  173,
       212,  214,  125,  174,  230,  221,  229,  223,  234,  236,
       237,  231,  244,  251,  238,  248,  255,  254,  256,  261,
@@ -671,11 +672,11 @@ static yyconst flex_int16_t yy_base[1910] =
       685,  686,  697,  687,  688,  693,  698,  700,  699,  705,
       706,  708,  710,  711,  714,  713,  726,  715,  725,  724,
       727,  733,  735,  729,  737,  744,  741,  743,  745,  746,
-      747,  749,  751,  755, 3749,  758,  753,  760,  761,  763,
-      764, 3749,  766,  765,  767,  778,  771,  777,  779,  793,
+      747,  749,  751,  755, 3751,  758,  753,  760,  761,  763,
+      764, 3751,  766,  765,  767,  778,  771,  777,  779,  793,
       789,  769,  775,  790,  795,  792,  798,  799,  819,  801,
       803,  800,  828,  802,  804,  808,  806,  811,  815,  817,
-      826,  813,  834,  837,  838,  836,  839,  840, 3749,  844,
+      826,  813,  834,  837,  838,  836,  839,  840, 3751,  844,
       857,  849,  850,  851,  858,  860,  853,  867,  863,  869,
       870,  871,  874,  873,  883,  880,  887,  891,  884,  895,
 
@@ -687,15 +688,15 @@ static yyconst flex_int16_t yy_base[1910] =
       998,  999, 1000, 1001, 1002, 1004, 1006, 1007, 1014, 1010,
      1012, 1025, 1013, 1021, 1023, 1027, 1030, 1033, 1034, 1035,
      1037, 1042, 1045, 1036, 1048, 1051, 1038, 1053, 1056, 1063,
-     1064, 1057, 1058, 1065, 3749, 1075, 1069, 1072, 1071, 1073,
-     1082, 1079, 1080, 1081, 1107, 3749, 1084, 3749, 3749, 1085,
+     1064, 1057, 1058, 1065, 3751, 1075, 1069, 1072, 1071, 1073,
+     1082, 1079, 1080, 1081, 1107, 3751, 1084, 3751, 3751, 1085,
 
-     3749, 3749, 1086, 1088, 1092, 1105, 1130, 1103, 1093, 1090,
+     3751, 3751, 1086, 1088, 1092, 1105, 1130, 1103, 1093, 1090,
      1101, 1110, 1113, 1117, 1121, 1122, 1128, 1124, 1135, 1139,
      1125, 1138, 1143, 1145, 1146, 1150, 1151, 1152, 1155, 1161,
      1164, 1160, 1166, 1167, 1168, 1170, 1173, 1174, 1171, 1180,
-     1177, 1183, 1187, 1184, 3749, 1185, 1189, 1192, 1193, 1196,
-     1199, 1201, 3749, 1200, 1205, 1202, 1206, 1208, 1209, 1211,
+     1177, 1183, 1187, 1184, 3751, 1185, 1189, 1192, 1193, 1196,
+     1199, 1201, 3751, 1200, 1205, 1202, 1206, 1208, 1209, 1211,
      1213, 1215, 1216, 1218, 1222, 1219, 1232, 1224, 1228, 1239,
      1243, 1237, 1240, 1245, 1246, 1247, 1248, 1255, 1253, 1252,
      1254, 1263, 1260, 1262, 1264, 1266, 1269, 1271, 1272, 1273,
@@ -703,365 +704,367 @@ static yyconst flex_int16_t yy_base[1910] =
 
      1299, 1304, 1308, 1295, 1311, 1315, 1317, 1321, 1322, 1323,
      1330, 1327, 1293, 1332, 1324, 1334, 1339, 1343, 1341, 1344,
-     1345, 1351, 1352, 3749, 1359, 1357, 1347, 1355, 1367, 1365,
+     1345, 1351, 1352, 3751, 1359, 1357, 1347, 1355, 1367, 1365,
      1361, 1363, 1369, 1373, 1371, 1374, 1375, 1377, 1378, 1381,
-     3749, 1383, 1386, 1384, 1388, 1389, 1392, 1396, 1400, 1403,
-     1406, 3749, 1407, 1413, 1410, 1415, 1416, 1409, 1417, 1420,
+     3751, 1383, 1386, 1384, 1388, 1389, 1392, 1396, 1400, 1403,
+     1406, 3751, 1407, 1413, 1410, 1415, 1416, 1409, 1417, 1420,
      1421, 1422, 1426, 1428, 1435, 1434, 1436, 1438, 1439, 1427,
-     1444, 1446, 1449, 1451, 1452, 1453, 1454, 3749, 1455, 1457,
+     1444, 1446, 1449, 1451, 1452, 1453, 1454, 3751, 1455, 1457,
      1456, 1462, 1466, 1475, 1463, 1477, 1469, 1472, 1479, 1484,
-     1481, 1483, 1482, 1485, 3749, 1487,  158, 1489, 1490, 1493,
+     1481, 1483, 1482, 1485, 3751, 1487,  158, 1489, 1490, 1493,
 
      1500, 1502, 1504, 1507, 1494, 1511, 1514, 1515, 1498, 1516,
      1518, 1520, 1522, 1524, 1526, 1528, 1527, 1531, 1535, 1529,
      1537, 1542, 1541, 1543, 1548, 1546, 1549, 1550, 1556, 1555,
      1557, 1558, 1561, 1562, 1563, 1566, 1567, 1570, 1571, 1575,
-     1579, 3749, 1583, 1577, 1581, 1580, 1592, 1584, 1599, 1590,
+     1579, 3751, 1583, 1577, 1581, 1580, 1592, 1584, 1599, 1590,
      1593, 1601, 1603, 1604, 1610, 1611, 1614, 1615, 1617, 1621,
      1622, 1623, 1606, 1631, 1633, 1629, 1632, 1638, 1639, 1643,
-     1635, 3749, 1644, 1642, 1645, 1650, 1665, 1653, 1649, 1661,
-     1662, 1655, 1666, 1671, 1672, 1675, 3749, 1677, 1678, 1679,
+     1635, 3751, 1644, 1642, 1645, 1650, 1665, 1653, 1649, 1661,
+     1662, 1655, 1666, 1671, 1672, 1675, 3751, 1677, 1678, 1679,
      1682, 1684, 1686, 1688, 1690, 1692, 1694, 1695, 1696, 1705,
 
-     1697, 1702, 1700, 3749, 1714, 1716, 1713, 1722, 1710, 1720,
+     1697, 1702, 1700, 3751, 1714, 1716, 1713, 1722, 1710, 1720,
      1721, 1724, 1725, 1726, 1727, 1733, 1729, 1731, 1730, 1734,
-     1735, 1737, 1738, 1740, 1748, 1755, 1741, 1756, 3749, 1747,
+     1735, 1737, 1738, 1740, 1748, 1755, 1741, 1756, 3751, 1747,
      1770, 1759, 1767, 1760, 1771, 1777, 1774, 1773, 1776, 1625,
      1779, 1781, 1780, 1782, 1783, 1788, 1789, 1790, 1792, 1794,
      1791, 1796, 1793, 1811, 1799, 1803, 1805, 1813, 1814, 1818,
-     1826, 1827, 1824, 1828, 3749, 1831, 1832, 1815, 1834, 1837,
+     1826, 1827, 1824, 1828, 3751, 1831, 1832, 1815, 1834, 1837,
      1838, 1845, 1847, 1841, 1843, 1848, 1849, 1850, 1858, 1852,
      1854, 1859, 1861, 1855, 1863, 1864, 1865, 1867, 1875, 1877,
-     1881, 1885, 1882, 1883, 1888, 1891, 3749, 1894, 1899, 1900,
+     1881, 1885, 1882, 1883, 1888, 1891, 3751, 1894, 1899, 1900,
 
-     1902, 1896, 1908, 3749, 1872, 3749, 1904, 1911, 1918, 3749,
-     1920, 3749, 1922, 3749, 1923, 1924, 1915, 1907, 1917, 1928,
-     1927, 1935, 1929, 1936, 1938, 1939, 1940, 1943, 1941, 3749,
+     1902, 1896, 1908, 3751, 1872, 3751, 1904, 1911, 1918, 3751,
+     1920, 3751, 1922, 3751, 1923, 1924, 1915, 1907, 1917, 1928,
+     1927, 1935, 1929, 1936, 1938, 1939, 1940, 1943, 1941, 3751,
      1948, 1945, 1951, 1952, 1954, 1955, 1956, 1957, 1958, 1967,
-     1968, 1977, 1961, 1979, 3749, 1970, 1983, 1971, 1980, 3749,
+     1968, 1977, 1961, 1979, 3751, 1970, 1983, 1971, 1980, 3751,
      1964, 1991, 1985, 1987, 1993, 1994, 1995, 2001, 1998, 2002,
      2005, 2009, 2012, 2006, 2014, 2015, 2016, 2022, 2018, 2020,
      2029, 2026, 2019, 2023, 2030, 2032, 2036, 2034, 2044, 2038,
-     2040, 2042, 2045, 3749, 2052, 2049, 2053, 2055, 2061, 2059,
-     3749, 2057, 3749, 2064, 2071, 2076, 2067, 2069, 2065, 2079,
-
-     2080, 2087, 2086, 2090, 2092, 2093, 2094, 2096, 2095, 3749,
-     2097, 2098, 2099, 2101, 2104, 2109, 2118, 2115, 2102, 3749,
-     2126, 2123, 2130, 2128, 2129, 2136, 2132, 2135, 3749, 3749,
-     2139, 2137, 2140, 2142, 2148, 2146, 2151, 3749, 2152, 2153,
-     2154, 2155, 2163, 2156, 2164, 3749, 2166, 2171, 2174, 2173,
+     2040, 2042, 2045, 3751, 2052, 2049, 2053, 2055, 2061, 2059,
+     3751, 2057, 3751, 2064, 2071, 2076, 2067, 2069, 2065, 2079,
+
+     2080, 2087, 2086, 2090, 2092, 2093, 2094, 2096, 2095, 3751,
+     2097, 2098, 2099, 2101, 2104, 2109, 2118, 2115, 2102, 3751,
+     2126, 2123, 2130, 2128, 2129, 2136, 2132, 2135, 3751, 3751,
+     2139, 2137, 2140, 2142, 2148, 2146, 2151, 3751, 2152, 2153,
+     2154, 2155, 2163, 2156, 2164, 3751, 2166, 2171, 2174, 2173,
      2167, 2177, 2175, 2183, 2184, 2182, 2185, 2193, 2103, 2198,
-     3749, 2190, 2199, 2202, 2203, 2204, 2205, 2206, 2207, 2211,
+     3751, 2190, 2199, 2202, 2203, 2204, 2205, 2206, 2207, 2211,
      2210, 2213, 2212, 2221, 2228, 2217, 2224, 2225, 2230, 2226,
-     2235, 2237, 2240, 2247, 2248, 3749, 2254, 2239, 2255, 2231,
-     2253, 2258, 2265, 2261, 2262, 2263, 2269, 2266, 3749, 2267,
+     2235, 2237, 2240, 2247, 2248, 3751, 2254, 2239, 2255, 2231,
+     2253, 2258, 2265, 2261, 2262, 2263, 2269, 2266, 3751, 2267,
 
-     2268, 2271, 2272, 2276, 2279, 2278, 2284, 3749, 2287, 2291,
-     2288, 2294, 2293, 2292, 2304, 2295, 2297, 3749, 2306, 2312,
+     2268, 2271, 2272, 2276, 2279, 2278, 2284, 3751, 2287, 2291,
+     2288, 2294, 2293, 2292, 2304, 2295, 2297, 3751, 2306, 2312,
      2308, 2309, 2315, 2319, 2323, 2320, 2317, 2324, 2327, 2329,
      2330, 2331, 2332, 2334, 2336, 2337, 2338, 2339, 2343, 2348,
      2350, 2355, 2342, 2357, 2364, 2368, 2370, 2377, 2360, 2362,
-     2378, 2375, 2376, 2379, 2381, 2388, 2382, 2389, 2385, 3749,
-     2390, 2394, 2399, 2401, 2392, 2396, 2403, 2405, 2407, 3749,
-     2409, 3749, 2410, 2415, 3749, 2417, 2419, 2420, 2421, 2423,
-     2424, 2422, 2428, 2436, 2425, 3749, 2434, 2432, 2438, 2442,
-     3749, 2445, 3749, 3749, 2437, 2448, 2454, 1097, 2455, 2457,
-
-     2461, 3749, 2458, 2453, 2463, 2466, 2467, 2468, 2469, 2470,
-     2471, 2472, 2474, 2476, 3749, 2478, 2477, 2484, 2485, 2486,
-     2489, 3749, 2491, 2500, 2492, 2501, 2507, 2503, 2510, 2495,
-     2504, 2516, 2512, 2514, 2520, 3749, 2519, 2521, 2523, 2525,
+     2378, 2375, 2376, 2379, 2381, 2388, 2382, 2389, 2385, 3751,
+     2390, 2394, 2399, 2401, 2392, 2396, 2403, 2405, 2407, 3751,
+     2409, 3751, 2410, 2415, 3751, 2417, 2419, 2420, 2421, 2423,
+     2424, 2422, 2428, 2436, 2425, 3751, 2434, 2432, 2438, 2442,
+     3751, 2445, 3751, 3751, 2437, 2448, 2454, 1097, 2455, 2457,
+
+     2461, 3751, 2458, 2453, 2463, 2466, 2467, 2468, 2469, 2470,
+     2471, 2472, 2474, 2476, 3751, 2478, 2477, 2484, 2485, 2486,
+     2489, 3751, 2491, 2500, 2492, 2501, 2507, 2503, 2510, 2495,
+     2504, 2516, 2512, 2514, 2520, 3751, 2519, 2521, 2523, 2525,
      2529, 2530, 2536, 2532, 2539, 2533, 2534, 2540, 2547, 2548,
-     3749, 2549, 2552, 3749, 2551, 2553, 2555, 3749, 2559, 3749,
+     3751, 2549, 2552, 3751, 2551, 2553, 2555, 3751, 2559, 3751,
      2561, 2562, 2558, 2563, 2569, 2566, 2579, 2570, 2576, 2581,
-     2574, 2593, 2582, 2584, 3749, 3749, 2595, 2591, 2597, 2598,
-     2601, 2585, 2607, 2605, 2609, 3749, 2606, 2611, 2612, 2614,
-     2615, 2618, 2617, 2622, 2619, 2624, 2625, 2626, 2627, 3749,
+     2574, 2593, 2582, 2584, 3751, 3751, 2595, 2591, 2597, 2598,
+     2601, 2585, 2607, 2605, 2609, 3751, 2606, 2611, 2612, 2614,
+     2615, 2618, 2617, 2622, 2619, 2624, 2625, 2626, 2627, 3751,
 
-     2628, 2632, 2634, 2637, 2638, 2640, 3749, 2642, 2644, 2649,
+     2628, 2632, 2634, 2637, 2638, 2640, 3751, 2642, 2644, 2649,
      2643, 2654, 2659, 2664, 2666, 2655, 2668, 2672, 2674, 2676,
-     2669, 2678, 2679, 2683, 2685, 2680, 3749, 2686, 2690, 2687,
+     2669, 2678, 2679, 2683, 2685, 2680, 3751, 2686, 2690, 2687,
      2693, 2694, 2695, 2645, 2702, 2705, 2696, 2698, 2700, 2708,
-     3749, 2709, 2710, 2711, 2716, 2722, 2717, 2724, 2714, 2727,
+     3751, 2709, 2710, 2711, 2716, 2722, 2717, 2724, 2714, 2727,
      2725, 2730, 2732, 2731, 2735, 2738, 2739, 2743, 2741, 2745,
-     2746, 2752, 2749, 3749, 2751, 3749, 2755, 2761, 2768, 2765,
-     2757, 3749, 2767, 2769, 3749, 2772, 3749, 2770, 2775, 2776,
-     2781, 2786, 3749, 2788, 2783, 2789, 2791, 2792, 2794, 2798,
-     3749, 2800, 2802, 2808, 2809, 2795, 2810, 2812, 2801, 2817,
-
-     2823, 2819, 3749, 2811, 2826, 2833, 2829, 2830, 3749, 3749,
-     2820, 2835, 3749, 3749, 3749, 2839, 3749, 2840, 3749, 3749,
-     2841, 2843, 3749, 2845, 3749, 2852, 2848, 2850, 2851, 2854,
-     3749, 2853, 2855, 2857, 3749, 2860, 2868, 2861, 2862, 3749,
-     2865, 3749, 2870, 2874, 2871, 2878, 2881, 2887, 2889, 2882,
+     2746, 2752, 2749, 3751, 2751, 3751, 2755, 2761, 2768, 2765,
+     2757, 3751, 2767, 2769, 3751, 2772, 3751, 2770, 2775, 2776,
+     2781, 2786, 3751, 2788, 2783, 2789, 2791, 2792, 2794, 2798,
+     3751, 2800, 2802, 2808, 2809, 2795, 2810, 2812, 2801, 2817,
+
+     2823, 2819, 3751, 2811, 2826, 2833, 2829, 2830, 3751, 3751,
+     2820, 2835, 3751, 3751, 3751, 2839, 3751, 2840, 3751, 3751,
+     2841, 2843, 3751, 2845, 3751, 2852, 2848, 2850, 2851, 2854,
+     3751, 2853, 2855, 2857, 3751, 2860, 2868, 2861, 2862, 3751,
+     2865, 3751, 2870, 2874, 2871, 2878, 2881, 2887, 2889, 2882,
      2884, 2891, 2892, 2893, 2890, 2896, 2898, 2899, 2900, 2901,
      2906, 2907, 2909, 2910, 2913, 2912, 2914, 2915, 2924, 2918,
-     2928, 2932, 3749, 3749, 2925, 2934, 2935, 2938, 2937, 2939,
-     2942, 2940, 3749, 2944, 2947, 2948, 2949, 2950, 2951, 2954,
-     2953, 2962, 2971, 2963, 2965, 2967, 2973, 2974, 3749, 2975,
-
-     2976, 3749, 3749, 2977, 2979, 2988, 2983, 2985, 2990, 2992,
-     3749, 2991, 3000, 3002, 2999, 3749, 3008, 3005, 3010, 3014,
-     3749, 3749, 3749, 3015, 3011, 3017, 3018, 3020, 3019, 3021,
-     3749, 3022, 3027, 3030, 3028, 3040, 3042, 3044, 3031, 3050,
-     3047, 3049, 3054, 3749, 3749, 3046, 3060, 3057, 3058, 3056,
-     3062, 3064, 3066, 3067, 3749, 3070, 3068, 3069, 3074, 3075,
-     3080, 3076, 3749, 3078, 3087, 3089, 3091, 3092, 3093, 3094,
-     3096, 3101, 3099, 3749, 3103, 3100, 3749, 3106, 3105, 3114,
-     3749, 3115, 3749, 3118, 3749, 3749, 3120, 3121, 3123, 3125,
-     3128, 3131, 3132, 3133, 3139, 3136, 3137, 3749, 3749, 3143,
-
-     3144, 3145, 3153, 3749, 3749, 3149, 3146, 3152, 3155, 3156,
+     2928, 2932, 3751, 3751, 2925, 2934, 2935, 2938, 2937, 2939,
+     2942, 2940, 3751, 2944, 2947, 2948, 2949, 2950, 2951, 2954,
+     2953, 2962, 2971, 2963, 2965, 2967, 2973, 2974, 3751, 2975,
+
+     2976, 3751, 3751, 2977, 2979, 2988, 2983, 2985, 2990, 2992,
+     3751, 2991, 3000, 3002, 2999, 3751, 3008, 3005, 3010, 3014,
+     3751, 3751, 3751, 3015, 3011, 3017, 3018, 3020, 3019, 3021,
+     3751, 3022, 3027, 3030, 3028, 3040, 3042, 3044, 3031, 3050,
+     3047, 3049, 3054, 3751, 3751, 3046, 3060, 3057, 3058, 3056,
+     3062, 3064, 3066, 3067, 3751, 3070, 3068, 3069, 3074, 3075,
+     3080, 3076, 3751, 3078, 3087, 3089, 3091, 3092, 3093, 3094,
+     3096, 3101, 3099, 3751, 3103, 3100, 3751, 3106, 3105, 3114,
+     3751, 3115, 3751, 3118, 3751, 3751, 3120, 3121, 3123, 3125,
+     3128, 3131, 3132, 3133, 3139, 3136, 3137, 3751, 3751, 3143,
+
+     3144, 3145, 3153, 3751, 3751, 3149, 3146, 3152, 3155, 3156,
      3158, 3160, 3161, 3162, 3165, 3168, 3174, 3166, 3178, 3171,
-     3177, 3179, 3181, 3185, 3749, 3187, 3189, 3190, 3749, 3193,
-     3197, 3194, 3199, 3200, 3207, 3204, 3209, 3749, 3210, 3202,
-     3212, 3749, 3749, 3749, 3216, 3222, 3220, 3749, 3225, 3227,
-     3749, 3233, 3226, 3224, 3239, 3236, 3238, 3240, 3246, 3242,
-     3248, 3749, 3245, 3250, 3252, 3249, 3254, 3255, 3256, 3260,
-     3261, 3259, 3270, 3262, 3749, 3273, 3277, 3274, 3749, 3283,
-     3278, 3280, 3749, 3286, 3288, 3284, 3290, 3292, 3293, 3295,
-     3294, 3297, 3301, 3299, 3749, 3305, 3308, 3310, 3311, 3315,
-
-     3323, 3309, 3320, 3749, 3322, 3324, 3749, 3325, 3331, 3332,
-     3336, 3339, 3341, 3342, 3749, 3349, 3749, 3749, 3350, 3749,
-     3353, 3344, 3346, 3357, 3354, 3749, 3749, 3360, 3362, 3364,
-     3749, 3363, 3365, 3366, 3367, 3370, 3372, 3373, 3374, 3375,
-     3376, 3749, 3749, 3377, 3387, 3394, 3329, 3749, 3749, 3749,
-     3399, 3749, 3380, 3749, 3401, 3388, 3749, 3404, 3395, 3749,
-     3405, 3406, 3407, 3412, 3414, 3416, 3409, 3417, 3418, 3419,
-     3420, 3422, 3427, 3749, 3749, 3429, 3749, 3431, 3749, 3436,
-     3749, 3433, 3437, 3440, 3443, 3749, 3749, 3444, 3451, 3448,
-     3449, 3450, 3452, 3456, 3749, 3749, 3749, 3749, 3453, 3458,
-
-     3459, 3749, 3460, 3461, 3463, 3465, 3464, 3466, 3475, 3468,
-     3476, 3487, 3489, 3479, 3492, 3477, 3481, 3498, 3494, 3749,
-     3495, 3749, 3749, 3499, 3505, 3506, 3503, 3507, 3504, 3511,
-     3509, 3513, 3514, 3512, 3516, 3519, 3515, 3529, 3532, 3533,
-     3535, 3522, 3544, 3543, 3545, 3536, 3546, 3553, 3547, 3549,
-     3749, 3551, 3550, 3554, 3557, 3558, 3563, 3560, 3571, 3574,
-     3576, 3577, 3561, 3583, 3578, 3586, 3587, 3589, 3588, 3749,
-     3590, 3591, 3592, 3597, 3598, 3600, 3601, 3602, 3605, 3608,
-     3610, 3613, 3614, 3749, 3617, 3749, 3749, 3618, 3624, 3625,
-     3627, 3629, 3749, 3749, 3749, 3657, 3664, 3671, 3678, 3685,
-
-       94, 3692, 3699, 3706, 3713, 3720, 3727, 3734, 3741
+     3177, 3179, 3181, 3185, 3751, 3187, 3189, 3190, 3751, 3193,
+     3197, 3194, 3199, 3200, 3207, 3204, 3209, 3751, 3210, 3212,
+     3213, 3751, 3751, 3751, 3216, 3222, 3220, 3751, 3225, 3227,
+     3751, 3233, 3226, 3214, 3241, 3237, 3239, 3242, 3245, 3243,
+     3247, 3751, 3248, 3249, 3251, 3252, 3253, 3254, 3255, 3257,
+     3261, 3259, 3272, 3263, 3751, 3276, 3278, 3279, 3751, 3281,
+     3269, 3273, 3283, 3751, 3286, 3290, 3288, 3292, 3294, 3295,
+     3297, 3298, 3300, 3303, 3307, 3751, 3301, 3305, 3312, 3311,
+
+     3317, 3324, 3320, 3322, 3751, 3327, 3323, 3751, 3328, 3329,
+     3330, 3332, 3340, 3345, 3341, 3751, 3348, 3751, 3751, 3349,
+     3751, 3352, 3353, 3334, 3355, 3357, 3358, 3751, 3751, 3360,
+     3362, 3365, 3751, 3359, 3366, 3369, 3371, 3372, 3373, 3376,
+     3377, 3375, 3382, 3751, 3751, 3378, 3385, 3389, 3393, 3751,
+     3751, 3751, 3400, 3751, 3401, 3751, 3403, 3390, 3404, 3751,
+     3407, 3409, 3751, 3410, 3411, 3412, 3415, 3417, 3421, 3419,
+     3422, 3425, 3427, 3429, 3423, 3431, 3751, 3751, 3436, 3751,
+     3439, 3751, 3440, 3448, 3751, 3433, 3450, 3441, 3453, 3751,
+     3751, 3454, 3460, 3458, 3459, 3443, 3461, 3465, 3751, 3751,
+
+     3751, 3463, 3751, 3467, 3468, 3469, 3751, 3473, 3474, 3470,
+     3475, 3476, 3477, 3480, 3478, 3486, 3482, 3497, 3500, 3501,
+     3503, 3490, 3494, 3510, 3504, 3512, 3751, 3507, 3751, 3751,
+     3513, 3519, 3521, 3517, 3520, 3523, 3751, 3524, 3525, 3526,
+     3527, 3528, 3529, 3530, 3536, 3545, 3543, 3549, 3551, 3541,
+     3557, 3559, 3561, 3550, 3553, 3567, 3563, 3564, 3751, 3565,
+     3566, 3571, 3573, 3574, 3576, 3578, 3579, 3583, 3587, 3588,
+     3589, 3594, 3591, 3596, 3599, 3600, 3601, 3751, 3602, 3604,
+     3606, 3610, 3611, 3613, 3614, 3615, 3622, 3617, 3627, 3631,
+     3628, 3751, 3634, 3751, 3751, 3636, 3619, 3623, 3644, 3646,
+
+     3751, 3751, 3751, 3659, 3666, 3673, 3680, 3687,   94, 3694,
+     3701, 3708, 3715, 3722, 3729, 3736, 3743
     } ;
 
-static yyconst flex_int16_t yy_def[1910] =
+static yyconst flex_int16_t yy_def[1918] =
     {   0,
-     1895,    1, 1896, 1896, 1897, 1897, 1898, 1898, 1899, 1899,
-     1900, 1900, 1895, 1901, 1895, 1895, 1895, 1895, 1902, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1903, 1895, 1895, 1895, 1903, 1904, 1895, 1895, 1895, 1904,
-     1905, 1895, 1895, 1895, 1895, 1905, 1906, 1895, 1895, 1895,
-     1906, 1907, 1895, 1908, 1895, 1907, 1907, 1901, 1901, 1895,
-     1909, 1902, 1909, 1902, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1903, 1903, 1904,
-     1904, 1905, 1905, 1895, 1906, 1906, 1907, 1907, 1908, 1908,
-     1907, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1907, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1907, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1907,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1907, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1895, 1901, 1895, 1895, 1901,
-
-     1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1907, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1907, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1895,
-     1901, 1895, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1895, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901,
-     1895, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1895, 1901, 1901, 1901, 1895, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-
-     1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901,
-     1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1895, 1895,
-     1901, 1901, 1895, 1895, 1895, 1901, 1895, 1901, 1895, 1895,
-     1901, 1901, 1895, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1895,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901,
-
-     1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901,
-     1895, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1901,
-     1895, 1901, 1895, 1901, 1895, 1895, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1895, 1901,
-
-     1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1895, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895, 1901, 1901,
-     1901, 1895, 1895, 1895, 1901, 1901, 1901, 1895, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1895, 1901,
-     1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1901, 1901, 1901, 1901,
-
-     1901, 1901, 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1901, 1895, 1895, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1895, 1895, 1901, 1901, 1901, 1901, 1895, 1895, 1895,
-     1901, 1895, 1901, 1895, 1901, 1901, 1895, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1895, 1901, 1895, 1901, 1895, 1901,
-     1895, 1901, 1901, 1901, 1901, 1895, 1895, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1895, 1895, 1895, 1895, 1901, 1901,
-
-     1901, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1895, 1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1895, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1895,
-     1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901, 1901,
-     1901, 1901, 1901, 1895, 1901, 1895, 1895, 1901, 1901, 1901,
-     1901, 1901, 1895, 1895,    0, 1895, 1895, 1895, 1895, 1895,
-
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895
+     1903,    1, 1904, 1904, 1905, 1905, 1906, 1906, 1907, 1907,
+     1908, 1908, 1903, 1909, 1903, 1903, 1903, 1903, 1910, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1911, 1903, 1903, 1903, 1911, 1912, 1903, 1903, 1903, 1912,
+     1913, 1903, 1903, 1903, 1903, 1913, 1914, 1903, 1903, 1903,
+     1914, 1915, 1903, 1916, 1903, 1915, 1915, 1909, 1909, 1903,
+     1917, 1910, 1917, 1910, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1911, 1911, 1912,
+     1912, 1913, 1913, 1903, 1914, 1914, 1915, 1915, 1916, 1916,
+     1915, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1915, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1915, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1915,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1915, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1903, 1903, 1909,
+
+     1903, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1915, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1915, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1903, 1909, 1903, 1909, 1909, 1909, 1903,
+     1909, 1903, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903,
+     1909, 1903, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+     1903, 1909, 1903, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1903, 1909, 1909, 1909, 1903, 1909, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1903, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903,
+
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1903, 1909, 1903, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1903, 1909, 1903, 1909, 1909, 1909,
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1903, 1903,
+     1909, 1909, 1903, 1903, 1903, 1909, 1903, 1909, 1903, 1903,
+     1909, 1909, 1903, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1903,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1903, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909,
+
+     1909, 1903, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+     1903, 1903, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1903, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1903, 1909, 1909, 1903, 1909, 1909, 1909,
+     1903, 1909, 1903, 1909, 1903, 1903, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1903, 1909,
+
+     1909, 1909, 1909, 1903, 1903, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1903, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909,
+     1909, 1903, 1903, 1903, 1909, 1909, 1909, 1903, 1909, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1903, 1909,
+     1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909, 1909,
+
+     1909, 1909, 1909, 1909, 1903, 1909, 1909, 1903, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1903, 1909, 1903, 1903, 1909,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1903, 1909,
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1903, 1903, 1909, 1909, 1909, 1909, 1903,
+     1903, 1903, 1909, 1903, 1909, 1903, 1909, 1909, 1909, 1903,
+     1909, 1909, 1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1903, 1909, 1903,
+     1909, 1903, 1909, 1909, 1903, 1909, 1909, 1909, 1909, 1903,
+     1903, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1903,
+
+     1903, 1909, 1903, 1909, 1909, 1909, 1903, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1903, 1903,
+     1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1903, 1909, 1909,
+     1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909, 1909,
+     1909, 1903, 1909, 1903, 1903, 1909, 1909, 1909, 1909, 1909,
+
+     1903, 1903,    0, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903
     } ;
 
-static yyconst flex_int16_t yy_nxt[3789] =
+static yyconst flex_int16_t yy_nxt[3791] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -1321,7 +1324,7 @@ static yyconst flex_int16_t yy_nxt[3789] =
        69,   69, 1234, 1230,   69, 1229, 1235,   69, 1233,   69,
      1226,   69,   69, 1228, 1236,   69,   69, 1237, 1238,   69,
      1232,   69,   69,   69,   69, 1242,   69, 1245,   69,   69,
-       69,   69, 1895, 1241,   69,   69, 1239, 1249, 1240, 1251,
+       69,   69, 1903, 1241,   69,   69, 1239, 1249, 1240, 1251,
        69, 1243,   69, 1246, 1250, 1248, 1254,   69, 1247,   69,
      1244, 1257,   69, 1252,   69, 1255,   69, 1259, 1253, 1258,
        69, 1260,   69, 1256, 1261, 1264, 1263,   69,   69,   69,
@@ -1393,18 +1396,18 @@ static yyconst flex_int16_t yy_nxt[3789] =
      1559, 1560, 1561,   69, 1562,   69,   69,   69,   69,   69,
      1568,   69, 1566, 1565, 1573,   69, 1570,   69, 1567, 1574,
 
-       69, 1577,   69,   69,   69, 1895, 1569, 1571, 1578, 1572,
+       69, 1577,   69,   69,   69, 1903, 1569, 1571, 1578, 1572,
      1575,   69,   69, 1581,   69, 1576, 1580,   69, 1579, 1583,
        69, 1585,   69,   69, 1582, 1586,   69,   69, 1587,   69,
        69,   69,   69,   69,   69, 1590, 1584, 1591, 1589,   69,
-       69, 1593,   69,   69, 1595, 1588, 1895, 1596, 1601, 1594,
+       69, 1593,   69,   69, 1595, 1588, 1903, 1596, 1601, 1594,
      1592, 1598,   69, 1599,   69, 1597,   69, 1602,   69,   69,
      1604,   69,   69, 1600, 1603, 1605,   69, 1607,   69,   69,
        69, 1606,   69, 1608,   69, 1609,   69, 1610,   69,   69,
        69,   69,   69, 1613, 1612, 1615,   69,   69,   69, 1611,
        69, 1614,   69, 1620, 1617, 1618, 1619, 1621, 1616,   69,
 
-     1895,   69, 1625,   69,   69,   69,   69, 1629,   69, 1622,
+     1903,   69, 1625,   69,   69,   69,   69, 1629,   69, 1622,
      1628,   69,   69,   69, 1627,   69, 1631,   69,   69, 1623,
      1624, 1630, 1634, 1626, 1632, 1633,   69,   69, 1637, 1638,
        69, 1635,   69,   69, 1640,   69, 1642,   69, 1641, 1643,
@@ -1416,72 +1419,72 @@ static yyconst flex_int16_t yy_nxt[3789] =
        69,   69, 1663,   69, 1668, 1669, 1665,   69, 1675,   69,
 
      1672,   69,   69, 1670, 1676,   69,   69, 1677, 1679,   69,
-     1680,   69,   69, 1673,   69, 1671,   69, 1674, 1683,   69,
-     1681,   69,   69, 1678,   69, 1895, 1687, 1682,   69, 1684,
-     1685, 1686,   69, 1689,   69, 1690,   69,   69,   69,   69,
-     1693, 1691, 1692, 1694, 1695,   69, 1698, 1696,   69, 1688,
-       69,   69,   69, 1702,   69, 1700, 1697,   69,   69, 1704,
-       69,   69,   69, 1707,   69, 1708,   69,   69,   69, 1699,
-     1701,   69,   69,   69,   69, 1709, 1705, 1706, 1713, 1703,
-     1712, 1715,   69, 1710, 1717,   69,   69, 1711, 1718,   69,
-       69, 1719,   69, 1716, 1720,   69,   69, 1714,   69, 1723,
-
-       69, 1726,   69, 1727,   69,   69,   69,   69, 1731,   69,
-     1721,   69, 1733,   69, 1724, 1722, 1732,   69, 1725, 1729,
-       69,   69,   69,   69, 1728, 1736, 1730,   69, 1737, 1734,
-     1739, 1742,   69, 1743,   69,   69,   69,   69, 1740, 1741,
-     1735,   69, 1745,   69,   69, 1776, 1738, 1748,   69, 1747,
-     1749,   69, 1750,   69,   69, 1744,   69, 1746,   69, 1751,
-     1752,   69,   69, 1753, 1754,   69,   69, 1756, 1757,   69,
-     1755, 1758,   69, 1760,   69,   69,   69,   69,   69,   69,
-     1759, 1761,   69, 1764,   69,   69,   69,   69,   69,   69,
-     1766, 1765,   69, 1772, 1895, 1762, 1778, 1763, 1774,   69,
-
-       69, 1768, 1767, 1769, 1770, 1775,   69,   69, 1771, 1773,
-     1777,   69, 1779,   69, 1780, 1781,   69,   69,   69,   69,
-     1785,   69, 1782, 1786,   69, 1787,   69, 1784,   69,   69,
-       69,   69,   69, 1788,   69, 1783, 1792, 1793, 1795,   69,
-     1796,   69, 1797,   69, 1790,   69, 1789, 1798,   69,   69,
-     1800, 1791,   69, 1794, 1802,   69,   69, 1799, 1804, 1803,
-       69,   69,   69,   69,   69,   69, 1806, 1801,   69, 1810,
-       69,   69,   69,   69, 1805,   69,   69,   69,   69, 1820,
-       69, 1807, 1808, 1813, 1809, 1812, 1814,   69,   69,   69,
-     1811,   69, 1817,   69, 1815, 1816, 1824, 1821, 1822,   69,
-
-     1823,   69, 1819, 1818,   69, 1828,   69,   69, 1827, 1825,
-       69,   69, 1832, 1833, 1826,   69,   69,   69,   69,   69,
-     1829,   69, 1830,   69,   69,   69,   69,   69,   69, 1834,
-     1831,   69, 1835, 1842,   69, 1836, 1843, 1837, 1839, 1840,
-     1838,   69, 1845, 1841,   69,   69, 1844,   69,   69, 1846,
-     1847, 1850, 1848, 1849, 1851,   69,   69,   69,   69,   69,
-     1855,   69,   69,   69, 1852,   69,   69, 1853, 1858,   69,
-       69, 1862,   69,   69, 1857,   69, 1895, 1854, 1856, 1895,
-     1863, 1859, 1861,   69, 1865, 1860,   69, 1866,   69,   69,
-       69, 1864, 1869, 1867, 1870,   69, 1868, 1871,   69,   69,
-
-       69,   69,   69,   69,   69, 1872, 1874, 1876, 1877,   69,
-       69, 1880,   69,   69,   69, 1883, 1884,   69, 1873, 1875,
-       69, 1886,   69, 1878, 1887,   69,   69, 1885, 1879,   69,
-       69, 1881, 1882, 1888, 1889, 1890,   69,   69, 1893,   69,
-     1894,   69, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1891, 1892,   41,   41,   41,
-       41,   41,   41,   41,   46,   46,   46,   46,   46,   46,
-       46,   51,   51,   51,   51,   51,   51,   51,   57,   57,
-       57,   57,   57,   57,   57,   62,   62,   62,   62,   62,
-       62,   62,   72,   72, 1895,   72,   72,   72,   72,  128,
-
-      128, 1895, 1895, 1895,  128,  128,  130,  130, 1895, 1895,
-      130, 1895,  130,  132, 1895, 1895, 1895, 1895, 1895,  132,
-      135,  135, 1895, 1895, 1895,  135,  135,  137, 1895, 1895,
-     1895, 1895, 1895,  137,  139,  139, 1895,  139,  139,  139,
-      139,   73,   73, 1895,   73,   73,   73,   73,   13, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895
+     1680,   69,   69, 1673, 1683, 1671,   69, 1674, 1684,   69,
+     1681,   69,   69, 1678,   69,   69,   69, 1682,   69, 1685,
+     1686, 1687,   69, 1690,   69, 1691, 1688,   69,   69,   69,
+     1694, 1692, 1693, 1695, 1696,   69, 1698, 1697, 1699,   69,
+     1689,   69, 1703,   69,   69,   69, 1701,   69, 1705,   69,
+       69,   69, 1708,   69,   69,   69,   69,   69, 1709,   69,
+     1700,   69, 1702,   69, 1710,   69, 1707, 1713, 1714, 1706,
+     1704,   69, 1711, 1716,   69,   69, 1712, 1718,   69, 1719,
+       69,   69, 1721,   69, 1717,   69, 1720, 1715,   69, 1725,
+
+       69, 1722,   69, 1728,   69, 1729,   69,   69, 1723,   69,
+       69, 1733,   69,   69, 1724,   69, 1726,   69, 1734,   69,
+     1735, 1731, 1727,   69,   69, 1736, 1730, 1738, 1739,   69,
+     1732, 1741,   69, 1744,   69,   69,   69, 1737, 1745,   69,
+       69,   69,   69, 1750,   69, 1747,   69, 1749, 1740, 1742,
+     1743, 1751,   69,   69, 1746, 1748, 1752,   69, 1753, 1754,
+       69,   69, 1755, 1756,   69,   69, 1758,   69, 1760,   69,
+       69,   69,   69, 1763,   69, 1761, 1759,   69,   69, 1757,
+     1762,   69, 1764,   69,   69,   69, 1767,   69,   69,   69,
+       69, 1765, 1769, 1903,   69, 1768, 1777,   69, 1766, 1775,
+
+     1778,   69,   69, 1770, 1771,   69, 1772, 1773, 1774, 1779,
+     1776, 1780,   69,   69, 1782,   69,   69, 1781, 1785,   69,
+     1783,   69,   69,   69,   69, 1789, 1790,   69, 1791,   69,
+     1784,   69, 1788,   69,   69,   69, 1786,   69, 1792,   69,
+     1787,   69, 1799,   69, 1796,   69, 1797, 1800,   69, 1794,
+     1801,   69,   69,   69, 1798,   69, 1793, 1804, 1795, 1803,
+       69, 1802,   69, 1805, 1807,   69,   69, 1809, 1806, 1808,
+       69,   69,   69,   69, 1812,   69, 1811,   69, 1815,   69,
+       69,   69,   69, 1816, 1810,   69,   69,   69,   69,   69,
+       69, 1813,   69, 1814,   69, 1818, 1819, 1827,   69, 1820,
+
+     1817, 1821,   69, 1828, 1823, 1822,   69, 1825, 1829,   69,
+     1826, 1830,   69,   69, 1824,   69,   69, 1835, 1831,   69,
+     1832, 1834,   69, 1837,   69,   69, 1840, 1833, 1841,   69,
+     1836,   69,   69,   69, 1838,   69,   69,   69,   69,   69,
+       69,   69,   69, 1842, 1839, 1843, 1850, 1851,   69, 1903,
+     1845, 1847, 1848,   69, 1844,   69, 1846,   69, 1853, 1849,
+     1854,   69,   69,   69, 1858,   69, 1855, 1852, 1856,   69,
+     1859,   69, 1857,   69, 1863,   69,   69,   69,   69,   69,
+     1860, 1861, 1866,   69, 1862,   69,   69, 1870,   69, 1865,
+       69,   69, 1873, 1871, 1864,   69, 1874, 1867, 1869,   69,
+
+       69,   69, 1868,   69, 1875, 1878,   69, 1876,   69, 1872,
+     1879,   69,   69,   69,   69, 1880,   69, 1882,   69, 1884,
+     1877, 1885,   69,   69, 1888,   69,   69,   69, 1891,   69,
+     1881,   69, 1883, 1892,   69,   69, 1893, 1886, 1894,   69,
+       69, 1887, 1895,   69, 1889, 1890,   69, 1896,   69, 1903,
+     1899, 1897, 1903, 1898, 1900, 1901,   69, 1902,   69,   41,
+       41,   41,   41,   41,   41,   41,   46,   46,   46,   46,
+       46,   46,   46,   51,   51,   51,   51,   51,   51,   51,
+       57,   57,   57,   57,   57,   57,   57,   62,   62,   62,
+       62,   62,   62,   62,   72,   72, 1903,   72,   72,   72,
+
+       72,  128,  128, 1903, 1903, 1903,  128,  128,  130,  130,
+     1903, 1903,  130, 1903,  130,  132, 1903, 1903, 1903, 1903,
+     1903,  132,  135,  135, 1903, 1903, 1903,  135,  135,  137,
+     1903, 1903, 1903, 1903, 1903,  137,  139,  139, 1903,  139,
+      139,  139,  139,   73,   73, 1903,   73,   73,   73,   73,
+       13, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903
     } ;
 
-static yyconst flex_int16_t yy_chk[3789] =
+static yyconst flex_int16_t yy_chk[3791] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1492,7 +1495,7 @@ static yyconst flex_int16_t yy_chk[3789] =
         9,  159,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   45,   45,    7,    8,    8,    8,    8,
        10,    8,   21,   33,  159,   21,   21,    8,   11,   11,
-       11,   11,   11,   11, 1901,   20,   29,   20,   20,   11,
+       11,   11,   11,   11, 1909,   20,   29,   20,   20,   11,
 
        20,   29,   24,   21,   25,   20,   24,   28,   11,   12,
        12,   12,   12,   12,   12,   75,   22,   22,   75,   25,
@@ -1836,69 +1839,69 @@ static yyconst flex_int16_t yy_chk[3789] =
      1619, 1622, 1613, 1623, 1618, 1619, 1615, 1624, 1626, 1626,
 
      1622, 1627, 1628, 1620, 1627, 1630, 1632, 1628, 1631, 1631,
-     1632, 1633, 1634, 1623, 1640, 1621, 1636, 1624, 1635, 1635,
-     1633, 1637, 1639, 1630, 1641,    0, 1640, 1634, 1645, 1636,
-     1637, 1639, 1647, 1645, 1646, 1646, 1654, 1649, 1653, 1650,
-     1650, 1647, 1649, 1650, 1652, 1652, 1655, 1653, 1656, 1641,
-     1657, 1655, 1658, 1659, 1660, 1657, 1654, 1663, 1659, 1661,
-     1661, 1666, 1664, 1665, 1665, 1666, 1667, 1668, 1669, 1656,
-     1658, 1672, 1670, 1671, 1674, 1667, 1663, 1664, 1671, 1660,
-     1670, 1673, 1673, 1668, 1676, 1676, 1678, 1669, 1677, 1677,
-     1681, 1678, 1682, 1674, 1680, 1680, 1686, 1672, 1684, 1684,
-
-     1685, 1687, 1687, 1688, 1688, 1689, 1691, 1690, 1692, 1692,
-     1681, 1694, 1694, 1693, 1685, 1682, 1693, 1696, 1686, 1690,
-     1697, 1702, 1698, 1699, 1689, 1698, 1691, 1700, 1699, 1696,
-     1701, 1703, 1703, 1705, 1705, 1701, 1706, 1708, 1702, 1702,
-     1697, 1747, 1708, 1709, 1710, 1747, 1700, 1711, 1711, 1710,
-     1712, 1712, 1713, 1713, 1714, 1706, 1722, 1709, 1723, 1714,
-     1716, 1716, 1719, 1719, 1721, 1721, 1725, 1723, 1724, 1724,
-     1722, 1725, 1728, 1729, 1729, 1732, 1730, 1733, 1734, 1735,
-     1728, 1730, 1736, 1734, 1737, 1738, 1739, 1740, 1741, 1744,
-     1736, 1735, 1753, 1741,    0, 1732, 1753, 1733, 1745, 1745,
-
-     1756, 1738, 1737, 1739, 1739, 1746, 1746, 1759, 1740, 1744,
-     1751, 1751, 1755, 1755, 1756, 1758, 1758, 1761, 1762, 1763,
-     1763, 1767, 1759, 1764, 1764, 1765, 1765, 1762, 1766, 1768,
-     1769, 1770, 1771, 1766, 1772, 1761, 1770, 1771, 1773, 1773,
-     1776, 1776, 1778, 1778, 1768, 1782, 1767, 1780, 1780, 1783,
-     1783, 1769, 1784, 1772, 1785, 1785, 1788, 1782, 1789, 1788,
-     1790, 1791, 1792, 1789, 1793, 1799, 1791, 1784, 1794, 1799,
-     1800, 1801, 1803, 1804, 1790, 1805, 1807, 1806, 1808, 1810,
-     1810, 1792, 1793, 1803, 1794, 1801, 1804, 1809, 1811, 1816,
-     1800, 1814, 1807, 1817, 1805, 1806, 1814, 1811, 1812, 1812,
-
-     1813, 1813, 1809, 1808, 1815, 1818, 1819, 1821, 1817, 1815,
-     1818, 1824, 1825, 1826, 1816, 1827, 1829, 1825, 1826, 1828,
-     1819, 1831, 1821, 1830, 1834, 1832, 1833, 1837, 1835, 1827,
-     1824, 1836, 1828, 1835, 1842, 1829, 1836, 1830, 1832, 1833,
-     1831, 1838, 1838, 1834, 1839, 1840, 1837, 1841, 1846, 1839,
-     1840, 1843, 1841, 1842, 1844, 1844, 1843, 1845, 1847, 1849,
-     1848, 1850, 1853, 1852, 1845, 1848, 1854, 1846, 1852, 1855,
-     1856, 1856, 1858, 1863, 1850, 1857,    0, 1847, 1849,    0,
-     1857, 1853, 1855, 1859, 1859, 1854, 1860, 1860, 1861, 1862,
-     1865, 1858, 1863, 1861, 1864, 1864, 1862, 1865, 1866, 1867,
-
-     1869, 1868, 1871, 1872, 1873, 1866, 1868, 1871, 1872, 1874,
-     1875, 1875, 1876, 1877, 1878, 1878, 1879, 1879, 1867, 1869,
-     1880, 1881, 1881, 1873, 1882, 1882, 1883, 1880, 1874, 1885,
-     1888, 1876, 1877, 1883, 1885, 1888, 1889, 1890, 1891, 1891,
-     1892, 1892,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0, 1889, 1890, 1896, 1896, 1896,
-     1896, 1896, 1896, 1896, 1897, 1897, 1897, 1897, 1897, 1897,
-     1897, 1898, 1898, 1898, 1898, 1898, 1898, 1898, 1899, 1899,
-     1899, 1899, 1899, 1899, 1899, 1900, 1900, 1900, 1900, 1900,
-     1900, 1900, 1902, 1902,    0, 1902, 1902, 1902, 1902, 1903,
-
-     1903,    0,    0,    0, 1903, 1903, 1904, 1904,    0,    0,
-     1904,    0, 1904, 1905,    0,    0,    0,    0,    0, 1905,
-     1906, 1906,    0,    0,    0, 1906, 1906, 1907,    0,    0,
-        0,    0,    0, 1907, 1908, 1908,    0, 1908, 1908, 1908,
-     1908, 1909, 1909,    0, 1909, 1909, 1909, 1909, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895,
-     1895, 1895, 1895, 1895, 1895, 1895, 1895, 1895
+     1632, 1633, 1634, 1623, 1635, 1621, 1636, 1624, 1635, 1635,
+     1633, 1637, 1639, 1630, 1640, 1641, 1654, 1634, 1645, 1636,
+     1637, 1639, 1647, 1645, 1646, 1646, 1640, 1649, 1653, 1650,
+     1650, 1647, 1649, 1650, 1652, 1652, 1654, 1653, 1655, 1656,
+     1641, 1657, 1659, 1655, 1658, 1660, 1657, 1659, 1661, 1661,
+     1663, 1664, 1665, 1665, 1666, 1667, 1668, 1669, 1666, 1670,
+     1656, 1672, 1658, 1671, 1667, 1674, 1664, 1670, 1671, 1663,
+     1660, 1681, 1668, 1673, 1673, 1682, 1669, 1676, 1676, 1677,
+     1677, 1678, 1680, 1680, 1674, 1683, 1678, 1672, 1685, 1685,
+
+     1687, 1681, 1686, 1688, 1688, 1689, 1689, 1690, 1682, 1691,
+     1692, 1693, 1693, 1697, 1683, 1694, 1686, 1698, 1694, 1695,
+     1695, 1691, 1687, 1700, 1699, 1697, 1690, 1699, 1700, 1701,
+     1692, 1702, 1703, 1704, 1704, 1707, 1702, 1698, 1706, 1706,
+     1709, 1710, 1711, 1712, 1712, 1709, 1724, 1711, 1701, 1703,
+     1703, 1713, 1713, 1715, 1707, 1710, 1714, 1714, 1715, 1717,
+     1717, 1720, 1720, 1722, 1722, 1723, 1724, 1725, 1726, 1726,
+     1727, 1734, 1730, 1731, 1731, 1727, 1725, 1732, 1735, 1723,
+     1730, 1736, 1732, 1737, 1738, 1739, 1736, 1742, 1740, 1741,
+     1746, 1734, 1738,    0, 1743, 1737, 1747, 1747, 1735, 1743,
+
+     1748, 1748, 1758, 1739, 1740, 1749, 1741, 1741, 1742, 1749,
+     1746, 1753, 1753, 1755, 1757, 1757, 1759, 1755, 1761, 1761,
+     1758, 1762, 1764, 1765, 1766, 1766, 1767, 1767, 1768, 1768,
+     1759, 1770, 1765, 1769, 1771, 1775, 1762, 1772, 1769, 1773,
+     1764, 1774, 1776, 1776, 1773, 1786, 1774, 1779, 1779, 1771,
+     1781, 1781, 1783, 1788, 1775, 1796, 1770, 1786, 1772, 1784,
+     1784, 1783, 1787, 1787, 1789, 1789, 1792, 1793, 1788, 1792,
+     1794, 1795, 1793, 1797, 1796, 1802, 1795, 1798, 1802, 1804,
+     1805, 1806, 1810, 1804, 1794, 1808, 1809, 1811, 1812, 1813,
+     1815, 1797, 1814, 1798, 1817, 1806, 1808, 1816, 1816, 1809,
+
+     1805, 1810, 1822, 1817, 1812, 1811, 1823, 1814, 1818, 1818,
+     1815, 1819, 1819, 1820, 1813, 1821, 1825, 1824, 1820, 1828,
+     1821, 1823, 1824, 1826, 1826, 1831, 1832, 1822, 1833, 1834,
+     1825, 1832, 1835, 1833, 1828, 1836, 1838, 1839, 1840, 1841,
+     1842, 1843, 1844, 1834, 1831, 1835, 1843, 1844, 1845,    0,
+     1838, 1840, 1841, 1850, 1836, 1847, 1839, 1846, 1846, 1842,
+     1847, 1848, 1854, 1849, 1851, 1855, 1848, 1845, 1849, 1851,
+     1852, 1852, 1850, 1853, 1856, 1857, 1858, 1860, 1861, 1856,
+     1853, 1854, 1860, 1862, 1855, 1863, 1864, 1864, 1865, 1858,
+     1866, 1867, 1867, 1865, 1857, 1868, 1868, 1861, 1863, 1869,
+
+     1870, 1871, 1862, 1873, 1869, 1872, 1872, 1870, 1874, 1866,
+     1873, 1875, 1876, 1877, 1879, 1874, 1880, 1876, 1881, 1879,
+     1871, 1880, 1882, 1883, 1883, 1884, 1885, 1886, 1886, 1888,
+     1875, 1897, 1877, 1887, 1887, 1898, 1888, 1881, 1889, 1889,
+     1891, 1882, 1890, 1890, 1884, 1885, 1893, 1891, 1896,    0,
+     1897, 1893,    0, 1896, 1898, 1899, 1899, 1900, 1900, 1904,
+     1904, 1904, 1904, 1904, 1904, 1904, 1905, 1905, 1905, 1905,
+     1905, 1905, 1905, 1906, 1906, 1906, 1906, 1906, 1906, 1906,
+     1907, 1907, 1907, 1907, 1907, 1907, 1907, 1908, 1908, 1908,
+     1908, 1908, 1908, 1908, 1910, 1910,    0, 1910, 1910, 1910,
+
+     1910, 1911, 1911,    0,    0,    0, 1911, 1911, 1912, 1912,
+        0,    0, 1912,    0, 1912, 1913,    0,    0,    0,    0,
+        0, 1913, 1914, 1914,    0,    0,    0, 1914, 1914, 1915,
+        0,    0,    0,    0,    0, 1915, 1916, 1916,    0, 1916,
+     1916, 1916, 1916, 1917, 1917,    0, 1917, 1917, 1917, 1917,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903,
+     1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903, 1903
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2107,7 +2110,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2109 "<stdout>"
+#line 2112 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2299,7 +2302,7 @@ YY_DECL
     
 #line 205 "./util/configlexer.lex"
 
-#line 2301 "<stdout>"
+#line 2304 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -2358,13 +2361,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 >= 1896 )
+                               if ( yy_current_state >= 1904 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 3749 );
+               while ( yy_base[yy_current_state] != 3751 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2414,112 +2417,112 @@ YY_RULE_SETUP
 case 5:
 YY_RULE_SETUP
 #line 213 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_THREADS) }
+{ YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
 #line 214 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERBOSITY) }
+{ YDVAR(1, VAR_NUM_THREADS) }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
 #line 215 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PORT) }
+{ YDVAR(1, VAR_VERBOSITY) }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
 #line 216 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_RANGE) }
+{ YDVAR(1, VAR_PORT) }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
 #line 217 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) }
+{ YDVAR(1, VAR_OUTGOING_RANGE) }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
 #line 218 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) }
+{ YDVAR(1, VAR_OUTGOING_PORT_PERMIT) }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
 #line 219 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_NUM_TCP) }
+{ YDVAR(1, VAR_OUTGOING_PORT_AVOID) }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
 #line 220 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INCOMING_NUM_TCP) }
+{ YDVAR(1, VAR_OUTGOING_NUM_TCP) }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
 #line 221 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_IP4) }
+{ YDVAR(1, VAR_INCOMING_NUM_TCP) }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
 #line 222 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_IP6) }
+{ YDVAR(1, VAR_DO_IP4) }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
 #line 223 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFER_IP6) }
+{ YDVAR(1, VAR_DO_IP6) }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
 #line 224 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_UDP) }
+{ YDVAR(1, VAR_PREFER_IP6) }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
 #line 225 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_TCP) }
+{ YDVAR(1, VAR_DO_UDP) }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
 #line 226 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TCP_UPSTREAM) }
+{ YDVAR(1, VAR_DO_TCP) }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
 #line 227 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TCP_MSS) }
+{ YDVAR(1, VAR_TCP_UPSTREAM) }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
 #line 228 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_TCP_MSS) }
+{ YDVAR(1, VAR_TCP_MSS) }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 229 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_OUTGOING_TCP_MSS) }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
 #line 230 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SSL_SERVICE_KEY) }
+{ YDVAR(1, VAR_SSL_UPSTREAM) }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
 #line 231 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SSL_SERVICE_PEM) }
+{ YDVAR(1, VAR_SSL_SERVICE_KEY) }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
 #line 232 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SSL_PORT) }
+{ YDVAR(1, VAR_SSL_SERVICE_PEM) }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
 #line 233 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_DAEMONIZE) }
+{ YDVAR(1, VAR_SSL_PORT) }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
 #line 234 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INTERFACE) }
+{ YDVAR(1, VAR_DO_DAEMONIZE) }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
@@ -2529,760 +2532,765 @@ YY_RULE_SETUP
 case 28:
 YY_RULE_SETUP
 #line 236 "./util/configlexer.lex"
-{ YDVAR(1, VAR_OUTGOING_INTERFACE) }
+{ YDVAR(1, VAR_INTERFACE) }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 237 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
+{ YDVAR(1, VAR_OUTGOING_INTERFACE) }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 238 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SO_RCVBUF) }
+{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 239 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SO_SNDBUF) }
+{ YDVAR(1, VAR_SO_RCVBUF) }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 240 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SO_REUSEPORT) }
+{ YDVAR(1, VAR_SO_SNDBUF) }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 241 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_TRANSPARENT) }
+{ YDVAR(1, VAR_SO_REUSEPORT) }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 242 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IP_FREEBIND) }
+{ YDVAR(1, VAR_IP_TRANSPARENT) }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 243 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CHROOT) }
+{ YDVAR(1, VAR_IP_FREEBIND) }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 244 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USERNAME) }
+{ YDVAR(1, VAR_CHROOT) }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 245 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DIRECTORY) }
+{ YDVAR(1, VAR_USERNAME) }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 246 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOGFILE) }
+{ YDVAR(1, VAR_DIRECTORY) }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 247 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PIDFILE) }
+{ YDVAR(1, VAR_LOGFILE) }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 248 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_HINTS) }
+{ YDVAR(1, VAR_PIDFILE) }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 249 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
+{ YDVAR(1, VAR_ROOT_HINTS) }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 250 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
+{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 251 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_BUFFER_SIZE) }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 252 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
+{ YDVAR(1, VAR_MSG_CACHE_SIZE) }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 253 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
+{ YDVAR(1, VAR_MSG_CACHE_SLABS) }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 254 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
+{ YDVAR(1, VAR_RRSET_CACHE_SIZE) }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 255 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_TTL) }
+{ YDVAR(1, VAR_RRSET_CACHE_SLABS) }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 256 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_TTL) }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 257 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 258 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 259 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 260 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 261 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 262 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 263 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 264 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 265 "./util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 266 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
 #line 267 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
 #line 268 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
 #line 269 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
 #line 270 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
 #line 271 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
 #line 272 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
 #line 273 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
 #line 274 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 275 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 276 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CAPS_WHITELIST) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 277 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 278 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
 #line 279 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
 #line 280 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 281 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 282 "./util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_PREFETCH) }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 283 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 284 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
 #line 285 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
 #line 286 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
 #line 287 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 288 "./util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 289 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 290 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 291 "./util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 292 "./util/configlexer.lex"
-{ YDVAR(0, VAR_VIEW) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 293 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VIEW_FIRST) }
+{ YDVAR(0, VAR_VIEW) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 294 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_VIEW_FIRST) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 295 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 296 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 297 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 298 "./util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 299 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 300 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
 #line 301 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_VERSION) }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
 #line 302 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
 #line 303 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
 #line 304 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
 #line 305 "./util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
 #line 306 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
 #line 307 "./util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
 #line 308 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
 #line 309 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
 #line 310 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
 #line 311 "./util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
 #line 312 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
 #line 313 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 314 "./util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
 #line 315 "./util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
 #line 316 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 317 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 318 "./util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 319 "./util/configlexer.lex"
-{ 
-                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 321 "./util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+#line 320 "./util/configlexer.lex"
+{ 
+                                 YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
 #line 322 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
 #line 323 "./util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
 #line 324 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
 #line 325 "./util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
 #line 326 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
 #line 327 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
 #line 328 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
 #line 329 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
 #line 330 "./util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
 #line 331 "./util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
 #line 332 "./util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
 #line 333 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
 #line 334 "./util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
 #line 335 "./util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
 #line 336 "./util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
 #line 337 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
 #line 338 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
 #line 339 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
 #line 340 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
 #line 341 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
 #line 342 "./util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
 #line 343 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
 #line 344 "./util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
 #line 345 "./util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
 #line 346 "./util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
 #line 347 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_PYTHON) }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
 #line 348 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
 #line 349 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
 #line 350 "./util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
 #line 351 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
 #line 352 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
 #line 353 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
 #line 354 "./util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
 #line 355 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
 #line 356 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
 #line 357 "./util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
 #line 358 "./util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
 #line 359 "./util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
 #line 360 "./util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 361 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(0, VAR_DNSTAP) }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
 #line 362 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
 #line 363 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
 #line 364 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
 #line 365 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
 #line 366 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
 #line 367 "./util/configlexer.lex"
-{
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 369 "./util/configlexer.lex"
+#line 368 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 371 "./util/configlexer.lex"
+#line 370 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 373 "./util/configlexer.lex"
+#line 372 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 375 "./util/configlexer.lex"
+#line 374 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 377 "./util/configlexer.lex"
+#line 376 "./util/configlexer.lex"
 {
-               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
        YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 379 "./util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 378 "./util/configlexer.lex"
+{
+               YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
        YY_BREAK
 case 165:
 YY_RULE_SETUP
 #line 380 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
        YY_BREAK
 case 166:
 YY_RULE_SETUP
 #line 381 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+{ YDVAR(1, VAR_RATELIMIT) }
        YY_BREAK
 case 167:
 YY_RULE_SETUP
 #line 382 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
        YY_BREAK
 case 168:
 YY_RULE_SETUP
 #line 383 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
        YY_BREAK
 case 169:
 YY_RULE_SETUP
 #line 384 "./util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
        YY_BREAK
 case 170:
 YY_RULE_SETUP
 #line 385 "./util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
        YY_BREAK
 case 171:
-/* rule 171 can match eol */
 YY_RULE_SETUP
 #line 386 "./util/configlexer.lex"
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+       YY_BREAK
+case 172:
+/* rule 172 can match eol */
+YY_RULE_SETUP
+#line 387 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 172:
+case 173:
 YY_RULE_SETUP
-#line 389 "./util/configlexer.lex"
+#line 390 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 390 "./util/configlexer.lex"
+#line 391 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 173:
+case 174:
 YY_RULE_SETUP
-#line 395 "./util/configlexer.lex"
+#line 396 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 174:
-/* rule 174 can match eol */
+case 175:
+/* rule 175 can match eol */
 YY_RULE_SETUP
-#line 396 "./util/configlexer.lex"
+#line 397 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 175:
+case 176:
 YY_RULE_SETUP
-#line 398 "./util/configlexer.lex"
+#line 399 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3295,34 +3303,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 176:
+case 177:
 YY_RULE_SETUP
-#line 410 "./util/configlexer.lex"
+#line 411 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 411 "./util/configlexer.lex"
+#line 412 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 177:
+case 178:
 YY_RULE_SETUP
-#line 416 "./util/configlexer.lex"
+#line 417 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 178:
-/* rule 178 can match eol */
+case 179:
+/* rule 179 can match eol */
 YY_RULE_SETUP
-#line 417 "./util/configlexer.lex"
+#line 418 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 179:
+case 180:
 YY_RULE_SETUP
-#line 419 "./util/configlexer.lex"
+#line 420 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3335,38 +3343,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 180:
+case 181:
 YY_RULE_SETUP
-#line 431 "./util/configlexer.lex"
+#line 432 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 433 "./util/configlexer.lex"
+#line 434 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 181:
-YY_RULE_SETUP
-#line 437 "./util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 182:
-/* rule 182 can match eol */
 YY_RULE_SETUP
 #line 438 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 183:
+/* rule 183 can match eol */
 YY_RULE_SETUP
 #line 439 "./util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 184:
 YY_RULE_SETUP
 #line 440 "./util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 185:
+YY_RULE_SETUP
+#line 441 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3374,27 +3382,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 445 "./util/configlexer.lex"
+#line 446 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 185:
+case 186:
 YY_RULE_SETUP
-#line 449 "./util/configlexer.lex"
+#line 450 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 186:
-/* rule 186 can match eol */
+case 187:
+/* rule 187 can match eol */
 YY_RULE_SETUP
-#line 450 "./util/configlexer.lex"
+#line 451 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 187:
+case 188:
 YY_RULE_SETUP
-#line 452 "./util/configlexer.lex"
+#line 453 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3404,7 +3412,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 458 "./util/configlexer.lex"
+#line 459 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3416,33 +3424,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 188:
+case 189:
 YY_RULE_SETUP
-#line 469 "./util/configlexer.lex"
+#line 470 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 189:
+case 190:
 YY_RULE_SETUP
-#line 473 "./util/configlexer.lex"
+#line 474 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 190:
+case 191:
 YY_RULE_SETUP
-#line 477 "./util/configlexer.lex"
+#line 478 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 191:
+case 192:
 YY_RULE_SETUP
-#line 481 "./util/configlexer.lex"
+#line 482 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3444 "<stdout>"
+#line 3452 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3732,7 +3740,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 >= 1896 )
+                       if ( yy_current_state >= 1904 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3760,11 +3768,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 >= 1896 )
+               if ( yy_current_state >= 1904 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1895);
+       yy_is_jam = (yy_current_state == 1903);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4401,7 +4409,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 481 "./util/configlexer.lex"
+#line 482 "./util/configlexer.lex"
 
 
 
index 5bae3d138cd87ed6d7a44e2a66659d4413145d51..bdc7f463d757563caeabb991488cca32e98ce658 100644 (file)
@@ -210,6 +210,7 @@ SQANY     [^\'\n\r\\]|\\.
        LEXOUT(("comment(%s) ", yytext)); /* ignore */ }
 server{COLON}                  { YDVAR(0, VAR_SERVER) }
 qname-minimisation{COLON}      { YDVAR(1, VAR_QNAME_MINIMISATION) }
+qname-minimisation-strict{COLON} { YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) }
 num-threads{COLON}             { YDVAR(1, VAR_NUM_THREADS) }
 verbosity{COLON}               { YDVAR(1, VAR_VERBOSITY) }
 port{COLON}                    { YDVAR(1, VAR_PORT) }
index 1172c44ab617fe1cf96a8d174bdfe3747ba20a26..4d1bd740a42dab53fd8d0226155012dfe20d9cdf 100644 (file)
@@ -289,16 +289,17 @@ extern int yydebug;
     VAR_CACHE_MAX_NEGATIVE_TTL = 420,
     VAR_PERMIT_SMALL_HOLDDOWN = 421,
     VAR_QNAME_MINIMISATION = 422,
-    VAR_IP_FREEBIND = 423,
-    VAR_DEFINE_TAG = 424,
-    VAR_LOCAL_ZONE_TAG = 425,
-    VAR_ACCESS_CONTROL_TAG = 426,
-    VAR_LOCAL_ZONE_OVERRIDE = 427,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 428,
-    VAR_ACCESS_CONTROL_TAG_DATA = 429,
-    VAR_VIEW = 430,
-    VAR_ACCESS_CONTROL_VIEW = 431,
-    VAR_VIEW_FIRST = 432
+    VAR_QNAME_MINIMISATION_STRICT = 423,
+    VAR_IP_FREEBIND = 424,
+    VAR_DEFINE_TAG = 425,
+    VAR_LOCAL_ZONE_TAG = 426,
+    VAR_ACCESS_CONTROL_TAG = 427,
+    VAR_LOCAL_ZONE_OVERRIDE = 428,
+    VAR_ACCESS_CONTROL_TAG_ACTION = 429,
+    VAR_ACCESS_CONTROL_TAG_DATA = 430,
+    VAR_VIEW = 431,
+    VAR_ACCESS_CONTROL_VIEW = 432,
+    VAR_VIEW_FIRST = 433
   };
 #endif
 /* Tokens.  */
@@ -467,16 +468,17 @@ extern int yydebug;
 #define VAR_CACHE_MAX_NEGATIVE_TTL 420
 #define VAR_PERMIT_SMALL_HOLDDOWN 421
 #define VAR_QNAME_MINIMISATION 422
-#define VAR_IP_FREEBIND 423
-#define VAR_DEFINE_TAG 424
-#define VAR_LOCAL_ZONE_TAG 425
-#define VAR_ACCESS_CONTROL_TAG 426
-#define VAR_LOCAL_ZONE_OVERRIDE 427
-#define VAR_ACCESS_CONTROL_TAG_ACTION 428
-#define VAR_ACCESS_CONTROL_TAG_DATA 429
-#define VAR_VIEW 430
-#define VAR_ACCESS_CONTROL_VIEW 431
-#define VAR_VIEW_FIRST 432
+#define VAR_QNAME_MINIMISATION_STRICT 423
+#define VAR_IP_FREEBIND 424
+#define VAR_DEFINE_TAG 425
+#define VAR_LOCAL_ZONE_TAG 426
+#define VAR_ACCESS_CONTROL_TAG 427
+#define VAR_LOCAL_ZONE_OVERRIDE 428
+#define VAR_ACCESS_CONTROL_TAG_ACTION 429
+#define VAR_ACCESS_CONTROL_TAG_DATA 430
+#define VAR_VIEW 431
+#define VAR_ACCESS_CONTROL_VIEW 432
+#define VAR_VIEW_FIRST 433
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -487,7 +489,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 491 "util/configparser.c" /* yacc.c:355  */
+#line 493 "util/configparser.c" /* yacc.c:355  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -502,7 +504,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 506 "util/configparser.c" /* yacc.c:358  */
+#line 508 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -744,21 +746,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   350
+#define YYLAST   353
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  178
+#define YYNTOKENS  179
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  188
+#define YYNNTS  189
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  359
+#define YYNRULES  361
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  538
+#define YYNSTATES  541
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   432
+#define YYMAXUTOK   433
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -810,49 +812,50 @@ static const yytype_uint8 yytranslate[] =
      145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
      155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
-     175,   176,   177
+     175,   176,   177,   178
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   134,   134,   134,   135,   135,   136,   136,   137,   137,
-     137,   142,   147,   148,   149,   149,   149,   150,   150,   151,
-     151,   152,   152,   153,   153,   154,   154,   154,   155,   155,
-     155,   156,   156,   157,   157,   158,   158,   159,   159,   160,
-     160,   161,   161,   162,   162,   163,   163,   164,   164,   164,
-     165,   165,   165,   166,   166,   166,   167,   167,   168,   168,
-     169,   169,   170,   170,   171,   171,   171,   172,   172,   173,
-     173,   174,   174,   174,   175,   175,   176,   176,   177,   177,
-     178,   178,   178,   179,   179,   180,   180,   181,   181,   182,
-     182,   183,   183,   184,   184,   184,   185,   185,   186,   186,
-     186,   187,   187,   187,   188,   188,   188,   189,   189,   189,
-     190,   190,   190,   191,   191,   191,   192,   192,   193,   193,
-     194,   194,   195,   195,   196,   196,   196,   197,   197,   198,
-     198,   199,   199,   200,   200,   201,   201,   201,   202,   202,
-     203,   203,   204,   204,   206,   218,   219,   220,   220,   220,
-     220,   220,   222,   234,   235,   236,   236,   236,   236,   238,
-     252,   253,   254,   254,   254,   254,   256,   265,   274,   285,
-     294,   303,   312,   325,   340,   349,   358,   367,   376,   385,
-     394,   403,   412,   421,   430,   439,   448,   457,   466,   475,
-     482,   489,   498,   507,   521,   530,   539,   546,   553,   577,
-     585,   592,   599,   606,   613,   621,   629,   637,   644,   651,
-     660,   669,   676,   683,   691,   699,   709,   719,   729,   742,
-     753,   761,   774,   783,   792,   801,   811,   821,   829,   842,
-     851,   859,   868,   876,   889,   898,   905,   915,   925,   935,
-     945,   955,   965,   975,   985,   992,   999,  1006,  1015,  1024,
-    1033,  1040,  1050,  1067,  1074,  1092,  1105,  1118,  1127,  1136,
-    1145,  1154,  1164,  1174,  1183,  1192,  1199,  1208,  1217,  1226,
-    1235,  1243,  1256,  1264,  1292,  1299,  1314,  1324,  1334,  1341,
-    1348,  1357,  1371,  1390,  1409,  1421,  1433,  1445,  1456,  1465,
-    1473,  1486,  1499,  1512,  1521,  1531,  1541,  1548,  1555,  1564,
-    1574,  1584,  1591,  1598,  1607,  1617,  1646,  1655,  1664,  1669,
-    1670,  1671,  1671,  1671,  1672,  1672,  1672,  1673,  1673,  1675,
-    1685,  1694,  1701,  1711,  1718,  1725,  1732,  1739,  1744,  1745,
-    1746,  1746,  1747,  1747,  1748,  1748,  1749,  1750,  1751,  1752,
-    1753,  1754,  1756,  1764,  1771,  1779,  1787,  1794,  1801,  1810,
-    1819,  1828,  1837,  1846,  1855,  1860,  1861,  1862,  1864,  1870
+       0,   135,   135,   135,   136,   136,   137,   137,   138,   138,
+     138,   143,   148,   149,   150,   150,   150,   151,   151,   152,
+     152,   153,   153,   154,   154,   155,   155,   155,   156,   156,
+     156,   157,   157,   158,   158,   159,   159,   160,   160,   161,
+     161,   162,   162,   163,   163,   164,   164,   165,   165,   165,
+     166,   166,   166,   167,   167,   167,   168,   168,   169,   169,
+     170,   170,   171,   171,   172,   172,   172,   173,   173,   174,
+     174,   175,   175,   175,   176,   176,   177,   177,   178,   178,
+     179,   179,   179,   180,   180,   181,   181,   182,   182,   183,
+     183,   184,   184,   185,   185,   185,   186,   186,   187,   187,
+     187,   188,   188,   188,   189,   189,   189,   190,   190,   190,
+     191,   191,   191,   192,   192,   192,   193,   193,   194,   194,
+     195,   195,   196,   196,   197,   197,   197,   198,   198,   199,
+     199,   200,   200,   201,   201,   202,   202,   202,   203,   203,
+     204,   204,   205,   205,   206,   208,   220,   221,   222,   222,
+     222,   222,   222,   224,   236,   237,   238,   238,   238,   238,
+     240,   254,   255,   256,   256,   256,   256,   258,   267,   276,
+     287,   296,   305,   314,   327,   342,   351,   360,   369,   378,
+     387,   396,   405,   414,   423,   432,   441,   450,   459,   468,
+     477,   484,   491,   500,   509,   523,   532,   541,   548,   555,
+     579,   587,   594,   601,   608,   615,   623,   631,   639,   646,
+     653,   662,   671,   678,   685,   693,   701,   711,   721,   731,
+     744,   755,   763,   776,   785,   794,   803,   813,   823,   831,
+     844,   853,   861,   870,   878,   891,   900,   907,   917,   927,
+     937,   947,   957,   967,   977,   987,   994,  1001,  1008,  1017,
+    1026,  1035,  1042,  1052,  1069,  1076,  1094,  1107,  1120,  1129,
+    1138,  1147,  1156,  1166,  1176,  1185,  1194,  1201,  1210,  1219,
+    1228,  1237,  1245,  1258,  1266,  1294,  1301,  1316,  1326,  1336,
+    1343,  1350,  1359,  1373,  1392,  1411,  1423,  1435,  1447,  1458,
+    1467,  1475,  1488,  1501,  1514,  1523,  1533,  1543,  1553,  1560,
+    1567,  1576,  1586,  1596,  1603,  1610,  1619,  1629,  1658,  1667,
+    1676,  1681,  1682,  1683,  1683,  1683,  1684,  1684,  1684,  1685,
+    1685,  1687,  1697,  1706,  1713,  1723,  1730,  1737,  1744,  1751,
+    1756,  1757,  1758,  1758,  1759,  1759,  1760,  1760,  1761,  1762,
+    1763,  1764,  1765,  1766,  1768,  1776,  1783,  1791,  1799,  1806,
+    1813,  1822,  1831,  1840,  1849,  1858,  1867,  1872,  1873,  1874,
+    1876,  1882
 };
 #endif
 
@@ -919,8 +922,9 @@ static const char *const yytname[] =
   "VAR_RATELIMIT_SIZE", "VAR_RATELIMIT_FOR_DOMAIN",
   "VAR_RATELIMIT_BELOW_DOMAIN", "VAR_RATELIMIT_FACTOR",
   "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL",
-  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", "VAR_IP_FREEBIND",
-  "VAR_DEFINE_TAG", "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
+  "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION",
+  "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG",
+  "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG",
   "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION",
   "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW",
   "VAR_VIEW_FIRST", "$accept", "toplevelvars", "toplevelvar",
@@ -980,16 +984,17 @@ static const char *const yytname[] =
   "server_access_control_view", "server_ratelimit",
   "server_ratelimit_size", "server_ratelimit_slabs",
   "server_ratelimit_for_domain", "server_ratelimit_below_domain",
-  "server_ratelimit_factor", "server_qname_minimisation", "stub_name",
-  "stub_host", "stub_addr", "stub_first", "stub_prime", "forward_name",
-  "forward_host", "forward_addr", "forward_first", "view_name",
-  "view_local_zone", "view_local_data", "view_first", "rcstart",
-  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
-  "rc_control_interface", "rc_control_use_cert", "rc_server_key_file",
-  "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file",
-  "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable",
-  "dt_dnstap_socket_path", "dt_dnstap_send_identity",
-  "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version",
+  "server_ratelimit_factor", "server_qname_minimisation",
+  "server_qname_minimisation_strict", "stub_name", "stub_host",
+  "stub_addr", "stub_first", "stub_prime", "forward_name", "forward_host",
+  "forward_addr", "forward_first", "view_name", "view_local_zone",
+  "view_local_data", "view_first", "rcstart", "contents_rc", "content_rc",
+  "rc_control_enable", "rc_control_port", "rc_control_interface",
+  "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file",
+  "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt",
+  "content_dt", "dt_dnstap_enable", "dt_dnstap_socket_path",
+  "dt_dnstap_send_identity", "dt_dnstap_send_version",
+  "dt_dnstap_identity", "dt_dnstap_version",
   "dt_dnstap_log_resolver_query_messages",
   "dt_dnstap_log_resolver_response_messages",
   "dt_dnstap_log_client_query_messages",
@@ -1023,7 +1028,7 @@ static const yytype_uint16 yytoknum[] =
      395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
      405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
-     425,   426,   427,   428,   429,   430,   431,   432
+     425,   426,   427,   428,   429,   430,   431,   432,   433
 };
 # endif
 
@@ -1042,7 +1047,7 @@ static const yytype_uint16 yytoknum[] =
 static const yytype_int16 yypact[] =
 {
     -128,     0,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,   132,   -38,
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,   133,   -38,
      -34,   -39,   -64,  -127,  -105,    -3,    -2,    -1,     2,     3,
       26,    29,    30,    32,    33,    34,    35,    36,    38,    39,
       40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
@@ -1053,10 +1058,10 @@ static const yytype_int16 yypact[] =
       94,    95,    96,    98,    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,   126,   127,   129,   130,   131,   133,   162,   163,   164,
-     169,   170,   171,   213,   214,   215,   216,   217,   218,   219,
-     220,   221,   225,   229,   230,   253,   254,   264,   265,   266,
-     267,   268,   269,   270,   271,  -128,  -128,  -128,  -128,  -128,
+     125,   126,   127,   128,   130,   131,   134,   163,   164,   165,
+     170,   171,   172,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   226,   230,   231,   254,   255,   265,   266,   267,
+     268,   269,   270,   271,   272,   273,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
@@ -1069,32 +1074,33 @@ static const yytype_int16 yypact[] =
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,  -128,   272,   273,   274,   275,
-     276,  -128,  -128,  -128,  -128,  -128,  -128,   297,   299,   300,
-     301,  -128,  -128,  -128,  -128,  -128,   302,   303,   304,   305,
-    -128,  -128,  -128,  -128,  -128,   306,   307,   308,   309,   310,
-     311,   312,   313,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,   314,   315,   316,   317,   318,   319,   320,   321,
-     322,   323,   324,   325,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,  -128,  -128,   326,  -128,  -128,
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,   274,   275,
+     276,   277,   299,  -128,  -128,  -128,  -128,  -128,  -128,   301,
+     302,   303,   304,  -128,  -128,  -128,  -128,  -128,   305,   306,
+     307,   308,  -128,  -128,  -128,  -128,  -128,   309,   310,   311,
+     312,   313,   314,   315,   316,  -128,  -128,  -128,  -128,  -128,
+    -128,  -128,  -128,  -128,   317,   318,   319,   320,   321,   322,
+     323,   324,   325,   326,   327,   328,  -128,  -128,  -128,  -128,
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,   329,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,  -128,   327,   328,  -128,  -128,
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,   330,   331,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,   329,   330,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,   331,   332,   333,   334,   335,   336,
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,   332,   333,  -128,
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,   334,   335,   336,
+     337,   338,   339,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
+    -128,  -128,  -128,   340,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-     337,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-     338,   339,   340,  -128,  -128,  -128,  -128,  -128
+    -128,  -128,  -128,   341,   342,   343,  -128,  -128,  -128,  -128,
+    -128
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1102,8 +1108,8 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    11,   144,   152,   308,   354,   327,   159,
-       3,    13,   146,   154,   161,   310,   329,   356,     4,     5,
+       2,     0,     1,    11,   145,   153,   310,   356,   329,   160,
+       3,    13,   147,   155,   162,   312,   331,   358,     4,     5,
        6,    10,     8,     9,     7,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1117,45 +1123,46 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    12,    14,    15,    74,    77,
-      86,    16,    25,    65,    17,    78,    79,    36,    58,    73,
-      18,    19,    21,    22,    20,    23,    24,   108,   109,   110,
-     111,   112,    75,    64,    90,   107,    26,    27,    28,    29,
-      30,    66,    80,    81,    96,    52,    62,    53,    91,    46,
-      47,    48,    49,   100,   104,   116,   124,   135,   101,    59,
-      31,    32,    33,    88,   117,   118,   119,    34,    35,    37,
-      38,    40,    41,    39,   122,    42,    43,    44,    50,    69,
-     105,    83,   123,    76,   131,    84,    85,   102,   103,    89,
-      45,    67,    70,    51,    54,    92,    93,    68,   132,    94,
-      55,    56,    57,   106,    95,    63,    97,    98,    99,   133,
-      60,    61,    82,    71,    72,    87,   113,   114,   115,   120,
-     121,   136,   137,   139,   141,   142,   140,   143,   125,   127,
-     126,   128,   129,   130,   134,   138,     0,     0,     0,     0,
-       0,   145,   147,   148,   149,   151,   150,     0,     0,     0,
-       0,   153,   155,   156,   157,   158,     0,     0,     0,     0,
-     160,   162,   163,   164,   165,     0,     0,     0,     0,     0,
-       0,     0,     0,   309,   311,   313,   312,   318,   314,   315,
-     316,   317,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   328,   330,   331,   332,   333,   334,
-     335,   336,   337,   338,   339,   340,   341,     0,   355,   357,
-     167,   166,   171,   174,   172,   180,   181,   184,   182,   183,
-     185,   186,   196,   197,   198,   199,   200,   220,   221,   222,
-     227,   228,   177,   229,   230,   233,   231,   232,   235,   236,
-     237,   250,   209,   210,   211,   212,   238,   253,   205,   207,
-     254,   260,   261,   262,   178,   219,   270,   271,   206,   265,
-     193,   173,   201,   251,   257,   239,     0,     0,   274,   179,
-     168,   192,   243,   169,   175,   176,   202,   203,   272,   241,
-     245,   246,   170,   275,   223,   249,   194,   208,   255,   256,
-     259,   264,   204,   268,   266,   267,   213,   218,   247,   248,
-     214,   215,   240,   263,   195,   187,   188,   189,   190,   191,
-     276,   277,   278,   224,   225,   226,   234,   279,   280,   242,
-     216,   359,   288,   290,   289,     0,     0,   293,   244,   258,
-     269,   294,   217,   281,     0,     0,     0,     0,     0,     0,
-     295,   296,   297,   299,   298,   300,   301,   302,   303,   304,
-       0,   306,   307,   319,   321,   320,   323,   324,   325,   326,
-     322,   342,   343,   344,   345,   346,   347,   348,   349,   350,
-     351,   352,   353,   358,   252,   273,   291,   292,   282,   283,
-       0,     0,     0,   287,   305,   286,   284,   285
+       0,     0,     0,     0,     0,     0,    12,    14,    15,    74,
+      77,    86,    16,    25,    65,    17,    78,    79,    36,    58,
+      73,    18,    19,    21,    22,    20,    23,    24,   108,   109,
+     110,   111,   112,    75,    64,    90,   107,    26,    27,    28,
+      29,    30,    66,    80,    81,    96,    52,    62,    53,    91,
+      46,    47,    48,    49,   100,   104,   116,   124,   135,   101,
+      59,    31,    32,    33,    88,   117,   118,   119,    34,    35,
+      37,    38,    40,    41,    39,   122,    42,    43,    44,    50,
+      69,   105,    83,   123,    76,   131,    84,    85,   102,   103,
+      89,    45,    67,    70,    51,    54,    92,    93,    68,   132,
+      94,    55,    56,    57,   106,    95,    63,    97,    98,    99,
+     133,    60,    61,    82,    71,    72,    87,   113,   114,   115,
+     120,   121,   136,   137,   139,   141,   142,   140,   143,   125,
+     127,   126,   128,   129,   130,   134,   144,   138,     0,     0,
+       0,     0,     0,   146,   148,   149,   150,   152,   151,     0,
+       0,     0,     0,   154,   156,   157,   158,   159,     0,     0,
+       0,     0,   161,   163,   164,   165,   166,     0,     0,     0,
+       0,     0,     0,     0,     0,   311,   313,   315,   314,   320,
+     316,   317,   318,   319,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   330,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,     0,
+     357,   359,   168,   167,   172,   175,   173,   181,   182,   185,
+     183,   184,   186,   187,   197,   198,   199,   200,   201,   221,
+     222,   223,   228,   229,   178,   230,   231,   234,   232,   233,
+     236,   237,   238,   251,   210,   211,   212,   213,   239,   254,
+     206,   208,   255,   261,   262,   263,   179,   220,   271,   272,
+     207,   266,   194,   174,   202,   252,   258,   240,     0,     0,
+     275,   180,   169,   193,   244,   170,   176,   177,   203,   204,
+     273,   242,   246,   247,   171,   276,   224,   250,   195,   209,
+     256,   257,   260,   265,   205,   269,   267,   268,   214,   219,
+     248,   249,   215,   216,   241,   264,   196,   188,   189,   190,
+     191,   192,   277,   278,   279,   225,   226,   227,   235,   280,
+     281,   243,   217,   361,   289,   291,   290,     0,     0,   294,
+     245,   259,   270,   295,   296,   218,   282,     0,     0,     0,
+       0,     0,     0,   297,   298,   299,   301,   300,   302,   303,
+     304,   305,   306,     0,   308,   309,   321,   323,   322,   325,
+     326,   327,   328,   324,   344,   345,   346,   347,   348,   349,
+     350,   351,   352,   353,   354,   355,   360,   253,   274,   292,
+     293,   283,   284,     0,     0,     0,   288,   307,   287,   285,
+     286
 };
 
   /* YYPGOTO[NTERM-NUM].  */
@@ -1179,31 +1186,31 @@ static const yytype_int8 yypgoto[] =
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
     -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,
-    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128
+    -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128,  -128
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    10,    11,    18,   155,    12,    19,   291,    13,
-      20,   301,    14,    21,   310,   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,   190,
-     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
-     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
-     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
-     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
-     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
-     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
-     281,   282,   283,   284,   292,   293,   294,   295,   296,   302,
-     303,   304,   305,   311,   312,   313,   314,    15,    22,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,    16,    23,
-     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
-     354,   355,   356,    17,    24,   358,   359,   285
+      -1,     1,    10,    11,    18,   156,    12,    19,   293,    13,
+      20,   303,    14,    21,   312,   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,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   294,   295,   296,   297,   298,
+     304,   305,   306,   307,   313,   314,   315,   316,    15,    22,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,    16,
+      23,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,    17,    24,   360,   361,   287
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1211,42 +1218,42 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-       2,   306,   286,   357,   287,   288,   297,   360,   361,   362,
-       0,     3,   363,   364,   298,   299,   332,   333,   334,   335,
-     336,   337,   338,   339,   340,   341,   342,   343,   315,   316,
-     317,   318,   319,   320,   321,   322,   365,   307,   308,   366,
-     367,     4,   368,   369,   370,   371,   372,     5,   373,   374,
-     375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
-     385,   386,   387,   388,   389,   289,   390,   391,   392,   393,
-     394,   395,   396,   397,   398,   399,   400,   401,   402,   403,
-     404,   405,   406,   407,   408,   409,   410,   411,   412,   413,
-     414,     6,   415,   416,   290,   417,   418,   300,   419,   420,
-     421,   422,   423,   424,   425,   426,   427,     7,   428,   429,
-     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
-     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
-     450,   451,   452,   453,   454,   455,   456,   457,   309,   458,
-     459,   460,     8,   461,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,   462,   463,   464,     9,    53,    54,    55,   465,
-     466,   467,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,   468,   469,   470,   471,   472,   473,   474,
-     475,   476,    97,    98,    99,   477,   100,   101,   102,   478,
-     479,   103,   104,   105,   106,   107,   108,   109,   110,   111,
-     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
-     122,   123,   124,   480,   481,   125,   126,   127,   128,   129,
-     130,   131,   132,   133,   482,   483,   484,   485,   486,   487,
-     488,   489,   490,   491,   492,   493,   494,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,   145,   146,
-     147,   148,   149,   150,   151,   152,   153,   495,   154,   496,
-     497,   498,   499,   500,   501,   502,   503,   504,   505,   506,
+       2,   308,   288,   359,   289,   290,   299,   362,   363,   364,
+       0,     3,   365,   366,   300,   301,   334,   335,   336,   337,
+     338,   339,   340,   341,   342,   343,   344,   345,   317,   318,
+     319,   320,   321,   322,   323,   324,   367,   309,   310,   368,
+     369,     4,   370,   371,   372,   373,   374,     5,   375,   376,
+     377,   378,   379,   380,   381,   382,   383,   384,   385,   386,
+     387,   388,   389,   390,   391,   291,   392,   393,   394,   395,
+     396,   397,   398,   399,   400,   401,   402,   403,   404,   405,
+     406,   407,   408,   409,   410,   411,   412,   413,   414,   415,
+     416,     6,   417,   418,   292,   419,   420,   302,   421,   422,
+     423,   424,   425,   426,   427,   428,   429,     7,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
+     452,   453,   454,   455,   456,   457,   458,   459,   460,   311,
+     461,   462,     8,     0,   463,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,   464,   465,   466,     9,    53,    54,    55,
+     467,   468,   469,    56,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,   470,   471,   472,   473,   474,   475,
+     476,   477,   478,    97,    98,    99,   479,   100,   101,   102,
+     480,   481,   103,   104,   105,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   482,   483,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   484,   485,   486,   487,   488,
+     489,   490,   491,   492,   493,   494,   495,   496,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   497,
+     155,   498,   499,   500,   501,   502,   503,   504,   505,   506,
      507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
      517,   518,   519,   520,   521,   522,   523,   524,   525,   526,
      527,   528,   529,   530,   531,   532,   533,   534,   535,   536,
-     537
+     537,   538,   539,   540
 };
 
 static const yytype_int16 yycheck[] =
@@ -1264,38 +1271,38 @@ static const yytype_int16 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,   107,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,   177,    10,
-      10,    10,   142,    10,    12,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    10,    10,    10,   175,    44,    45,    46,    10,
-      10,    10,    50,    51,    52,    53,    54,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,   100,   101,   102,    10,   104,   105,   106,    10,
-      10,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,    10,    10,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,   155,   156,   157,
-     158,   159,   160,   161,   162,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,    10,   176,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,    10,    10,   178,
+      10,    10,   142,    -1,    10,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    10,    10,    10,   176,    44,    45,    46,
+      10,    10,    10,    50,    51,    52,    53,    54,    55,    56,
+      57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
+      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,   100,   101,   102,    10,   104,   105,   106,
+      10,    10,   109,   110,   111,   112,   113,   114,   115,   116,
+     117,   118,   119,   120,   121,   122,   123,   124,   125,   126,
+     127,   128,   129,   130,    10,    10,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,    10,   155,   156,
+     157,   158,   159,   160,   161,   162,   163,   164,   165,   166,
+     167,   168,   169,   170,   171,   172,   173,   174,   175,    10,
+     177,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10
+      10,    10,    10,    10
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   179,     0,    11,    41,    47,    91,   107,   142,   175,
-     180,   181,   184,   187,   190,   335,   346,   361,   182,   185,
-     188,   191,   336,   347,   362,    12,    13,    14,    15,    16,
+       0,   180,     0,    11,    41,    47,    91,   107,   142,   176,
+     181,   182,   185,   188,   191,   337,   348,   363,   183,   186,
+     189,   192,   338,   349,   364,    12,    13,    14,    15,    16,
       17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
       37,    38,    39,    44,    45,    46,    50,    51,    52,    53,
@@ -1308,7 +1315,7 @@ static const yytype_uint16 yystos[] =
      126,   127,   128,   129,   130,   133,   134,   135,   136,   137,
      138,   139,   140,   141,   155,   156,   157,   158,   159,   160,
      161,   162,   163,   164,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   174,   176,   183,   193,   194,   195,   196,
+     171,   172,   173,   174,   175,   177,   184,   194,   195,   196,
      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
      207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
      217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
@@ -1321,14 +1328,15 @@ static const yytype_uint16 yystos[] =
      287,   288,   289,   290,   291,   292,   293,   294,   295,   296,
      297,   298,   299,   300,   301,   302,   303,   304,   305,   306,
      307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
-     317,   318,   319,   320,   321,   365,    40,    42,    43,   103,
-     132,   186,   322,   323,   324,   325,   326,    40,    48,    49,
-     131,   189,   327,   328,   329,   330,    40,    76,    77,   177,
-     192,   331,   332,   333,   334,    92,    93,    94,    95,    96,
-      97,    98,    99,   337,   338,   339,   340,   341,   342,   343,
-     344,   345,   143,   144,   145,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   348,   349,   350,   351,   352,   353,
-     354,   355,   356,   357,   358,   359,   360,   108,   363,   364,
+     317,   318,   319,   320,   321,   322,   323,   367,    40,    42,
+      43,   103,   132,   187,   324,   325,   326,   327,   328,    40,
+      48,    49,   131,   190,   329,   330,   331,   332,    40,    76,
+      77,   178,   193,   333,   334,   335,   336,    92,    93,    94,
+      95,    96,    97,    98,    99,   339,   340,   341,   342,   343,
+     344,   345,   346,   347,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   350,   351,   352,   353,
+     354,   355,   356,   357,   358,   359,   360,   361,   362,   108,
+     365,   366,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1346,29 +1354,29 @@ static const yytype_uint16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10
+      10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   178,   179,   179,   180,   180,   180,   180,   180,   180,
-     180,   181,   182,   182,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   183,   183,   183,   183,   183,   183,
-     183,   183,   183,   183,   184,   185,   185,   186,   186,   186,
-     186,   186,   187,   188,   188,   189,   189,   189,   189,   190,
-     191,   191,   192,   192,   192,   192,   193,   194,   195,   196,
+       0,   179,   180,   180,   181,   181,   181,   181,   181,   181,
+     181,   182,   183,   183,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   184,   184,   184,   184,   184,
+     184,   184,   184,   184,   184,   185,   186,   186,   187,   187,
+     187,   187,   187,   188,   189,   189,   190,   190,   190,   190,
+     191,   192,   192,   193,   193,   193,   193,   194,   195,   196,
      197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
      207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
      217,   218,   219,   220,   221,   222,   223,   224,   225,   226,
@@ -1383,11 +1391,12 @@ static const yytype_uint16 yyr1[] =
      307,   308,   309,   310,   311,   312,   313,   314,   315,   316,
      317,   318,   319,   320,   321,   322,   323,   324,   325,   326,
      327,   328,   329,   330,   331,   332,   333,   334,   335,   336,
-     336,   337,   337,   337,   337,   337,   337,   337,   337,   338,
-     339,   340,   341,   342,   343,   344,   345,   346,   347,   347,
-     348,   348,   348,   348,   348,   348,   348,   348,   348,   348,
-     348,   348,   349,   350,   351,   352,   353,   354,   355,   356,
-     357,   358,   359,   360,   361,   362,   362,   363,   364,   365
+     337,   338,   338,   339,   339,   339,   339,   339,   339,   339,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   349,   350,   350,   350,   350,   350,   350,   350,   350,
+     350,   350,   350,   350,   351,   352,   353,   354,   355,   356,
+     357,   358,   359,   360,   361,   362,   363,   364,   364,   365,
+     366,   367
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1407,10 +1416,9 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
-       2,     0,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
+       1,     1,     1,     1,     2,     0,     1,     1,     1,     1,
+       1,     2,     0,     1,     1,     1,     1,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1418,17 +1426,19 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     3,     4,     4,     4,     3,     2,     2,
-       2,     3,     3,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     2,     2,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     1,     2,
-       2,     2,     2,     2,     2,     2,     2,     1,     2,     0,
-       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     1,     2,     0,     1,     2,     2
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     3,     3,     4,     4,     4,     3,     2,
+       2,     2,     3,     3,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     3,     2,     2,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     2,     2,     2,     2,     2,     2,     2,     1,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
+       2,     2
 };
 
 
@@ -2105,15 +2115,15 @@ yyreduce:
   switch (yyn)
     {
         case 11:
-#line 143 "./util/configparser.y" /* yacc.c:1646  */
+#line 144 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2113 "util/configparser.c" /* yacc.c:1646  */
+#line 2123 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 144:
-#line 207 "./util/configparser.y" /* yacc.c:1646  */
+  case 145:
+#line 209 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2124,11 +2134,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2128 "util/configparser.c" /* yacc.c:1646  */
+#line 2138 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 223 "./util/configparser.y" /* yacc.c:1646  */
+  case 153:
+#line 225 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2139,11 +2149,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2143 "util/configparser.c" /* yacc.c:1646  */
+#line 2153 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 159:
-#line 239 "./util/configparser.y" /* yacc.c:1646  */
+  case 160:
+#line 241 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2156,11 +2166,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2160 "util/configparser.c" /* yacc.c:1646  */
+#line 2170 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 257 "./util/configparser.y" /* yacc.c:1646  */
+  case 167:
+#line 259 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2168,11 +2178,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2172 "util/configparser.c" /* yacc.c:1646  */
+#line 2182 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 167:
-#line 266 "./util/configparser.y" /* yacc.c:1646  */
+  case 168:
+#line 268 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2180,11 +2190,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2184 "util/configparser.c" /* yacc.c:1646  */
+#line 2194 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 168:
-#line 275 "./util/configparser.y" /* yacc.c:1646  */
+  case 169:
+#line 277 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2194,11 +2204,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2198 "util/configparser.c" /* yacc.c:1646  */
+#line 2208 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 286 "./util/configparser.y" /* yacc.c:1646  */
+  case 170:
+#line 288 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2206,11 +2216,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2210 "util/configparser.c" /* yacc.c:1646  */
+#line 2220 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 295 "./util/configparser.y" /* yacc.c:1646  */
+  case 171:
+#line 297 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2218,11 +2228,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2222 "util/configparser.c" /* yacc.c:1646  */
+#line 2232 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 304 "./util/configparser.y" /* yacc.c:1646  */
+  case 172:
+#line 306 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2230,11 +2240,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2234 "util/configparser.c" /* yacc.c:1646  */
+#line 2244 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 313 "./util/configparser.y" /* yacc.c:1646  */
+  case 173:
+#line 315 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2246,11 +2256,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2250 "util/configparser.c" /* yacc.c:1646  */
+#line 2260 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 326 "./util/configparser.y" /* yacc.c:1646  */
+  case 174:
+#line 328 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2264,11 +2274,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2268 "util/configparser.c" /* yacc.c:1646  */
+#line 2278 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 341 "./util/configparser.y" /* yacc.c:1646  */
+  case 175:
+#line 343 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2276,11 +2286,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2280 "util/configparser.c" /* yacc.c:1646  */
+#line 2290 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 350 "./util/configparser.y" /* yacc.c:1646  */
+  case 176:
+#line 352 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2288,11 +2298,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2292 "util/configparser.c" /* yacc.c:1646  */
+#line 2302 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 359 "./util/configparser.y" /* yacc.c:1646  */
+  case 177:
+#line 361 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2300,11 +2310,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2304 "util/configparser.c" /* yacc.c:1646  */
+#line 2314 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 368 "./util/configparser.y" /* yacc.c:1646  */
+  case 178:
+#line 370 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2312,11 +2322,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2316 "util/configparser.c" /* yacc.c:1646  */
+#line 2326 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 377 "./util/configparser.y" /* yacc.c:1646  */
+  case 179:
+#line 379 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2324,11 +2334,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2328 "util/configparser.c" /* yacc.c:1646  */
+#line 2338 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 386 "./util/configparser.y" /* yacc.c:1646  */
+  case 180:
+#line 388 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2336,11 +2346,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2340 "util/configparser.c" /* yacc.c:1646  */
+#line 2350 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 395 "./util/configparser.y" /* yacc.c:1646  */
+  case 181:
+#line 397 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2348,11 +2358,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2352 "util/configparser.c" /* yacc.c:1646  */
+#line 2362 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 404 "./util/configparser.y" /* yacc.c:1646  */
+  case 182:
+#line 406 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2360,11 +2370,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2364 "util/configparser.c" /* yacc.c:1646  */
+#line 2374 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 413 "./util/configparser.y" /* yacc.c:1646  */
+  case 183:
+#line 415 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2372,11 +2382,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2376 "util/configparser.c" /* yacc.c:1646  */
+#line 2386 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 422 "./util/configparser.y" /* yacc.c:1646  */
+  case 184:
+#line 424 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2384,11 +2394,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2388 "util/configparser.c" /* yacc.c:1646  */
+#line 2398 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 431 "./util/configparser.y" /* yacc.c:1646  */
+  case 185:
+#line 433 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2396,11 +2406,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2400 "util/configparser.c" /* yacc.c:1646  */
+#line 2410 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 440 "./util/configparser.y" /* yacc.c:1646  */
+  case 186:
+#line 442 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2408,11 +2418,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2412 "util/configparser.c" /* yacc.c:1646  */
+#line 2422 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 449 "./util/configparser.y" /* yacc.c:1646  */
+  case 187:
+#line 451 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2420,11 +2430,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2424 "util/configparser.c" /* yacc.c:1646  */
+#line 2434 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 458 "./util/configparser.y" /* yacc.c:1646  */
+  case 188:
+#line 460 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2432,11 +2442,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2436 "util/configparser.c" /* yacc.c:1646  */
+#line 2446 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 467 "./util/configparser.y" /* yacc.c:1646  */
+  case 189:
+#line 469 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2444,31 +2454,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2448 "util/configparser.c" /* yacc.c:1646  */
+#line 2458 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 476 "./util/configparser.y" /* yacc.c:1646  */
+  case 190:
+#line 478 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 2458 "util/configparser.c" /* yacc.c:1646  */
+#line 2468 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 483 "./util/configparser.y" /* yacc.c:1646  */
+  case 191:
+#line 485 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 2468 "util/configparser.c" /* yacc.c:1646  */
+#line 2478 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 490 "./util/configparser.y" /* yacc.c:1646  */
+  case 192:
+#line 492 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2476,11 +2486,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2480 "util/configparser.c" /* yacc.c:1646  */
+#line 2490 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 499 "./util/configparser.y" /* yacc.c:1646  */
+  case 193:
+#line 501 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2488,11 +2498,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2492 "util/configparser.c" /* yacc.c:1646  */
+#line 2502 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 508 "./util/configparser.y" /* yacc.c:1646  */
+  case 194:
+#line 510 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2505,11 +2515,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2509 "util/configparser.c" /* yacc.c:1646  */
+#line 2519 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 522 "./util/configparser.y" /* yacc.c:1646  */
+  case 195:
+#line 524 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2517,11 +2527,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2521 "util/configparser.c" /* yacc.c:1646  */
+#line 2531 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 531 "./util/configparser.y" /* yacc.c:1646  */
+  case 196:
+#line 533 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2529,31 +2539,31 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2533 "util/configparser.c" /* yacc.c:1646  */
+#line 2543 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 540 "./util/configparser.y" /* yacc.c:1646  */
+  case 197:
+#line 542 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2543 "util/configparser.c" /* yacc.c:1646  */
+#line 2553 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 547 "./util/configparser.y" /* yacc.c:1646  */
+  case 198:
+#line 549 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2553 "util/configparser.c" /* yacc.c:1646  */
+#line 2563 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 554 "./util/configparser.y" /* yacc.c:1646  */
+  case 199:
+#line 556 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -2576,115 +2586,115 @@ yyreduce:
                                        d, strerror(errno));
                }
        }
-#line 2580 "util/configparser.c" /* yacc.c:1646  */
+#line 2590 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 578 "./util/configparser.y" /* yacc.c:1646  */
+  case 200:
+#line 580 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 2591 "util/configparser.c" /* yacc.c:1646  */
+#line 2601 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 586 "./util/configparser.y" /* yacc.c:1646  */
+  case 201:
+#line 588 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2601 "util/configparser.c" /* yacc.c:1646  */
+#line 2611 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 593 "./util/configparser.y" /* yacc.c:1646  */
+  case 202:
+#line 595 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2611 "util/configparser.c" /* yacc.c:1646  */
+#line 2621 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 600 "./util/configparser.y" /* yacc.c:1646  */
+  case 203:
+#line 602 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 2621 "util/configparser.c" /* yacc.c:1646  */
+#line 2631 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 607 "./util/configparser.y" /* yacc.c:1646  */
+  case 204:
+#line 609 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2631 "util/configparser.c" /* yacc.c:1646  */
+#line 2641 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 614 "./util/configparser.y" /* yacc.c:1646  */
+  case 205:
+#line 616 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2642 "util/configparser.c" /* yacc.c:1646  */
+#line 2652 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 622 "./util/configparser.y" /* yacc.c:1646  */
+  case 206:
+#line 624 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2653 "util/configparser.c" /* yacc.c:1646  */
+#line 2663 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 630 "./util/configparser.y" /* yacc.c:1646  */
+  case 207:
+#line 632 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2664 "util/configparser.c" /* yacc.c:1646  */
+#line 2674 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 638 "./util/configparser.y" /* yacc.c:1646  */
+  case 208:
+#line 640 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2674 "util/configparser.c" /* yacc.c:1646  */
+#line 2684 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 645 "./util/configparser.y" /* yacc.c:1646  */
+  case 209:
+#line 647 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2684 "util/configparser.c" /* yacc.c:1646  */
+#line 2694 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 652 "./util/configparser.y" /* yacc.c:1646  */
+  case 210:
+#line 654 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2692,11 +2702,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2696 "util/configparser.c" /* yacc.c:1646  */
+#line 2706 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 661 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 663 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2704,53 +2714,53 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2708 "util/configparser.c" /* yacc.c:1646  */
+#line 2718 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 670 "./util/configparser.y" /* yacc.c:1646  */
+  case 212:
+#line 672 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 2718 "util/configparser.c" /* yacc.c:1646  */
+#line 2728 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 677 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 679 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 2728 "util/configparser.c" /* yacc.c:1646  */
+#line 2738 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 684 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 686 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2739 "util/configparser.c" /* yacc.c:1646  */
+#line 2749 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 692 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 694 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2750 "util/configparser.c" /* yacc.c:1646  */
+#line 2760 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 700 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 702 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2759,11 +2769,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2763 "util/configparser.c" /* yacc.c:1646  */
+#line 2773 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 710 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 712 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2772,11 +2782,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2776 "util/configparser.c" /* yacc.c:1646  */
+#line 2786 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 720 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 722 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2785,11 +2795,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2789 "util/configparser.c" /* yacc.c:1646  */
+#line 2799 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 730 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 732 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2801,11 +2811,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2805 "util/configparser.c" /* yacc.c:1646  */
+#line 2815 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 743 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 745 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2815,22 +2825,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2819 "util/configparser.c" /* yacc.c:1646  */
+#line 2829 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 754 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 756 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2830 "util/configparser.c" /* yacc.c:1646  */
+#line 2840 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 762 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 764 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2842,11 +2852,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2846 "util/configparser.c" /* yacc.c:1646  */
+#line 2856 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 775 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 777 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2854,11 +2864,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2858 "util/configparser.c" /* yacc.c:1646  */
+#line 2868 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 784 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 786 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2866,11 +2876,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2870 "util/configparser.c" /* yacc.c:1646  */
+#line 2880 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 793 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 795 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2878,11 +2888,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2882 "util/configparser.c" /* yacc.c:1646  */
+#line 2892 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 802 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 804 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2891,11 +2901,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2895 "util/configparser.c" /* yacc.c:1646  */
+#line 2905 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 812 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 814 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2904,22 +2914,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2908 "util/configparser.c" /* yacc.c:1646  */
+#line 2918 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 822 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 824 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 2919 "util/configparser.c" /* yacc.c:1646  */
+#line 2929 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 830 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 832 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2931,11 +2941,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2935 "util/configparser.c" /* yacc.c:1646  */
+#line 2945 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 843 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 845 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2943,22 +2953,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2947 "util/configparser.c" /* yacc.c:1646  */
+#line 2957 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 852 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 854 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2958 "util/configparser.c" /* yacc.c:1646  */
+#line 2968 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 860 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 862 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2966,22 +2976,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2970 "util/configparser.c" /* yacc.c:1646  */
+#line 2980 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 869 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 871 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2981 "util/configparser.c" /* yacc.c:1646  */
+#line 2991 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 877 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 879 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2993,11 +3003,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 2997 "util/configparser.c" /* yacc.c:1646  */
+#line 3007 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 890 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 892 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3005,21 +3015,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3009 "util/configparser.c" /* yacc.c:1646  */
+#line 3019 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 899 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 901 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 3019 "util/configparser.c" /* yacc.c:1646  */
+#line 3029 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 906 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 908 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3028,11 +3038,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3032 "util/configparser.c" /* yacc.c:1646  */
+#line 3042 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 916 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 918 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3041,11 +3051,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3045 "util/configparser.c" /* yacc.c:1646  */
+#line 3055 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 926 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 928 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3054,11 +3064,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3058 "util/configparser.c" /* yacc.c:1646  */
+#line 3068 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 936 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 938 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3067,11 +3077,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3071 "util/configparser.c" /* yacc.c:1646  */
+#line 3081 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 946 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 948 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3080,11 +3090,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3084 "util/configparser.c" /* yacc.c:1646  */
+#line 3094 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 956 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 958 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3093,11 +3103,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3097 "util/configparser.c" /* yacc.c:1646  */
+#line 3107 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 966 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 968 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3106,11 +3116,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3110 "util/configparser.c" /* yacc.c:1646  */
+#line 3120 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 976 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 978 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3119,41 +3129,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3123 "util/configparser.c" /* yacc.c:1646  */
+#line 3133 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 986 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 988 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3133 "util/configparser.c" /* yacc.c:1646  */
+#line 3143 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 993 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 995 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3143 "util/configparser.c" /* yacc.c:1646  */
+#line 3153 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 1000 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 1002 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3153 "util/configparser.c" /* yacc.c:1646  */
+#line 3163 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 1007 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 1009 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3161,11 +3171,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3165 "util/configparser.c" /* yacc.c:1646  */
+#line 3175 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 1016 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 1018 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3173,11 +3183,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3177 "util/configparser.c" /* yacc.c:1646  */
+#line 3187 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 1025 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 1027 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3185,21 +3195,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3189 "util/configparser.c" /* yacc.c:1646  */
+#line 3199 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 1034 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 1036 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3199 "util/configparser.c" /* yacc.c:1646  */
+#line 3209 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 1041 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 1043 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3208,11 +3218,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3212 "util/configparser.c" /* yacc.c:1646  */
+#line 3222 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 1051 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 1053 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -3228,21 +3238,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3232 "util/configparser.c" /* yacc.c:1646  */
+#line 3242 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 1068 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 1070 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 3242 "util/configparser.c" /* yacc.c:1646  */
+#line 3252 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 1075 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 1077 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3259,11 +3269,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3263 "util/configparser.c" /* yacc.c:1646  */
+#line 3273 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 1093 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 1095 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3275,11 +3285,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3279 "util/configparser.c" /* yacc.c:1646  */
+#line 3289 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 1106 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 1108 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3291,11 +3301,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3295 "util/configparser.c" /* yacc.c:1646  */
+#line 3305 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 1119 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 1121 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3303,11 +3313,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3307 "util/configparser.c" /* yacc.c:1646  */
+#line 3317 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 1128 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 1130 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3315,11 +3325,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3319 "util/configparser.c" /* yacc.c:1646  */
+#line 3329 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 1137 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 1139 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3327,11 +3337,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3331 "util/configparser.c" /* yacc.c:1646  */
+#line 3341 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 1146 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 1148 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3339,11 +3349,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3343 "util/configparser.c" /* yacc.c:1646  */
+#line 3353 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 1155 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 1157 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3352,11 +3362,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3356 "util/configparser.c" /* yacc.c:1646  */
+#line 3366 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 1165 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 1167 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3365,11 +3375,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3369 "util/configparser.c" /* yacc.c:1646  */
+#line 3379 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 1175 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 1177 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3377,11 +3387,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3381 "util/configparser.c" /* yacc.c:1646  */
+#line 3391 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 1184 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 1186 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3389,21 +3399,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3393 "util/configparser.c" /* yacc.c:1646  */
+#line 3403 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 1193 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 1195 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 3403 "util/configparser.c" /* yacc.c:1646  */
+#line 3413 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1200 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 1202 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3411,11 +3421,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3415 "util/configparser.c" /* yacc.c:1646  */
+#line 3425 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1209 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 1211 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3423,11 +3433,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3427 "util/configparser.c" /* yacc.c:1646  */
+#line 3437 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1218 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 1220 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3435,11 +3445,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3439 "util/configparser.c" /* yacc.c:1646  */
+#line 3449 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1227 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 1229 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3448,22 +3458,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3452 "util/configparser.c" /* yacc.c:1646  */
+#line 3462 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1236 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 1238 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3463 "util/configparser.c" /* yacc.c:1646  */
+#line 3473 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1244 "./util/configparser.y" /* yacc.c:1646  */
+  case 272:
+#line 1246 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3475,22 +3485,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3479 "util/configparser.c" /* yacc.c:1646  */
+#line 3489 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1257 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 1259 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3490 "util/configparser.c" /* yacc.c:1646  */
+#line 3500 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1265 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 1267 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -3517,21 +3527,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3521 "util/configparser.c" /* yacc.c:1646  */
+#line 3531 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1293 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1295 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 3531 "util/configparser.c" /* yacc.c:1646  */
+#line 3541 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1300 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1302 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3545,11 +3555,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3549 "util/configparser.c" /* yacc.c:1646  */
+#line 3559 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1315 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1317 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3558,11 +3568,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3562 "util/configparser.c" /* yacc.c:1646  */
+#line 3572 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1325 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1327 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3571,31 +3581,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3575 "util/configparser.c" /* yacc.c:1646  */
+#line 3585 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1335 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1337 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3585 "util/configparser.c" /* yacc.c:1646  */
+#line 3595 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1342 "./util/configparser.y" /* yacc.c:1646  */
+  case 280:
+#line 1344 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 3595 "util/configparser.c" /* yacc.c:1646  */
+#line 3605 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1349 "./util/configparser.y" /* yacc.c:1646  */
+  case 281:
+#line 1351 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3603,11 +3613,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3607 "util/configparser.c" /* yacc.c:1646  */
+#line 3617 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1358 "./util/configparser.y" /* yacc.c:1646  */
+  case 282:
+#line 1360 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -3620,11 +3630,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3624 "util/configparser.c" /* yacc.c:1646  */
+#line 3634 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1372 "./util/configparser.y" /* yacc.c:1646  */
+  case 283:
+#line 1374 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3642,11 +3652,11 @@ yyreduce:
                        }
                }
        }
-#line 3646 "util/configparser.c" /* yacc.c:1646  */
+#line 3656 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1391 "./util/configparser.y" /* yacc.c:1646  */
+  case 284:
+#line 1393 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3664,11 +3674,11 @@ yyreduce:
                        }
                }
        }
-#line 3668 "util/configparser.c" /* yacc.c:1646  */
+#line 3678 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1410 "./util/configparser.y" /* yacc.c:1646  */
+  case 285:
+#line 1412 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -3679,11 +3689,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3683 "util/configparser.c" /* yacc.c:1646  */
+#line 3693 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1422 "./util/configparser.y" /* yacc.c:1646  */
+  case 286:
+#line 1424 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -3694,11 +3704,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3698 "util/configparser.c" /* yacc.c:1646  */
+#line 3708 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1434 "./util/configparser.y" /* yacc.c:1646  */
+  case 287:
+#line 1436 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -3709,11 +3719,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3713 "util/configparser.c" /* yacc.c:1646  */
+#line 3723 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 1446 "./util/configparser.y" /* yacc.c:1646  */
+  case 288:
+#line 1448 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -3723,11 +3733,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3727 "util/configparser.c" /* yacc.c:1646  */
+#line 3737 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1457 "./util/configparser.y" /* yacc.c:1646  */
+  case 289:
+#line 1459 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3735,22 +3745,22 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3739 "util/configparser.c" /* yacc.c:1646  */
+#line 3749 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1466 "./util/configparser.y" /* yacc.c:1646  */
+  case 290:
+#line 1468 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3750 "util/configparser.c" /* yacc.c:1646  */
+#line 3760 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1474 "./util/configparser.y" /* yacc.c:1646  */
+  case 291:
+#line 1476 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3762,11 +3772,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3766 "util/configparser.c" /* yacc.c:1646  */
+#line 3776 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1487 "./util/configparser.y" /* yacc.c:1646  */
+  case 292:
+#line 1489 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3778,11 +3788,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 3782 "util/configparser.c" /* yacc.c:1646  */
+#line 3792 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1500 "./util/configparser.y" /* yacc.c:1646  */
+  case 293:
+#line 1502 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -3794,11 +3804,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 3798 "util/configparser.c" /* yacc.c:1646  */
+#line 3808 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1513 "./util/configparser.y" /* yacc.c:1646  */
+  case 294:
+#line 1515 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3806,11 +3816,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3810 "util/configparser.c" /* yacc.c:1646  */
+#line 3820 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 1522 "./util/configparser.y" /* yacc.c:1646  */
+  case 295:
+#line 1524 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3819,11 +3829,24 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3823 "util/configparser.c" /* yacc.c:1646  */
+#line 3833 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1532 "./util/configparser.y" /* yacc.c:1646  */
+  case 296:
+#line 1534 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
+               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->qname_minimisation_strict = 
+                       (strcmp((yyvsp[0].str), "yes")==0);
+               free((yyvsp[0].str));
+       }
+#line 3846 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 297:
+#line 1544 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -3832,31 +3855,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 3836 "util/configparser.c" /* yacc.c:1646  */
+#line 3859 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1542 "./util/configparser.y" /* yacc.c:1646  */
+  case 298:
+#line 1554 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3846 "util/configparser.c" /* yacc.c:1646  */
+#line 3869 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1549 "./util/configparser.y" /* yacc.c:1646  */
+  case 299:
+#line 1561 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3856 "util/configparser.c" /* yacc.c:1646  */
+#line 3879 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1556 "./util/configparser.y" /* yacc.c:1646  */
+  case 300:
+#line 1568 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3864,11 +3887,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3868 "util/configparser.c" /* yacc.c:1646  */
+#line 3891 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1565 "./util/configparser.y" /* yacc.c:1646  */
+  case 301:
+#line 1577 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3877,11 +3900,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3881 "util/configparser.c" /* yacc.c:1646  */
+#line 3904 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 1575 "./util/configparser.y" /* yacc.c:1646  */
+  case 302:
+#line 1587 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -3890,31 +3913,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 3894 "util/configparser.c" /* yacc.c:1646  */
+#line 3917 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 1585 "./util/configparser.y" /* yacc.c:1646  */
+  case 303:
+#line 1597 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3904 "util/configparser.c" /* yacc.c:1646  */
+#line 3927 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1592 "./util/configparser.y" /* yacc.c:1646  */
+  case 304:
+#line 1604 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3914 "util/configparser.c" /* yacc.c:1646  */
+#line 3937 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1599 "./util/configparser.y" /* yacc.c:1646  */
+  case 305:
+#line 1611 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3922,11 +3945,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3926 "util/configparser.c" /* yacc.c:1646  */
+#line 3949 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1608 "./util/configparser.y" /* yacc.c:1646  */
+  case 306:
+#line 1620 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -3935,11 +3958,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 3939 "util/configparser.c" /* yacc.c:1646  */
+#line 3962 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1618 "./util/configparser.y" /* yacc.c:1646  */
+  case 307:
+#line 1630 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -3967,11 +3990,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3971 "util/configparser.c" /* yacc.c:1646  */
+#line 3994 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 1647 "./util/configparser.y" /* yacc.c:1646  */
+  case 308:
+#line 1659 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
@@ -3979,11 +4002,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3983 "util/configparser.c" /* yacc.c:1646  */
+#line 4006 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 1656 "./util/configparser.y" /* yacc.c:1646  */
+  case 309:
+#line 1668 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3991,19 +4014,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3995 "util/configparser.c" /* yacc.c:1646  */
+#line 4018 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 1665 "./util/configparser.y" /* yacc.c:1646  */
+  case 310:
+#line 1677 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 4003 "util/configparser.c" /* yacc.c:1646  */
+#line 4026 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 1676 "./util/configparser.y" /* yacc.c:1646  */
+  case 321:
+#line 1688 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4012,11 +4035,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4016 "util/configparser.c" /* yacc.c:1646  */
+#line 4039 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1686 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1698 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4024,21 +4047,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4028 "util/configparser.c" /* yacc.c:1646  */
+#line 4051 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1695 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1707 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4038 "util/configparser.c" /* yacc.c:1646  */
+#line 4061 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 1702 "./util/configparser.y" /* yacc.c:1646  */
+  case 324:
+#line 1714 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4047,122 +4070,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4051 "util/configparser.c" /* yacc.c:1646  */
+#line 4074 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 1712 "./util/configparser.y" /* yacc.c:1646  */
+  case 325:
+#line 1724 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 4061 "util/configparser.c" /* yacc.c:1646  */
+#line 4084 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 324:
-#line 1719 "./util/configparser.y" /* yacc.c:1646  */
+  case 326:
+#line 1731 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 4071 "util/configparser.c" /* yacc.c:1646  */
+#line 4094 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 1726 "./util/configparser.y" /* yacc.c:1646  */
+  case 327:
+#line 1738 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 4081 "util/configparser.c" /* yacc.c:1646  */
+#line 4104 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 326:
-#line 1733 "./util/configparser.y" /* yacc.c:1646  */
+  case 328:
+#line 1745 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 4091 "util/configparser.c" /* yacc.c:1646  */
+#line 4114 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 1740 "./util/configparser.y" /* yacc.c:1646  */
+  case 329:
+#line 1752 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 4099 "util/configparser.c" /* yacc.c:1646  */
+#line 4122 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 342:
-#line 1757 "./util/configparser.y" /* yacc.c:1646  */
+  case 344:
+#line 1769 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4110 "util/configparser.c" /* yacc.c:1646  */
+#line 4133 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 343:
-#line 1765 "./util/configparser.y" /* yacc.c:1646  */
+  case 345:
+#line 1777 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 4120 "util/configparser.c" /* yacc.c:1646  */
+#line 4143 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 344:
-#line 1772 "./util/configparser.y" /* yacc.c:1646  */
+  case 346:
+#line 1784 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4131 "util/configparser.c" /* yacc.c:1646  */
+#line 4154 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 345:
-#line 1780 "./util/configparser.y" /* yacc.c:1646  */
+  case 347:
+#line 1792 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4142 "util/configparser.c" /* yacc.c:1646  */
+#line 4165 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 346:
-#line 1788 "./util/configparser.y" /* yacc.c:1646  */
+  case 348:
+#line 1800 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 4152 "util/configparser.c" /* yacc.c:1646  */
+#line 4175 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 347:
-#line 1795 "./util/configparser.y" /* yacc.c:1646  */
+  case 349:
+#line 1807 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 4162 "util/configparser.c" /* yacc.c:1646  */
+#line 4185 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 348:
-#line 1802 "./util/configparser.y" /* yacc.c:1646  */
+  case 350:
+#line 1814 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4170,11 +4193,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4174 "util/configparser.c" /* yacc.c:1646  */
+#line 4197 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 349:
-#line 1811 "./util/configparser.y" /* yacc.c:1646  */
+  case 351:
+#line 1823 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4182,11 +4205,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4186 "util/configparser.c" /* yacc.c:1646  */
+#line 4209 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 350:
-#line 1820 "./util/configparser.y" /* yacc.c:1646  */
+  case 352:
+#line 1832 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4194,11 +4217,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4198 "util/configparser.c" /* yacc.c:1646  */
+#line 4221 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 351:
-#line 1829 "./util/configparser.y" /* yacc.c:1646  */
+  case 353:
+#line 1841 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4206,11 +4229,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4210 "util/configparser.c" /* yacc.c:1646  */
+#line 4233 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 352:
-#line 1838 "./util/configparser.y" /* yacc.c:1646  */
+  case 354:
+#line 1850 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4218,11 +4241,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4222 "util/configparser.c" /* yacc.c:1646  */
+#line 4245 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 353:
-#line 1847 "./util/configparser.y" /* yacc.c:1646  */
+  case 355:
+#line 1859 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4230,29 +4253,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4234 "util/configparser.c" /* yacc.c:1646  */
+#line 4257 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 354:
-#line 1856 "./util/configparser.y" /* yacc.c:1646  */
+  case 356:
+#line 1868 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 4242 "util/configparser.c" /* yacc.c:1646  */
+#line 4265 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 358:
-#line 1865 "./util/configparser.y" /* yacc.c:1646  */
+  case 360:
+#line 1877 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 4252 "util/configparser.c" /* yacc.c:1646  */
+#line 4275 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 359:
-#line 1871 "./util/configparser.y" /* yacc.c:1646  */
+  case 361:
+#line 1883 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4261,11 +4284,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4265 "util/configparser.c" /* yacc.c:1646  */
+#line 4288 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 4269 "util/configparser.c" /* yacc.c:1646  */
+#line 4292 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4493,7 +4516,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1879 "./util/configparser.y" /* yacc.c:1906  */
+#line 1891 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index eeb39f60da5de3446c24715456c456525a3a50f6..2b3eae8863e47587ea6f26f5f2d0382781e9f5a7 100644 (file)
@@ -210,16 +210,17 @@ extern int yydebug;
     VAR_CACHE_MAX_NEGATIVE_TTL = 420,
     VAR_PERMIT_SMALL_HOLDDOWN = 421,
     VAR_QNAME_MINIMISATION = 422,
-    VAR_IP_FREEBIND = 423,
-    VAR_DEFINE_TAG = 424,
-    VAR_LOCAL_ZONE_TAG = 425,
-    VAR_ACCESS_CONTROL_TAG = 426,
-    VAR_LOCAL_ZONE_OVERRIDE = 427,
-    VAR_ACCESS_CONTROL_TAG_ACTION = 428,
-    VAR_ACCESS_CONTROL_TAG_DATA = 429,
-    VAR_VIEW = 430,
-    VAR_ACCESS_CONTROL_VIEW = 431,
-    VAR_VIEW_FIRST = 432
+    VAR_QNAME_MINIMISATION_STRICT = 423,
+    VAR_IP_FREEBIND = 424,
+    VAR_DEFINE_TAG = 425,
+    VAR_LOCAL_ZONE_TAG = 426,
+    VAR_ACCESS_CONTROL_TAG = 427,
+    VAR_LOCAL_ZONE_OVERRIDE = 428,
+    VAR_ACCESS_CONTROL_TAG_ACTION = 429,
+    VAR_ACCESS_CONTROL_TAG_DATA = 430,
+    VAR_VIEW = 431,
+    VAR_ACCESS_CONTROL_VIEW = 432,
+    VAR_VIEW_FIRST = 433
   };
 #endif
 /* Tokens.  */
@@ -388,16 +389,17 @@ extern int yydebug;
 #define VAR_CACHE_MAX_NEGATIVE_TTL 420
 #define VAR_PERMIT_SMALL_HOLDDOWN 421
 #define VAR_QNAME_MINIMISATION 422
-#define VAR_IP_FREEBIND 423
-#define VAR_DEFINE_TAG 424
-#define VAR_LOCAL_ZONE_TAG 425
-#define VAR_ACCESS_CONTROL_TAG 426
-#define VAR_LOCAL_ZONE_OVERRIDE 427
-#define VAR_ACCESS_CONTROL_TAG_ACTION 428
-#define VAR_ACCESS_CONTROL_TAG_DATA 429
-#define VAR_VIEW 430
-#define VAR_ACCESS_CONTROL_VIEW 431
-#define VAR_VIEW_FIRST 432
+#define VAR_QNAME_MINIMISATION_STRICT 423
+#define VAR_IP_FREEBIND 424
+#define VAR_DEFINE_TAG 425
+#define VAR_LOCAL_ZONE_TAG 426
+#define VAR_ACCESS_CONTROL_TAG 427
+#define VAR_LOCAL_ZONE_OVERRIDE 428
+#define VAR_ACCESS_CONTROL_TAG_ACTION 429
+#define VAR_ACCESS_CONTROL_TAG_DATA 430
+#define VAR_VIEW 431
+#define VAR_ACCESS_CONTROL_VIEW 432
+#define VAR_VIEW_FIRST 433
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -408,7 +410,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 412 "util/configparser.h" /* yacc.c:1909  */
+#line 414 "util/configparser.h" /* yacc.c:1909  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
index 775057e544ae4a76296c2bda8dc79f34415b07d4..64234d1e2c8fdebbdd9eb9bde776e89be5070af9 100644 (file)
@@ -125,10 +125,11 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_RATELIMIT VAR_RATELIMIT_SLABS VAR_RATELIMIT_SIZE
 %token VAR_RATELIMIT_FOR_DOMAIN VAR_RATELIMIT_BELOW_DOMAIN VAR_RATELIMIT_FACTOR
 %token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN
-%token VAR_QNAME_MINIMISATION VAR_IP_FREEBIND VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG
-%token VAR_ACCESS_CONTROL_TAG VAR_LOCAL_ZONE_OVERRIDE
-%token VAR_ACCESS_CONTROL_TAG_ACTION VAR_ACCESS_CONTROL_TAG_DATA
-%token VAR_VIEW VAR_ACCESS_CONTROL_VIEW VAR_VIEW_FIRST
+%token VAR_QNAME_MINIMISATION VAR_QNAME_MINIMISATION_STRICT VAR_IP_FREEBIND
+%token VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG VAR_ACCESS_CONTROL_TAG
+%token VAR_LOCAL_ZONE_OVERRIDE VAR_ACCESS_CONTROL_TAG_ACTION
+%token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW
+%token VAR_VIEW_FIRST
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -201,7 +202,8 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_ip_freebind | server_define_tag | server_local_zone_tag |
        server_disable_dnssec_lame_check | server_access_control_tag |
        server_local_zone_override | server_access_control_tag_action |
-       server_access_control_tag_data | server_access_control_view
+       server_access_control_tag_data | server_access_control_view |
+       server_qname_minimisation_strict
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -1528,6 +1530,16 @@ server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG
                free($2);
        }
        ;
+server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG
+       {
+               OUTYY(("P(server_qname_minimisation_strict:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->qname_minimisation_strict = 
+                       (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 stub_name: VAR_NAME STRING_ARG
        {
                OUTYY(("P(name:%s)\n", $2));