From 41b8e28ac961cf4cc2907e5f6580f76e39c6db69 Mon Sep 17 00:00:00 2001 From: Tomas Hozza Date: Mon, 15 Jun 2015 19:20:46 +0200 Subject: [PATCH] Add option for maximum negative cache TTL (#1229599) --- ...-is-capped-at-minimumttl-in-its-rdat.patch | 312 + ...-TTL-patch-configparser-regeneration.patch | 8601 +++++++++++++++++ unbound.spec | 11 +- 3 files changed, 8923 insertions(+), 1 deletion(-) create mode 100644 0001-SOA-negative-TTL-is-capped-at-minimumttl-in-its-rdat.patch create mode 100644 0002-Maximum-negative-TTL-patch-configparser-regeneration.patch diff --git a/0001-SOA-negative-TTL-is-capped-at-minimumttl-in-its-rdat.patch b/0001-SOA-negative-TTL-is-capped-at-minimumttl-in-its-rdat.patch new file mode 100644 index 0000000..b1771d6 --- /dev/null +++ b/0001-SOA-negative-TTL-is-capped-at-minimumttl-in-its-rdat.patch @@ -0,0 +1,312 @@ +From 12d6612439271b2ca5c894ab2edda5364d6c4bfa Mon Sep 17 00:00:00 2001 +From: Tomas Hozza +Date: Mon, 15 Jun 2015 18:42:10 +0200 +Subject: [PATCH 1/2] SOA negative TTL is capped at minimumttl in its rdata + section. - cache-max-negative-ttl config option, default 3600. + +git-svn-id: http://unbound.nlnetlabs.nl/svn/trunk@3431 be551aaa-1e26-0410-a405-d3ace91eadb9 +Signed-off-by: Tomas Hozza +--- + doc/example.conf.in | 3 +++ + doc/unbound-control.8.in | 3 ++- + doc/unbound.conf.5.in | 4 ++++ + testcode/unitmsgparse.c | 3 +++ + testdata/iter_domain_sale.rpl | 3 ++- + testdata/iter_domain_sale_nschange.rpl | 6 ++++-- + util/config_file.c | 5 +++++ + util/config_file.h | 2 ++ + util/configlexer.lex | 1 + + util/configparser.y | 12 +++++++++++- + util/data/msgparse.h | 2 ++ + util/data/msgreply.c | 29 ++++++++++++++++++++++++++--- + 12 files changed, 65 insertions(+), 8 deletions(-) + +diff --git a/doc/example.conf.in b/doc/example.conf.in +index 60ed5c8..31b965c 100644 +--- a/doc/example.conf.in ++++ b/doc/example.conf.in +@@ -135,6 +135,9 @@ server: + # cache. Items are not cached for longer. In seconds. + # cache-max-ttl: 86400 + ++ # the time to live (TTL) value cap for negative responses in the cache ++ # cache-max-negative-ttl: 3600 ++ + # the time to live (TTL) value for cached roundtrip times, lameness and + # EDNS version information for hosts. In seconds. + # infra-host-ttl: 900 +diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in +index f6eae24..749a9fe 100644 +--- a/doc/unbound-control.8.in ++++ b/doc/unbound-control.8.in +@@ -177,7 +177,8 @@ harden\-glue, harden\-dnssec\-stripped, harden\-below\-nxdomain, + harden\-referral\-path, prefetch, prefetch\-key, log\-queries, + hide\-identity, hide\-version, identity, version, val\-log\-level, + val\-log\-squelch, ignore\-cd\-flag, add\-holddown, del\-holddown, +-keep\-missing, tcp\-upstream, ssl\-upstream, max\-udp\-size. ++keep\-missing, tcp\-upstream, ssl\-upstream, max\-udp\-size, ++cache\-max\-ttl, cache\-min\-ttl, cache\-max\-negative\-ttl. + .TP + .B get_option \fIopt + Get the value of the option. Give the option name without a trailing ':'. +diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in +index 9b088f3..5856ae7 100644 +--- a/doc/unbound.conf.5.in ++++ b/doc/unbound.conf.5.in +@@ -290,6 +290,10 @@ Zero makes sure the data in the cache is as the domain owner intended, + higher values, especially more than an hour or so, can lead to trouble as + the data in the cache does not match up with the actual data any more. + .TP ++.B cache\-max\-negative\-ttl: \fI ++Time to live maximum for negative responses, these have a SOA in the ++authority section that is limited in time. Default is 3600. ++.TP + .B infra\-host\-ttl: \fI + Time to live for entries in the host cache. The host cache contains + roundtrip timing, lameness and EDNS support information. Default is 900. +diff --git a/testcode/unitmsgparse.c b/testcode/unitmsgparse.c +index b33a240..d3d9359 100644 +--- a/testcode/unitmsgparse.c ++++ b/testcode/unitmsgparse.c +@@ -497,9 +497,11 @@ testfromdrillfile(sldns_buffer* pkt, struct alloc_cache* alloc, + + void msgparse_test(void) + { ++ time_t origttl = MAX_NEG_TTL; + sldns_buffer* pkt = sldns_buffer_new(65553); + sldns_buffer* out = sldns_buffer_new(65553); + struct alloc_cache super_a, alloc; ++ MAX_NEG_TTL = 86400; + /* init */ + alloc_init(&super_a, NULL, 0); + alloc_init(&alloc, &super_a, 2); +@@ -536,4 +538,5 @@ void msgparse_test(void) + alloc_clear(&super_a); + sldns_buffer_free(pkt); + sldns_buffer_free(out); ++ MAX_NEG_TTL = origttl; + } +diff --git a/testdata/iter_domain_sale.rpl b/testdata/iter_domain_sale.rpl +index 724b51d..ff61278 100644 +--- a/testdata/iter_domain_sale.rpl ++++ b/testdata/iter_domain_sale.rpl +@@ -238,7 +238,8 @@ SECTION QUESTION + nx1.example.com. IN A + SECTION ANSWER + SECTION AUTHORITY +-example.com. 3600 IN SOA a. b. 1 2 3 4 5 ++; at TTL 5 because TTL is capped at min-ttl of 5 in rdata of SOA ++example.com. 5 IN SOA a. b. 1 2 3 4 5 + example.com. 1800 IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 1800 IN A 1.2.3.4 +diff --git a/testdata/iter_domain_sale_nschange.rpl b/testdata/iter_domain_sale_nschange.rpl +index a7d9f11..bc396f6 100644 +--- a/testdata/iter_domain_sale_nschange.rpl ++++ b/testdata/iter_domain_sale_nschange.rpl +@@ -285,7 +285,8 @@ SECTION QUESTION + nx1.example.com. IN A + SECTION ANSWER + SECTION AUTHORITY +-example.com. 3600 IN SOA a. b. 1 2 3 4 5 ++; at TTL 5 because TTL capped at ttl of minttl in rdata of SOA. ++example.com. 5 IN SOA a. b. 1 2 3 4 5 + example.com. 3600 IN NS nsb.example.com. + SECTION ADDITIONAL + nsb.example.com. 3600 IN A 1.2.3.4 +@@ -306,7 +307,8 @@ SECTION QUESTION + nx1.example.com. IN A + SECTION ANSWER + SECTION AUTHORITY +-example.com. 3600 IN SOA a. b. 1 2 3 4 5 ++; at TTL 5 because TTL capped at ttl of minttl in rdata of SOA. ++example.com. 5 IN SOA a. b. 1 2 3 4 5 + example.com. 1800 IN NS nsb.example.com. + SECTION ADDITIONAL + nsb.example.com. 3600 IN A 1.2.3.4 +diff --git a/util/config_file.c b/util/config_file.c +index 5c4e897..ca29a02 100644 +--- a/util/config_file.c ++++ b/util/config_file.c +@@ -131,6 +131,7 @@ config_create(void) + cfg->bogus_ttl = 60; + cfg->min_ttl = 0; + cfg->max_ttl = 3600 * 24; ++ cfg->max_negative_ttl = 3600; + cfg->prefetch = 0; + cfg->prefetch_key = 0; + cfg->infra_cache_slabs = 4; +@@ -378,6 +379,8 @@ int config_set_option(struct config_file* cfg, const char* opt, + else S_YNO("prefetch-key:", prefetch_key) + else if(strcmp(opt, "cache-max-ttl:") == 0) + { IS_NUMBER_OR_ZERO; cfg->max_ttl = atoi(val); MAX_TTL=(time_t)cfg->max_ttl;} ++ else if(strcmp(opt, "cache-max-negative-ttl:") == 0) ++ { IS_NUMBER_OR_ZERO; cfg->max_negative_ttl = atoi(val); MAX_NEG_TTL=(time_t)cfg->max_negative_ttl;} + else if(strcmp(opt, "cache-min-ttl:") == 0) + { IS_NUMBER_OR_ZERO; cfg->min_ttl = atoi(val); MIN_TTL=(time_t)cfg->min_ttl;} + else if(strcmp(opt, "infra-cache-min-rtt:") == 0) { +@@ -629,6 +632,7 @@ config_get_option(struct config_file* cfg, const char* opt, + else O_YNO(opt, "prefetch-key", prefetch_key) + else O_YNO(opt, "prefetch", prefetch) + else O_DEC(opt, "cache-max-ttl", max_ttl) ++ else O_DEC(opt, "cache-max-negative-ttl", max_negative_ttl) + else O_DEC(opt, "cache-min-ttl", min_ttl) + else O_DEC(opt, "infra-host-ttl", host_ttl) + else O_DEC(opt, "infra-cache-slabs", infra_cache_slabs) +@@ -1198,6 +1202,7 @@ config_apply(struct config_file* config) + { + MAX_TTL = (time_t)config->max_ttl; + MIN_TTL = (time_t)config->min_ttl; ++ MAX_NEG_TTL = (time_t)config->max_negative_ttl; + RTT_MIN_TIMEOUT = config->infra_cache_min_rtt; + EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size; + MINIMAL_RESPONSES = config->minimal_responses; +diff --git a/util/config_file.h b/util/config_file.h +index ca512d7..a5cb19b 100644 +--- a/util/config_file.h ++++ b/util/config_file.h +@@ -185,6 +185,8 @@ struct config_file { + int max_ttl; + /** the number of seconds minimum TTL used for RRsets and messages */ + int min_ttl; ++ /** the number of seconds maximal negative TTL for SOA in auth */ ++ int max_negative_ttl; + /** if prefetching of messages should be performed. */ + int prefetch; + /** if prefetching of DNSKEYs should be performed. */ +diff --git a/util/configlexer.lex b/util/configlexer.lex +index dbde811..1045320 100644 +--- a/util/configlexer.lex ++++ b/util/configlexer.lex +@@ -239,6 +239,7 @@ msg-cache-slabs{COLON} { YDVAR(1, VAR_MSG_CACHE_SLABS) } + rrset-cache-size{COLON} { YDVAR(1, VAR_RRSET_CACHE_SIZE) } + rrset-cache-slabs{COLON} { YDVAR(1, VAR_RRSET_CACHE_SLABS) } + cache-max-ttl{COLON} { YDVAR(1, VAR_CACHE_MAX_TTL) } ++cache-max-negative-ttl{COLON} { YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } + cache-min-ttl{COLON} { YDVAR(1, VAR_CACHE_MIN_TTL) } + infra-host-ttl{COLON} { YDVAR(1, VAR_INFRA_HOST_TTL) } + infra-lame-ttl{COLON} { YDVAR(1, VAR_INFRA_LAME_TTL) } +diff --git a/util/configparser.y b/util/configparser.y +index 396ea3c..825927a 100644 +--- a/util/configparser.y ++++ b/util/configparser.y +@@ -118,6 +118,7 @@ extern struct config_parser_state* cfg_parser; + %token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES + %token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES + %token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES ++%token VAR_CACHE_MAX_NEGATIVE_TTL + + %% + toplevelvars: /* empty */ | toplevelvars toplevelvar ; +@@ -177,7 +178,7 @@ content_server: server_num_threads | server_verbosity | server_port | + server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | + server_so_reuseport | server_delay_close | server_unblock_lan_zones | + server_dns64_prefix | server_dns64_synthall | +- server_infra_cache_min_rtt ++ server_infra_cache_min_rtt | server_cache_max_negative_ttl + ; + stubstart: VAR_STUB_ZONE + { +@@ -991,6 +992,15 @@ server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG + free($2); + } + ; ++server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG ++ { ++ OUTYY(("P(server_cache_max_negative_ttl:%s)\n", $2)); ++ if(atoi($2) == 0 && strcmp($2, "0") != 0) ++ yyerror("number expected"); ++ else cfg_parser->cfg->max_negative_ttl = atoi($2); ++ free($2); ++ } ++ ; + server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG + { + OUTYY(("P(server_cache_min_ttl:%s)\n", $2)); +diff --git a/util/data/msgparse.h b/util/data/msgparse.h +index 221a45a..549cc2d 100644 +--- a/util/data/msgparse.h ++++ b/util/data/msgparse.h +@@ -76,6 +76,8 @@ struct regional; + extern time_t MAX_TTL; + /** Minimum TTL that is allowed. */ + extern time_t MIN_TTL; ++/** Maximum Negative TTL that is allowed */ ++extern time_t MAX_NEG_TTL; + /** Negative cache time (for entries without any RRs.) */ + #define NORR_TTL 5 /* seconds */ + +diff --git a/util/data/msgreply.c b/util/data/msgreply.c +index 68bcfd0..d197ad7 100644 +--- a/util/data/msgreply.c ++++ b/util/data/msgreply.c +@@ -57,6 +57,8 @@ + time_t MAX_TTL = 3600 * 24 * 10; /* ten days */ + /** MIN TTL default for messages and rrsets */ + time_t MIN_TTL = 0; ++/** MAX Negative TTL, for SOA records in authority section */ ++time_t MAX_NEG_TTL = 3600; /* one hour */ + + /** allocate qinfo, return 0 on error */ + static int +@@ -152,10 +154,23 @@ repinfo_alloc_rrset_keys(struct reply_info* rep, struct alloc_cache* alloc, + return 1; + } + ++/** find the minimumttl in the rdata of SOA record */ ++static time_t ++soa_find_minttl(struct rr_parse* rr) ++{ ++ uint16_t rlen = sldns_read_uint16(rr->ttl_data+4); ++ if(rlen < 20) ++ return 0; /* rdata too small for SOA (dname, dname, 5*32bit) */ ++ /* minimum TTL is the last 32bit value in the rdata of the record */ ++ /* at position ttl_data + 4(ttl) + 2(rdatalen) + rdatalen - 4(timeval)*/ ++ return (time_t)sldns_read_uint32(rr->ttl_data+6+rlen-4); ++} ++ + /** do the rdata copy */ + static int + rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, +- struct rr_parse* rr, time_t* rr_ttl, uint16_t type) ++ struct rr_parse* rr, time_t* rr_ttl, uint16_t type, ++ sldns_pkt_section section) + { + uint16_t pkt_len; + const sldns_rr_descriptor* desc; +@@ -164,6 +179,14 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, + /* RFC 2181 Section 8. if msb of ttl is set treat as if zero. */ + if(*rr_ttl & 0x80000000U) + *rr_ttl = 0; ++ if(type == LDNS_RR_TYPE_SOA && section == LDNS_SECTION_AUTHORITY) { ++ /* negative response. see if TTL of SOA record larger than the ++ * minimum-ttl in the rdata of the SOA record */ ++ if(*rr_ttl > soa_find_minttl(rr)) ++ *rr_ttl = soa_find_minttl(rr); ++ if(*rr_ttl > MAX_NEG_TTL) ++ *rr_ttl = MAX_NEG_TTL; ++ } + if(*rr_ttl < MIN_TTL) + *rr_ttl = MIN_TTL; + if(*rr_ttl < data->ttl) +@@ -253,7 +276,7 @@ parse_rr_copy(sldns_buffer* pkt, struct rrset_parse* pset, + data->rr_data[i] = nextrdata; + nextrdata += rr->size; + if(!rdata_copy(pkt, data, data->rr_data[i], rr, +- &data->rr_ttl[i], pset->type)) ++ &data->rr_ttl[i], pset->type, pset->section)) + return 0; + rr = rr->next; + } +@@ -264,7 +287,7 @@ parse_rr_copy(sldns_buffer* pkt, struct rrset_parse* pset, + data->rr_data[i] = nextrdata; + nextrdata += rr->size; + if(!rdata_copy(pkt, data, data->rr_data[i], rr, +- &data->rr_ttl[i], LDNS_RR_TYPE_RRSIG)) ++ &data->rr_ttl[i], LDNS_RR_TYPE_RRSIG, pset->section)) + return 0; + rr = rr->next; + } +-- +2.4.3 + diff --git a/0002-Maximum-negative-TTL-patch-configparser-regeneration.patch b/0002-Maximum-negative-TTL-patch-configparser-regeneration.patch new file mode 100644 index 0000000..77b462e --- /dev/null +++ b/0002-Maximum-negative-TTL-patch-configparser-regeneration.patch @@ -0,0 +1,8601 @@ +From 1653dc0d2a6219c3467170bce699370058b626fc Mon Sep 17 00:00:00 2001 +From: Tomas Hozza +Date: Mon, 15 Jun 2015 18:45:12 +0200 +Subject: [PATCH 2/2] Maximum negative TTL patch - configparser regeneration + +Signed-off-by: Tomas Hozza +--- + util/configlexer.c | 2518 ++++++++++++++++++------------------- + util/configparser.c | 3443 ++++++++++++++++++++++++--------------------------- + util/configparser.h | 352 +++--- + 3 files changed, 3047 insertions(+), 3266 deletions(-) + +diff --git a/util/configlexer.c b/util/configlexer.c +index 7bb48af..b2e2fec 100644 +--- a/util/configlexer.c ++++ b/util/configlexer.c +@@ -363,8 +363,8 @@ static void yy_fatal_error (yyconst char msg[] ); + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; + +-#define YY_NUM_RULES 164 +-#define YY_END_OF_BUFFER 165 ++#define YY_NUM_RULES 165 ++#define YY_END_OF_BUFFER 166 + /* This struct is not used in this scanner, + but its presence is necessary. */ + struct yy_trans_info +@@ -372,187 +372,188 @@ struct yy_trans_info + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +-static yyconst flex_int16_t yy_accept[1628] = ++static yyconst flex_int16_t yy_accept[1641] = + { 0, +- 1, 1, 146, 146, 150, 150, 154, 154, 158, 158, +- 1, 1, 165, 162, 1, 144, 144, 163, 2, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 163, 146, +- 147, 147, 148, 163, 150, 151, 151, 152, 163, 157, +- 154, 155, 155, 156, 163, 158, 159, 159, 160, 163, +- 161, 145, 2, 149, 161, 163, 162, 0, 1, 2, +- 2, 2, 2, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 146, 0, 150, 0, 157, 0, 154, 158, +- 0, 161, 0, 2, 2, 161, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 161, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 161, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 66, 162, 162, 162, 162, +- 162, 6, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 161, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 161, 162, 162, 162, 162, 29, 162, 162, 162, +- 162, 162, 162, 162, 162, 131, 162, 12, 13, 162, +- 15, 14, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 124, +- 162, 162, 162, 162, 162, 3, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 161, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 153, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 32, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 33, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 81, 153, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 80, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 64, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 20, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 30, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 31, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 22, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 26, 162, 27, 162, +- 162, 162, 67, 162, 68, 162, 65, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 5, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 83, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 23, +- 162, 162, 162, 162, 108, 107, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 34, 162, 162, 162, 162, +- 162, 162, 162, 162, 70, 69, 162, 162, 162, 162, +- 162, 162, 162, 104, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 51, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 55, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 106, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 4, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 101, 162, 162, +- 162, 162, 162, 162, 162, 117, 162, 102, 162, 129, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 21, 162, 162, 162, 162, 72, 162, 73, 71, 162, +- 162, 162, 162, 162, 162, 79, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 103, 162, 162, 162, +- 162, 128, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 63, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 28, 162, 162, 17, 162, 162, 162, 16, +- 162, 88, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 41, 42, 162, 162, 162, +- 162, 162, 162, 162, 132, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 74, 162, +- 162, 162, 162, 162, 78, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 82, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 123, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 92, +- +- 162, 96, 162, 162, 162, 162, 77, 162, 162, 115, +- 162, 162, 162, 162, 130, 162, 162, 162, 162, 162, +- 162, 162, 137, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 95, 162, 162, 162, 162, 162, 43, +- 44, 162, 50, 97, 162, 109, 105, 162, 162, 37, +- 162, 99, 162, 162, 162, 162, 162, 7, 162, 62, +- 114, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 84, 136, 162, +- 162, 162, 162, 162, 162, 162, 162, 125, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 98, 162, 36, 38, 162, 162, 162, 162, 162, +- 61, 162, 162, 162, 162, 119, 18, 19, 162, 162, +- 162, 162, 162, 162, 162, 59, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 121, 118, 162, 162, 162, +- 162, 162, 162, 162, 162, 35, 162, 162, 162, 162, +- 162, 162, 11, 162, 162, 162, 162, 162, 162, 162, +- 162, 10, 162, 162, 39, 162, 127, 120, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 91, +- 90, 162, 122, 116, 162, 162, 162, 162, 162, 162, +- +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 45, 162, 126, 162, 162, 162, 162, 40, 162, +- 162, 162, 85, 87, 110, 162, 162, 162, 89, 162, +- 162, 162, 162, 162, 162, 162, 162, 133, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 24, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 135, 162, 162, +- 113, 162, 162, 162, 162, 162, 162, 48, 162, 25, +- 162, 9, 162, 162, 111, 52, 162, 162, 162, 94, +- 162, 162, 162, 162, 162, 162, 134, 75, 162, 162, +- +- 162, 54, 58, 53, 162, 46, 162, 8, 162, 162, +- 93, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 57, 162, 47, 162, 112, 162, 162, 86, 162, 162, +- 162, 162, 162, 162, 76, 56, 49, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 60, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 100, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, +- +- 162, 140, 162, 162, 162, 162, 162, 162, 162, 162, +- 162, 162, 162, 162, 162, 138, 162, 141, 142, 162, +- 162, 162, 162, 162, 139, 143, 0 ++ 1, 1, 147, 147, 151, 151, 155, 155, 159, 159, ++ 1, 1, 166, 163, 1, 145, 145, 164, 2, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 164, 147, ++ 148, 148, 149, 164, 151, 152, 152, 153, 164, 158, ++ 155, 156, 156, 157, 164, 159, 160, 160, 161, 164, ++ 162, 146, 2, 150, 162, 164, 163, 0, 1, 2, ++ 2, 2, 2, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 147, 0, 151, 0, 158, 0, 155, 159, ++ 0, 162, 0, 2, 2, 162, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 162, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 162, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 67, 163, 163, 163, 163, ++ 163, 6, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 162, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 162, 163, 163, 163, 163, 29, 163, 163, 163, ++ 163, 163, 163, 163, 163, 132, 163, 12, 13, 163, ++ 15, 14, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 125, ++ 163, 163, 163, 163, 163, 3, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 162, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 154, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 32, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 33, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 82, 154, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 81, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 65, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 20, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 30, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 31, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 22, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 26, 163, 27, 163, ++ 163, 163, 68, 163, 69, 163, 66, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 5, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 84, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 23, 163, 163, 163, 163, 109, 108, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 34, 163, 163, 163, ++ 163, 163, 163, 163, 163, 71, 70, 163, 163, 163, ++ 163, 163, 163, 163, 105, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 52, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 56, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 107, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 4, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 102, ++ 163, 163, 163, 163, 163, 163, 163, 163, 118, 163, ++ 103, 163, 130, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 21, 163, 163, 163, 163, 73, 163, ++ 74, 72, 163, 163, 163, 163, 163, 163, 80, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 104, ++ 163, 163, 163, 163, 129, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 64, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 28, 163, 163, 17, 163, ++ 163, 163, 16, 163, 89, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 41, ++ 43, 163, 163, 163, 163, 163, 163, 163, 133, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 75, 163, 163, 163, 163, 163, 79, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 83, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 124, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 93, 163, 97, 163, 163, 163, 163, ++ 78, 163, 163, 163, 116, 163, 163, 163, 163, 131, ++ 163, 163, 163, 163, 163, 163, 163, 138, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 96, 163, ++ 163, 163, 163, 163, 44, 45, 163, 51, 98, 163, ++ 110, 106, 163, 163, 37, 163, 100, 163, 163, 163, ++ 163, 163, 7, 163, 63, 115, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 85, 137, 163, 163, 163, 163, 163, ++ ++ 163, 163, 163, 126, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 99, 163, 36, ++ 38, 163, 163, 163, 163, 163, 62, 163, 163, 163, ++ 163, 120, 18, 19, 163, 163, 163, 163, 163, 163, ++ 163, 60, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 122, 119, 163, 163, 163, 163, 163, 163, ++ 163, 163, 35, 163, 163, 163, 163, 163, 163, 11, ++ 163, 163, 163, 163, 163, 163, 163, 163, 10, 163, ++ 163, 39, 163, 128, 121, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 92, 91, 163, 163, ++ ++ 123, 117, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 46, ++ 163, 127, 163, 163, 163, 163, 40, 163, 163, 163, ++ 86, 88, 111, 163, 163, 163, 90, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 134, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 24, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 136, 163, 163, ++ 114, 163, 163, 163, 163, 163, 163, 49, 163, 25, ++ 163, 9, 163, 163, 112, 53, 163, 163, 163, 95, ++ ++ 163, 163, 163, 163, 163, 163, 163, 135, 76, 163, ++ 163, 163, 55, 59, 54, 163, 47, 163, 8, 163, ++ 163, 94, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 58, 163, 48, 163, 113, 163, 163, 87, ++ 42, 163, 163, 163, 163, 163, 163, 77, 57, 50, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 61, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 101, 163, 163, 163, 163, ++ ++ 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 141, 163, 163, 163, 163, 163, ++ 163, 163, 163, 163, 163, 163, 163, 163, 139, 163, ++ 142, 143, 163, 163, 163, 163, 163, 140, 144, 0 + } ; + + static yyconst flex_int32_t yy_ec[256] = +@@ -598,15 +599,15 @@ static yyconst flex_int32_t yy_meta[66] = + 1, 1, 1, 1, 1 + } ; + +-static yyconst flex_int16_t yy_base[1642] = ++static yyconst flex_int16_t yy_base[1655] = + { 0, + 0, 0, 63, 66, 69, 71, 77, 83, 88, 91, +- 129, 135, 428, 340, 95, 4681, 4681, 4681, 107, 110, ++ 129, 135, 428, 340, 95, 4722, 4722, 4722, 107, 110, + 142, 180, 108, 50, 145, 172, 118, 148, 121, 181, + 197, 166, 217, 223, 251, 230, 164, 262, 116, 312, +- 4681, 4681, 4681, 94, 298, 4681, 4681, 4681, 96, 269, +- 294, 4681, 4681, 4681, 244, 254, 4681, 4681, 4681, 102, +- 249, 4681, 259, 4681, 247, 287, 237, 309, 111, 0, ++ 4722, 4722, 4722, 94, 298, 4722, 4722, 4722, 96, 269, ++ 294, 4722, 4722, 4722, 244, 254, 4722, 4722, 4722, 102, ++ 249, 4722, 259, 4722, 247, 287, 237, 309, 111, 0, + 313, 0, 0, 284, 170, 265, 288, 289, 296, 305, + 301, 273, 302, 328, 306, 311, 308, 309, 216, 325, + 329, 339, 353, 344, 356, 357, 338, 365, 346, 367, +@@ -633,8 +634,8 @@ static yyconst flex_int16_t yy_base[1642] = + 934, 960, 938, 945, 943, 949, 959, 969, 973, 970, + 982, 985, 976, 983, 981, 992, 996, 978, 1002, 1001, + +- 1010, 1015, 1012, 1003, 1021, 4681, 1026, 1004, 1028, 1023, +- 1033, 4681, 1037, 1038, 1020, 1041, 1048, 1006, 1044, 1047, ++ 1010, 1015, 1012, 1003, 1021, 4722, 1026, 1004, 1028, 1023, ++ 1033, 4722, 1037, 1038, 1020, 1041, 1048, 1006, 1044, 1047, + 1049, 1063, 1051, 1072, 1064, 1060, 1107, 1075, 1076, 1104, + 1098, 1085, 1110, 1089, 1116, 1103, 1112, 1131, 1102, 1125, + 1122, 1144, 1136, 1141, 1157, 1130, 1150, 1148, 1151, 899, +@@ -647,13 +648,13 @@ static yyconst flex_int16_t yy_base[1642] = + 1342, 1318, 1317, 1321, 1331, 1333, 1327, 1332, 1335, 1344, + 1341, 1343, 1350, 1337, 1348, 1371, 1370, 1373, 1376, 1366, + 1368, 1377, 1378, 1386, 1389, 1397, 1401, 1392, 1400, 1411, +- 1408, 1416, 1412, 1426, 1404, 1431, 4681, 1445, 1442, 1424, +- 1437, 1448, 1443, 1435, 1484, 4681, 1439, 4681, 4681, 1451, +- 4681, 4681, 1465, 1438, 1473, 1449, 1532, 1475, 1467, 1472, ++ 1408, 1416, 1412, 1426, 1404, 1431, 4722, 1445, 1442, 1424, ++ 1437, 1448, 1443, 1435, 1484, 4722, 1439, 4722, 4722, 1451, ++ 4722, 4722, 1465, 1438, 1473, 1449, 1532, 1475, 1467, 1472, + 1483, 1490, 1491, 1504, 1499, 1518, 1525, 1510, 1502, 1508, + 1513, 1537, 1541, 1535, 1542, 1543, 1561, 1562, 1557, 1566, +- 1559, 1565, 1558, 1570, 1574, 1579, 1582, 1586, 1577, 4681, +- 1588, 1584, 1594, 1592, 1609, 4681, 1589, 1600, 1603, 1606, ++ 1559, 1565, 1558, 1570, 1574, 1579, 1582, 1586, 1577, 4722, ++ 1588, 1584, 1594, 1592, 1609, 4722, 1589, 1600, 1603, 1606, + + 1613, 1611, 1619, 1625, 1623, 1630, 1633, 1634, 1637, 1639, + 1640, 1618, 1667, 1661, 1652, 1660, 1668, 1653, 1676, 1682, +@@ -661,314 +662,316 @@ static yyconst flex_int16_t yy_base[1642] = + 1695, 1694, 1744, 1721, 1712, 1705, 1716, 1701, 1723, 1742, + 1732, 1746, 1757, 1763, 1752, 1754, 1764, 1771, 1774, 1802, + 1780, 1782, 1788, 1793, 1792, 1798, 1799, 1795, 1740, 1807, +- 4681, 1790, 1815, 1812, 1819, 1838, 1817, 1839, 1830, 1842, +- 1833, 1837, 1841, 1856, 4681, 1835, 1855, 1852, 1866, 1879, +- 1880, 1863, 1860, 1890, 4681, 1895, 1888, 1893, 1882, 1881, ++ 4722, 1790, 1815, 1812, 1819, 1838, 1817, 1839, 1830, 1842, ++ 1833, 1837, 1841, 1856, 4722, 1835, 1855, 1852, 1866, 1879, ++ 1880, 1863, 1860, 1890, 4722, 1895, 1888, 1893, 1882, 1881, + 1899, 1883, 1898, 1900, 1907, 1917, 1908, 1918, 1912, 1919, + + 1935, 1924, 1928, 1916, 1939, 1944, 1945, 1940, 1951, 1946, + 1941, 1960, 1963, 1955, 1961, 1956, 1972, 1977, 120, 1973, +- 1983, 1974, 1969, 4681, 76, 1981, 1988, 1978, 2010, 2011, ++ 1983, 1974, 1969, 4722, 76, 1981, 1988, 1978, 2010, 2011, + 2004, 2000, 2012, 2018, 2002, 2005, 2013, 2015, 2033, 2025, + 2029, 2027, 2045, 2044, 2041, 2050, 2054, 2040, 2056, 2061, + 2059, 2074, 2063, 2076, 2060, 2083, 2084, 2077, 2075, 2087, +- 2095, 2091, 2085, 2103, 2106, 4681, 2121, 2105, 2112, 2109, ++ 2095, 2091, 2085, 2103, 2106, 4722, 2121, 2105, 2112, 2109, + 2126, 2138, 2118, 2128, 2134, 2132, 2148, 2139, 2146, 2153, + 2158, 2147, 2155, 2145, 2161, 2164, 2157, 2173, 2183, 2175, +- 4681, 2189, 2180, 2185, 2184, 2187, 2200, 2191, 2211, 2190, ++ 4722, 2189, 2180, 2185, 2184, 2187, 2200, 2191, 2211, 2190, + +- 2209, 2216, 2221, 4681, 2220, 2232, 2222, 2234, 2219, 2240, ++ 2209, 2216, 2221, 4722, 2220, 2232, 2222, 2234, 2219, 2240, + 2246, 2244, 2225, 2248, 2247, 2249, 2256, 2242, 2259, 2263, +- 4681, 2266, 2267, 2272, 2283, 2276, 2269, 2278, 2291, 2275, +- 2284, 2302, 2281, 2286, 2282, 2313, 2297, 2294, 2305, 2315, +- 2303, 2330, 4681, 2343, 2322, 2328, 2346, 2311, 2341, 2347, +- 2334, 2337, 2333, 2349, 2360, 2353, 2357, 2362, 2361, 2363, +- 2381, 2354, 2372, 2380, 2390, 2396, 2384, 2394, 2398, 2399, +- 2389, 2409, 2404, 2419, 2426, 4681, 2420, 2428, 2421, 2415, +- 2443, 2438, 2425, 2430, 2424, 2437, 2439, 2462, 2440, 2454, +- 2455, 2460, 2461, 2442, 2453, 2477, 2480, 2487, 2471, 2483, +- +- 2476, 2493, 2489, 2495, 2488, 2501, 4681, 2506, 4681, 2504, +- 2512, 2521, 4681, 2525, 4681, 2527, 4681, 2526, 2531, 2515, +- 2516, 2520, 2533, 2522, 2544, 2535, 2545, 2547, 2539, 2559, +- 2548, 2565, 4681, 2558, 2564, 2579, 2561, 2573, 2575, 2582, +- 2594, 2583, 2592, 2587, 2590, 2589, 2607, 4681, 2574, 2614, +- 2606, 2603, 2626, 2628, 2622, 2634, 2630, 2611, 2645, 2641, +- 2646, 2633, 2639, 2649, 2659, 2654, 2660, 2652, 2662, 2666, +- 2663, 2668, 2685, 2670, 2687, 2702, 2681, 2686, 2695, 4681, +- 2690, 2696, 2709, 2704, 4681, 4681, 2680, 2722, 2714, 2708, +- 2728, 2715, 2741, 2729, 2743, 2740, 2739, 2731, 2736, 2746, +- +- 2747, 2751, 2756, 2763, 2758, 4681, 2766, 2764, 2792, 2783, +- 2774, 2796, 2784, 2795, 4681, 4681, 2799, 2787, 2790, 2786, +- 2806, 2802, 2810, 4681, 2816, 2811, 2825, 2834, 2835, 2832, +- 2821, 2831, 2820, 2837, 2838, 2842, 2853, 2848, 2852, 2866, +- 2856, 2871, 2876, 4681, 2873, 2884, 2877, 2880, 2879, 2878, +- 2881, 2886, 2905, 2875, 2904, 2894, 2924, 2907, 2906, 2909, +- 2910, 2915, 2926, 2930, 2942, 2936, 4681, 2944, 2931, 2947, +- 2920, 2948, 2958, 2954, 2965, 2940, 2941, 2953, 2943, 2982, +- 2963, 2992, 2974, 4681, 2986, 2983, 2981, 2990, 2998, 2976, +- 3011, 2988, 3010, 4681, 3013, 3003, 3008, 3020, 3031, 3037, +- +- 3023, 3016, 3029, 3030, 3033, 3040, 3043, 3051, 3050, 3062, +- 3047, 3058, 3069, 3080, 3086, 3085, 3057, 3075, 3094, 3079, +- 3088, 3089, 3073, 3107, 3082, 3109, 3096, 4681, 3114, 3097, +- 3111, 3116, 3115, 3121, 3123, 4681, 3124, 4681, 3118, 4681, +- 3125, 3126, 3113, 3146, 3140, 3142, 3135, 3160, 3150, 3149, +- 4681, 3167, 3153, 3166, 3169, 4681, 3170, 4681, 4681, 3172, +- 3176, 3157, 3180, 3187, 3183, 4681, 3184, 3192, 3199, 3195, +- 3188, 3205, 3208, 3211, 3206, 3210, 4681, 3219, 3226, 3207, +- 3231, 4681, 3215, 3241, 3233, 3238, 3247, 3256, 3257, 3227, +- 3244, 3267, 3268, 4681, 3250, 3252, 3275, 3270, 3278, 3279, +- +- 3271, 3289, 4681, 3294, 3298, 4681, 3291, 3265, 3295, 4681, +- 3307, 4681, 3309, 3305, 3302, 3310, 3323, 3324, 3335, 3322, +- 3339, 3340, 3331, 3348, 3347, 4681, 4681, 3350, 3352, 3356, +- 3349, 3346, 3358, 3353, 4681, 3362, 3373, 3342, 3366, 3389, +- 3377, 3380, 3397, 3398, 3384, 3401, 3383, 3393, 4681, 3391, +- 3400, 3410, 3405, 3413, 4681, 3403, 3432, 3425, 3427, 3430, +- 3444, 3447, 3448, 3436, 3450, 3451, 3437, 3453, 3455, 3454, +- 4681, 3461, 3460, 3465, 3467, 3468, 3463, 3476, 3488, 3485, +- 3472, 3497, 4681, 3498, 3475, 3506, 3496, 3502, 3503, 3492, +- 3509, 3499, 3516, 3512, 3528, 3529, 3526, 3546, 3541, 4681, +- +- 3530, 4681, 3542, 3557, 3556, 3561, 4681, 3544, 3548, 4681, +- 3563, 3569, 3571, 3576, 4681, 3579, 3567, 3594, 3580, 3585, +- 3583, 3603, 4681, 3578, 3597, 3611, 3608, 3596, 3610, 3605, +- 3612, 3619, 3622, 4681, 3618, 3615, 3637, 3640, 3649, 4681, +- 4681, 3635, 4681, 4681, 3650, 4681, 4681, 3652, 3653, 4681, +- 3654, 4681, 3660, 3658, 3655, 3643, 3661, 4681, 3668, 4681, +- 4681, 3664, 3670, 3675, 3678, 3673, 3674, 3690, 3682, 3685, +- 3692, 3695, 3696, 3701, 3691, 3713, 3705, 3698, 3700, 3702, +- 3712, 3723, 3725, 3721, 3739, 3745, 3746, 4681, 4681, 3729, +- 3740, 3732, 3735, 3748, 3741, 3742, 3764, 4681, 3774, 3768, +- +- 3763, 3762, 3775, 3767, 3779, 3786, 3800, 3781, 3782, 3784, +- 3792, 4681, 3795, 4681, 4681, 3796, 3815, 3817, 3806, 3810, +- 4681, 3829, 3813, 3831, 3834, 4681, 4681, 4681, 3835, 3824, +- 3838, 3844, 3845, 3833, 3856, 4681, 3839, 3848, 3862, 3842, +- 3868, 3870, 3882, 3885, 3886, 4681, 4681, 3891, 3884, 3887, +- 3881, 3878, 3894, 3895, 3889, 4681, 3896, 3897, 3898, 3921, +- 3905, 3922, 4681, 3916, 3918, 3917, 3939, 3932, 3940, 3934, +- 3945, 4681, 3937, 3943, 4681, 3947, 4681, 4681, 3933, 3951, +- 3968, 3954, 3955, 3975, 3958, 3970, 3990, 3987, 3985, 4681, +- 4681, 3982, 4681, 4681, 3974, 3994, 3978, 3973, 4008, 4004, +- +- 4005, 3998, 4009, 4012, 4011, 4002, 4010, 4015, 4034, 4025, +- 4026, 4681, 4044, 4681, 4032, 4048, 4052, 4049, 4681, 4051, +- 4053, 4037, 4681, 4681, 4681, 4061, 4068, 4054, 4681, 4077, +- 4075, 4070, 4081, 4076, 4071, 4074, 4100, 4681, 4087, 4090, +- 4107, 4101, 4096, 4097, 4111, 4115, 4103, 4122, 4117, 4125, +- 4126, 4681, 4135, 4121, 4118, 4150, 4151, 4138, 4142, 4139, +- 4155, 4148, 4156, 4145, 4174, 4162, 4171, 4681, 4173, 4166, +- 4681, 4176, 4187, 4194, 4195, 4196, 4197, 4681, 4199, 4681, +- 4203, 4681, 4205, 4206, 4681, 4681, 4200, 4209, 4210, 4681, +- 4213, 4198, 4212, 4229, 4223, 4236, 4681, 4681, 4231, 4234, +- +- 4245, 4681, 4681, 4681, 4248, 4681, 4250, 4681, 4252, 4238, +- 4681, 4239, 4259, 4235, 4255, 4262, 4264, 4280, 4271, 4267, +- 4681, 4288, 4681, 4292, 4681, 4281, 4294, 4681, 4303, 4286, +- 4296, 4287, 4284, 4289, 4681, 4681, 4681, 4314, 4304, 4312, +- 4307, 4317, 4320, 4313, 4322, 4342, 4334, 4341, 4345, 4329, +- 4333, 4359, 4344, 4681, 4351, 4355, 4361, 4363, 4353, 4370, +- 4357, 4365, 4368, 4378, 4385, 4377, 4384, 4394, 4381, 4401, +- 4404, 4408, 4410, 4403, 4411, 4417, 4412, 4405, 4414, 4438, +- 4426, 4430, 4681, 4442, 4429, 4431, 4439, 4453, 4456, 4436, +- 4458, 4463, 4457, 4460, 4449, 4471, 4466, 4485, 4477, 4494, +- +- 4478, 4681, 4498, 4501, 4483, 4488, 4508, 4495, 4512, 4510, +- 4513, 4520, 4516, 4517, 4525, 4681, 4537, 4681, 4681, 4540, +- 4529, 4530, 4546, 4550, 4681, 4681, 4681, 4589, 4596, 4603, +- 4610, 4617, 82, 4624, 4631, 4638, 4645, 4652, 4659, 4666, +- 4673 ++ 4722, 2266, 2267, 2272, 2283, 2276, 2269, 2278, 2291, 2275, ++ 2284, 2302, 2286, 2281, 2296, 2308, 2297, 2294, 2312, 2315, ++ 2322, 2321, 4722, 2354, 2316, 2324, 2329, 2341, 2342, 2333, ++ 2350, 2343, 2339, 2349, 2358, 2353, 2359, 2369, 2356, 2368, ++ 2364, 2382, 2380, 2388, 2377, 2398, 2390, 2401, 2404, 2396, ++ 2391, 2411, 2417, 2425, 2421, 4722, 2427, 2428, 2418, 2415, ++ 2440, 2441, 2431, 2437, 2436, 2438, 2445, 2470, 2452, 2454, ++ 2455, 2461, 2472, 2448, 2475, 2484, 2482, 2488, 2478, 2467, ++ ++ 2496, 2493, 2499, 2502, 2501, 2512, 4722, 2507, 4722, 2505, ++ 2523, 2526, 4722, 2527, 4722, 2530, 4722, 2532, 2537, 2529, ++ 2515, 2522, 2541, 2543, 2545, 2549, 2554, 2539, 2563, 2556, ++ 2559, 2570, 4722, 2562, 2565, 2576, 2586, 2573, 2588, 2589, ++ 2592, 2590, 2602, 2603, 2614, 2585, 2584, 2618, 4722, 2601, ++ 2626, 2619, 2612, 2637, 2638, 2639, 2633, 2651, 2622, 2645, ++ 2641, 2660, 2658, 2654, 2657, 2674, 2663, 2675, 2662, 2687, ++ 2678, 2671, 2688, 2683, 2682, 2698, 2699, 2700, 2702, 2707, ++ 4722, 2715, 2705, 2724, 2721, 4722, 4722, 2716, 2714, 2726, ++ 2729, 2741, 2727, 2753, 2743, 2744, 2759, 2747, 2748, 2751, ++ ++ 2768, 2756, 2758, 2783, 2771, 2772, 4722, 2770, 2773, 2797, ++ 2795, 2785, 2806, 2794, 2810, 4722, 4722, 2796, 2802, 2798, ++ 2808, 2824, 2814, 2818, 4722, 2828, 2822, 2833, 2834, 2842, ++ 2835, 2829, 2843, 2850, 2845, 2857, 2855, 2856, 2877, 2866, ++ 2862, 2870, 2881, 2884, 2888, 4722, 2883, 2890, 2886, 2891, ++ 2893, 2889, 2885, 2894, 2913, 2904, 2915, 2906, 2936, 2916, ++ 2919, 2914, 2909, 2925, 2939, 2944, 2951, 2947, 4722, 2952, ++ 2940, 2957, 2929, 2955, 2959, 2963, 2956, 2953, 2971, 2972, ++ 2967, 2976, 2978, 3000, 2986, 4722, 2980, 2993, 2994, 3003, ++ 2999, 2985, 3013, 2996, 3016, 4722, 3012, 3028, 3025, 3027, ++ ++ 3029, 3037, 3038, 3026, 3033, 3031, 3036, 3056, 3057, 3067, ++ 3060, 3068, 3058, 3072, 3061, 3070, 3096, 3084, 3055, 3078, ++ 3095, 3088, 3097, 3092, 3082, 3106, 3094, 3114, 3108, 4722, ++ 3109, 3117, 3125, 3126, 3123, 3127, 3124, 3128, 4722, 3133, ++ 4722, 3134, 4722, 3136, 3140, 3122, 3149, 3144, 3147, 3164, ++ 3165, 3176, 3163, 4722, 3182, 3160, 3171, 3172, 4722, 3179, ++ 4722, 4722, 3174, 3186, 3185, 3195, 3198, 3184, 4722, 3207, ++ 3197, 3215, 3209, 3199, 3219, 3221, 3223, 3213, 3210, 4722, ++ 3227, 3236, 3234, 3240, 4722, 3237, 3239, 3242, 3248, 3254, ++ 3265, 3266, 3255, 3257, 3276, 3269, 4722, 3267, 3275, 3285, ++ ++ 3278, 3279, 3297, 3298, 3296, 4722, 3282, 3305, 4722, 3306, ++ 3300, 3295, 4722, 3315, 4722, 3322, 3314, 3318, 3327, 3330, ++ 3331, 3339, 3325, 3346, 3348, 3338, 3359, 3352, 3341, 4722, ++ 4722, 3355, 3362, 3368, 3371, 3354, 3379, 3374, 4722, 3365, ++ 3380, 3370, 3387, 3389, 3382, 3388, 3376, 3401, 3398, 3403, ++ 3392, 3407, 4722, 3409, 3419, 3416, 3412, 3420, 4722, 3422, ++ 3439, 3431, 3434, 3443, 3449, 3452, 3454, 3446, 3455, 3457, ++ 3453, 3462, 3463, 3466, 4722, 3469, 3467, 3468, 3478, 3470, ++ 3486, 3495, 3490, 3500, 3483, 3503, 4722, 3504, 3481, 3508, ++ 3511, 3512, 3516, 3501, 3510, 3519, 3527, 3529, 3533, 3536, ++ ++ 3535, 3556, 3537, 4722, 3538, 4722, 3546, 3560, 3570, 3577, ++ 4722, 3564, 3548, 3562, 4722, 3587, 3575, 3572, 3581, 4722, ++ 3593, 3582, 3594, 3588, 3584, 3591, 3602, 4722, 3608, 3613, ++ 3624, 3621, 3611, 3628, 3614, 3637, 3640, 3627, 4722, 3629, ++ 3639, 3650, 3641, 3655, 4722, 4722, 3646, 4722, 4722, 3652, ++ 4722, 4722, 3658, 3662, 4722, 3665, 4722, 3654, 3669, 3659, ++ 3656, 3682, 4722, 3680, 4722, 4722, 3683, 3689, 3679, 3690, ++ 3694, 3698, 3699, 3692, 3685, 3696, 3701, 3712, 3706, 3707, ++ 3729, 3723, 3710, 3721, 3730, 3718, 3733, 3726, 3739, 3750, ++ 3753, 3746, 3749, 4722, 4722, 3745, 3757, 3740, 3759, 3769, ++ ++ 3763, 3773, 3780, 4722, 3787, 3784, 3782, 3776, 3777, 3785, ++ 3796, 3798, 3803, 3799, 3804, 3808, 3809, 4722, 3813, 4722, ++ 4722, 3814, 3830, 3816, 3822, 3820, 4722, 3839, 3826, 3848, ++ 3850, 4722, 4722, 4722, 3851, 3836, 3846, 3857, 3863, 3861, ++ 3859, 4722, 3854, 3865, 3866, 3872, 3874, 3876, 3895, 3878, ++ 3900, 3902, 4722, 4722, 3908, 3905, 3901, 3903, 3896, 3907, ++ 3913, 3904, 4722, 3914, 3924, 3938, 3939, 3925, 3940, 4722, ++ 3927, 3930, 3936, 3956, 3951, 3958, 3953, 3954, 4722, 3962, ++ 3957, 4722, 3968, 4722, 4722, 3952, 3989, 3966, 3991, 3992, ++ 3994, 3982, 3987, 4006, 4003, 4004, 4722, 4722, 3999, 4010, ++ ++ 4722, 4722, 3995, 4002, 3993, 4016, 4027, 4015, 4025, 4037, ++ 4028, 4022, 4030, 4043, 4031, 4033, 4052, 4042, 4056, 4722, ++ 4050, 4722, 4063, 4065, 4078, 4057, 4722, 4058, 4075, 4070, ++ 4722, 4722, 4722, 4086, 4097, 4090, 4722, 4096, 4102, 4080, ++ 4083, 4107, 4088, 4029, 4094, 4116, 4722, 4113, 4115, 4120, ++ 4126, 4121, 4117, 4133, 4140, 4123, 4151, 4139, 4152, 4150, ++ 4722, 4154, 4153, 4134, 4165, 4169, 4167, 4162, 4164, 4170, ++ 4163, 4168, 4166, 4180, 4191, 4187, 4203, 4722, 4206, 4189, ++ 4722, 4195, 4207, 4210, 4217, 4219, 4215, 4722, 4221, 4722, ++ 4222, 4722, 4224, 4233, 4722, 4722, 4232, 4225, 4236, 4722, ++ ++ 4248, 4216, 4227, 4242, 4239, 4243, 4266, 4722, 4722, 4254, ++ 4261, 4269, 4722, 4722, 4722, 4262, 4722, 4272, 4722, 4277, ++ 4263, 4722, 4268, 4279, 4282, 4267, 4287, 4289, 4303, 4306, ++ 4288, 4297, 4722, 4312, 4722, 4317, 4722, 4309, 4319, 4722, ++ 4722, 4291, 4313, 4318, 4322, 4324, 4316, 4722, 4722, 4722, ++ 4348, 4333, 4343, 4336, 4339, 4345, 4337, 4350, 4331, 4358, ++ 4366, 4368, 4349, 4363, 4385, 4372, 4722, 4376, 4377, 4401, ++ 4406, 4393, 4395, 4390, 4397, 4400, 4402, 4403, 4412, 4405, ++ 4420, 4421, 4443, 4436, 4445, 4446, 4430, 4418, 4426, 4447, ++ 4437, 4442, 4459, 4460, 4453, 4722, 4457, 4463, 4472, 4481, ++ ++ 4474, 4480, 4473, 4495, 4497, 4499, 4503, 4486, 4511, 4507, ++ 4508, 4501, 4512, 4521, 4722, 4522, 4524, 4526, 4531, 4532, ++ 4536, 4538, 4542, 4546, 4554, 4552, 4562, 4559, 4722, 4563, ++ 4722, 4722, 4569, 4556, 4572, 4571, 4576, 4722, 4722, 4722, ++ 4630, 4637, 4644, 4651, 4658, 82, 4665, 4672, 4679, 4686, ++ 4693, 4700, 4707, 4714 + } ; + +-static yyconst flex_int16_t yy_def[1642] = ++static yyconst flex_int16_t yy_def[1655] = + { 0, +- 1627, 1, 1628, 1628, 1629, 1629, 1630, 1630, 1631, 1631, +- 1632, 1632, 1627, 1633, 1627, 1627, 1627, 1627, 1634, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1635, +- 1627, 1627, 1627, 1635, 1636, 1627, 1627, 1627, 1636, 1637, +- 1627, 1627, 1627, 1627, 1637, 1638, 1627, 1627, 1627, 1638, +- 1639, 1627, 1640, 1627, 1639, 1639, 1633, 1633, 1627, 1641, +- 1634, 1641, 1634, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1635, 1635, 1636, 1636, 1637, 1637, 1627, 1638, +- 1638, 1639, 1639, 1640, 1640, 1639, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1639, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1639, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1639, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1639, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1627, 1633, +- 1627, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1639, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1639, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1633, +- 1633, 1633, 1627, 1633, 1627, 1633, 1627, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, +- 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1633, 1627, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1627, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, +- 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1627, 1633, 1633, 1627, 1633, 1633, 1633, 1627, +- 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, +- 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, +- +- 1633, 1627, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1627, +- 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1627, +- 1627, 1633, 1627, 1627, 1633, 1627, 1627, 1633, 1633, 1627, +- 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1627, 1633, 1627, 1627, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1627, 1627, 1627, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, +- 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1627, 1633, 1633, 1627, 1633, 1627, 1627, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, +- 1627, 1633, 1627, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1627, 1633, 1627, 1633, 1633, 1633, 1633, 1627, 1633, +- 1633, 1633, 1627, 1627, 1627, 1633, 1633, 1633, 1627, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, +- 1633, 1627, 1633, 1633, 1627, 1627, 1633, 1633, 1633, 1627, +- 1633, 1633, 1633, 1633, 1633, 1633, 1627, 1627, 1633, 1633, +- +- 1633, 1627, 1627, 1627, 1633, 1627, 1633, 1627, 1633, 1633, +- 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1627, 1633, 1627, 1633, 1627, 1633, 1633, 1627, 1633, 1633, +- 1633, 1633, 1633, 1633, 1627, 1627, 1627, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- +- 1633, 1627, 1633, 1633, 1633, 1633, 1633, 1633, 1633, 1633, +- 1633, 1633, 1633, 1633, 1633, 1627, 1633, 1627, 1627, 1633, +- 1633, 1633, 1633, 1633, 1627, 1627, 0, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627 ++ 1640, 1, 1641, 1641, 1642, 1642, 1643, 1643, 1644, 1644, ++ 1645, 1645, 1640, 1646, 1640, 1640, 1640, 1640, 1647, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1648, ++ 1640, 1640, 1640, 1648, 1649, 1640, 1640, 1640, 1649, 1650, ++ 1640, 1640, 1640, 1640, 1650, 1651, 1640, 1640, 1640, 1651, ++ 1652, 1640, 1653, 1640, 1652, 1652, 1646, 1646, 1640, 1654, ++ 1647, 1654, 1647, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1648, 1648, 1649, 1649, 1650, 1650, 1640, 1651, ++ 1651, 1652, 1652, 1653, 1653, 1652, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1652, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1652, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1652, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1652, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1640, 1640, 1646, ++ 1640, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1652, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1640, 1652, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1640, 1646, ++ 1646, 1646, 1640, 1646, 1640, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1646, 1640, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1640, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1640, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, ++ 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1640, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1640, 1646, 1640, 1646, 1646, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1640, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1646, 1646, 1646, 1640, 1640, 1646, 1640, 1640, 1646, ++ 1640, 1640, 1646, 1646, 1640, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1646, 1640, 1640, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1640, 1640, 1646, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1640, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1640, 1640, 1640, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1640, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1640, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1646, 1640, 1646, 1640, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1640, 1646, 1646, ++ ++ 1640, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, ++ 1646, 1640, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1640, 1640, 1640, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1640, ++ 1646, 1640, 1646, 1646, 1640, 1640, 1646, 1646, 1646, 1640, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1640, 1646, ++ 1646, 1646, 1640, 1640, 1640, 1646, 1640, 1646, 1640, 1646, ++ 1646, 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1640, 1646, 1640, 1646, 1640, 1646, 1646, 1640, ++ 1640, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1640, 1640, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, ++ ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1640, 1646, 1646, 1646, 1646, 1646, ++ 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1646, 1640, 1646, ++ 1640, 1640, 1646, 1646, 1646, 1646, 1646, 1640, 1640, 0, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640 + } ; + +-static yyconst flex_int16_t yy_nxt[4747] = ++static yyconst flex_int16_t yy_nxt[4788] = + { 0, + 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, + 14, 18, 20, 14, 21, 22, 23, 24, 14, 25, +@@ -1016,34 +1019,34 @@ static yyconst flex_int16_t yy_nxt[4747] = + + 165, 160, 164, 68, 172, 68, 68, 68, 182, 173, + 68, 68, 168, 170, 177, 174, 178, 166, 175, 162, +- 169, 68, 176, 171, 68, 179, 180, 1627, 1627, 181, ++ 169, 68, 176, 171, 68, 179, 180, 1640, 1640, 181, + 68, 172, 68, 183, 68, 184, 173, 68, 68, 68, +- 68, 177, 174, 178, 189, 175, 187, 1627, 68, 176, ++ 68, 177, 174, 178, 189, 175, 187, 1640, 68, 176, + 186, 192, 179, 180, 191, 185, 181, 68, 188, 68, +- 183, 68, 184, 193, 68, 190, 68, 1627, 1627, 68, +- 1627, 189, 68, 187, 196, 194, 68, 186, 192, 195, +- 1627, 191, 185, 204, 127, 188, 127, 127, 1627, 127, ++ 183, 68, 184, 193, 68, 190, 68, 1640, 1640, 68, ++ 1640, 189, 68, 187, 196, 194, 68, 186, 192, 195, ++ 1640, 191, 185, 204, 127, 188, 127, 127, 1640, 127, + 193, 132, 190, 132, 132, 72, 132, 72, 72, 133, + + 72, 68, 194, 197, 198, 68, 195, 199, 201, 200, +- 213, 203, 1627, 202, 68, 68, 68, 1627, 68, 68, +- 205, 1627, 214, 68, 215, 217, 222, 216, 68, 218, ++ 213, 203, 1640, 202, 68, 68, 68, 1640, 68, 68, ++ 205, 1640, 214, 68, 215, 217, 222, 216, 68, 218, + 197, 198, 135, 68, 199, 68, 200, 213, 203, 68, +- 202, 206, 68, 219, 68, 227, 1627, 68, 68, 214, +- 68, 215, 217, 222, 216, 68, 218, 220, 1627, 1627, +- 221, 223, 1627, 224, 225, 1627, 226, 231, 206, 207, ++ 202, 206, 68, 219, 68, 227, 1640, 68, 68, 214, ++ 68, 215, 217, 222, 216, 68, 218, 220, 1640, 1640, ++ 221, 223, 1640, 224, 225, 1640, 226, 231, 206, 207, + 219, 68, 68, 228, 208, 233, 68, 68, 234, 209, +- 236, 68, 1627, 68, 220, 210, 211, 221, 223, 68, ++ 236, 68, 1640, 68, 220, 210, 211, 221, 223, 68, + 224, 225, 68, 226, 229, 235, 207, 232, 68, 68, + +- 228, 208, 233, 237, 230, 239, 209, 1627, 238, 68, +- 1627, 68, 210, 211, 240, 68, 241, 68, 242, 243, ++ 228, 208, 233, 237, 230, 239, 209, 1640, 238, 68, ++ 1640, 68, 210, 211, 240, 68, 241, 68, 242, 243, + 246, 68, 235, 68, 232, 68, 68, 244, 68, 245, + 250, 230, 239, 251, 68, 238, 68, 68, 68, 68, + 68, 240, 68, 241, 247, 242, 243, 246, 253, 68, + 248, 249, 254, 257, 244, 255, 245, 256, 260, 68, +- 251, 68, 1627, 68, 258, 267, 263, 269, 68, 1627, +- 266, 247, 68, 261, 1627, 253, 68, 248, 249, 68, ++ 251, 68, 1640, 68, 258, 267, 263, 269, 68, 1640, ++ 266, 247, 68, 261, 1640, 253, 68, 248, 249, 68, + 257, 133, 255, 68, 256, 265, 259, 68, 264, 68, + 262, 268, 267, 263, 269, 68, 68, 270, 68, 272, + +@@ -1053,48 +1056,48 @@ static yyconst flex_int16_t yy_nxt[4747] = + 68, 68, 271, 279, 68, 275, 68, 276, 277, 68, + 68, 283, 285, 68, 286, 288, 278, 280, 281, 287, + 293, 68, 284, 289, 68, 291, 68, 290, 292, 68, +- 295, 300, 296, 294, 68, 1627, 1627, 68, 297, 285, +- 306, 68, 288, 68, 1627, 68, 287, 293, 68, 68, ++ 295, 300, 296, 294, 68, 1640, 1640, 68, 297, 285, ++ 306, 68, 288, 68, 1640, 68, 287, 293, 68, 68, + 289, 68, 291, 68, 290, 292, 68, 302, 300, 296, + 294, 68, 301, 298, 303, 297, 299, 68, 68, 304, + + 305, 68, 308, 68, 307, 309, 310, 311, 312, 68, +- 317, 1627, 68, 314, 302, 313, 327, 1627, 68, 301, ++ 317, 1640, 68, 314, 302, 313, 327, 1640, 68, 301, + 298, 303, 319, 299, 68, 68, 304, 305, 68, 308, + 328, 307, 309, 310, 311, 68, 315, 68, 316, 68, + 314, 68, 313, 318, 68, 68, 322, 68, 68, 319, + 68, 320, 68, 321, 326, 323, 329, 328, 324, 68, +- 325, 330, 68, 315, 331, 316, 68, 1627, 68, 349, +- 318, 332, 68, 322, 1627, 68, 68, 333, 320, 335, ++ 325, 330, 68, 315, 331, 316, 68, 1640, 68, 349, ++ 318, 332, 68, 322, 1640, 68, 68, 333, 320, 335, + 321, 326, 323, 329, 68, 324, 346, 325, 330, 344, +- 343, 331, 68, 334, 68, 1627, 347, 345, 332, 351, ++ 343, 331, 68, 334, 68, 1640, 347, 345, 332, 351, + + 68, 68, 68, 133, 333, 348, 335, 68, 68, 353, +- 437, 68, 68, 346, 1627, 352, 344, 343, 350, 356, ++ 437, 68, 68, 346, 1640, 352, 344, 343, 350, 356, + 334, 336, 337, 347, 345, 68, 351, 68, 355, 354, +- 358, 338, 348, 339, 340, 341, 68, 68, 342, 1627, +- 68, 68, 352, 357, 361, 350, 68, 1627, 336, 337, ++ 358, 338, 348, 339, 340, 341, 68, 68, 342, 1640, ++ 68, 68, 352, 357, 361, 350, 68, 1640, 336, 337, + 68, 68, 68, 366, 68, 355, 354, 358, 338, 364, + 339, 340, 341, 359, 360, 342, 362, 363, 368, 369, +- 357, 361, 68, 365, 367, 1627, 68, 68, 68, 371, +- 366, 68, 370, 68, 1627, 372, 364, 68, 373, 375, ++ 357, 361, 68, 365, 367, 1640, 68, 68, 68, 371, ++ 366, 68, 370, 68, 1640, 372, 364, 68, 373, 375, + 374, 377, 68, 362, 363, 368, 369, 68, 68, 378, + + 365, 367, 376, 381, 380, 379, 371, 68, 68, 370, + 382, 68, 372, 400, 68, 373, 68, 374, 377, 68, + 68, 68, 383, 68, 384, 385, 378, 386, 387, 376, + 68, 380, 379, 389, 68, 388, 391, 382, 390, 68, +- 68, 68, 68, 393, 68, 397, 1627, 392, 68, 383, ++ 68, 68, 68, 393, 68, 397, 1640, 392, 68, 383, + 68, 384, 385, 68, 386, 387, 394, 398, 68, 68, + 389, 68, 388, 391, 68, 390, 68, 399, 395, 396, + 393, 68, 397, 401, 392, 68, 68, 405, 404, 68, + 402, 403, 68, 394, 398, 68, 68, 68, 406, 68, +- 408, 407, 1627, 1627, 399, 395, 396, 1627, 68, 1627, ++ 408, 407, 1640, 1640, 399, 395, 396, 1640, 68, 1640, + +- 401, 68, 68, 415, 405, 404, 414, 402, 403, 1627, ++ 401, 68, 68, 415, 405, 404, 414, 402, 403, 1640, + 68, 416, 418, 68, 68, 406, 419, 408, 407, 409, +- 417, 1627, 420, 68, 410, 421, 411, 68, 422, 423, +- 415, 1627, 426, 414, 412, 424, 68, 433, 428, 418, ++ 417, 1640, 420, 68, 410, 421, 411, 68, 422, 423, ++ 415, 1640, 426, 414, 412, 424, 68, 433, 428, 418, + 68, 68, 68, 419, 413, 68, 409, 417, 68, 420, + 68, 410, 421, 411, 68, 422, 423, 425, 427, 426, + 68, 412, 424, 68, 429, 428, 430, 431, 68, 68, +@@ -1104,40 +1107,40 @@ static yyconst flex_int16_t yy_nxt[4747] = + + 434, 447, 436, 449, 435, 441, 443, 68, 438, 444, + 439, 68, 450, 451, 440, 68, 68, 68, 452, 442, +- 453, 454, 455, 456, 457, 1627, 461, 68, 447, 458, +- 68, 459, 460, 443, 463, 1627, 444, 467, 462, 68, +- 68, 469, 1627, 68, 68, 68, 68, 68, 454, 455, ++ 453, 454, 455, 456, 457, 1640, 461, 68, 447, 458, ++ 68, 459, 460, 443, 463, 1640, 444, 467, 462, 68, ++ 68, 469, 1640, 68, 68, 68, 68, 68, 454, 455, + 456, 68, 68, 68, 471, 68, 458, 68, 459, 460, + 68, 463, 464, 68, 467, 462, 468, 465, 472, 470, +- 474, 466, 68, 477, 475, 68, 479, 476, 68, 1627, +- 1627, 471, 491, 483, 68, 480, 68, 68, 68, 464, ++ 474, 466, 68, 477, 475, 68, 479, 476, 68, 1640, ++ 1640, 471, 491, 483, 68, 480, 68, 68, 68, 464, + 473, 68, 68, 468, 465, 472, 470, 474, 466, 68, + + 477, 475, 481, 478, 476, 68, 68, 68, 482, 485, +- 483, 484, 480, 68, 1627, 486, 487, 473, 68, 488, +- 68, 489, 68, 1627, 493, 490, 68, 492, 1627, 481, +- 478, 497, 68, 1627, 499, 482, 485, 68, 484, 494, ++ 483, 484, 480, 68, 1640, 486, 487, 473, 68, 488, ++ 68, 489, 68, 1640, 493, 490, 68, 492, 1640, 481, ++ 478, 497, 68, 1640, 499, 482, 485, 68, 484, 494, + 68, 68, 486, 487, 509, 68, 488, 498, 68, 495, + 504, 493, 68, 496, 492, 68, 68, 502, 497, 68, +- 500, 499, 501, 503, 505, 68, 494, 506, 1627, 68, ++ 500, 499, 501, 503, 505, 68, 494, 506, 1640, 68, + 68, 68, 507, 68, 498, 68, 508, 504, 510, 68, + 68, 68, 68, 511, 502, 512, 68, 500, 68, 501, +- 503, 505, 514, 515, 506, 513, 518, 1627, 516, 507, ++ 503, 505, 514, 515, 506, 513, 518, 1640, 516, 507, + +- 1627, 517, 519, 508, 68, 510, 68, 520, 68, 68, ++ 1640, 517, 519, 508, 68, 510, 68, 520, 68, 68, + 511, 68, 512, 521, 68, 68, 68, 522, 524, 514, + 515, 523, 513, 518, 68, 516, 528, 68, 517, 519, +- 68, 525, 527, 526, 520, 68, 530, 1627, 68, 68, ++ 68, 525, 527, 526, 520, 68, 530, 1640, 68, 68, + 521, 529, 68, 531, 522, 524, 68, 535, 523, 68, + 68, 532, 533, 528, 133, 548, 550, 534, 525, 527, +- 526, 1627, 68, 530, 68, 545, 536, 537, 529, 68, ++ 526, 1640, 68, 530, 68, 545, 536, 537, 529, 68, + 531, 539, 538, 68, 535, 68, 68, 68, 532, 546, + 68, 68, 548, 68, 534, 547, 68, 68, 549, 68, +- 1627, 557, 545, 536, 537, 1627, 558, 560, 539, 538, ++ 1640, 557, 545, 536, 537, 1640, 558, 560, 539, 538, + +- 540, 561, 1627, 68, 541, 68, 546, 542, 559, 562, +- 68, 68, 547, 68, 543, 549, 563, 544, 557, 1627, +- 1627, 68, 68, 558, 560, 564, 567, 540, 68, 68, ++ 540, 561, 1640, 68, 541, 68, 546, 542, 559, 562, ++ 68, 68, 547, 68, 543, 549, 563, 544, 557, 1640, ++ 1640, 68, 68, 558, 560, 564, 567, 540, 68, 68, + 565, 541, 570, 568, 542, 559, 562, 68, 569, 566, + 68, 543, 68, 563, 544, 551, 68, 552, 68, 571, + 553, 68, 564, 567, 575, 554, 68, 565, 574, 570, +@@ -1151,7 +1154,7 @@ static yyconst flex_int16_t yy_nxt[4747] = + 68, 595, 68, 593, 68, 610, 68, 68, 586, 589, + 68, 594, 68, 591, 588, 597, 590, 598, 68, 601, + 602, 68, 600, 596, 68, 592, 599, 68, 595, 68, +- 593, 68, 603, 605, 607, 1627, 68, 68, 594, 606, ++ 593, 68, 603, 605, 607, 1640, 68, 68, 594, 606, + 604, 68, 597, 68, 598, 609, 601, 602, 68, 600, + 608, 68, 68, 599, 611, 68, 612, 68, 68, 603, + 605, 607, 613, 614, 615, 616, 606, 604, 617, 618, +@@ -1160,21 +1163,21 @@ static yyconst flex_int16_t yy_nxt[4747] = + 623, 625, 621, 612, 68, 68, 68, 68, 627, 613, + 614, 615, 616, 626, 68, 617, 68, 641, 68, 630, + 68, 619, 620, 68, 68, 68, 628, 623, 133, 621, +- 629, 68, 68, 68, 68, 627, 637, 1627, 638, 68, +- 626, 639, 640, 68, 641, 1627, 630, 644, 642, 1627, +- 68, 666, 1627, 628, 68, 1627, 1627, 629, 631, 68, +- 632, 68, 1627, 637, 633, 638, 634, 643, 639, 640, ++ 629, 68, 68, 68, 68, 627, 637, 1640, 638, 68, ++ 626, 639, 640, 68, 641, 1640, 630, 644, 642, 1640, ++ 68, 666, 1640, 628, 68, 1640, 1640, 629, 631, 68, ++ 632, 68, 1640, 637, 633, 638, 634, 643, 639, 640, + 68, 635, 645, 646, 644, 642, 636, 649, 68, 648, + 68, 653, 68, 647, 68, 631, 650, 632, 652, 651, + 68, 633, 68, 634, 643, 68, 658, 668, 635, 645, + + 646, 68, 68, 636, 649, 661, 648, 659, 662, 68, + 647, 660, 68, 650, 654, 652, 651, 663, 68, 655, +- 68, 656, 667, 658, 664, 665, 68, 1627, 68, 669, ++ 68, 656, 667, 658, 664, 665, 68, 1640, 68, 669, + 68, 68, 661, 68, 659, 662, 68, 68, 660, 657, + 68, 654, 670, 671, 663, 68, 655, 673, 656, 667, + 68, 664, 665, 68, 672, 68, 669, 68, 676, 674, +- 675, 679, 678, 680, 677, 681, 657, 1627, 68, 670, ++ 675, 679, 678, 680, 677, 681, 657, 1640, 68, 670, + 671, 68, 688, 68, 673, 68, 68, 68, 683, 68, + 68, 672, 684, 687, 682, 676, 674, 675, 679, 678, + 68, 677, 681, 68, 68, 685, 686, 689, 68, 688, +@@ -1192,16 +1195,16 @@ static yyconst flex_int16_t yy_nxt[4747] = + + 724, 68, 726, 727, 728, 729, 730, 68, 720, 732, + 68, 68, 68, 722, 731, 68, 68, 733, 734, 68, +- 735, 68, 1627, 1627, 723, 736, 68, 724, 739, 726, ++ 735, 68, 1640, 1640, 723, 736, 68, 724, 739, 726, + 727, 728, 729, 730, 738, 740, 732, 737, 68, 741, + 68, 731, 68, 68, 743, 742, 745, 735, 68, 68, + 68, 68, 736, 68, 744, 739, 68, 747, 746, 749, + 748, 738, 740, 68, 737, 68, 741, 68, 751, 752, +- 1627, 68, 742, 745, 1627, 750, 753, 754, 68, 68, ++ 1640, 68, 742, 745, 1640, 750, 753, 754, 68, 68, + 759, 744, 68, 68, 747, 746, 749, 748, 68, 755, + 756, 758, 68, 757, 68, 751, 752, 68, 68, 68, + +- 762, 68, 750, 753, 754, 763, 1627, 759, 766, 760, ++ 762, 68, 750, 753, 754, 763, 1640, 759, 766, 760, + 761, 767, 68, 68, 68, 68, 755, 756, 758, 764, + 757, 68, 68, 68, 765, 68, 769, 762, 770, 68, + 771, 772, 763, 68, 768, 766, 760, 761, 767, 780, +@@ -1210,7 +1213,7 @@ static yyconst flex_int16_t yy_nxt[4747] = + 781, 768, 783, 786, 68, 784, 68, 773, 789, 774, + 68, 790, 68, 791, 788, 777, 68, 68, 785, 778, + 787, 779, 782, 68, 68, 68, 68, 781, 792, 783, +- 786, 68, 784, 68, 1627, 68, 68, 797, 1627, 68, ++ 786, 68, 784, 68, 1640, 68, 68, 797, 1640, 68, + + 791, 788, 68, 793, 798, 785, 799, 787, 794, 801, + 795, 68, 796, 68, 800, 792, 804, 802, 68, 803, +@@ -1224,277 +1227,281 @@ static yyconst flex_int16_t yy_nxt[4747] = + 829, 819, 821, 820, 68, 822, 830, 68, 823, 831, + + 832, 68, 833, 824, 68, 68, 834, 68, 825, 836, +- 68, 839, 837, 68, 68, 828, 68, 838, 835, 68, +- 68, 68, 68, 830, 68, 840, 831, 832, 841, 68, +- 842, 844, 68, 834, 843, 68, 852, 845, 839, 837, +- 68, 68, 849, 68, 838, 835, 846, 850, 853, 68, +- 847, 68, 840, 68, 848, 841, 855, 842, 844, 851, +- 68, 843, 854, 852, 845, 1627, 68, 856, 68, 849, +- 857, 68, 68, 846, 850, 68, 859, 862, 858, 68, +- 866, 68, 860, 855, 68, 68, 851, 68, 861, 854, +- 863, 68, 68, 864, 856, 68, 868, 857, 68, 68, +- +- 68, 68, 867, 859, 862, 858, 865, 866, 869, 860, +- 68, 877, 870, 871, 872, 861, 874, 863, 68, 68, +- 864, 875, 68, 868, 873, 876, 878, 68, 68, 867, +- 1627, 880, 68, 865, 68, 869, 68, 68, 879, 870, +- 871, 872, 68, 874, 881, 883, 882, 68, 875, 886, +- 884, 873, 876, 68, 885, 887, 891, 68, 68, 68, +- 888, 889, 68, 68, 68, 879, 68, 890, 68, 892, +- 893, 881, 883, 882, 898, 68, 68, 68, 68, 899, +- 68, 68, 887, 891, 894, 895, 897, 888, 889, 900, +- 896, 68, 68, 68, 890, 903, 901, 893, 68, 68, +- +- 68, 898, 902, 904, 906, 907, 899, 905, 910, 68, +- 908, 894, 895, 897, 68, 68, 900, 896, 68, 909, +- 912, 68, 903, 901, 913, 68, 68, 68, 914, 902, +- 904, 68, 907, 68, 905, 911, 915, 908, 916, 68, +- 917, 919, 68, 918, 68, 921, 909, 912, 923, 922, +- 68, 913, 920, 68, 68, 924, 1627, 926, 68, 68, +- 68, 928, 911, 68, 68, 68, 925, 917, 919, 68, +- 918, 68, 921, 68, 929, 923, 922, 68, 930, 920, +- 927, 931, 68, 68, 926, 68, 68, 932, 928, 933, +- 940, 934, 935, 925, 942, 938, 68, 68, 1627, 68, +- +- 944, 929, 68, 68, 936, 930, 937, 927, 931, 946, +- 939, 68, 68, 68, 932, 943, 933, 68, 934, 935, +- 68, 68, 938, 941, 945, 68, 947, 68, 68, 948, +- 68, 936, 68, 937, 949, 953, 946, 939, 954, 1627, +- 950, 68, 943, 951, 68, 68, 956, 957, 959, 68, +- 941, 945, 68, 947, 955, 952, 948, 1627, 960, 958, +- 68, 949, 961, 967, 68, 954, 68, 950, 68, 962, +- 951, 68, 68, 956, 957, 964, 966, 68, 968, 68, +- 963, 955, 952, 68, 68, 960, 958, 68, 965, 961, +- 68, 984, 68, 973, 970, 969, 962, 68, 68, 971, +- +- 68, 68, 964, 966, 68, 968, 68, 963, 68, 975, +- 972, 974, 976, 1627, 980, 965, 979, 977, 68, 68, +- 973, 970, 969, 68, 68, 68, 971, 978, 68, 981, +- 986, 983, 982, 68, 68, 987, 985, 972, 974, 976, +- 68, 980, 68, 979, 977, 989, 68, 68, 988, 992, +- 993, 994, 68, 68, 978, 996, 981, 986, 983, 982, +- 68, 990, 987, 985, 991, 997, 68, 68, 1001, 68, +- 995, 998, 989, 1004, 68, 988, 992, 68, 68, 68, +- 1000, 68, 996, 999, 68, 68, 1627, 1003, 990, 68, +- 1002, 991, 997, 1005, 68, 1001, 68, 995, 998, 1006, +- +- 1007, 68, 68, 1009, 68, 1008, 1627, 1000, 1010, 1011, +- 999, 1014, 68, 1017, 1003, 1012, 1016, 1002, 1013, 1015, +- 1005, 68, 68, 1627, 68, 68, 1021, 1007, 68, 1018, +- 68, 1028, 1008, 68, 68, 1010, 1011, 68, 1014, 1019, +- 68, 1022, 1012, 1016, 68, 1013, 1015, 1020, 68, 68, +- 1023, 1024, 1025, 1021, 68, 1026, 1018, 1027, 68, 68, +- 1032, 1030, 1029, 68, 1627, 1031, 1019, 1036, 1022, 68, +- 68, 1033, 68, 68, 1020, 68, 68, 1023, 1024, 1025, +- 68, 1034, 1026, 1035, 1027, 1037, 68, 1038, 1030, 1029, +- 68, 68, 1031, 1039, 68, 1040, 1042, 1627, 1033, 1043, +- +- 1041, 1044, 1046, 1627, 68, 1051, 1049, 1045, 1034, 68, +- 1035, 68, 1037, 68, 68, 68, 68, 68, 68, 68, +- 1039, 1056, 68, 1042, 68, 1047, 1043, 1041, 1044, 1046, +- 1050, 1052, 68, 1049, 1045, 1627, 1054, 1058, 1048, 1053, +- 1055, 1059, 68, 68, 68, 68, 1057, 68, 68, 1060, +- 1061, 1062, 1047, 68, 1064, 1627, 1065, 1050, 68, 1066, +- 1063, 1068, 68, 1054, 68, 1048, 1053, 1055, 68, 68, +- 1067, 1073, 1074, 1057, 68, 1076, 1627, 1061, 68, 68, +- 68, 68, 68, 1065, 1075, 68, 68, 1063, 1069, 1070, +- 1071, 68, 68, 1077, 1082, 1072, 68, 1067, 1073, 1074, +- +- 1078, 68, 1076, 68, 1079, 1080, 1081, 1083, 1084, 1627, +- 1091, 1075, 68, 1086, 68, 1069, 1070, 1071, 1085, 68, +- 68, 68, 1072, 1087, 68, 1088, 68, 1078, 68, 1090, +- 68, 1079, 1080, 1081, 1083, 1084, 68, 1089, 1093, 1092, +- 1086, 68, 1094, 1096, 1627, 1085, 68, 1097, 68, 68, +- 1087, 68, 1088, 1095, 68, 1098, 1090, 1101, 68, 1100, +- 1099, 68, 1103, 1102, 1089, 1093, 1092, 68, 68, 68, +- 1096, 68, 1104, 1106, 1097, 68, 1109, 1105, 68, 1107, +- 1095, 68, 1098, 1108, 1101, 68, 1100, 1099, 68, 68, +- 1102, 1110, 1113, 1111, 1114, 68, 68, 1112, 1115, 1104, +- +- 68, 1116, 1117, 1118, 1105, 1627, 1107, 68, 1126, 1120, +- 1108, 68, 1119, 68, 1121, 1122, 1123, 68, 68, 1124, +- 68, 1114, 1127, 68, 68, 1115, 68, 68, 1125, 1117, +- 1118, 1129, 68, 1128, 68, 68, 1120, 1135, 1130, 1119, +- 1132, 1133, 1122, 1131, 1136, 68, 1124, 68, 1134, 68, +- 1140, 68, 68, 68, 68, 1125, 68, 1142, 1129, 68, +- 1128, 68, 68, 68, 68, 1130, 1137, 1132, 1133, 1138, +- 1131, 1136, 1139, 68, 1143, 1134, 1141, 1140, 68, 1144, +- 68, 1149, 1146, 1151, 68, 1152, 1147, 68, 68, 1148, +- 1145, 68, 1153, 1137, 1155, 68, 1138, 1150, 68, 1139, +- +- 1154, 1143, 1156, 1141, 68, 68, 1144, 68, 68, 1146, +- 68, 1158, 1152, 1147, 68, 1159, 1148, 1145, 68, 1153, +- 1160, 68, 68, 1157, 1150, 68, 68, 1154, 1161, 1156, +- 68, 1162, 1164, 68, 1163, 1166, 1168, 68, 1158, 1167, +- 1170, 1165, 1159, 68, 68, 68, 68, 1160, 68, 68, +- 1157, 1169, 1171, 68, 1173, 1161, 1177, 68, 1162, 1164, +- 1174, 1163, 1166, 1168, 68, 68, 1167, 1170, 1165, 68, +- 1172, 68, 1175, 1176, 1179, 1178, 68, 1182, 1169, 68, +- 1181, 1173, 68, 1177, 1180, 68, 1183, 1174, 68, 1627, +- 68, 1188, 1187, 1184, 68, 68, 1193, 1172, 1185, 1175, +- +- 1176, 1186, 1178, 68, 1182, 68, 68, 1181, 68, 68, +- 1190, 1180, 1189, 68, 1191, 1192, 68, 68, 1188, 1187, +- 1184, 1627, 1194, 1193, 1195, 1185, 1196, 68, 1186, 68, +- 1199, 1197, 68, 68, 1200, 1627, 68, 1190, 1198, 1189, +- 68, 1191, 1192, 68, 1201, 68, 1202, 68, 68, 1194, +- 1627, 1195, 1203, 1196, 1204, 1206, 1205, 1199, 1197, 1207, +- 68, 68, 68, 1210, 1215, 1198, 1208, 1627, 1211, 68, +- 1209, 1201, 1212, 68, 1214, 1213, 1218, 68, 68, 1203, +- 68, 1204, 1206, 1205, 68, 68, 68, 68, 68, 1217, +- 68, 68, 1219, 1208, 68, 1211, 68, 1209, 1216, 1212, +- +- 68, 1214, 1213, 1218, 68, 1220, 1221, 1222, 1223, 1627, +- 1225, 68, 1627, 1224, 1234, 68, 1217, 1226, 68, 1219, +- 1227, 68, 68, 1228, 1627, 1216, 1229, 68, 1232, 68, +- 1230, 68, 1220, 1221, 1222, 68, 68, 1225, 68, 68, +- 1224, 68, 1231, 68, 1226, 1233, 1235, 1227, 68, 1236, +- 1228, 68, 1237, 1229, 1238, 1232, 1239, 1230, 1240, 1241, +- 1242, 1243, 1244, 68, 1246, 68, 1247, 1245, 68, 1231, +- 68, 1250, 1233, 1235, 68, 68, 1236, 1249, 1252, 1237, +- 1254, 1238, 68, 1239, 1248, 68, 68, 1242, 68, 68, +- 1255, 68, 68, 68, 1245, 1251, 1258, 1253, 68, 68, +- +- 1256, 68, 1259, 68, 1249, 68, 68, 1254, 1260, 1261, +- 68, 1248, 1262, 68, 68, 1257, 1264, 1255, 1263, 1266, +- 1627, 1627, 1251, 68, 1253, 1265, 68, 1256, 1267, 1259, +- 68, 1269, 1270, 1268, 68, 68, 68, 68, 1271, 1262, +- 68, 68, 1257, 1264, 68, 1263, 1266, 68, 1272, 1273, +- 68, 1274, 1265, 1275, 68, 1267, 1276, 1627, 1269, 1270, +- 1268, 1277, 1278, 1280, 68, 1271, 68, 68, 68, 1279, +- 1283, 1284, 1627, 1281, 1627, 1272, 1273, 1285, 1274, 68, +- 68, 1282, 68, 1276, 68, 1286, 68, 1288, 1277, 1278, +- 1289, 1627, 1290, 1296, 68, 68, 1279, 1283, 1284, 68, +- +- 1281, 68, 1287, 1292, 1285, 68, 1291, 68, 1282, 68, +- 1293, 1297, 1286, 1294, 68, 1295, 68, 68, 68, 1290, +- 1296, 68, 1298, 68, 1299, 1301, 1304, 1300, 1303, 1287, +- 1292, 1307, 68, 1291, 68, 68, 1302, 1293, 1297, 1305, +- 1294, 68, 1295, 68, 1308, 1306, 68, 1311, 68, 68, +- 68, 1299, 1301, 68, 1300, 1303, 68, 68, 1307, 1309, +- 68, 1312, 1310, 1302, 1314, 1315, 1305, 1316, 1313, 1627, +- 1317, 1627, 1306, 68, 1311, 68, 1319, 1320, 68, 1321, +- 1322, 68, 1318, 1323, 1326, 1327, 1309, 68, 68, 1310, +- 68, 68, 68, 68, 1325, 1313, 68, 1317, 68, 68, +- +- 1324, 1328, 68, 1319, 1320, 1329, 68, 1322, 68, 1318, +- 1323, 68, 68, 68, 1330, 1331, 68, 1334, 1332, 1333, +- 68, 1325, 1335, 68, 1336, 1337, 1340, 1324, 68, 68, +- 68, 1339, 1329, 68, 68, 1338, 68, 1344, 68, 68, +- 68, 1330, 1331, 68, 1334, 1332, 1333, 1341, 1342, 1335, +- 68, 68, 1337, 1340, 1343, 1345, 1346, 1347, 1339, 68, +- 1348, 68, 1338, 68, 1344, 1350, 1351, 68, 1352, 1349, +- 68, 1354, 1353, 68, 1341, 1342, 1355, 68, 68, 68, +- 68, 1343, 1345, 68, 68, 1356, 68, 1348, 1357, 1358, +- 1627, 1359, 1350, 1351, 1361, 1352, 1349, 1363, 1354, 1353, +- +- 68, 68, 68, 1355, 1360, 68, 68, 1364, 1366, 1362, +- 1365, 1627, 68, 68, 1367, 1357, 1358, 68, 1359, 68, +- 68, 1361, 68, 1368, 68, 1369, 1627, 1370, 1372, 1371, +- 68, 1360, 1373, 68, 68, 1366, 1362, 1365, 68, 1374, +- 1375, 1367, 1377, 1376, 68, 1378, 1627, 1379, 68, 1627, +- 1368, 68, 1369, 68, 1370, 68, 1371, 1380, 1381, 1373, +- 1382, 1383, 68, 1384, 1387, 1386, 1374, 68, 1389, 68, +- 1376, 68, 68, 68, 1379, 1385, 68, 68, 1388, 1390, +- 68, 1391, 68, 68, 1380, 1381, 68, 1382, 1383, 1392, +- 1384, 1387, 1386, 1627, 68, 1389, 1393, 1394, 1395, 1396, +- +- 68, 1398, 1385, 1397, 1399, 1388, 68, 1627, 68, 1627, +- 1403, 1401, 1402, 1400, 1627, 1627, 68, 1407, 1405, 68, +- 68, 1404, 68, 68, 68, 68, 1396, 68, 1398, 68, +- 1397, 1399, 68, 68, 68, 68, 68, 1403, 1401, 1402, +- 1400, 1406, 1408, 68, 1407, 1405, 1409, 1411, 1404, 1410, +- 1412, 1414, 1413, 1415, 68, 68, 68, 1417, 1419, 68, +- 68, 1416, 1627, 1421, 1420, 1423, 1424, 1418, 1406, 1408, +- 68, 68, 68, 1409, 1411, 68, 1410, 68, 68, 1413, +- 1415, 68, 1422, 68, 1417, 68, 1425, 1426, 1416, 68, +- 1421, 1420, 68, 68, 1418, 1427, 68, 1428, 1429, 1431, +- +- 1430, 1627, 1432, 1433, 1436, 1627, 68, 1435, 68, 1422, +- 1434, 68, 68, 68, 1426, 1438, 68, 1440, 1444, 1627, +- 68, 1627, 1427, 68, 1442, 68, 1431, 1430, 68, 1432, +- 1433, 1436, 68, 1437, 1435, 1439, 68, 1434, 1443, 1441, +- 68, 1445, 68, 68, 1440, 1444, 68, 68, 68, 68, +- 68, 1442, 1446, 68, 1447, 1627, 1448, 1449, 1450, 1452, +- 1437, 1451, 1439, 68, 68, 1443, 1441, 1453, 1445, 1454, +- 68, 1455, 68, 1457, 1460, 68, 1456, 1458, 1466, 1446, +- 1459, 1447, 68, 1448, 1449, 1450, 68, 68, 1451, 68, +- 68, 68, 68, 1461, 1453, 1462, 1454, 1464, 1455, 68, +- +- 1457, 1460, 1463, 1456, 1458, 1465, 68, 1459, 68, 68, +- 1467, 1468, 68, 68, 68, 68, 1470, 1469, 1471, 68, +- 1461, 1472, 1462, 1473, 1464, 68, 1627, 1474, 68, 1463, +- 1475, 1476, 1465, 1478, 68, 68, 1480, 1467, 68, 68, +- 1477, 68, 1481, 1470, 1469, 68, 1482, 1479, 1472, 68, +- 1473, 1484, 1483, 68, 1474, 68, 68, 1475, 1476, 68, +- 68, 1485, 1486, 68, 68, 1488, 1490, 1477, 1487, 1481, +- 1489, 1491, 1492, 68, 1479, 1493, 68, 68, 1484, 1483, +- 68, 1494, 1497, 68, 1498, 1627, 68, 1627, 68, 68, +- 1495, 1496, 1488, 68, 68, 1487, 1499, 1489, 1491, 1492, +- +- 68, 1500, 1493, 1501, 68, 1502, 1503, 1504, 1627, 68, +- 1506, 68, 68, 1505, 68, 1507, 1508, 1495, 1496, 1510, +- 1511, 1627, 1509, 1499, 1627, 68, 1512, 1514, 1500, 1513, +- 1501, 1627, 68, 68, 68, 68, 68, 68, 68, 1515, +- 1505, 68, 1507, 68, 68, 1521, 1510, 68, 68, 1509, +- 68, 68, 1519, 1512, 1514, 1518, 1513, 1516, 1517, 1523, +- 1522, 68, 1520, 1525, 1526, 1524, 1515, 68, 1527, 68, +- 1528, 1529, 68, 68, 68, 1627, 68, 68, 1535, 1519, +- 1532, 1530, 1518, 68, 1516, 1517, 68, 1522, 68, 1520, +- 68, 1526, 1524, 68, 1531, 1527, 1533, 68, 1529, 1536, +- +- 68, 1534, 68, 1537, 1538, 68, 1539, 1532, 1530, 68, +- 1540, 1541, 1542, 1544, 1627, 1627, 1545, 1543, 68, 68, +- 1627, 1531, 68, 1533, 68, 68, 68, 68, 1534, 1546, +- 68, 1538, 68, 1539, 68, 1547, 1548, 1549, 1541, 1542, +- 1544, 68, 68, 1545, 1543, 68, 1550, 1551, 1553, 1552, +- 68, 68, 68, 1554, 1555, 68, 1546, 1556, 68, 1559, +- 68, 1557, 1547, 1548, 1549, 1558, 1560, 68, 1564, 1561, +- 1565, 68, 68, 1550, 1551, 1553, 1552, 1562, 1566, 68, +- 68, 1555, 68, 68, 1556, 1563, 1559, 1568, 1557, 68, +- 1569, 68, 1558, 68, 1567, 68, 1561, 68, 1570, 68, +- +- 1574, 68, 1571, 68, 1562, 1566, 68, 1573, 68, 1572, +- 1575, 1576, 1563, 1577, 1568, 68, 68, 1569, 1582, 68, +- 1578, 1567, 68, 68, 1579, 1570, 1580, 1574, 1583, 1571, +- 1584, 1627, 68, 1581, 1573, 1585, 1572, 1575, 1576, 68, +- 1577, 68, 68, 68, 1586, 1587, 68, 1578, 68, 68, +- 68, 1579, 68, 1580, 1589, 68, 1588, 1584, 1590, 1591, +- 1581, 1592, 1585, 1593, 68, 1594, 1596, 68, 68, 68, +- 1597, 1586, 1595, 1599, 68, 1598, 68, 68, 1600, 1601, +- 68, 1589, 1602, 1588, 1603, 1590, 1591, 68, 1592, 1627, +- 1593, 68, 1594, 1596, 68, 68, 68, 1597, 68, 1595, +- +- 1599, 68, 1598, 1604, 68, 1600, 1601, 1605, 1607, 68, +- 1606, 1603, 1627, 1610, 1608, 68, 68, 1609, 1611, 1627, +- 1612, 68, 1615, 68, 1616, 1613, 68, 1618, 1619, 1627, +- 1604, 1627, 68, 68, 1605, 1607, 68, 1606, 1617, 68, +- 1610, 1608, 1614, 1620, 1609, 1611, 68, 1612, 68, 1615, +- 68, 68, 1613, 1621, 68, 68, 1622, 1625, 68, 1623, +- 1624, 1626, 1627, 68, 1627, 1617, 1627, 68, 68, 1614, +- 1620, 1627, 1627, 1627, 1627, 68, 1627, 1627, 68, 1627, +- 1621, 1627, 1627, 1622, 68, 1627, 1623, 1624, 68, 40, +- 40, 40, 40, 40, 40, 40, 45, 45, 45, 45, +- +- 45, 45, 45, 50, 50, 50, 50, 50, 50, 50, +- 56, 56, 56, 56, 56, 56, 56, 61, 61, 61, +- 61, 61, 61, 61, 71, 71, 1627, 71, 71, 71, +- 71, 123, 123, 1627, 1627, 1627, 123, 123, 125, 125, +- 1627, 1627, 125, 1627, 125, 127, 1627, 1627, 1627, 1627, +- 1627, 127, 130, 130, 1627, 1627, 1627, 130, 130, 132, +- 1627, 1627, 1627, 1627, 1627, 132, 134, 134, 1627, 134, +- 134, 134, 134, 72, 72, 1627, 72, 72, 72, 72, +- 13, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627 ++ 68, 837, 839, 68, 68, 828, 68, 838, 835, 68, ++ 841, 68, 68, 830, 68, 840, 831, 832, 842, 68, ++ 843, 845, 68, 834, 68, 68, 850, 847, 837, 839, ++ 68, 844, 852, 851, 838, 835, 68, 841, 855, 854, ++ 68, 1640, 840, 68, 68, 842, 846, 843, 845, 68, ++ 68, 848, 68, 850, 847, 849, 853, 68, 844, 852, ++ 851, 68, 856, 857, 860, 855, 858, 68, 859, 68, ++ 68, 68, 861, 846, 863, 864, 1640, 68, 68, 866, ++ 862, 68, 68, 853, 68, 870, 68, 68, 865, 856, ++ ++ 857, 860, 68, 858, 869, 859, 68, 68, 867, 861, ++ 868, 863, 864, 875, 871, 68, 866, 862, 68, 872, ++ 68, 873, 870, 876, 878, 865, 68, 877, 68, 68, ++ 874, 869, 879, 880, 68, 867, 68, 868, 881, 68, ++ 875, 871, 68, 883, 882, 884, 872, 885, 873, 68, ++ 876, 886, 887, 68, 877, 68, 68, 874, 1640, 68, ++ 880, 888, 892, 68, 1640, 68, 68, 889, 891, 68, ++ 883, 882, 884, 890, 68, 68, 68, 893, 68, 68, ++ 899, 1640, 894, 68, 895, 896, 68, 905, 888, 892, ++ 68, 897, 68, 68, 889, 891, 901, 898, 902, 68, ++ ++ 890, 900, 904, 903, 907, 68, 1640, 899, 68, 894, ++ 68, 895, 896, 68, 905, 908, 68, 909, 897, 911, ++ 68, 913, 68, 901, 898, 902, 68, 906, 900, 904, ++ 903, 68, 910, 915, 68, 914, 912, 68, 916, 68, ++ 68, 917, 908, 68, 909, 68, 918, 922, 913, 919, ++ 68, 921, 1640, 68, 906, 920, 925, 923, 1640, 910, ++ 68, 68, 914, 912, 68, 68, 927, 68, 68, 924, ++ 68, 930, 928, 918, 922, 68, 919, 68, 921, 68, ++ 926, 68, 920, 68, 923, 929, 932, 68, 935, 931, ++ 934, 933, 68, 927, 68, 946, 924, 68, 930, 928, ++ ++ 68, 68, 936, 68, 937, 940, 941, 926, 68, 942, ++ 945, 68, 929, 932, 68, 935, 931, 934, 933, 938, ++ 939, 944, 68, 68, 68, 1640, 68, 68, 68, 936, ++ 68, 937, 940, 941, 943, 947, 948, 945, 949, 68, ++ 68, 68, 950, 951, 1640, 955, 938, 939, 961, 1640, ++ 68, 952, 68, 957, 953, 956, 68, 68, 959, 960, ++ 68, 943, 947, 948, 68, 949, 954, 958, 1640, 950, ++ 951, 68, 962, 969, 1640, 68, 68, 68, 952, 68, ++ 957, 953, 956, 68, 964, 959, 960, 963, 965, 68, ++ 966, 968, 68, 954, 958, 68, 68, 967, 68, 962, ++ ++ 68, 68, 972, 970, 1640, 975, 977, 971, 974, 68, ++ 1640, 964, 68, 68, 963, 965, 68, 966, 968, 973, ++ 68, 68, 976, 982, 967, 68, 68, 986, 987, 972, ++ 970, 978, 975, 979, 971, 974, 68, 68, 68, 980, ++ 68, 981, 988, 68, 983, 68, 973, 984, 985, 976, ++ 982, 995, 68, 68, 68, 987, 989, 991, 978, 68, ++ 979, 990, 68, 994, 68, 68, 980, 68, 981, 988, ++ 996, 983, 998, 992, 984, 985, 993, 1006, 997, 68, ++ 999, 68, 68, 989, 991, 68, 68, 1002, 990, 68, ++ 994, 68, 1001, 1000, 68, 1003, 68, 68, 1004, 998, ++ ++ 992, 1005, 1007, 993, 1008, 997, 68, 999, 68, 68, ++ 68, 68, 1009, 1011, 1002, 1015, 1010, 1640, 1012, 1001, ++ 1000, 68, 1003, 68, 1013, 1004, 1016, 1017, 1005, 1007, ++ 1014, 1019, 68, 68, 68, 68, 68, 1023, 1018, 1009, ++ 68, 1020, 1015, 1010, 68, 1012, 68, 1021, 68, 1024, ++ 1025, 1013, 68, 1016, 1017, 1027, 68, 1014, 1026, 1022, ++ 68, 1030, 68, 1028, 1023, 1018, 68, 68, 1020, 1029, ++ 1031, 68, 68, 68, 1021, 1032, 1024, 1025, 1033, 1034, ++ 68, 68, 1027, 68, 1035, 1026, 1022, 1038, 68, 1036, ++ 1028, 1037, 1039, 68, 68, 68, 1029, 1031, 1040, 1041, ++ ++ 68, 1043, 1032, 1042, 68, 1033, 1034, 1045, 68, 1044, ++ 1049, 1048, 1047, 1046, 1038, 68, 1036, 1054, 1037, 68, ++ 1059, 68, 68, 68, 68, 1040, 68, 68, 68, 68, ++ 1042, 68, 68, 1050, 1045, 1052, 1044, 1049, 1048, 1047, ++ 1046, 1053, 68, 1055, 68, 1058, 1051, 68, 1056, 1057, ++ 1061, 68, 68, 68, 68, 1062, 1060, 68, 1063, 1065, ++ 1050, 1064, 1052, 68, 1067, 1068, 1069, 68, 1053, 1066, ++ 1071, 1070, 1058, 1051, 68, 1056, 1057, 68, 68, 1072, ++ 1073, 1074, 68, 1060, 1076, 68, 1075, 1080, 1064, 68, ++ 68, 68, 1068, 68, 68, 68, 1066, 68, 1070, 1079, ++ ++ 1084, 68, 1077, 1078, 1085, 68, 1072, 1073, 1074, 68, ++ 68, 1076, 1082, 1075, 68, 1081, 68, 1083, 68, 1088, ++ 1086, 1087, 1089, 68, 68, 1090, 1079, 1084, 1093, 1077, ++ 1078, 68, 68, 1091, 68, 1094, 1640, 68, 68, 1082, ++ 1097, 68, 1081, 1092, 1083, 1096, 1088, 1086, 1087, 1089, ++ 68, 68, 1090, 1098, 68, 1093, 1095, 1100, 1099, 1101, ++ 1091, 1102, 1103, 68, 68, 68, 68, 68, 1112, 68, ++ 1092, 68, 1096, 1104, 68, 68, 68, 1105, 1106, 1109, ++ 1098, 1113, 1107, 1095, 1100, 1099, 1101, 1108, 1102, 1103, ++ 1110, 1116, 1117, 68, 68, 68, 68, 1111, 68, 68, ++ ++ 1104, 1118, 1119, 1114, 1105, 68, 68, 1115, 68, 1107, ++ 68, 1120, 1121, 1124, 1108, 1122, 68, 1110, 1123, 1117, ++ 68, 1126, 68, 1128, 1111, 1640, 68, 1125, 1118, 1129, ++ 68, 1127, 68, 68, 68, 68, 1130, 1131, 1120, 1121, ++ 1132, 1134, 1122, 1133, 68, 1123, 68, 68, 1135, 1136, ++ 1128, 1139, 68, 1140, 1125, 68, 1129, 1137, 1127, 1138, ++ 68, 68, 68, 68, 68, 68, 68, 1132, 1134, 1141, ++ 1133, 68, 68, 1142, 68, 1135, 1136, 1143, 68, 1144, ++ 1140, 1145, 68, 1146, 1137, 68, 1138, 68, 1147, 1150, ++ 1153, 1151, 1152, 1155, 1148, 1159, 1141, 1640, 68, 1154, ++ ++ 1142, 68, 68, 68, 1143, 1149, 1144, 1157, 1145, 68, ++ 68, 1158, 68, 1156, 68, 1147, 1150, 68, 1151, 1152, ++ 68, 1148, 68, 68, 68, 1160, 1154, 1162, 1161, 1163, ++ 1640, 1164, 1149, 68, 1157, 68, 68, 68, 1158, 1168, ++ 1156, 1169, 1165, 1170, 1166, 68, 1167, 68, 68, 1171, ++ 1175, 68, 1160, 68, 1162, 1161, 1163, 68, 1164, 68, ++ 1173, 68, 1174, 1172, 1177, 68, 1168, 1178, 1169, 1165, ++ 1170, 1166, 68, 1167, 68, 68, 1171, 68, 68, 1176, ++ 68, 1179, 1180, 1183, 1181, 1184, 68, 1173, 1182, 1174, ++ 1172, 1177, 68, 68, 1178, 68, 1187, 1185, 1194, 1189, ++ ++ 1186, 1188, 1190, 68, 68, 68, 1176, 68, 1179, 1180, ++ 1191, 1181, 1184, 68, 68, 1182, 68, 68, 1192, 1193, ++ 68, 1195, 1198, 68, 1185, 1194, 1189, 1186, 1188, 1190, ++ 1196, 1197, 1199, 68, 68, 68, 68, 1191, 68, 1200, ++ 1201, 1204, 1640, 68, 68, 1192, 1193, 1203, 1195, 1198, ++ 1206, 1205, 68, 68, 1202, 1207, 68, 1196, 1197, 1199, ++ 68, 1208, 1210, 68, 1209, 68, 1200, 1201, 68, 68, ++ 1211, 1212, 1213, 1215, 1203, 1214, 68, 68, 1205, 68, ++ 1216, 1202, 1207, 1218, 68, 1220, 68, 1228, 1208, 1210, ++ 68, 1209, 68, 68, 1217, 1219, 1222, 68, 1212, 1213, ++ ++ 68, 1221, 1214, 68, 1223, 1225, 68, 1216, 68, 68, ++ 1218, 1226, 68, 1224, 68, 1227, 1229, 68, 68, 1231, ++ 68, 1217, 1219, 1222, 1230, 68, 68, 68, 1221, 1232, ++ 68, 1223, 1225, 1239, 1640, 1237, 68, 1233, 1226, 68, ++ 1224, 68, 1227, 1229, 1234, 68, 1231, 68, 1236, 1235, ++ 68, 1230, 1238, 1240, 68, 1241, 1232, 68, 68, 1242, ++ 68, 1244, 1237, 1245, 1233, 1246, 1248, 1243, 1249, 68, ++ 1247, 1234, 68, 1251, 1252, 1236, 1235, 68, 1255, 1238, ++ 1240, 68, 1241, 1250, 68, 1254, 1242, 68, 1244, 1257, ++ 68, 68, 68, 68, 1243, 68, 1253, 1247, 1256, 1258, ++ ++ 68, 68, 1261, 1259, 68, 68, 68, 68, 68, 1260, ++ 1250, 1263, 1254, 1264, 1265, 1266, 68, 1262, 1267, 68, ++ 1268, 68, 1640, 1253, 68, 1256, 1258, 1640, 68, 1261, ++ 1259, 1269, 1271, 68, 1273, 1270, 1260, 1272, 68, 68, ++ 1264, 68, 68, 1275, 1262, 1267, 68, 1268, 68, 68, ++ 68, 1274, 1281, 1277, 68, 1276, 1278, 68, 1269, 1271, ++ 1279, 1273, 1270, 1280, 1272, 68, 1283, 68, 1289, 1282, ++ 1275, 68, 1284, 68, 68, 68, 68, 1285, 1274, 1281, ++ 1277, 1640, 1276, 1278, 68, 1290, 68, 1279, 1640, 1286, ++ 1288, 1292, 1294, 1283, 68, 1289, 1282, 1287, 68, 1284, ++ ++ 68, 1291, 68, 1293, 1295, 1640, 1297, 1296, 68, 1299, ++ 68, 1298, 1290, 68, 1301, 68, 1286, 1288, 1292, 68, ++ 68, 1300, 68, 1302, 1287, 68, 68, 1303, 1291, 68, ++ 1293, 68, 68, 1297, 1296, 1304, 1299, 1305, 1298, 1640, ++ 68, 1301, 1306, 1307, 1311, 1308, 68, 1310, 1300, 68, ++ 1302, 68, 68, 1309, 1303, 1313, 1312, 1314, 1317, 68, ++ 1315, 1322, 68, 1318, 1305, 68, 68, 68, 1316, 1306, ++ 1307, 1311, 1308, 1320, 1319, 68, 1321, 68, 68, 68, ++ 1309, 1323, 1313, 1312, 68, 1317, 1324, 1315, 68, 1325, ++ 68, 1327, 68, 68, 68, 1316, 68, 68, 1326, 1328, ++ ++ 68, 1319, 1329, 68, 1330, 1332, 1331, 68, 1323, 1333, ++ 1334, 1640, 1640, 1324, 1336, 1335, 1325, 68, 68, 1337, ++ 68, 68, 1340, 68, 1338, 1326, 1328, 68, 68, 1329, ++ 68, 1330, 68, 1331, 68, 1339, 68, 68, 1341, 68, ++ 1342, 1336, 1335, 1343, 68, 68, 1337, 1344, 68, 1340, ++ 68, 1338, 1345, 1347, 1346, 1349, 68, 1353, 1348, 68, ++ 1354, 68, 1339, 1640, 68, 1341, 1351, 68, 68, 1352, ++ 1343, 68, 1350, 1357, 1344, 1640, 1355, 68, 68, 1345, ++ 1347, 1346, 1349, 68, 68, 1348, 1356, 68, 68, 1359, ++ 1358, 68, 1362, 1351, 1360, 68, 1352, 68, 1363, 1350, ++ ++ 1357, 68, 1361, 1355, 1364, 1366, 1367, 68, 1365, 1370, ++ 1371, 68, 1368, 1356, 68, 68, 1359, 1358, 68, 1362, ++ 68, 1360, 68, 68, 1640, 68, 1369, 1379, 1372, 1361, ++ 1373, 1364, 1366, 1367, 68, 1365, 68, 68, 1374, 1368, ++ 1375, 68, 68, 1376, 1378, 1377, 68, 68, 1380, 1381, ++ 1382, 68, 68, 1369, 68, 1372, 1383, 1373, 68, 1384, ++ 68, 1385, 1640, 1386, 68, 1374, 1388, 1375, 68, 1387, ++ 1376, 1378, 1377, 1389, 68, 1380, 1381, 68, 1392, 1390, ++ 1393, 1394, 1395, 1383, 68, 1397, 68, 1398, 68, 68, ++ 1386, 1391, 68, 1388, 1400, 68, 1387, 68, 1396, 68, ++ ++ 1389, 68, 1399, 68, 68, 1392, 1390, 1393, 1394, 1395, ++ 68, 1401, 68, 1402, 68, 1403, 68, 1405, 1391, 1640, ++ 1404, 1400, 1407, 1406, 1640, 1396, 1408, 1410, 1411, 1409, ++ 1640, 1640, 1640, 68, 68, 1640, 1640, 1415, 68, 68, ++ 68, 68, 68, 68, 1405, 68, 68, 1404, 1412, 1407, ++ 1406, 68, 68, 1408, 1410, 1411, 1409, 1417, 1413, 1414, ++ 1416, 1418, 68, 68, 1415, 68, 1419, 1420, 68, 1422, ++ 1424, 1421, 1423, 1640, 68, 1412, 68, 68, 68, 1427, ++ 1430, 1426, 1425, 1428, 1417, 1413, 1414, 1416, 1418, 68, ++ 68, 68, 68, 1419, 68, 68, 68, 1424, 1421, 1423, ++ ++ 68, 1429, 1431, 1432, 68, 1433, 68, 1430, 1426, 1425, ++ 1428, 1434, 1435, 1436, 1437, 1640, 1439, 1440, 1443, 1438, ++ 68, 1640, 1444, 1441, 1442, 68, 1447, 68, 1429, 68, ++ 68, 68, 68, 68, 1451, 1640, 1476, 68, 1434, 1435, ++ 68, 68, 68, 1439, 68, 1443, 1438, 1445, 68, 1444, ++ 1441, 1442, 1446, 68, 68, 1448, 1449, 1452, 1450, 1453, ++ 68, 1451, 1454, 68, 1459, 68, 68, 68, 68, 68, ++ 1455, 68, 1456, 1457, 1445, 68, 1461, 1463, 1464, 1446, ++ 68, 68, 1448, 1449, 1452, 1450, 1453, 1458, 68, 1454, ++ 68, 1459, 1460, 1462, 68, 68, 68, 1455, 1465, 1456, ++ ++ 1457, 68, 1467, 68, 1463, 1464, 1466, 1640, 68, 1468, ++ 1469, 1472, 1470, 68, 1458, 1473, 68, 1475, 68, 1460, ++ 1462, 68, 1471, 1474, 68, 1465, 68, 1478, 68, 1467, ++ 1477, 1481, 68, 1466, 68, 68, 1468, 1469, 1472, 1470, ++ 68, 1480, 1473, 1479, 1475, 68, 1482, 1484, 1483, 1471, ++ 1474, 68, 1485, 68, 68, 68, 1486, 1477, 68, 68, ++ 1487, 68, 1488, 1490, 68, 1492, 1491, 1494, 1480, 1489, ++ 1479, 68, 68, 1482, 1484, 1483, 1495, 68, 68, 1485, ++ 1496, 1500, 1503, 1486, 1493, 1498, 1501, 1487, 68, 68, ++ 68, 68, 68, 1491, 1494, 1499, 1489, 1497, 1505, 1502, ++ ++ 68, 68, 68, 68, 68, 68, 68, 68, 68, 1503, ++ 1504, 1493, 1498, 1501, 1508, 1506, 1507, 1509, 68, 1510, ++ 1511, 1513, 1499, 1512, 1497, 68, 1502, 68, 1514, 68, ++ 1515, 1516, 1517, 68, 1518, 1519, 1522, 1504, 1640, 1525, ++ 1640, 68, 1506, 1507, 68, 68, 1510, 1511, 68, 1520, ++ 1512, 1521, 1523, 68, 68, 68, 1526, 68, 1516, 68, ++ 68, 1518, 68, 68, 1524, 68, 1525, 1528, 1529, 1527, ++ 68, 68, 1533, 1535, 68, 1530, 1520, 68, 1521, 1523, ++ 68, 68, 1531, 1526, 1534, 1532, 68, 1536, 1537, 1538, ++ 1540, 1524, 68, 1541, 1528, 1529, 1527, 1539, 1553, 68, ++ ++ 68, 68, 1530, 1542, 68, 68, 68, 68, 1548, 1531, ++ 68, 1534, 1532, 1543, 1536, 68, 1538, 68, 1547, 1545, ++ 68, 1544, 1546, 1549, 1539, 68, 68, 68, 1550, 68, ++ 1542, 1552, 1551, 1640, 1555, 68, 1640, 1640, 1554, 1640, ++ 1543, 68, 1567, 1558, 68, 1547, 1545, 68, 1544, 1546, ++ 68, 68, 1556, 1557, 68, 68, 68, 68, 1552, 1551, ++ 68, 1555, 68, 1559, 1560, 1554, 1562, 1561, 1563, 68, ++ 1558, 68, 1564, 1565, 68, 68, 1566, 68, 1568, 1556, ++ 1557, 68, 1569, 68, 1570, 1571, 68, 68, 68, 1572, ++ 1559, 1560, 1573, 1562, 1561, 1563, 68, 1574, 1640, 1564, ++ ++ 1565, 68, 1575, 1566, 68, 1568, 68, 1576, 1577, 1569, ++ 68, 1570, 1571, 1578, 68, 68, 1572, 1640, 1579, 1580, ++ 1581, 1587, 1582, 68, 1574, 1595, 1584, 1585, 68, 1575, ++ 1583, 68, 1640, 68, 1576, 68, 1588, 1596, 68, 68, ++ 68, 68, 1586, 68, 68, 1579, 1580, 1581, 1587, 1582, ++ 68, 1589, 1591, 1584, 1585, 1590, 68, 1583, 68, 68, ++ 1594, 1592, 1593, 1588, 68, 1597, 1600, 1598, 68, 1586, ++ 1640, 1640, 1599, 1603, 68, 68, 1640, 1602, 1589, 1591, ++ 68, 68, 1590, 68, 68, 68, 1607, 1594, 1592, 1593, ++ 1601, 68, 1597, 1604, 1598, 68, 1608, 68, 68, 1599, ++ ++ 1603, 68, 1605, 1609, 1602, 1606, 1640, 1610, 1640, 1611, ++ 68, 68, 68, 1607, 1640, 1612, 1614, 1601, 68, 68, ++ 1604, 1613, 1615, 1608, 68, 1616, 1617, 1640, 1619, 1605, ++ 1609, 1618, 1606, 68, 1610, 68, 1611, 68, 1621, 68, ++ 1622, 68, 1612, 1614, 1625, 68, 68, 1640, 1613, 68, ++ 68, 1620, 1616, 1617, 1628, 1619, 1623, 1629, 1618, 68, ++ 68, 1624, 68, 1631, 68, 1621, 1626, 1622, 1627, 68, ++ 68, 1625, 1630, 1632, 68, 1640, 68, 1633, 1620, 1634, ++ 68, 1628, 1638, 1623, 68, 1635, 1636, 1639, 1624, 1640, ++ 68, 1640, 68, 1626, 68, 1627, 1640, 68, 1640, 1630, ++ ++ 68, 68, 1637, 1640, 1633, 1640, 1634, 68, 1640, 68, ++ 68, 1640, 1635, 1636, 68, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1637, ++ 40, 40, 40, 40, 40, 40, 40, 45, 45, 45, ++ 45, 45, 45, 45, 50, 50, 50, 50, 50, 50, ++ 50, 56, 56, 56, 56, 56, 56, 56, 61, 61, ++ 61, 61, 61, 61, 61, 71, 71, 1640, 71, 71, ++ 71, 71, 123, 123, 1640, 1640, 1640, 123, 123, 125, ++ 125, 1640, 1640, 125, 1640, 125, 127, 1640, 1640, 1640, ++ 1640, 1640, 127, 130, 130, 1640, 1640, 1640, 130, 130, ++ ++ 132, 1640, 1640, 1640, 1640, 1640, 132, 134, 134, 1640, ++ 134, 134, 134, 134, 72, 72, 1640, 72, 72, 72, ++ 72, 13, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640 + } ; + +-static yyconst flex_int16_t yy_chk[4747] = ++static yyconst flex_int16_t yy_chk[4788] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +@@ -1504,7 +1511,7 @@ static yyconst flex_int16_t yy_chk[4747] = + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 3, 3, 4, 4, + 4, 5, 5, 6, 6, 5, 24, 6, 7, 7, +- 7, 7, 1633, 7, 8, 8, 8, 8, 24, 8, ++ 7, 7, 1646, 7, 8, 8, 8, 8, 24, 8, + 9, 9, 9, 10, 10, 10, 15, 44, 44, 49, + + 15, 3, 49, 24, 4, 60, 60, 5, 19, 6, +@@ -1750,274 +1757,278 @@ static yyconst flex_int16_t yy_chk[4747] = + 725, 714, 716, 715, 717, 717, 726, 719, 718, 727, + + 728, 720, 729, 719, 722, 723, 730, 727, 720, 732, +- 724, 735, 733, 730, 726, 724, 728, 734, 731, 733, +- 735, 725, 731, 726, 734, 736, 727, 728, 737, 729, +- 738, 740, 738, 730, 739, 737, 748, 741, 735, 733, +- 732, 741, 745, 739, 734, 731, 742, 746, 749, 748, +- 744, 736, 736, 740, 744, 737, 751, 738, 740, 747, +- 745, 739, 750, 748, 741, 0, 746, 752, 742, 745, +- 753, 753, 751, 742, 746, 752, 755, 758, 754, 749, +- 762, 744, 756, 751, 747, 750, 747, 754, 757, 750, +- 759, 756, 762, 760, 752, 757, 764, 753, 755, 759, +- +- 758, 760, 763, 755, 758, 754, 761, 762, 765, 756, +- 763, 773, 766, 767, 768, 757, 770, 759, 764, 761, +- 760, 771, 767, 764, 769, 772, 774, 771, 765, 763, +- 0, 777, 768, 761, 766, 765, 769, 770, 775, 766, +- 767, 768, 773, 770, 778, 780, 779, 772, 771, 782, +- 781, 769, 772, 780, 781, 783, 787, 774, 777, 779, +- 784, 785, 785, 783, 775, 775, 778, 786, 784, 788, +- 789, 778, 780, 779, 794, 786, 782, 787, 789, 795, +- 794, 781, 783, 787, 790, 791, 793, 784, 785, 796, +- 792, 795, 790, 791, 786, 799, 797, 789, 792, 793, +- +- 788, 794, 798, 800, 802, 803, 795, 801, 806, 799, +- 804, 790, 791, 793, 801, 796, 796, 792, 797, 805, +- 810, 800, 799, 797, 811, 798, 805, 803, 812, 798, +- 800, 802, 803, 804, 801, 808, 814, 804, 816, 806, +- 818, 820, 810, 819, 808, 822, 805, 810, 824, 823, +- 811, 811, 821, 820, 821, 825, 0, 827, 822, 812, +- 824, 829, 808, 814, 818, 816, 826, 818, 820, 819, +- 819, 823, 822, 826, 830, 824, 823, 829, 831, 821, +- 828, 832, 825, 827, 827, 828, 831, 834, 829, 835, +- 842, 836, 837, 826, 844, 840, 834, 830, 0, 837, +- +- 846, 830, 835, 832, 838, 831, 839, 828, 832, 849, +- 841, 838, 849, 839, 834, 845, 835, 836, 836, 837, +- 840, 842, 840, 843, 847, 844, 850, 846, 845, 851, +- 843, 838, 841, 839, 852, 854, 849, 841, 855, 0, +- 853, 852, 845, 853, 851, 847, 857, 858, 860, 858, +- 843, 847, 850, 850, 856, 853, 851, 0, 861, 859, +- 855, 852, 862, 868, 853, 855, 854, 853, 857, 863, +- 853, 862, 856, 857, 858, 865, 867, 863, 869, 860, +- 864, 856, 853, 859, 861, 861, 859, 864, 866, 862, +- 868, 887, 866, 874, 871, 870, 863, 865, 867, 872, +- +- 869, 871, 865, 867, 870, 869, 872, 864, 874, 876, +- 873, 875, 877, 0, 882, 866, 881, 878, 887, 877, +- 874, 871, 870, 873, 878, 875, 872, 879, 881, 883, +- 889, 884, 883, 879, 882, 890, 888, 873, 875, 877, +- 876, 882, 884, 881, 878, 892, 890, 883, 891, 894, +- 895, 896, 889, 892, 879, 898, 883, 889, 884, 883, +- 888, 893, 890, 888, 893, 899, 891, 894, 903, 898, +- 897, 900, 892, 907, 899, 891, 894, 897, 896, 893, +- 902, 895, 898, 901, 900, 901, 0, 905, 893, 902, +- 904, 893, 899, 908, 903, 903, 905, 897, 900, 909, +- +- 910, 904, 908, 912, 907, 911, 0, 902, 913, 914, +- 901, 918, 911, 921, 905, 914, 920, 904, 917, 919, +- 908, 910, 913, 0, 920, 918, 926, 910, 919, 922, +- 909, 933, 911, 914, 912, 913, 914, 917, 918, 923, +- 922, 927, 914, 920, 921, 917, 919, 925, 923, 926, +- 928, 929, 930, 926, 925, 931, 922, 932, 933, 931, +- 937, 935, 934, 927, 0, 936, 923, 941, 927, 932, +- 930, 938, 928, 929, 925, 934, 935, 928, 929, 930, +- 936, 939, 931, 940, 932, 942, 938, 943, 935, 934, +- 939, 937, 936, 945, 941, 946, 948, 0, 938, 949, +- +- 947, 950, 952, 0, 940, 956, 954, 951, 939, 942, +- 940, 945, 942, 954, 943, 947, 950, 949, 948, 951, +- 945, 961, 946, 948, 952, 953, 949, 947, 950, 952, +- 955, 957, 956, 954, 951, 0, 959, 963, 953, 958, +- 960, 964, 955, 953, 959, 958, 962, 960, 961, 965, +- 966, 968, 953, 962, 970, 0, 971, 955, 971, 972, +- 969, 974, 957, 959, 963, 953, 958, 960, 964, 969, +- 973, 976, 977, 962, 966, 979, 0, 966, 976, 977, +- 965, 979, 968, 971, 978, 970, 972, 969, 975, 975, +- 975, 978, 974, 980, 986, 975, 973, 973, 976, 977, +- +- 981, 981, 979, 975, 982, 983, 985, 987, 988, 0, +- 996, 978, 983, 990, 990, 975, 975, 975, 989, 987, +- 980, 986, 975, 991, 985, 992, 992, 981, 988, 995, +- 982, 982, 983, 985, 987, 988, 989, 993, 998, 997, +- 990, 996, 999, 1001, 0, 989, 997, 1002, 993, 991, +- 991, 995, 992, 1000, 1002, 1003, 995, 1006, 998, 1005, +- 1004, 1001, 1008, 1007, 993, 998, 997, 1003, 1004, 999, +- 1001, 1005, 1009, 1010, 1002, 1000, 1013, 1009, 1006, 1011, +- 1000, 1007, 1003, 1012, 1006, 1011, 1005, 1004, 1009, 1008, +- 1007, 1014, 1016, 1015, 1017, 1017, 1012, 1015, 1018, 1009, +- +- 1010, 1019, 1020, 1021, 1009, 0, 1011, 1013, 1030, 1023, +- 1012, 1023, 1022, 1018, 1024, 1025, 1026, 1020, 1014, 1027, +- 1025, 1017, 1031, 1016, 1015, 1018, 1021, 1022, 1029, 1020, +- 1021, 1033, 1019, 1032, 1027, 1030, 1023, 1042, 1034, 1022, +- 1037, 1039, 1025, 1035, 1043, 1024, 1027, 1026, 1041, 1031, +- 1047, 1043, 1029, 1033, 1032, 1029, 1039, 1049, 1033, 1034, +- 1032, 1035, 1037, 1041, 1042, 1034, 1044, 1037, 1039, 1045, +- 1035, 1043, 1046, 1047, 1050, 1041, 1048, 1047, 1045, 1052, +- 1046, 1057, 1053, 1061, 1044, 1062, 1054, 1050, 1049, 1055, +- 1052, 1053, 1063, 1044, 1065, 1062, 1045, 1060, 1048, 1046, +- +- 1064, 1050, 1067, 1048, 1054, 1052, 1052, 1055, 1057, 1053, +- 1060, 1069, 1062, 1054, 1061, 1070, 1055, 1052, 1063, 1063, +- 1071, 1065, 1067, 1068, 1060, 1064, 1071, 1064, 1072, 1067, +- 1068, 1073, 1075, 1070, 1074, 1078, 1080, 1069, 1069, 1079, +- 1083, 1076, 1070, 1072, 1075, 1080, 1073, 1071, 1076, 1074, +- 1068, 1081, 1084, 1083, 1086, 1072, 1090, 1078, 1073, 1075, +- 1087, 1074, 1078, 1080, 1079, 1090, 1079, 1083, 1076, 1081, +- 1085, 1085, 1088, 1089, 1092, 1091, 1086, 1096, 1081, 1084, +- 1095, 1086, 1091, 1090, 1093, 1087, 1097, 1087, 1095, 0, +- 1096, 1101, 1100, 1098, 1088, 1089, 1108, 1085, 1099, 1088, +- +- 1089, 1099, 1091, 1108, 1096, 1092, 1093, 1095, 1098, 1101, +- 1104, 1093, 1102, 1097, 1105, 1107, 1099, 1100, 1101, 1100, +- 1098, 0, 1109, 1108, 1111, 1099, 1113, 1102, 1099, 1107, +- 1116, 1114, 1104, 1109, 1117, 0, 1105, 1104, 1115, 1102, +- 1115, 1105, 1107, 1114, 1118, 1111, 1119, 1113, 1116, 1109, +- 0, 1111, 1120, 1113, 1121, 1123, 1122, 1116, 1114, 1124, +- 1120, 1117, 1118, 1129, 1134, 1115, 1125, 0, 1130, 1123, +- 1128, 1118, 1131, 1119, 1133, 1132, 1138, 1121, 1122, 1120, +- 1138, 1121, 1123, 1122, 1132, 1125, 1124, 1131, 1128, 1137, +- 1129, 1134, 1139, 1125, 1130, 1130, 1133, 1128, 1136, 1131, +- +- 1136, 1133, 1132, 1138, 1139, 1140, 1141, 1142, 1143, 0, +- 1145, 1137, 0, 1144, 1156, 1141, 1137, 1146, 1142, 1139, +- 1147, 1147, 1145, 1148, 0, 1136, 1150, 1140, 1153, 1150, +- 1151, 1148, 1140, 1141, 1142, 1143, 1144, 1145, 1151, 1146, +- 1144, 1156, 1152, 1153, 1146, 1154, 1157, 1147, 1152, 1158, +- 1148, 1154, 1159, 1150, 1160, 1153, 1161, 1151, 1162, 1163, +- 1164, 1165, 1166, 1158, 1168, 1159, 1169, 1167, 1160, 1152, +- 1157, 1173, 1154, 1157, 1164, 1167, 1158, 1172, 1175, 1159, +- 1177, 1160, 1161, 1161, 1170, 1162, 1163, 1164, 1165, 1166, +- 1178, 1168, 1170, 1169, 1167, 1174, 1180, 1176, 1173, 1172, +- +- 1179, 1177, 1181, 1174, 1172, 1175, 1176, 1177, 1182, 1184, +- 1181, 1170, 1185, 1185, 1178, 1179, 1187, 1178, 1186, 1189, +- 0, 0, 1174, 1180, 1176, 1188, 1179, 1179, 1190, 1181, +- 1190, 1192, 1193, 1191, 1187, 1182, 1184, 1192, 1194, 1185, +- 1188, 1189, 1179, 1187, 1186, 1186, 1189, 1191, 1195, 1196, +- 1194, 1197, 1188, 1198, 1193, 1190, 1199, 0, 1192, 1193, +- 1191, 1201, 1203, 1205, 1197, 1194, 1195, 1196, 1201, 1204, +- 1208, 1209, 0, 1206, 0, 1195, 1196, 1211, 1197, 1199, +- 1203, 1206, 1208, 1199, 1198, 1212, 1209, 1214, 1201, 1203, +- 1216, 0, 1217, 1224, 1205, 1204, 1204, 1208, 1209, 1206, +- +- 1206, 1211, 1213, 1219, 1211, 1217, 1218, 1212, 1206, 1213, +- 1220, 1225, 1212, 1221, 1214, 1222, 1224, 1216, 1219, 1217, +- 1224, 1221, 1226, 1220, 1227, 1229, 1232, 1228, 1231, 1213, +- 1219, 1236, 1218, 1218, 1228, 1225, 1230, 1220, 1225, 1233, +- 1221, 1222, 1222, 1230, 1237, 1235, 1227, 1242, 1229, 1226, +- 1231, 1227, 1229, 1236, 1228, 1231, 1235, 1232, 1236, 1238, +- 1233, 1245, 1239, 1230, 1249, 1251, 1233, 1253, 1248, 0, +- 1254, 0, 1235, 1242, 1242, 1237, 1256, 1257, 1238, 1259, +- 1262, 1256, 1255, 1263, 1266, 1267, 1238, 1239, 1245, 1239, +- 1248, 1249, 1251, 1255, 1265, 1248, 1254, 1254, 1253, 1257, +- +- 1264, 1268, 1262, 1256, 1257, 1269, 1259, 1262, 1263, 1255, +- 1263, 1266, 1267, 1264, 1270, 1271, 1265, 1274, 1272, 1273, +- 1269, 1265, 1275, 1270, 1276, 1277, 1280, 1264, 1268, 1275, +- 1271, 1279, 1269, 1272, 1273, 1278, 1278, 1284, 1279, 1274, +- 1280, 1270, 1271, 1277, 1274, 1272, 1273, 1281, 1282, 1275, +- 1281, 1276, 1277, 1280, 1283, 1285, 1286, 1287, 1279, 1284, +- 1290, 1282, 1278, 1283, 1284, 1292, 1293, 1290, 1294, 1291, +- 1292, 1296, 1295, 1293, 1281, 1282, 1297, 1285, 1291, 1295, +- 1296, 1283, 1285, 1286, 1287, 1299, 1294, 1290, 1300, 1301, +- 0, 1302, 1292, 1293, 1304, 1294, 1291, 1306, 1296, 1295, +- +- 1302, 1301, 1297, 1297, 1303, 1304, 1300, 1307, 1309, 1305, +- 1308, 0, 1299, 1303, 1310, 1300, 1301, 1305, 1302, 1308, +- 1309, 1304, 1310, 1311, 1306, 1313, 0, 1316, 1318, 1317, +- 1311, 1303, 1319, 1313, 1316, 1309, 1305, 1308, 1307, 1320, +- 1322, 1310, 1324, 1323, 1319, 1325, 0, 1329, 1320, 0, +- 1311, 1323, 1313, 1317, 1316, 1318, 1317, 1330, 1331, 1319, +- 1332, 1333, 1330, 1334, 1338, 1337, 1320, 1322, 1340, 1324, +- 1323, 1334, 1325, 1329, 1329, 1335, 1331, 1337, 1339, 1341, +- 1340, 1342, 1332, 1333, 1330, 1331, 1338, 1332, 1333, 1343, +- 1334, 1338, 1337, 0, 1335, 1340, 1344, 1345, 1348, 1349, +- +- 1339, 1351, 1335, 1350, 1352, 1339, 1341, 0, 1342, 0, +- 1357, 1354, 1355, 1353, 0, 0, 1352, 1361, 1359, 1351, +- 1343, 1358, 1349, 1344, 1345, 1350, 1349, 1355, 1351, 1348, +- 1350, 1352, 1353, 1354, 1357, 1358, 1359, 1357, 1354, 1355, +- 1353, 1360, 1362, 1361, 1361, 1359, 1364, 1366, 1358, 1365, +- 1367, 1369, 1368, 1370, 1364, 1366, 1365, 1373, 1376, 1360, +- 1362, 1371, 0, 1380, 1379, 1382, 1383, 1374, 1360, 1362, +- 1368, 1379, 1370, 1364, 1366, 1373, 1365, 1367, 1369, 1368, +- 1370, 1374, 1381, 1371, 1373, 1376, 1384, 1385, 1371, 1380, +- 1380, 1379, 1382, 1383, 1374, 1386, 1385, 1387, 1388, 1392, +- +- 1389, 0, 1395, 1395, 1398, 0, 1381, 1397, 1386, 1381, +- 1396, 1398, 1395, 1384, 1385, 1400, 1397, 1402, 1406, 0, +- 1392, 0, 1386, 1389, 1404, 1388, 1392, 1389, 1387, 1395, +- 1395, 1398, 1396, 1399, 1397, 1401, 1402, 1396, 1405, 1403, +- 1406, 1407, 1400, 1401, 1402, 1406, 1399, 1403, 1407, 1405, +- 1404, 1404, 1408, 1408, 1409, 0, 1410, 1411, 1413, 1416, +- 1399, 1415, 1401, 1410, 1411, 1405, 1403, 1417, 1407, 1418, +- 1415, 1420, 1409, 1422, 1428, 1422, 1421, 1426, 1435, 1408, +- 1427, 1409, 1413, 1410, 1411, 1413, 1416, 1418, 1415, 1420, +- 1417, 1421, 1428, 1430, 1417, 1431, 1418, 1433, 1420, 1426, +- +- 1422, 1428, 1432, 1421, 1426, 1434, 1427, 1427, 1432, 1435, +- 1436, 1437, 1436, 1431, 1434, 1430, 1440, 1439, 1441, 1433, +- 1430, 1442, 1431, 1443, 1433, 1439, 0, 1444, 1440, 1432, +- 1445, 1446, 1434, 1448, 1443, 1444, 1450, 1436, 1437, 1442, +- 1447, 1447, 1451, 1440, 1439, 1441, 1453, 1449, 1442, 1445, +- 1443, 1455, 1454, 1446, 1444, 1449, 1455, 1445, 1446, 1454, +- 1448, 1456, 1457, 1450, 1451, 1459, 1461, 1447, 1458, 1451, +- 1460, 1462, 1463, 1453, 1449, 1464, 1458, 1460, 1455, 1454, +- 1459, 1465, 1467, 1464, 1469, 0, 1462, 0, 1456, 1457, +- 1466, 1466, 1459, 1461, 1463, 1458, 1470, 1460, 1462, 1463, +- +- 1466, 1472, 1464, 1473, 1470, 1474, 1475, 1476, 0, 1467, +- 1479, 1469, 1465, 1477, 1472, 1481, 1483, 1466, 1466, 1487, +- 1488, 0, 1484, 1470, 0, 1473, 1489, 1492, 1472, 1491, +- 1473, 0, 1474, 1475, 1476, 1477, 1492, 1479, 1487, 1493, +- 1477, 1481, 1481, 1483, 1484, 1500, 1487, 1488, 1489, 1484, +- 1493, 1491, 1496, 1489, 1492, 1495, 1491, 1494, 1494, 1505, +- 1501, 1495, 1499, 1509, 1510, 1507, 1493, 1494, 1512, 1499, +- 1513, 1514, 1500, 1514, 1496, 0, 1510, 1512, 1520, 1496, +- 1517, 1515, 1495, 1501, 1494, 1494, 1505, 1501, 1507, 1499, +- 1509, 1510, 1507, 1515, 1516, 1512, 1518, 1513, 1514, 1522, +- +- 1516, 1519, 1517, 1524, 1526, 1520, 1527, 1517, 1515, 1519, +- 1529, 1530, 1531, 1533, 0, 0, 1534, 1532, 1518, 1526, +- 0, 1516, 1533, 1518, 1530, 1532, 1522, 1534, 1519, 1538, +- 1524, 1526, 1527, 1527, 1531, 1539, 1540, 1541, 1530, 1531, +- 1533, 1529, 1539, 1534, 1532, 1541, 1542, 1543, 1545, 1544, +- 1540, 1544, 1538, 1546, 1547, 1542, 1538, 1548, 1543, 1551, +- 1545, 1549, 1539, 1540, 1541, 1550, 1552, 1550, 1557, 1553, +- 1558, 1551, 1547, 1542, 1543, 1545, 1544, 1555, 1559, 1548, +- 1546, 1547, 1553, 1549, 1548, 1556, 1551, 1561, 1549, 1555, +- 1562, 1559, 1550, 1556, 1560, 1561, 1553, 1552, 1563, 1557, +- +- 1567, 1558, 1564, 1562, 1555, 1559, 1563, 1566, 1560, 1565, +- 1568, 1569, 1556, 1570, 1561, 1566, 1564, 1562, 1575, 1569, +- 1571, 1560, 1567, 1565, 1572, 1563, 1573, 1567, 1576, 1564, +- 1577, 0, 1568, 1574, 1566, 1578, 1565, 1568, 1569, 1570, +- 1570, 1574, 1571, 1578, 1579, 1580, 1572, 1571, 1573, 1575, +- 1577, 1572, 1579, 1573, 1582, 1576, 1581, 1577, 1584, 1585, +- 1574, 1586, 1578, 1587, 1581, 1588, 1590, 1585, 1582, 1586, +- 1591, 1579, 1589, 1593, 1590, 1592, 1580, 1587, 1594, 1595, +- 1584, 1582, 1596, 1581, 1597, 1584, 1585, 1595, 1586, 0, +- 1587, 1588, 1588, 1590, 1589, 1593, 1591, 1591, 1594, 1589, +- +- 1593, 1592, 1592, 1598, 1597, 1594, 1595, 1599, 1601, 1596, +- 1600, 1597, 0, 1605, 1603, 1599, 1601, 1604, 1606, 0, +- 1607, 1605, 1610, 1598, 1611, 1608, 1606, 1613, 1614, 0, +- 1598, 0, 1600, 1608, 1599, 1601, 1603, 1600, 1612, 1604, +- 1605, 1603, 1609, 1615, 1604, 1606, 1607, 1607, 1610, 1610, +- 1609, 1611, 1608, 1617, 1613, 1614, 1620, 1623, 1612, 1621, +- 1622, 1624, 0, 1615, 0, 1612, 0, 1621, 1622, 1609, +- 1615, 0, 0, 0, 0, 1617, 0, 0, 1620, 0, +- 1617, 0, 0, 1620, 1623, 0, 1621, 1622, 1624, 1628, +- 1628, 1628, 1628, 1628, 1628, 1628, 1629, 1629, 1629, 1629, +- +- 1629, 1629, 1629, 1630, 1630, 1630, 1630, 1630, 1630, 1630, +- 1631, 1631, 1631, 1631, 1631, 1631, 1631, 1632, 1632, 1632, +- 1632, 1632, 1632, 1632, 1634, 1634, 0, 1634, 1634, 1634, +- 1634, 1635, 1635, 0, 0, 0, 1635, 1635, 1636, 1636, +- 0, 0, 1636, 0, 1636, 1637, 0, 0, 0, 0, +- 0, 1637, 1638, 1638, 0, 0, 0, 1638, 1638, 1639, +- 0, 0, 0, 0, 0, 1639, 1640, 1640, 0, 1640, +- 1640, 1640, 1640, 1641, 1641, 0, 1641, 1641, 1641, 1641, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, 1627, +- 1627, 1627, 1627, 1627, 1627, 1627 ++ 724, 733, 734, 730, 726, 724, 728, 733, 731, 734, ++ 736, 725, 731, 726, 733, 735, 727, 728, 737, 729, ++ 738, 740, 738, 730, 735, 737, 745, 742, 733, 734, ++ 732, 739, 747, 746, 733, 731, 736, 736, 750, 749, ++ 739, 0, 735, 740, 745, 737, 741, 738, 740, 742, ++ 741, 744, 746, 745, 742, 744, 748, 747, 739, 747, ++ 746, 750, 751, 752, 755, 750, 753, 753, 754, 748, ++ 749, 752, 756, 741, 758, 759, 0, 754, 751, 761, ++ 757, 756, 744, 748, 759, 765, 755, 757, 760, 751, ++ ++ 752, 755, 761, 753, 764, 754, 760, 758, 762, 756, ++ 763, 758, 759, 770, 766, 765, 761, 757, 763, 767, ++ 762, 768, 765, 771, 773, 760, 764, 772, 767, 771, ++ 769, 764, 774, 775, 770, 762, 766, 763, 777, 768, ++ 770, 766, 769, 779, 778, 780, 767, 781, 768, 772, ++ 771, 781, 782, 780, 772, 773, 779, 769, 0, 775, ++ 775, 783, 787, 774, 0, 777, 778, 784, 786, 783, ++ 779, 778, 780, 785, 785, 784, 786, 788, 781, 782, ++ 794, 0, 789, 787, 790, 791, 794, 800, 783, 787, ++ 789, 792, 790, 791, 784, 786, 796, 793, 797, 792, ++ ++ 785, 795, 799, 798, 802, 800, 0, 794, 788, 789, ++ 793, 790, 791, 795, 800, 803, 799, 804, 792, 806, ++ 797, 810, 796, 796, 793, 797, 798, 801, 795, 799, ++ 798, 802, 805, 812, 801, 811, 808, 803, 814, 805, ++ 804, 816, 803, 810, 804, 808, 818, 822, 810, 819, ++ 806, 821, 0, 821, 801, 820, 825, 823, 0, 805, ++ 822, 811, 811, 808, 812, 814, 827, 820, 816, 824, ++ 818, 830, 828, 818, 822, 819, 819, 828, 821, 823, ++ 826, 824, 820, 825, 823, 829, 832, 826, 836, 831, ++ 835, 834, 827, 827, 830, 847, 824, 831, 830, 828, ++ ++ 834, 829, 837, 835, 838, 841, 842, 826, 832, 843, ++ 846, 838, 829, 832, 836, 836, 831, 835, 834, 839, ++ 840, 845, 847, 846, 837, 0, 839, 840, 842, 837, ++ 841, 838, 841, 842, 844, 848, 850, 846, 851, 850, ++ 843, 844, 852, 853, 0, 855, 839, 840, 861, 0, ++ 853, 854, 845, 857, 854, 856, 848, 852, 859, 860, ++ 859, 844, 848, 850, 851, 851, 854, 858, 0, 852, ++ 853, 857, 862, 869, 0, 854, 855, 856, 854, 861, ++ 857, 854, 856, 860, 864, 859, 860, 863, 865, 858, ++ 866, 868, 864, 854, 858, 865, 863, 867, 862, 862, ++ ++ 869, 867, 872, 870, 0, 875, 877, 871, 874, 872, ++ 0, 864, 866, 868, 863, 865, 871, 866, 868, 873, ++ 875, 874, 876, 883, 867, 870, 873, 888, 889, 872, ++ 870, 878, 875, 879, 871, 874, 876, 877, 878, 880, ++ 879, 882, 890, 883, 884, 880, 873, 884, 885, 876, ++ 883, 896, 889, 882, 888, 889, 891, 893, 878, 885, ++ 879, 892, 884, 895, 890, 893, 880, 891, 882, 890, ++ 897, 884, 899, 894, 884, 885, 894, 908, 898, 892, ++ 900, 895, 896, 891, 893, 898, 899, 903, 892, 900, ++ 895, 894, 902, 901, 902, 904, 903, 897, 905, 899, ++ ++ 894, 906, 909, 894, 910, 898, 901, 900, 908, 905, ++ 906, 909, 911, 913, 903, 918, 912, 0, 914, 902, ++ 901, 904, 904, 912, 915, 905, 919, 920, 906, 909, ++ 915, 922, 914, 911, 918, 910, 920, 927, 921, 911, ++ 919, 923, 918, 912, 913, 914, 921, 924, 915, 928, ++ 929, 915, 923, 919, 920, 931, 924, 915, 930, 926, ++ 927, 934, 922, 932, 927, 921, 926, 932, 923, 933, ++ 935, 928, 929, 931, 924, 936, 928, 929, 937, 938, ++ 930, 933, 931, 935, 939, 930, 926, 942, 934, 940, ++ 932, 941, 943, 937, 938, 936, 933, 935, 944, 945, ++ ++ 941, 948, 936, 947, 940, 937, 938, 950, 942, 949, ++ 954, 953, 952, 951, 942, 939, 940, 958, 941, 943, ++ 963, 947, 944, 953, 949, 944, 945, 952, 948, 950, ++ 947, 951, 954, 955, 950, 956, 949, 954, 953, 952, ++ 951, 957, 956, 959, 958, 962, 955, 963, 960, 961, ++ 965, 955, 962, 957, 960, 966, 964, 961, 967, 970, ++ 955, 968, 956, 964, 972, 973, 974, 973, 957, 971, ++ 976, 975, 962, 955, 959, 960, 961, 965, 971, 977, ++ 977, 977, 966, 964, 978, 968, 977, 982, 968, 967, ++ 970, 978, 973, 974, 977, 972, 971, 975, 975, 981, ++ ++ 987, 976, 979, 980, 988, 981, 977, 977, 977, 979, ++ 980, 978, 984, 977, 982, 983, 983, 985, 987, 991, ++ 989, 990, 992, 992, 985, 993, 981, 987, 997, 979, ++ 980, 988, 989, 994, 994, 998, 0, 991, 984, 984, ++ 1001, 990, 983, 995, 985, 1000, 991, 989, 990, 992, ++ 997, 993, 993, 1002, 995, 997, 999, 1004, 1003, 1005, ++ 994, 1006, 1007, 999, 1004, 1000, 998, 1001, 1015, 1006, ++ 995, 1005, 1000, 1008, 1007, 1002, 1003, 1009, 1010, 1012, ++ 1002, 1016, 1011, 999, 1004, 1003, 1005, 1011, 1006, 1007, ++ 1013, 1018, 1019, 1019, 1008, 1009, 1013, 1014, 1011, 1015, ++ ++ 1008, 1020, 1021, 1017, 1009, 1010, 1012, 1017, 1016, 1011, ++ 1014, 1022, 1023, 1026, 1011, 1024, 1020, 1013, 1025, 1019, ++ 1025, 1028, 1018, 1031, 1014, 0, 1022, 1027, 1020, 1032, ++ 1024, 1029, 1027, 1021, 1017, 1023, 1033, 1034, 1022, 1023, ++ 1035, 1037, 1024, 1036, 1026, 1025, 1029, 1031, 1038, 1040, ++ 1031, 1045, 1028, 1046, 1027, 1032, 1032, 1042, 1029, 1044, ++ 1046, 1035, 1037, 1033, 1034, 1036, 1038, 1035, 1037, 1047, ++ 1036, 1040, 1042, 1048, 1044, 1038, 1040, 1049, 1045, 1050, ++ 1046, 1051, 1048, 1052, 1042, 1049, 1044, 1047, 1053, 1056, ++ 1060, 1057, 1058, 1064, 1055, 1068, 1047, 0, 1056, 1063, ++ ++ 1048, 1053, 1050, 1051, 1049, 1055, 1050, 1066, 1051, 1057, ++ 1058, 1067, 1063, 1065, 1052, 1053, 1056, 1060, 1057, 1058, ++ 1055, 1055, 1068, 1065, 1064, 1070, 1063, 1072, 1071, 1073, ++ 0, 1074, 1055, 1066, 1066, 1071, 1067, 1074, 1067, 1078, ++ 1065, 1079, 1075, 1081, 1076, 1070, 1077, 1073, 1079, 1082, ++ 1087, 1078, 1070, 1072, 1072, 1071, 1073, 1075, 1074, 1076, ++ 1084, 1077, 1086, 1083, 1089, 1081, 1078, 1090, 1079, 1075, ++ 1081, 1076, 1083, 1077, 1082, 1086, 1082, 1087, 1084, 1088, ++ 1088, 1091, 1092, 1095, 1093, 1096, 1089, 1084, 1094, 1086, ++ 1083, 1089, 1090, 1093, 1090, 1094, 1100, 1098, 1107, 1102, ++ ++ 1099, 1101, 1102, 1091, 1092, 1098, 1088, 1096, 1091, 1092, ++ 1103, 1093, 1096, 1099, 1095, 1094, 1101, 1102, 1104, 1105, ++ 1107, 1108, 1112, 1100, 1098, 1107, 1102, 1099, 1101, 1102, ++ 1110, 1111, 1114, 1112, 1105, 1103, 1104, 1103, 1111, 1116, ++ 1117, 1120, 0, 1108, 1110, 1104, 1105, 1119, 1108, 1112, ++ 1122, 1121, 1117, 1114, 1118, 1123, 1118, 1110, 1111, 1114, ++ 1116, 1124, 1126, 1123, 1125, 1119, 1116, 1117, 1120, 1121, ++ 1127, 1128, 1129, 1133, 1119, 1132, 1126, 1122, 1121, 1129, ++ 1134, 1118, 1123, 1136, 1124, 1138, 1125, 1147, 1124, 1126, ++ 1128, 1125, 1136, 1132, 1135, 1137, 1141, 1127, 1128, 1129, ++ ++ 1133, 1140, 1132, 1140, 1142, 1144, 1134, 1134, 1142, 1135, ++ 1136, 1145, 1138, 1143, 1147, 1146, 1148, 1137, 1141, 1150, ++ 1145, 1135, 1137, 1141, 1149, 1143, 1146, 1144, 1140, 1151, ++ 1151, 1142, 1144, 1160, 0, 1157, 1149, 1152, 1145, 1148, ++ 1143, 1150, 1146, 1148, 1154, 1152, 1150, 1154, 1156, 1155, ++ 1157, 1149, 1158, 1161, 1156, 1162, 1151, 1155, 1158, 1163, ++ 1160, 1165, 1157, 1166, 1152, 1167, 1169, 1164, 1170, 1162, ++ 1168, 1154, 1163, 1172, 1173, 1156, 1155, 1161, 1177, 1158, ++ 1161, 1164, 1162, 1171, 1168, 1176, 1163, 1165, 1165, 1179, ++ 1166, 1171, 1167, 1169, 1164, 1170, 1174, 1168, 1178, 1180, ++ ++ 1172, 1173, 1183, 1181, 1174, 1177, 1178, 1176, 1180, 1182, ++ 1171, 1184, 1176, 1185, 1186, 1188, 1179, 1183, 1189, 1189, ++ 1190, 1185, 0, 1174, 1181, 1178, 1180, 0, 1183, 1183, ++ 1181, 1191, 1193, 1182, 1195, 1192, 1182, 1194, 1184, 1194, ++ 1185, 1186, 1188, 1197, 1183, 1189, 1190, 1190, 1195, 1191, ++ 1192, 1196, 1203, 1199, 1193, 1198, 1200, 1196, 1191, 1193, ++ 1201, 1195, 1192, 1202, 1194, 1197, 1207, 1198, 1213, 1205, ++ 1197, 1199, 1208, 1201, 1200, 1203, 1205, 1209, 1196, 1203, ++ 1199, 0, 1198, 1200, 1207, 1214, 1213, 1201, 0, 1210, ++ 1212, 1217, 1219, 1207, 1202, 1213, 1205, 1210, 1208, 1208, ++ ++ 1214, 1216, 1212, 1218, 1221, 0, 1223, 1222, 1209, 1225, ++ 1218, 1224, 1214, 1217, 1227, 1210, 1210, 1212, 1217, 1219, ++ 1222, 1226, 1225, 1229, 1210, 1216, 1224, 1230, 1216, 1226, ++ 1218, 1221, 1223, 1223, 1222, 1231, 1225, 1232, 1224, 0, ++ 1227, 1227, 1233, 1234, 1238, 1235, 1229, 1237, 1226, 1233, ++ 1229, 1230, 1235, 1236, 1230, 1241, 1240, 1242, 1247, 1232, ++ 1243, 1258, 1231, 1250, 1232, 1238, 1234, 1240, 1244, 1233, ++ 1234, 1238, 1235, 1254, 1253, 1236, 1256, 1241, 1237, 1243, ++ 1236, 1259, 1241, 1240, 1247, 1247, 1260, 1243, 1242, 1261, ++ 1250, 1264, 1258, 1244, 1261, 1244, 1253, 1260, 1262, 1267, ++ ++ 1254, 1253, 1268, 1256, 1269, 1271, 1270, 1259, 1259, 1272, ++ 1273, 0, 0, 1260, 1275, 1274, 1261, 1269, 1264, 1276, ++ 1262, 1267, 1279, 1275, 1277, 1262, 1267, 1268, 1270, 1268, ++ 1274, 1269, 1271, 1270, 1276, 1278, 1272, 1273, 1280, 1277, ++ 1281, 1275, 1274, 1282, 1279, 1280, 1276, 1283, 1283, 1279, ++ 1278, 1277, 1284, 1286, 1285, 1288, 1286, 1292, 1287, 1284, ++ 1293, 1282, 1278, 0, 1288, 1280, 1290, 1281, 1285, 1291, ++ 1282, 1287, 1289, 1298, 1283, 0, 1296, 1289, 1298, 1284, ++ 1286, 1285, 1288, 1296, 1292, 1287, 1297, 1293, 1290, 1300, ++ 1299, 1291, 1303, 1290, 1301, 1297, 1291, 1299, 1305, 1289, ++ ++ 1298, 1301, 1302, 1296, 1306, 1308, 1309, 1300, 1307, 1312, ++ 1313, 1302, 1310, 1297, 1308, 1309, 1300, 1299, 1303, 1303, ++ 1307, 1301, 1306, 1310, 0, 1305, 1311, 1324, 1314, 1302, ++ 1315, 1306, 1308, 1309, 1311, 1307, 1312, 1314, 1316, 1310, ++ 1317, 1313, 1315, 1319, 1323, 1322, 1316, 1317, 1325, 1326, ++ 1328, 1319, 1322, 1311, 1324, 1314, 1329, 1315, 1326, 1330, ++ 1325, 1331, 0, 1335, 1329, 1316, 1337, 1317, 1323, 1336, ++ 1319, 1323, 1322, 1338, 1336, 1325, 1326, 1328, 1341, 1339, ++ 1343, 1344, 1345, 1329, 1337, 1347, 1330, 1348, 1331, 1335, ++ 1335, 1340, 1343, 1337, 1350, 1338, 1336, 1341, 1346, 1340, ++ ++ 1338, 1339, 1349, 1344, 1345, 1341, 1339, 1343, 1344, 1345, ++ 1346, 1351, 1347, 1352, 1348, 1355, 1350, 1357, 1340, 0, ++ 1356, 1350, 1359, 1358, 0, 1346, 1360, 1362, 1364, 1361, ++ 0, 0, 0, 1349, 1359, 0, 0, 1368, 1351, 1357, ++ 1352, 1358, 1362, 1356, 1357, 1360, 1355, 1356, 1365, 1359, ++ 1358, 1361, 1364, 1360, 1362, 1364, 1361, 1371, 1366, 1367, ++ 1369, 1372, 1365, 1368, 1368, 1371, 1373, 1374, 1372, 1376, ++ 1378, 1375, 1377, 0, 1373, 1365, 1366, 1367, 1369, 1383, ++ 1388, 1381, 1380, 1386, 1371, 1366, 1367, 1369, 1372, 1375, ++ 1386, 1377, 1378, 1373, 1374, 1381, 1376, 1378, 1375, 1377, ++ ++ 1380, 1387, 1389, 1390, 1388, 1391, 1383, 1388, 1381, 1380, ++ 1386, 1392, 1393, 1394, 1395, 0, 1399, 1400, 1404, 1396, ++ 1392, 0, 1405, 1403, 1403, 1393, 1408, 1387, 1387, 1389, ++ 1390, 1405, 1391, 1403, 1412, 0, 1444, 1399, 1392, 1393, ++ 1404, 1395, 1396, 1399, 1394, 1404, 1396, 1406, 1400, 1405, ++ 1403, 1403, 1407, 1408, 1406, 1409, 1410, 1413, 1411, 1414, ++ 1412, 1412, 1415, 1409, 1421, 1407, 1411, 1444, 1413, 1415, ++ 1416, 1416, 1417, 1418, 1406, 1410, 1424, 1426, 1428, 1407, ++ 1418, 1414, 1409, 1410, 1413, 1411, 1414, 1419, 1421, 1415, ++ 1417, 1421, 1423, 1425, 1419, 1426, 1428, 1416, 1429, 1417, ++ ++ 1418, 1423, 1434, 1424, 1426, 1428, 1430, 0, 1430, 1435, ++ 1436, 1440, 1438, 1429, 1419, 1441, 1425, 1443, 1440, 1423, ++ 1425, 1441, 1439, 1442, 1434, 1429, 1443, 1446, 1436, 1434, ++ 1445, 1450, 1445, 1430, 1438, 1435, 1435, 1436, 1440, 1438, ++ 1439, 1449, 1441, 1448, 1443, 1442, 1451, 1453, 1452, 1439, ++ 1442, 1448, 1454, 1449, 1446, 1453, 1455, 1445, 1450, 1452, ++ 1456, 1456, 1457, 1459, 1451, 1462, 1460, 1464, 1449, 1458, ++ 1448, 1454, 1464, 1451, 1453, 1452, 1465, 1458, 1455, 1454, ++ 1466, 1470, 1473, 1455, 1463, 1468, 1471, 1456, 1460, 1457, ++ 1459, 1463, 1462, 1460, 1464, 1469, 1458, 1467, 1475, 1472, ++ ++ 1468, 1471, 1469, 1465, 1473, 1467, 1472, 1466, 1470, 1473, ++ 1474, 1463, 1468, 1471, 1477, 1476, 1476, 1479, 1474, 1480, ++ 1482, 1484, 1469, 1483, 1467, 1476, 1472, 1480, 1485, 1475, ++ 1486, 1487, 1489, 1482, 1491, 1493, 1498, 1474, 0, 1502, ++ 0, 1477, 1476, 1476, 1479, 1483, 1480, 1482, 1484, 1494, ++ 1483, 1497, 1499, 1487, 1502, 1485, 1503, 1486, 1487, 1489, ++ 1491, 1491, 1493, 1498, 1501, 1503, 1502, 1505, 1505, 1504, ++ 1497, 1494, 1511, 1516, 1499, 1506, 1494, 1505, 1497, 1499, ++ 1504, 1506, 1507, 1503, 1512, 1510, 1501, 1518, 1520, 1521, ++ 1524, 1501, 1510, 1525, 1505, 1505, 1504, 1523, 1542, 1511, ++ ++ 1516, 1521, 1506, 1526, 1507, 1526, 1523, 1512, 1532, 1507, ++ 1518, 1512, 1510, 1527, 1518, 1520, 1521, 1524, 1531, 1529, ++ 1525, 1528, 1530, 1534, 1523, 1527, 1531, 1528, 1536, 1542, ++ 1526, 1539, 1538, 0, 1544, 1532, 0, 0, 1543, 0, ++ 1527, 1529, 1559, 1547, 1530, 1531, 1529, 1538, 1528, 1530, ++ 1534, 1543, 1545, 1546, 1547, 1536, 1544, 1539, 1539, 1538, ++ 1545, 1544, 1546, 1551, 1552, 1543, 1554, 1553, 1555, 1559, ++ 1547, 1552, 1556, 1557, 1554, 1557, 1558, 1555, 1560, 1545, ++ 1546, 1553, 1561, 1556, 1562, 1563, 1551, 1563, 1558, 1564, ++ 1551, 1552, 1565, 1554, 1553, 1555, 1560, 1566, 0, 1556, ++ ++ 1557, 1564, 1568, 1558, 1561, 1560, 1562, 1569, 1570, 1561, ++ 1566, 1562, 1563, 1571, 1568, 1569, 1564, 0, 1572, 1573, ++ 1574, 1580, 1575, 1565, 1566, 1588, 1577, 1578, 1574, 1568, ++ 1576, 1572, 0, 1573, 1569, 1575, 1581, 1589, 1576, 1570, ++ 1577, 1578, 1579, 1580, 1571, 1572, 1573, 1574, 1580, 1575, ++ 1579, 1582, 1584, 1577, 1578, 1583, 1588, 1576, 1581, 1582, ++ 1587, 1585, 1586, 1581, 1589, 1590, 1593, 1591, 1587, 1579, ++ 0, 0, 1592, 1597, 1584, 1591, 0, 1595, 1582, 1584, ++ 1592, 1583, 1583, 1585, 1586, 1590, 1601, 1587, 1585, 1586, ++ 1594, 1595, 1590, 1598, 1591, 1597, 1602, 1593, 1594, 1592, ++ ++ 1597, 1598, 1599, 1603, 1595, 1600, 0, 1604, 0, 1605, ++ 1599, 1603, 1601, 1601, 0, 1606, 1608, 1594, 1602, 1600, ++ 1598, 1607, 1609, 1602, 1608, 1610, 1611, 0, 1613, 1599, ++ 1603, 1612, 1600, 1604, 1604, 1605, 1605, 1606, 1616, 1612, ++ 1617, 1607, 1606, 1608, 1620, 1610, 1611, 0, 1607, 1609, ++ 1613, 1614, 1610, 1611, 1623, 1613, 1618, 1624, 1612, 1614, ++ 1616, 1619, 1617, 1626, 1618, 1616, 1621, 1617, 1622, 1619, ++ 1620, 1620, 1625, 1627, 1621, 0, 1622, 1628, 1614, 1630, ++ 1623, 1623, 1636, 1618, 1624, 1633, 1634, 1637, 1619, 0, ++ 1626, 0, 1625, 1621, 1634, 1622, 0, 1628, 0, 1625, ++ ++ 1627, 1630, 1635, 0, 1628, 0, 1630, 1633, 0, 1636, ++ 1635, 0, 1633, 1634, 1637, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1635, ++ 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1642, 1642, 1642, ++ 1642, 1642, 1642, 1642, 1643, 1643, 1643, 1643, 1643, 1643, ++ 1643, 1644, 1644, 1644, 1644, 1644, 1644, 1644, 1645, 1645, ++ 1645, 1645, 1645, 1645, 1645, 1647, 1647, 0, 1647, 1647, ++ 1647, 1647, 1648, 1648, 0, 0, 0, 1648, 1648, 1649, ++ 1649, 0, 0, 1649, 0, 1649, 1650, 0, 0, 0, ++ 0, 0, 1650, 1651, 1651, 0, 0, 0, 1651, 1651, ++ ++ 1652, 0, 0, 0, 0, 0, 1652, 1653, 1653, 0, ++ 1653, 1653, 1653, 1653, 1654, 1654, 0, 1654, 1654, 1654, ++ 1654, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, 1640, ++ 1640, 1640, 1640, 1640, 1640, 1640, 1640 + } ; + + static yy_state_type yy_last_accepting_state; +@@ -2218,7 +2229,7 @@ static void config_end_include(void) + #define YY_NO_INPUT 1 + #endif + +-#line 2220 "" ++#line 2231 "" + + #define INITIAL 0 + #define quotedstring 1 +@@ -2405,7 +2416,7 @@ YY_DECL + + #line 197 "util/configlexer.lex" + +-#line 2407 "" ++#line 2418 "" + + if ( !(yy_init) ) + { +@@ -2464,13 +2475,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 >= 1628 ) ++ if ( yy_current_state >= 1641 ) + 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] != 4681 ); ++ while ( yy_base[yy_current_state] != 4722 ); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; +@@ -2705,555 +2716,560 @@ YY_RULE_SETUP + case 42: + YY_RULE_SETUP + #line 242 "util/configlexer.lex" +-{ YDVAR(1, VAR_CACHE_MIN_TTL) } ++{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } + YY_BREAK + case 43: + YY_RULE_SETUP + #line 243 "util/configlexer.lex" +-{ YDVAR(1, VAR_INFRA_HOST_TTL) } ++{ YDVAR(1, VAR_CACHE_MIN_TTL) } + YY_BREAK + case 44: + YY_RULE_SETUP + #line 244 "util/configlexer.lex" +-{ YDVAR(1, VAR_INFRA_LAME_TTL) } ++{ YDVAR(1, VAR_INFRA_HOST_TTL) } + YY_BREAK + case 45: + YY_RULE_SETUP + #line 245 "util/configlexer.lex" +-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } ++{ YDVAR(1, VAR_INFRA_LAME_TTL) } + YY_BREAK + case 46: + YY_RULE_SETUP + #line 246 "util/configlexer.lex" +-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } ++{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } + YY_BREAK + case 47: + YY_RULE_SETUP + #line 247 "util/configlexer.lex" +-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } ++{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } + YY_BREAK + case 48: + YY_RULE_SETUP + #line 248 "util/configlexer.lex" +-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } ++{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } + YY_BREAK + case 49: + YY_RULE_SETUP + #line 249 "util/configlexer.lex" +-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } ++{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } + YY_BREAK + case 50: + YY_RULE_SETUP + #line 250 "util/configlexer.lex" +-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } ++{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } + YY_BREAK + case 51: + YY_RULE_SETUP + #line 251 "util/configlexer.lex" +-{ YDVAR(1, VAR_DELAY_CLOSE) } ++{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } + YY_BREAK + case 52: + YY_RULE_SETUP + #line 252 "util/configlexer.lex" +-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } ++{ YDVAR(1, VAR_DELAY_CLOSE) } + YY_BREAK + case 53: + YY_RULE_SETUP + #line 253 "util/configlexer.lex" +-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } ++{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } + YY_BREAK + case 54: + YY_RULE_SETUP + #line 254 "util/configlexer.lex" +-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } ++{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } + YY_BREAK + case 55: + YY_RULE_SETUP + #line 255 "util/configlexer.lex" +-{ YDVAR(1, VAR_HARDEN_GLUE) } ++{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } + YY_BREAK + case 56: + YY_RULE_SETUP + #line 256 "util/configlexer.lex" +-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } ++{ YDVAR(1, VAR_HARDEN_GLUE) } + YY_BREAK + case 57: + YY_RULE_SETUP + #line 257 "util/configlexer.lex" +-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } ++{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } + YY_BREAK + case 58: + YY_RULE_SETUP + #line 258 "util/configlexer.lex" +-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } ++{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } + YY_BREAK + case 59: + YY_RULE_SETUP + #line 259 "util/configlexer.lex" +-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } ++{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } + YY_BREAK + case 60: + YY_RULE_SETUP + #line 260 "util/configlexer.lex" +-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } ++{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } + YY_BREAK + case 61: + YY_RULE_SETUP + #line 261 "util/configlexer.lex" +-{ YDVAR(1, VAR_PRIVATE_ADDRESS) } ++{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } + YY_BREAK + case 62: + YY_RULE_SETUP + #line 262 "util/configlexer.lex" +-{ YDVAR(1, VAR_PRIVATE_DOMAIN) } ++{ YDVAR(1, VAR_PRIVATE_ADDRESS) } + YY_BREAK + case 63: + YY_RULE_SETUP + #line 263 "util/configlexer.lex" +-{ YDVAR(1, VAR_PREFETCH_KEY) } ++{ YDVAR(1, VAR_PRIVATE_DOMAIN) } + YY_BREAK + case 64: + YY_RULE_SETUP + #line 264 "util/configlexer.lex" +-{ YDVAR(1, VAR_PREFETCH) } ++{ YDVAR(1, VAR_PREFETCH_KEY) } + YY_BREAK + case 65: + YY_RULE_SETUP + #line 265 "util/configlexer.lex" +-{ YDVAR(0, VAR_STUB_ZONE) } ++{ YDVAR(1, VAR_PREFETCH) } + YY_BREAK + case 66: + YY_RULE_SETUP + #line 266 "util/configlexer.lex" +-{ YDVAR(1, VAR_NAME) } ++{ YDVAR(0, VAR_STUB_ZONE) } + YY_BREAK + case 67: + YY_RULE_SETUP + #line 267 "util/configlexer.lex" +-{ YDVAR(1, VAR_STUB_ADDR) } ++{ YDVAR(1, VAR_NAME) } + YY_BREAK + case 68: + YY_RULE_SETUP + #line 268 "util/configlexer.lex" +-{ YDVAR(1, VAR_STUB_HOST) } ++{ YDVAR(1, VAR_STUB_ADDR) } + YY_BREAK + case 69: + YY_RULE_SETUP + #line 269 "util/configlexer.lex" +-{ YDVAR(1, VAR_STUB_PRIME) } ++{ YDVAR(1, VAR_STUB_HOST) } + YY_BREAK + case 70: + YY_RULE_SETUP + #line 270 "util/configlexer.lex" +-{ YDVAR(1, VAR_STUB_FIRST) } ++{ YDVAR(1, VAR_STUB_PRIME) } + YY_BREAK + case 71: + YY_RULE_SETUP + #line 271 "util/configlexer.lex" +-{ YDVAR(0, VAR_FORWARD_ZONE) } ++{ YDVAR(1, VAR_STUB_FIRST) } + YY_BREAK + case 72: + YY_RULE_SETUP + #line 272 "util/configlexer.lex" +-{ YDVAR(1, VAR_FORWARD_ADDR) } ++{ YDVAR(0, VAR_FORWARD_ZONE) } + YY_BREAK + case 73: + YY_RULE_SETUP + #line 273 "util/configlexer.lex" +-{ YDVAR(1, VAR_FORWARD_HOST) } ++{ YDVAR(1, VAR_FORWARD_ADDR) } + YY_BREAK + case 74: + YY_RULE_SETUP + #line 274 "util/configlexer.lex" +-{ YDVAR(1, VAR_FORWARD_FIRST) } ++{ YDVAR(1, VAR_FORWARD_HOST) } + YY_BREAK + case 75: + YY_RULE_SETUP + #line 275 "util/configlexer.lex" +-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } ++{ YDVAR(1, VAR_FORWARD_FIRST) } + YY_BREAK + case 76: + YY_RULE_SETUP + #line 276 "util/configlexer.lex" +-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } ++{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } + YY_BREAK + case 77: + YY_RULE_SETUP + #line 277 "util/configlexer.lex" +-{ YDVAR(2, VAR_ACCESS_CONTROL) } ++{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } + YY_BREAK + case 78: + YY_RULE_SETUP + #line 278 "util/configlexer.lex" +-{ YDVAR(1, VAR_HIDE_IDENTITY) } ++{ YDVAR(2, VAR_ACCESS_CONTROL) } + YY_BREAK + case 79: + YY_RULE_SETUP + #line 279 "util/configlexer.lex" +-{ YDVAR(1, VAR_HIDE_VERSION) } ++{ YDVAR(1, VAR_HIDE_IDENTITY) } + YY_BREAK + case 80: + YY_RULE_SETUP + #line 280 "util/configlexer.lex" +-{ YDVAR(1, VAR_IDENTITY) } ++{ YDVAR(1, VAR_HIDE_VERSION) } + YY_BREAK + case 81: + YY_RULE_SETUP + #line 281 "util/configlexer.lex" +-{ YDVAR(1, VAR_VERSION) } ++{ YDVAR(1, VAR_IDENTITY) } + YY_BREAK + case 82: + YY_RULE_SETUP + #line 282 "util/configlexer.lex" +-{ YDVAR(1, VAR_MODULE_CONF) } ++{ YDVAR(1, VAR_VERSION) } + YY_BREAK + case 83: + YY_RULE_SETUP + #line 283 "util/configlexer.lex" +-{ YDVAR(1, VAR_DLV_ANCHOR) } ++{ YDVAR(1, VAR_MODULE_CONF) } + YY_BREAK + case 84: + YY_RULE_SETUP + #line 284 "util/configlexer.lex" +-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } ++{ YDVAR(1, VAR_DLV_ANCHOR) } + YY_BREAK + case 85: + YY_RULE_SETUP + #line 285 "util/configlexer.lex" +-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } ++{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } + YY_BREAK + case 86: + YY_RULE_SETUP + #line 286 "util/configlexer.lex" +-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } ++{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } + YY_BREAK + case 87: + YY_RULE_SETUP + #line 287 "util/configlexer.lex" +-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } ++{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } + YY_BREAK + case 88: + YY_RULE_SETUP + #line 288 "util/configlexer.lex" +-{ YDVAR(1, VAR_TRUST_ANCHOR) } ++{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } + YY_BREAK + case 89: + YY_RULE_SETUP + #line 289 "util/configlexer.lex" +-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } ++{ YDVAR(1, VAR_TRUST_ANCHOR) } + YY_BREAK + case 90: + YY_RULE_SETUP + #line 290 "util/configlexer.lex" +-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } ++{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } + YY_BREAK + case 91: + YY_RULE_SETUP + #line 291 "util/configlexer.lex" +-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } ++{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } + YY_BREAK + case 92: + YY_RULE_SETUP + #line 292 "util/configlexer.lex" +-{ YDVAR(1, VAR_BOGUS_TTL) } ++{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } + YY_BREAK + case 93: + YY_RULE_SETUP + #line 293 "util/configlexer.lex" +-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } ++{ YDVAR(1, VAR_BOGUS_TTL) } + YY_BREAK + case 94: + YY_RULE_SETUP + #line 294 "util/configlexer.lex" +-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } ++{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } + YY_BREAK + case 95: + YY_RULE_SETUP + #line 295 "util/configlexer.lex" +-{ YDVAR(1, VAR_IGNORE_CD_FLAG) } ++{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } + YY_BREAK + case 96: + YY_RULE_SETUP + #line 296 "util/configlexer.lex" +-{ YDVAR(1, VAR_VAL_LOG_LEVEL) } ++{ YDVAR(1, VAR_IGNORE_CD_FLAG) } + YY_BREAK + case 97: + YY_RULE_SETUP + #line 297 "util/configlexer.lex" +-{ YDVAR(1, VAR_KEY_CACHE_SIZE) } ++{ YDVAR(1, VAR_VAL_LOG_LEVEL) } + YY_BREAK + case 98: + YY_RULE_SETUP + #line 298 "util/configlexer.lex" +-{ YDVAR(1, VAR_KEY_CACHE_SLABS) } ++{ YDVAR(1, VAR_KEY_CACHE_SIZE) } + YY_BREAK + case 99: + YY_RULE_SETUP + #line 299 "util/configlexer.lex" +-{ YDVAR(1, VAR_NEG_CACHE_SIZE) } ++{ YDVAR(1, VAR_KEY_CACHE_SLABS) } + YY_BREAK + case 100: + YY_RULE_SETUP + #line 300 "util/configlexer.lex" +-{ +- YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } ++{ YDVAR(1, VAR_NEG_CACHE_SIZE) } + YY_BREAK + case 101: + YY_RULE_SETUP +-#line 302 "util/configlexer.lex" +-{ YDVAR(1, VAR_ADD_HOLDDOWN) } ++#line 301 "util/configlexer.lex" ++{ ++ YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } + YY_BREAK + case 102: + YY_RULE_SETUP + #line 303 "util/configlexer.lex" +-{ YDVAR(1, VAR_DEL_HOLDDOWN) } ++{ YDVAR(1, VAR_ADD_HOLDDOWN) } + YY_BREAK + case 103: + YY_RULE_SETUP + #line 304 "util/configlexer.lex" +-{ YDVAR(1, VAR_KEEP_MISSING) } ++{ YDVAR(1, VAR_DEL_HOLDDOWN) } + YY_BREAK + case 104: + YY_RULE_SETUP + #line 305 "util/configlexer.lex" +-{ YDVAR(1, VAR_USE_SYSLOG) } ++{ YDVAR(1, VAR_KEEP_MISSING) } + YY_BREAK + case 105: + YY_RULE_SETUP + #line 306 "util/configlexer.lex" +-{ YDVAR(1, VAR_LOG_TIME_ASCII) } ++{ YDVAR(1, VAR_USE_SYSLOG) } + YY_BREAK + case 106: + YY_RULE_SETUP + #line 307 "util/configlexer.lex" +-{ YDVAR(1, VAR_LOG_QUERIES) } ++{ YDVAR(1, VAR_LOG_TIME_ASCII) } + YY_BREAK + case 107: + YY_RULE_SETUP + #line 308 "util/configlexer.lex" +-{ YDVAR(2, VAR_LOCAL_ZONE) } ++{ YDVAR(1, VAR_LOG_QUERIES) } + YY_BREAK + case 108: + YY_RULE_SETUP + #line 309 "util/configlexer.lex" +-{ YDVAR(1, VAR_LOCAL_DATA) } ++{ YDVAR(2, VAR_LOCAL_ZONE) } + YY_BREAK + case 109: + YY_RULE_SETUP + #line 310 "util/configlexer.lex" +-{ YDVAR(1, VAR_LOCAL_DATA_PTR) } ++{ YDVAR(1, VAR_LOCAL_DATA) } + YY_BREAK + case 110: + YY_RULE_SETUP + #line 311 "util/configlexer.lex" +-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } ++{ YDVAR(1, VAR_LOCAL_DATA_PTR) } + YY_BREAK + case 111: + YY_RULE_SETUP + #line 312 "util/configlexer.lex" +-{ YDVAR(1, VAR_STATISTICS_INTERVAL) } ++{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } + YY_BREAK + case 112: + YY_RULE_SETUP + #line 313 "util/configlexer.lex" +-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } ++{ YDVAR(1, VAR_STATISTICS_INTERVAL) } + YY_BREAK + case 113: + YY_RULE_SETUP + #line 314 "util/configlexer.lex" +-{ YDVAR(1, VAR_EXTENDED_STATISTICS) } ++{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } + YY_BREAK + case 114: + YY_RULE_SETUP + #line 315 "util/configlexer.lex" +-{ YDVAR(0, VAR_REMOTE_CONTROL) } ++{ YDVAR(1, VAR_EXTENDED_STATISTICS) } + YY_BREAK + case 115: + YY_RULE_SETUP + #line 316 "util/configlexer.lex" +-{ YDVAR(1, VAR_CONTROL_ENABLE) } ++{ YDVAR(0, VAR_REMOTE_CONTROL) } + YY_BREAK + case 116: + YY_RULE_SETUP + #line 317 "util/configlexer.lex" +-{ YDVAR(1, VAR_CONTROL_INTERFACE) } ++{ YDVAR(1, VAR_CONTROL_ENABLE) } + YY_BREAK + case 117: + YY_RULE_SETUP + #line 318 "util/configlexer.lex" +-{ YDVAR(1, VAR_CONTROL_PORT) } ++{ YDVAR(1, VAR_CONTROL_INTERFACE) } + YY_BREAK + case 118: + YY_RULE_SETUP + #line 319 "util/configlexer.lex" +-{ YDVAR(1, VAR_CONTROL_USE_CERT) } ++{ YDVAR(1, VAR_CONTROL_PORT) } + YY_BREAK + case 119: + YY_RULE_SETUP + #line 320 "util/configlexer.lex" +-{ YDVAR(1, VAR_SERVER_KEY_FILE) } ++{ YDVAR(1, VAR_CONTROL_USE_CERT) } + YY_BREAK + case 120: + YY_RULE_SETUP + #line 321 "util/configlexer.lex" +-{ YDVAR(1, VAR_SERVER_CERT_FILE) } ++{ YDVAR(1, VAR_SERVER_KEY_FILE) } + YY_BREAK + case 121: + YY_RULE_SETUP + #line 322 "util/configlexer.lex" +-{ YDVAR(1, VAR_CONTROL_KEY_FILE) } ++{ YDVAR(1, VAR_SERVER_CERT_FILE) } + YY_BREAK + case 122: + YY_RULE_SETUP + #line 323 "util/configlexer.lex" +-{ YDVAR(1, VAR_CONTROL_CERT_FILE) } ++{ YDVAR(1, VAR_CONTROL_KEY_FILE) } + YY_BREAK + case 123: + YY_RULE_SETUP + #line 324 "util/configlexer.lex" +-{ YDVAR(1, VAR_PYTHON_SCRIPT) } ++{ YDVAR(1, VAR_CONTROL_CERT_FILE) } + YY_BREAK + case 124: + YY_RULE_SETUP + #line 325 "util/configlexer.lex" +-{ YDVAR(0, VAR_PYTHON) } ++{ YDVAR(1, VAR_PYTHON_SCRIPT) } + YY_BREAK + case 125: + YY_RULE_SETUP + #line 326 "util/configlexer.lex" +-{ YDVAR(1, VAR_DOMAIN_INSECURE) } ++{ YDVAR(0, VAR_PYTHON) } + YY_BREAK + case 126: + YY_RULE_SETUP + #line 327 "util/configlexer.lex" +-{ YDVAR(1, VAR_MINIMAL_RESPONSES) } ++{ YDVAR(1, VAR_DOMAIN_INSECURE) } + YY_BREAK + case 127: + YY_RULE_SETUP + #line 328 "util/configlexer.lex" +-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } ++{ YDVAR(1, VAR_MINIMAL_RESPONSES) } + YY_BREAK + case 128: + YY_RULE_SETUP + #line 329 "util/configlexer.lex" +-{ YDVAR(1, VAR_MAX_UDP_SIZE) } ++{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } + YY_BREAK + case 129: + YY_RULE_SETUP + #line 330 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNS64_PREFIX) } ++{ YDVAR(1, VAR_MAX_UDP_SIZE) } + YY_BREAK + case 130: + YY_RULE_SETUP + #line 331 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNS64_SYNTHALL) } ++{ YDVAR(1, VAR_DNS64_PREFIX) } + YY_BREAK + case 131: + YY_RULE_SETUP + #line 332 "util/configlexer.lex" +-{ YDVAR(0, VAR_DNSTAP) } ++{ YDVAR(1, VAR_DNS64_SYNTHALL) } + YY_BREAK + case 132: + YY_RULE_SETUP + #line 333 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNSTAP_ENABLE) } ++{ YDVAR(0, VAR_DNSTAP) } + YY_BREAK + case 133: + YY_RULE_SETUP + #line 334 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } ++{ YDVAR(1, VAR_DNSTAP_ENABLE) } + YY_BREAK + case 134: + YY_RULE_SETUP + #line 335 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } ++{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } + YY_BREAK + case 135: + YY_RULE_SETUP + #line 336 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } ++{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } + YY_BREAK + case 136: + YY_RULE_SETUP + #line 337 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNSTAP_IDENTITY) } ++{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } + YY_BREAK + case 137: + YY_RULE_SETUP + #line 338 "util/configlexer.lex" +-{ YDVAR(1, VAR_DNSTAP_VERSION) } ++{ YDVAR(1, VAR_DNSTAP_IDENTITY) } + YY_BREAK + case 138: + YY_RULE_SETUP + #line 339 "util/configlexer.lex" ++{ YDVAR(1, VAR_DNSTAP_VERSION) } ++ YY_BREAK ++case 139: ++YY_RULE_SETUP ++#line 340 "util/configlexer.lex" + { + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } + YY_BREAK +-case 139: ++case 140: + YY_RULE_SETUP +-#line 341 "util/configlexer.lex" ++#line 342 "util/configlexer.lex" + { + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YY_BREAK +-case 140: ++case 141: + YY_RULE_SETUP +-#line 343 "util/configlexer.lex" ++#line 344 "util/configlexer.lex" + { + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YY_BREAK +-case 141: ++case 142: + YY_RULE_SETUP +-#line 345 "util/configlexer.lex" ++#line 346 "util/configlexer.lex" + { + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YY_BREAK +-case 142: ++case 143: + YY_RULE_SETUP +-#line 347 "util/configlexer.lex" ++#line 348 "util/configlexer.lex" + { + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YY_BREAK +-case 143: ++case 144: + YY_RULE_SETUP +-#line 349 "util/configlexer.lex" ++#line 350 "util/configlexer.lex" + { + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YY_BREAK +-case 144: +-/* rule 144 can match eol */ ++case 145: ++/* rule 145 can match eol */ + YY_RULE_SETUP +-#line 351 "util/configlexer.lex" ++#line 352 "util/configlexer.lex" + { LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK + /* Quoted strings. Strip leading and ending quotes */ +-case 145: ++case 146: + YY_RULE_SETUP +-#line 354 "util/configlexer.lex" ++#line 355 "util/configlexer.lex" + { BEGIN(quotedstring); LEXOUT(("QS ")); } + YY_BREAK + case YY_STATE_EOF(quotedstring): +-#line 355 "util/configlexer.lex" ++#line 356 "util/configlexer.lex" + { + yyerror("EOF inside quoted string"); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } + } + YY_BREAK +-case 146: ++case 147: + YY_RULE_SETUP +-#line 360 "util/configlexer.lex" ++#line 361 "util/configlexer.lex" + { LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +-case 147: +-/* rule 147 can match eol */ ++case 148: ++/* rule 148 can match eol */ + YY_RULE_SETUP +-#line 361 "util/configlexer.lex" ++#line 362 "util/configlexer.lex" + { yyerror("newline inside quoted string, no end \""); + cfg_parser->line++; BEGIN(INITIAL); } + YY_BREAK +-case 148: ++case 149: + YY_RULE_SETUP +-#line 363 "util/configlexer.lex" ++#line 364 "util/configlexer.lex" + { + LEXOUT(("QE ")); + if(--num_args == 0) { BEGIN(INITIAL); } +@@ -3266,34 +3282,34 @@ YY_RULE_SETUP + } + YY_BREAK + /* Single Quoted strings. Strip leading and ending quotes */ +-case 149: ++case 150: + YY_RULE_SETUP +-#line 375 "util/configlexer.lex" ++#line 376 "util/configlexer.lex" + { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } + YY_BREAK + case YY_STATE_EOF(singlequotedstr): +-#line 376 "util/configlexer.lex" ++#line 377 "util/configlexer.lex" + { + yyerror("EOF inside quoted string"); + if(--num_args == 0) { BEGIN(INITIAL); } + else { BEGIN(val); } + } + YY_BREAK +-case 150: ++case 151: + YY_RULE_SETUP +-#line 381 "util/configlexer.lex" ++#line 382 "util/configlexer.lex" + { LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +-case 151: +-/* rule 151 can match eol */ ++case 152: ++/* rule 152 can match eol */ + YY_RULE_SETUP +-#line 382 "util/configlexer.lex" ++#line 383 "util/configlexer.lex" + { yyerror("newline inside quoted string, no end '"); + cfg_parser->line++; BEGIN(INITIAL); } + YY_BREAK +-case 152: ++case 153: + YY_RULE_SETUP +-#line 384 "util/configlexer.lex" ++#line 385 "util/configlexer.lex" + { + LEXOUT(("SQE ")); + if(--num_args == 0) { BEGIN(INITIAL); } +@@ -3306,38 +3322,38 @@ YY_RULE_SETUP + } + YY_BREAK + /* include: directive */ +-case 153: ++case 154: + YY_RULE_SETUP +-#line 396 "util/configlexer.lex" ++#line 397 "util/configlexer.lex" + { + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } + YY_BREAK + case YY_STATE_EOF(include): +-#line 398 "util/configlexer.lex" ++#line 399 "util/configlexer.lex" + { + yyerror("EOF inside include directive"); + BEGIN(inc_prev); + } + YY_BREAK +-case 154: +-YY_RULE_SETUP +-#line 402 "util/configlexer.lex" +-{ LEXOUT(("ISP ")); /* ignore */ } +- YY_BREAK + case 155: +-/* rule 155 can match eol */ + YY_RULE_SETUP + #line 403 "util/configlexer.lex" +-{ LEXOUT(("NL\n")); cfg_parser->line++;} ++{ LEXOUT(("ISP ")); /* ignore */ } + YY_BREAK + case 156: ++/* rule 156 can match eol */ + YY_RULE_SETUP + #line 404 "util/configlexer.lex" +-{ LEXOUT(("IQS ")); BEGIN(include_quoted); } ++{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK + case 157: + YY_RULE_SETUP + #line 405 "util/configlexer.lex" ++{ LEXOUT(("IQS ")); BEGIN(include_quoted); } ++ YY_BREAK ++case 158: ++YY_RULE_SETUP ++#line 406 "util/configlexer.lex" + { + LEXOUT(("Iunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext); +@@ -3345,27 +3361,27 @@ YY_RULE_SETUP + } + YY_BREAK + case YY_STATE_EOF(include_quoted): +-#line 410 "util/configlexer.lex" ++#line 411 "util/configlexer.lex" + { + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); + } + YY_BREAK +-case 158: ++case 159: + YY_RULE_SETUP +-#line 414 "util/configlexer.lex" ++#line 415 "util/configlexer.lex" + { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +-case 159: +-/* rule 159 can match eol */ ++case 160: ++/* rule 160 can match eol */ + YY_RULE_SETUP +-#line 415 "util/configlexer.lex" ++#line 416 "util/configlexer.lex" + { yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); } + YY_BREAK +-case 160: ++case 161: + YY_RULE_SETUP +-#line 417 "util/configlexer.lex" ++#line 418 "util/configlexer.lex" + { + LEXOUT(("IQE ")); + yytext[yyleng - 1] = '\0'; +@@ -3375,7 +3391,7 @@ YY_RULE_SETUP + YY_BREAK + case YY_STATE_EOF(INITIAL): + case YY_STATE_EOF(val): +-#line 423 "util/configlexer.lex" ++#line 424 "util/configlexer.lex" + { + LEXOUT(("LEXEOF ")); + yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ +@@ -3387,33 +3403,33 @@ case YY_STATE_EOF(val): + } + } + YY_BREAK +-case 161: ++case 162: + YY_RULE_SETUP +-#line 434 "util/configlexer.lex" ++#line 435 "util/configlexer.lex" + { LEXOUT(("unquotedstr(%s) ", yytext)); + if(--num_args == 0) { BEGIN(INITIAL); } + yylval.str = strdup(yytext); return STRING_ARG; } + YY_BREAK +-case 162: ++case 163: + YY_RULE_SETUP +-#line 438 "util/configlexer.lex" ++#line 439 "util/configlexer.lex" + { + ub_c_error_msg("unknown keyword '%s'", yytext); + } + YY_BREAK +-case 163: ++case 164: + YY_RULE_SETUP +-#line 442 "util/configlexer.lex" ++#line 443 "util/configlexer.lex" + { + ub_c_error_msg("stray '%s'", yytext); + } + YY_BREAK +-case 164: ++case 165: + YY_RULE_SETUP +-#line 446 "util/configlexer.lex" ++#line 447 "util/configlexer.lex" + ECHO; + YY_BREAK +-#line 3415 "" ++#line 3431 "" + + case YY_END_OF_BUFFER: + { +@@ -3703,7 +3719,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 >= 1628 ) ++ if ( yy_current_state >= 1641 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; +@@ -3731,11 +3747,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 >= 1628 ) ++ if ( yy_current_state >= 1641 ) + 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 == 1627); ++ yy_is_jam = (yy_current_state == 1640); + + return yy_is_jam ? 0 : yy_current_state; + } +@@ -4368,7 +4384,7 @@ void yyfree (void * ptr ) + + #define YYTABLES_NAME "yytables" + +-#line 446 "util/configlexer.lex" ++#line 447 "util/configlexer.lex" + + + +diff --git a/util/configparser.c b/util/configparser.c +index 0d7328f..e0dd1f2 100644 +--- a/util/configparser.c ++++ b/util/configparser.c +@@ -1,19 +1,19 @@ +-/* A Bison parser, made by GNU Bison 2.7. */ ++/* A Bison parser, made by GNU Bison 3.0.2. */ + + /* Bison implementation for Yacc-like parsers in C +- +- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. +- ++ ++ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. ++ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. +- ++ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +- ++ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +@@ -26,7 +26,7 @@ + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. +- ++ + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +@@ -44,7 +44,7 @@ + #define YYBISON 1 + + /* Bison version. */ +-#define YYBISON_VERSION "2.7" ++#define YYBISON_VERSION "3.0.2" + + /* Skeleton name. */ + #define YYSKELETON_NAME "yacc.c" +@@ -62,8 +62,7 @@ + + + /* Copy the first part of user declarations. */ +-/* Line 371 of yacc.c */ +-#line 38 "util/configparser.y" ++#line 38 "util/configparser.y" /* yacc.c:339 */ + + #include "config.h" + +@@ -90,14 +89,13 @@ extern struct config_parser_state* cfg_parser; + #endif + + +-/* Line 371 of yacc.c */ +-#line 95 "util/configparser.c" ++#line 93 "util/configparser.c" /* yacc.c:339 */ + +-# ifndef YY_NULL ++# ifndef YY_NULLPTR + # if defined __cplusplus && 201103L <= __cplusplus +-# define YY_NULL nullptr ++# define YY_NULLPTR nullptr + # else +-# define YY_NULL 0 ++# define YY_NULLPTR 0 + # endif + # endif + +@@ -113,7 +111,7 @@ extern struct config_parser_state* cfg_parser; + by #include "configparser.h". */ + #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED + # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +-/* Enabling traces. */ ++/* Debug traces. */ + #ifndef YYDEBUG + # define YYDEBUG 0 + #endif +@@ -121,161 +119,161 @@ extern struct config_parser_state* cfg_parser; + extern int yydebug; + #endif + +-/* Tokens. */ ++/* Token type. */ + #ifndef YYTOKENTYPE + # define YYTOKENTYPE +- /* Put the tokens into the symbol table, so that GDB and other debuggers +- know about them. */ +- enum yytokentype { +- SPACE = 258, +- LETTER = 259, +- NEWLINE = 260, +- COMMENT = 261, +- COLON = 262, +- ANY = 263, +- ZONESTR = 264, +- STRING_ARG = 265, +- VAR_SERVER = 266, +- VAR_VERBOSITY = 267, +- VAR_NUM_THREADS = 268, +- VAR_PORT = 269, +- VAR_OUTGOING_RANGE = 270, +- VAR_INTERFACE = 271, +- VAR_DO_IP4 = 272, +- VAR_DO_IP6 = 273, +- VAR_DO_UDP = 274, +- VAR_DO_TCP = 275, +- VAR_CHROOT = 276, +- VAR_USERNAME = 277, +- VAR_DIRECTORY = 278, +- VAR_LOGFILE = 279, +- VAR_PIDFILE = 280, +- VAR_MSG_CACHE_SIZE = 281, +- VAR_MSG_CACHE_SLABS = 282, +- VAR_NUM_QUERIES_PER_THREAD = 283, +- VAR_RRSET_CACHE_SIZE = 284, +- VAR_RRSET_CACHE_SLABS = 285, +- VAR_OUTGOING_NUM_TCP = 286, +- VAR_INFRA_HOST_TTL = 287, +- VAR_INFRA_LAME_TTL = 288, +- VAR_INFRA_CACHE_SLABS = 289, +- VAR_INFRA_CACHE_NUMHOSTS = 290, +- VAR_INFRA_CACHE_LAME_SIZE = 291, +- VAR_NAME = 292, +- VAR_STUB_ZONE = 293, +- VAR_STUB_HOST = 294, +- VAR_STUB_ADDR = 295, +- VAR_TARGET_FETCH_POLICY = 296, +- VAR_HARDEN_SHORT_BUFSIZE = 297, +- VAR_HARDEN_LARGE_QUERIES = 298, +- VAR_FORWARD_ZONE = 299, +- VAR_FORWARD_HOST = 300, +- VAR_FORWARD_ADDR = 301, +- VAR_DO_NOT_QUERY_ADDRESS = 302, +- VAR_HIDE_IDENTITY = 303, +- VAR_HIDE_VERSION = 304, +- VAR_IDENTITY = 305, +- VAR_VERSION = 306, +- VAR_HARDEN_GLUE = 307, +- VAR_MODULE_CONF = 308, +- VAR_TRUST_ANCHOR_FILE = 309, +- VAR_TRUST_ANCHOR = 310, +- VAR_VAL_OVERRIDE_DATE = 311, +- VAR_BOGUS_TTL = 312, +- VAR_VAL_CLEAN_ADDITIONAL = 313, +- VAR_VAL_PERMISSIVE_MODE = 314, +- VAR_INCOMING_NUM_TCP = 315, +- VAR_MSG_BUFFER_SIZE = 316, +- VAR_KEY_CACHE_SIZE = 317, +- VAR_KEY_CACHE_SLABS = 318, +- VAR_TRUSTED_KEYS_FILE = 319, +- VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320, +- VAR_USE_SYSLOG = 321, +- VAR_OUTGOING_INTERFACE = 322, +- VAR_ROOT_HINTS = 323, +- VAR_DO_NOT_QUERY_LOCALHOST = 324, +- VAR_CACHE_MAX_TTL = 325, +- VAR_HARDEN_DNSSEC_STRIPPED = 326, +- VAR_ACCESS_CONTROL = 327, +- VAR_LOCAL_ZONE = 328, +- VAR_LOCAL_DATA = 329, +- VAR_INTERFACE_AUTOMATIC = 330, +- VAR_STATISTICS_INTERVAL = 331, +- VAR_DO_DAEMONIZE = 332, +- VAR_USE_CAPS_FOR_ID = 333, +- VAR_STATISTICS_CUMULATIVE = 334, +- VAR_OUTGOING_PORT_PERMIT = 335, +- VAR_OUTGOING_PORT_AVOID = 336, +- VAR_DLV_ANCHOR_FILE = 337, +- VAR_DLV_ANCHOR = 338, +- VAR_NEG_CACHE_SIZE = 339, +- VAR_HARDEN_REFERRAL_PATH = 340, +- VAR_PRIVATE_ADDRESS = 341, +- VAR_PRIVATE_DOMAIN = 342, +- VAR_REMOTE_CONTROL = 343, +- VAR_CONTROL_ENABLE = 344, +- VAR_CONTROL_INTERFACE = 345, +- VAR_CONTROL_PORT = 346, +- VAR_SERVER_KEY_FILE = 347, +- VAR_SERVER_CERT_FILE = 348, +- VAR_CONTROL_KEY_FILE = 349, +- VAR_CONTROL_CERT_FILE = 350, +- VAR_CONTROL_USE_CERT = 351, +- VAR_EXTENDED_STATISTICS = 352, +- VAR_LOCAL_DATA_PTR = 353, +- VAR_JOSTLE_TIMEOUT = 354, +- VAR_STUB_PRIME = 355, +- VAR_UNWANTED_REPLY_THRESHOLD = 356, +- VAR_LOG_TIME_ASCII = 357, +- VAR_DOMAIN_INSECURE = 358, +- VAR_PYTHON = 359, +- VAR_PYTHON_SCRIPT = 360, +- VAR_VAL_SIG_SKEW_MIN = 361, +- VAR_VAL_SIG_SKEW_MAX = 362, +- VAR_CACHE_MIN_TTL = 363, +- VAR_VAL_LOG_LEVEL = 364, +- VAR_AUTO_TRUST_ANCHOR_FILE = 365, +- VAR_KEEP_MISSING = 366, +- VAR_ADD_HOLDDOWN = 367, +- VAR_DEL_HOLDDOWN = 368, +- VAR_SO_RCVBUF = 369, +- VAR_EDNS_BUFFER_SIZE = 370, +- VAR_PREFETCH = 371, +- VAR_PREFETCH_KEY = 372, +- VAR_SO_SNDBUF = 373, +- VAR_SO_REUSEPORT = 374, +- VAR_HARDEN_BELOW_NXDOMAIN = 375, +- VAR_IGNORE_CD_FLAG = 376, +- VAR_LOG_QUERIES = 377, +- VAR_TCP_UPSTREAM = 378, +- VAR_SSL_UPSTREAM = 379, +- VAR_SSL_SERVICE_KEY = 380, +- VAR_SSL_SERVICE_PEM = 381, +- VAR_SSL_PORT = 382, +- VAR_FORWARD_FIRST = 383, +- VAR_STUB_FIRST = 384, +- VAR_MINIMAL_RESPONSES = 385, +- VAR_RRSET_ROUNDROBIN = 386, +- VAR_MAX_UDP_SIZE = 387, +- VAR_DELAY_CLOSE = 388, +- VAR_UNBLOCK_LAN_ZONES = 389, +- VAR_INFRA_CACHE_MIN_RTT = 390, +- VAR_DNS64_PREFIX = 391, +- VAR_DNS64_SYNTHALL = 392, +- VAR_DNSTAP = 393, +- VAR_DNSTAP_ENABLE = 394, +- VAR_DNSTAP_SOCKET_PATH = 395, +- VAR_DNSTAP_SEND_IDENTITY = 396, +- VAR_DNSTAP_SEND_VERSION = 397, +- VAR_DNSTAP_IDENTITY = 398, +- VAR_DNSTAP_VERSION = 399, +- VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400, +- VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401, +- VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402, +- VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403, +- VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404, +- VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405 +- }; ++ enum yytokentype ++ { ++ SPACE = 258, ++ LETTER = 259, ++ NEWLINE = 260, ++ COMMENT = 261, ++ COLON = 262, ++ ANY = 263, ++ ZONESTR = 264, ++ STRING_ARG = 265, ++ VAR_SERVER = 266, ++ VAR_VERBOSITY = 267, ++ VAR_NUM_THREADS = 268, ++ VAR_PORT = 269, ++ VAR_OUTGOING_RANGE = 270, ++ VAR_INTERFACE = 271, ++ VAR_DO_IP4 = 272, ++ VAR_DO_IP6 = 273, ++ VAR_DO_UDP = 274, ++ VAR_DO_TCP = 275, ++ VAR_CHROOT = 276, ++ VAR_USERNAME = 277, ++ VAR_DIRECTORY = 278, ++ VAR_LOGFILE = 279, ++ VAR_PIDFILE = 280, ++ VAR_MSG_CACHE_SIZE = 281, ++ VAR_MSG_CACHE_SLABS = 282, ++ VAR_NUM_QUERIES_PER_THREAD = 283, ++ VAR_RRSET_CACHE_SIZE = 284, ++ VAR_RRSET_CACHE_SLABS = 285, ++ VAR_OUTGOING_NUM_TCP = 286, ++ VAR_INFRA_HOST_TTL = 287, ++ VAR_INFRA_LAME_TTL = 288, ++ VAR_INFRA_CACHE_SLABS = 289, ++ VAR_INFRA_CACHE_NUMHOSTS = 290, ++ VAR_INFRA_CACHE_LAME_SIZE = 291, ++ VAR_NAME = 292, ++ VAR_STUB_ZONE = 293, ++ VAR_STUB_HOST = 294, ++ VAR_STUB_ADDR = 295, ++ VAR_TARGET_FETCH_POLICY = 296, ++ VAR_HARDEN_SHORT_BUFSIZE = 297, ++ VAR_HARDEN_LARGE_QUERIES = 298, ++ VAR_FORWARD_ZONE = 299, ++ VAR_FORWARD_HOST = 300, ++ VAR_FORWARD_ADDR = 301, ++ VAR_DO_NOT_QUERY_ADDRESS = 302, ++ VAR_HIDE_IDENTITY = 303, ++ VAR_HIDE_VERSION = 304, ++ VAR_IDENTITY = 305, ++ VAR_VERSION = 306, ++ VAR_HARDEN_GLUE = 307, ++ VAR_MODULE_CONF = 308, ++ VAR_TRUST_ANCHOR_FILE = 309, ++ VAR_TRUST_ANCHOR = 310, ++ VAR_VAL_OVERRIDE_DATE = 311, ++ VAR_BOGUS_TTL = 312, ++ VAR_VAL_CLEAN_ADDITIONAL = 313, ++ VAR_VAL_PERMISSIVE_MODE = 314, ++ VAR_INCOMING_NUM_TCP = 315, ++ VAR_MSG_BUFFER_SIZE = 316, ++ VAR_KEY_CACHE_SIZE = 317, ++ VAR_KEY_CACHE_SLABS = 318, ++ VAR_TRUSTED_KEYS_FILE = 319, ++ VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320, ++ VAR_USE_SYSLOG = 321, ++ VAR_OUTGOING_INTERFACE = 322, ++ VAR_ROOT_HINTS = 323, ++ VAR_DO_NOT_QUERY_LOCALHOST = 324, ++ VAR_CACHE_MAX_TTL = 325, ++ VAR_HARDEN_DNSSEC_STRIPPED = 326, ++ VAR_ACCESS_CONTROL = 327, ++ VAR_LOCAL_ZONE = 328, ++ VAR_LOCAL_DATA = 329, ++ VAR_INTERFACE_AUTOMATIC = 330, ++ VAR_STATISTICS_INTERVAL = 331, ++ VAR_DO_DAEMONIZE = 332, ++ VAR_USE_CAPS_FOR_ID = 333, ++ VAR_STATISTICS_CUMULATIVE = 334, ++ VAR_OUTGOING_PORT_PERMIT = 335, ++ VAR_OUTGOING_PORT_AVOID = 336, ++ VAR_DLV_ANCHOR_FILE = 337, ++ VAR_DLV_ANCHOR = 338, ++ VAR_NEG_CACHE_SIZE = 339, ++ VAR_HARDEN_REFERRAL_PATH = 340, ++ VAR_PRIVATE_ADDRESS = 341, ++ VAR_PRIVATE_DOMAIN = 342, ++ VAR_REMOTE_CONTROL = 343, ++ VAR_CONTROL_ENABLE = 344, ++ VAR_CONTROL_INTERFACE = 345, ++ VAR_CONTROL_PORT = 346, ++ VAR_SERVER_KEY_FILE = 347, ++ VAR_SERVER_CERT_FILE = 348, ++ VAR_CONTROL_KEY_FILE = 349, ++ VAR_CONTROL_CERT_FILE = 350, ++ VAR_CONTROL_USE_CERT = 351, ++ VAR_EXTENDED_STATISTICS = 352, ++ VAR_LOCAL_DATA_PTR = 353, ++ VAR_JOSTLE_TIMEOUT = 354, ++ VAR_STUB_PRIME = 355, ++ VAR_UNWANTED_REPLY_THRESHOLD = 356, ++ VAR_LOG_TIME_ASCII = 357, ++ VAR_DOMAIN_INSECURE = 358, ++ VAR_PYTHON = 359, ++ VAR_PYTHON_SCRIPT = 360, ++ VAR_VAL_SIG_SKEW_MIN = 361, ++ VAR_VAL_SIG_SKEW_MAX = 362, ++ VAR_CACHE_MIN_TTL = 363, ++ VAR_VAL_LOG_LEVEL = 364, ++ VAR_AUTO_TRUST_ANCHOR_FILE = 365, ++ VAR_KEEP_MISSING = 366, ++ VAR_ADD_HOLDDOWN = 367, ++ VAR_DEL_HOLDDOWN = 368, ++ VAR_SO_RCVBUF = 369, ++ VAR_EDNS_BUFFER_SIZE = 370, ++ VAR_PREFETCH = 371, ++ VAR_PREFETCH_KEY = 372, ++ VAR_SO_SNDBUF = 373, ++ VAR_SO_REUSEPORT = 374, ++ VAR_HARDEN_BELOW_NXDOMAIN = 375, ++ VAR_IGNORE_CD_FLAG = 376, ++ VAR_LOG_QUERIES = 377, ++ VAR_TCP_UPSTREAM = 378, ++ VAR_SSL_UPSTREAM = 379, ++ VAR_SSL_SERVICE_KEY = 380, ++ VAR_SSL_SERVICE_PEM = 381, ++ VAR_SSL_PORT = 382, ++ VAR_FORWARD_FIRST = 383, ++ VAR_STUB_FIRST = 384, ++ VAR_MINIMAL_RESPONSES = 385, ++ VAR_RRSET_ROUNDROBIN = 386, ++ VAR_MAX_UDP_SIZE = 387, ++ VAR_DELAY_CLOSE = 388, ++ VAR_UNBLOCK_LAN_ZONES = 389, ++ VAR_INFRA_CACHE_MIN_RTT = 390, ++ VAR_DNS64_PREFIX = 391, ++ VAR_DNS64_SYNTHALL = 392, ++ VAR_DNSTAP = 393, ++ VAR_DNSTAP_ENABLE = 394, ++ VAR_DNSTAP_SOCKET_PATH = 395, ++ VAR_DNSTAP_SEND_IDENTITY = 396, ++ VAR_DNSTAP_SEND_VERSION = 397, ++ VAR_DNSTAP_IDENTITY = 398, ++ VAR_DNSTAP_VERSION = 399, ++ VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400, ++ VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401, ++ VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402, ++ VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403, ++ VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404, ++ VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405, ++ VAR_CACHE_MAX_NEGATIVE_TTL = 406 ++ }; + #endif + /* Tokens. */ + #define SPACE 258 +@@ -426,48 +424,33 @@ extern int yydebug; + #define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 403 + #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404 + #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405 ++#define VAR_CACHE_MAX_NEGATIVE_TTL 406 + +- +- ++/* Value type. */ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +-typedef union YYSTYPE ++typedef union YYSTYPE YYSTYPE; ++union YYSTYPE + { +-/* Line 387 of yacc.c */ +-#line 64 "util/configparser.y" ++#line 64 "util/configparser.y" /* yacc.c:355 */ + + char* str; + +- +-/* Line 387 of yacc.c */ +-#line 443 "util/configparser.c" +-} YYSTYPE; ++#line 439 "util/configparser.c" /* yacc.c:355 */ ++}; + # define YYSTYPE_IS_TRIVIAL 1 +-# define yystype YYSTYPE /* obsolescent; will be withdrawn */ + # define YYSTYPE_IS_DECLARED 1 + #endif + ++ + extern YYSTYPE yylval; + +-#ifdef YYPARSE_PARAM +-#if defined __STDC__ || defined __cplusplus +-int yyparse (void *YYPARSE_PARAM); +-#else +-int yyparse (); +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if defined __STDC__ || defined __cplusplus + int yyparse (void); +-#else +-int yyparse (); +-#endif +-#endif /* ! YYPARSE_PARAM */ + + #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ + + /* Copy the second part of user declarations. */ + +-/* Line 390 of yacc.c */ +-#line 471 "util/configparser.c" ++#line 454 "util/configparser.c" /* yacc.c:358 */ + + #ifdef short + # undef short +@@ -481,11 +464,8 @@ typedef unsigned char yytype_uint8; + + #ifdef YYTYPE_INT8 + typedef YYTYPE_INT8 yytype_int8; +-#elif (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) +-typedef signed char yytype_int8; + #else +-typedef short int yytype_int8; ++typedef signed char yytype_int8; + #endif + + #ifdef YYTYPE_UINT16 +@@ -505,8 +485,7 @@ typedef short int yytype_int16; + # define YYSIZE_T __SIZE_TYPE__ + # elif defined size_t + # define YYSIZE_T size_t +-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) ++# elif ! defined YYSIZE_T + # include /* INFRINGES ON USER NAME SPACE */ + # define YYSIZE_T size_t + # else +@@ -528,6 +507,33 @@ typedef short int yytype_int16; + # endif + #endif + ++#ifndef YY_ATTRIBUTE ++# if (defined __GNUC__ \ ++ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ ++ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C ++# define YY_ATTRIBUTE(Spec) __attribute__(Spec) ++# else ++# define YY_ATTRIBUTE(Spec) /* empty */ ++# endif ++#endif ++ ++#ifndef YY_ATTRIBUTE_PURE ++# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) ++#endif ++ ++#ifndef YY_ATTRIBUTE_UNUSED ++# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) ++#endif ++ ++#if !defined _Noreturn \ ++ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) ++# if defined _MSC_VER && 1200 <= _MSC_VER ++# define _Noreturn __declspec (noreturn) ++# else ++# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) ++# endif ++#endif ++ + /* Suppress unused-variable warnings by "using" E. */ + #if ! defined lint || defined __GNUC__ + # define YYUSE(E) ((void) (E)) +@@ -535,24 +541,26 @@ typedef short int yytype_int16; + # define YYUSE(E) /* empty */ + #endif + +-/* Identity function, used to suppress warnings about constant conditions. */ +-#ifndef lint +-# define YYID(N) (N) +-#else +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) +-static int +-YYID (int yyi) ++#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ ++/* Suppress an incorrect diagnostic about yylval being uninitialized. */ ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ ++ _Pragma ("GCC diagnostic push") \ ++ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ ++ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ ++ _Pragma ("GCC diagnostic pop") + #else +-static int +-YYID (yyi) +- int yyi; ++# define YY_INITIAL_VALUE(Value) Value + #endif +-{ +- return yyi; +-} ++#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++# define YY_IGNORE_MAYBE_UNINITIALIZED_END ++#endif ++#ifndef YY_INITIAL_VALUE ++# define YY_INITIAL_VALUE(Value) /* Nothing. */ + #endif + ++ + #if ! defined yyoverflow || YYERROR_VERBOSE + + /* The parser invokes alloca or malloc; define the necessary symbols. */ +@@ -570,8 +578,7 @@ YYID (yyi) + # define alloca _alloca + # else + # define YYSTACK_ALLOC alloca +-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) ++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS + # include /* INFRINGES ON USER NAME SPACE */ + /* Use EXIT_SUCCESS as a witness for stdlib.h. */ + # ifndef EXIT_SUCCESS +@@ -583,8 +590,8 @@ YYID (yyi) + # endif + + # ifdef YYSTACK_ALLOC +- /* Pacify GCC's `empty if-body' warning. */ +-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) ++ /* Pacify GCC's 'empty if-body' warning. */ ++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + # ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely +@@ -600,7 +607,7 @@ YYID (yyi) + # endif + # if (defined __cplusplus && ! defined EXIT_SUCCESS \ + && ! ((defined YYMALLOC || defined malloc) \ +- && (defined YYFREE || defined free))) ++ && (defined YYFREE || defined free))) + # include /* INFRINGES ON USER NAME SPACE */ + # ifndef EXIT_SUCCESS + # define EXIT_SUCCESS 0 +@@ -608,15 +615,13 @@ YYID (yyi) + # endif + # ifndef YYMALLOC + # define YYMALLOC malloc +-# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) ++# if ! defined malloc && ! defined EXIT_SUCCESS + void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif + # ifndef YYFREE + # define YYFREE free +-# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) ++# if ! defined free && ! defined EXIT_SUCCESS + void free (void *); /* INFRINGES ON USER NAME SPACE */ + # endif + # endif +@@ -626,7 +631,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ + + #if (! defined yyoverflow \ + && (! defined __cplusplus \ +- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) ++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + + /* A type that is properly aligned for any stack member. */ + union yyalloc +@@ -651,16 +656,16 @@ union yyalloc + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ +- do \ +- { \ +- YYSIZE_T yynewbytes; \ +- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ +- Stack = &yyptr->Stack_alloc; \ +- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ +- yyptr += yynewbytes / sizeof (*yyptr); \ +- } \ +- while (YYID (0)) ++# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ ++ do \ ++ { \ ++ YYSIZE_T yynewbytes; \ ++ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ ++ Stack = &yyptr->Stack_alloc; \ ++ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ ++ yyptr += yynewbytes / sizeof (*yyptr); \ ++ } \ ++ while (0) + + #endif + +@@ -679,7 +684,7 @@ union yyalloc + for (yyi = 0; yyi < (Count); yyi++) \ + (Dst)[yyi] = (Src)[yyi]; \ + } \ +- while (YYID (0)) ++ while (0) + # endif + # endif + #endif /* !YYCOPY_NEEDED */ +@@ -687,25 +692,27 @@ union yyalloc + /* YYFINAL -- State number of the termination state. */ + #define YYFINAL 2 + /* YYLAST -- Last index in YYTABLE. */ +-#define YYLAST 280 ++#define YYLAST 281 + + /* YYNTOKENS -- Number of terminals. */ +-#define YYNTOKENS 151 ++#define YYNTOKENS 152 + /* YYNNTS -- Number of nonterminals. */ +-#define YYNNTS 156 ++#define YYNNTS 157 + /* YYNRULES -- Number of rules. */ +-#define YYNRULES 297 +-/* YYNRULES -- Number of states. */ +-#define YYNSTATES 435 ++#define YYNRULES 299 ++/* YYNSTATES -- Number of states. */ ++#define YYNSTATES 438 + +-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ ++/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned ++ by yylex, with out-of-bounds checking. */ + #define YYUNDEFTOK 2 +-#define YYMAXUTOK 405 ++#define YYMAXUTOK 406 + +-#define YYTRANSLATE(YYX) \ ++#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ ++/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM ++ as returned by yylex, without out-of-bounds checking. */ + static const yytype_uint8 yytranslate[] = + { + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, +@@ -748,158 +755,43 @@ static const yytype_uint8 yytranslate[] = + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, +- 145, 146, 147, 148, 149, 150 ++ 145, 146, 147, 148, 149, 150, 151 + }; + + #if YYDEBUG +-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in +- YYRHS. */ +-static const yytype_uint16 yyprhs[] = +-{ +- 0, 0, 3, 4, 7, 10, 13, 16, 19, 22, +- 25, 27, 30, 31, 33, 35, 37, 39, 41, 43, +- 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, +- 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, +- 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, +- 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, +- 125, 127, 129, 131, 133, 135, 137, 139, 141, 143, +- 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, +- 165, 167, 169, 171, 173, 175, 177, 179, 181, 183, +- 185, 187, 189, 191, 193, 195, 197, 199, 201, 203, +- 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, +- 225, 227, 229, 231, 233, 235, 237, 239, 241, 243, +- 246, 247, 249, 251, 253, 255, 257, 259, 262, 263, +- 265, 267, 269, 271, 274, 277, 280, 283, 286, 289, +- 292, 295, 298, 301, 304, 307, 310, 313, 316, 319, +- 322, 325, 328, 331, 334, 337, 340, 343, 346, 349, +- 352, 355, 358, 361, 364, 367, 370, 373, 376, 379, +- 382, 385, 388, 391, 394, 397, 400, 403, 406, 409, +- 412, 415, 418, 421, 424, 427, 430, 433, 436, 439, +- 442, 445, 448, 451, 454, 457, 460, 463, 466, 469, +- 472, 475, 478, 481, 484, 487, 490, 493, 496, 499, +- 502, 505, 509, 512, 515, 518, 521, 524, 527, 530, +- 533, 536, 539, 542, 545, 548, 551, 554, 557, 560, +- 563, 567, 570, 573, 576, 579, 582, 585, 588, 591, +- 594, 597, 600, 603, 606, 609, 612, 615, 617, 620, +- 621, 623, 625, 627, 629, 631, 633, 635, 637, 640, +- 643, 646, 649, 652, 655, 658, 661, 663, 666, 667, +- 669, 671, 673, 675, 677, 679, 681, 683, 685, 687, +- 689, 691, 694, 697, 700, 703, 706, 709, 712, 715, +- 718, 721, 724, 727, 729, 732, 733, 735 +-}; +- +-/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +-static const yytype_int16 yyrhs[] = +-{ +- 152, 0, -1, -1, 152, 153, -1, 154, 155, -1, +- 157, 158, -1, 160, 161, -1, 303, 304, -1, 277, +- 278, -1, 288, 289, -1, 11, -1, 155, 156, -1, +- -1, 163, -1, 164, -1, 168, -1, 171, -1, 177, +- -1, 178, -1, 179, -1, 180, -1, 169, -1, 190, +- -1, 191, -1, 192, -1, 193, -1, 194, -1, 212, +- -1, 213, -1, 214, -1, 218, -1, 219, -1, 174, +- -1, 220, -1, 221, -1, 224, -1, 222, -1, 223, +- -1, 226, -1, 227, -1, 228, -1, 239, -1, 203, +- -1, 204, -1, 205, -1, 206, -1, 229, -1, 242, +- -1, 199, -1, 201, -1, 243, -1, 248, -1, 249, +- -1, 250, -1, 175, -1, 211, -1, 257, -1, 258, +- -1, 200, -1, 253, -1, 187, -1, 170, -1, 195, +- -1, 240, -1, 246, -1, 230, -1, 241, -1, 260, +- -1, 261, -1, 176, -1, 165, -1, 186, -1, 233, +- -1, 166, -1, 172, -1, 173, -1, 196, -1, 197, +- -1, 259, -1, 232, -1, 234, -1, 235, -1, 167, +- -1, 262, -1, 215, -1, 238, -1, 188, -1, 202, +- -1, 244, -1, 245, -1, 247, -1, 252, -1, 198, +- -1, 254, -1, 255, -1, 256, -1, 207, -1, 210, +- -1, 236, -1, 237, -1, 208, -1, 231, -1, 251, +- -1, 189, -1, 181, -1, 182, -1, 183, -1, 184, +- -1, 185, -1, 263, -1, 264, -1, 265, -1, 209, +- -1, 216, -1, 217, -1, 266, -1, 267, -1, 225, +- -1, 38, -1, 158, 159, -1, -1, 268, -1, 269, +- -1, 270, -1, 272, -1, 271, -1, 44, -1, 161, +- 162, -1, -1, 273, -1, 274, -1, 275, -1, 276, +- -1, 13, 10, -1, 12, 10, -1, 76, 10, -1, +- 79, 10, -1, 97, 10, -1, 14, 10, -1, 16, +- 10, -1, 67, 10, -1, 15, 10, -1, 80, 10, +- -1, 81, 10, -1, 31, 10, -1, 60, 10, -1, +- 75, 10, -1, 17, 10, -1, 18, 10, -1, 19, +- 10, -1, 20, 10, -1, 123, 10, -1, 124, 10, +- -1, 125, 10, -1, 126, 10, -1, 127, 10, -1, +- 77, 10, -1, 66, 10, -1, 102, 10, -1, 122, +- 10, -1, 21, 10, -1, 22, 10, -1, 23, 10, +- -1, 24, 10, -1, 25, 10, -1, 68, 10, -1, +- 82, 10, -1, 83, 10, -1, 110, 10, -1, 54, +- 10, -1, 64, 10, -1, 55, 10, -1, 103, 10, +- -1, 48, 10, -1, 49, 10, -1, 50, 10, -1, +- 51, 10, -1, 114, 10, -1, 118, 10, -1, 119, +- 10, -1, 115, 10, -1, 61, 10, -1, 26, 10, +- -1, 27, 10, -1, 28, 10, -1, 99, 10, -1, +- 133, 10, -1, 134, 10, -1, 29, 10, -1, 30, +- 10, -1, 32, 10, -1, 33, 10, -1, 35, 10, +- -1, 36, 10, -1, 34, 10, -1, 135, 10, -1, +- 41, 10, -1, 42, 10, -1, 43, 10, -1, 52, +- 10, -1, 71, 10, -1, 120, 10, -1, 85, 10, +- -1, 78, 10, -1, 86, 10, -1, 87, 10, -1, +- 116, 10, -1, 117, 10, -1, 101, 10, -1, 47, +- 10, -1, 69, 10, -1, 72, 10, 10, -1, 53, +- 10, -1, 56, 10, -1, 106, 10, -1, 107, 10, +- -1, 70, 10, -1, 108, 10, -1, 57, 10, -1, +- 58, 10, -1, 59, 10, -1, 121, 10, -1, 109, +- 10, -1, 65, 10, -1, 112, 10, -1, 113, 10, +- -1, 111, 10, -1, 62, 10, -1, 63, 10, -1, +- 84, 10, -1, 73, 10, 10, -1, 74, 10, -1, +- 98, 10, -1, 130, 10, -1, 131, 10, -1, 132, +- 10, -1, 136, 10, -1, 137, 10, -1, 37, 10, +- -1, 39, 10, -1, 40, 10, -1, 129, 10, -1, +- 100, 10, -1, 37, 10, -1, 45, 10, -1, 46, +- 10, -1, 128, 10, -1, 88, -1, 278, 279, -1, +- -1, 280, -1, 282, -1, 281, -1, 284, -1, 285, +- -1, 286, -1, 287, -1, 283, -1, 89, 10, -1, +- 91, 10, -1, 90, 10, -1, 96, 10, -1, 92, +- 10, -1, 93, 10, -1, 94, 10, -1, 95, 10, +- -1, 138, -1, 289, 290, -1, -1, 291, -1, 292, +- -1, 293, -1, 294, -1, 295, -1, 296, -1, 297, +- -1, 298, -1, 299, -1, 300, -1, 301, -1, 302, +- -1, 139, 10, -1, 140, 10, -1, 141, 10, -1, +- 142, 10, -1, 143, 10, -1, 144, 10, -1, 145, +- 10, -1, 146, 10, -1, 147, 10, -1, 148, 10, +- -1, 149, 10, -1, 150, 10, -1, 104, -1, 304, +- 305, -1, -1, 306, -1, 105, 10, -1 +-}; +- +-/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ ++ /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ + static const yytype_uint16 yyrline[] = + { +- 0, 123, 123, 123, 124, 124, 125, 125, 126, 126, +- 130, 135, 136, 137, 137, 137, 138, 138, 139, 139, +- 139, 140, 140, 140, 141, 141, 141, 142, 142, 143, +- 143, 144, 144, 145, 145, 146, 146, 147, 147, 148, +- 148, 149, 149, 150, 150, 150, 151, 151, 151, 152, +- 152, 152, 153, 153, 154, 154, 155, 155, 156, 156, +- 157, 157, 157, 158, 158, 159, 159, 160, 160, 160, +- 161, 161, 162, 162, 163, 163, 164, 164, 164, 165, +- 165, 166, 166, 167, 167, 168, 168, 169, 169, 170, +- 170, 170, 171, 171, 172, 172, 172, 173, 173, 173, +- 174, 174, 174, 175, 175, 175, 176, 176, 176, 177, +- 177, 177, 178, 178, 178, 179, 179, 180, 182, 194, +- 195, 196, 196, 196, 196, 196, 198, 210, 211, 212, +- 212, 212, 212, 214, 223, 232, 243, 252, 261, 270, +- 283, 298, 307, 316, 325, 334, 343, 352, 361, 370, +- 379, 388, 397, 406, 413, 420, 429, 438, 452, 461, +- 470, 477, 484, 491, 499, 506, 513, 520, 527, 535, +- 543, 551, 558, 565, 574, 583, 590, 597, 605, 613, +- 623, 636, 647, 655, 668, 677, 686, 695, 705, 713, +- 726, 735, 743, 752, 760, 773, 782, 789, 799, 809, +- 819, 829, 839, 849, 859, 866, 873, 882, 891, 900, +- 907, 917, 934, 941, 959, 972, 985, 994, 1003, 1012, +- 1022, 1032, 1041, 1050, 1057, 1066, 1075, 1084, 1092, 1105, +- 1113, 1136, 1143, 1158, 1168, 1178, 1185, 1192, 1201, 1211, +- 1218, 1225, 1234, 1244, 1254, 1261, 1268, 1277, 1282, 1283, +- 1284, 1284, 1284, 1285, 1285, 1285, 1286, 1286, 1288, 1298, +- 1307, 1314, 1324, 1331, 1338, 1345, 1352, 1357, 1358, 1359, +- 1359, 1360, 1360, 1361, 1361, 1362, 1363, 1364, 1365, 1366, +- 1367, 1369, 1377, 1384, 1392, 1400, 1407, 1414, 1423, 1432, +- 1441, 1450, 1459, 1468, 1473, 1474, 1475, 1477 ++ 0, 124, 124, 124, 125, 125, 126, 126, 127, 127, ++ 131, 136, 137, 138, 138, 138, 139, 139, 140, 140, ++ 140, 141, 141, 141, 142, 142, 142, 143, 143, 144, ++ 144, 145, 145, 146, 146, 147, 147, 148, 148, 149, ++ 149, 150, 150, 151, 151, 151, 152, 152, 152, 153, ++ 153, 153, 154, 154, 155, 155, 156, 156, 157, 157, ++ 158, 158, 158, 159, 159, 160, 160, 161, 161, 161, ++ 162, 162, 163, 163, 164, 164, 165, 165, 165, 166, ++ 166, 167, 167, 168, 168, 169, 169, 170, 170, 171, ++ 171, 171, 172, 172, 173, 173, 173, 174, 174, 174, ++ 175, 175, 175, 176, 176, 176, 177, 177, 177, 178, ++ 178, 178, 179, 179, 179, 180, 180, 181, 181, 183, ++ 195, 196, 197, 197, 197, 197, 197, 199, 211, 212, ++ 213, 213, 213, 213, 215, 224, 233, 244, 253, 262, ++ 271, 284, 299, 308, 317, 326, 335, 344, 353, 362, ++ 371, 380, 389, 398, 407, 414, 421, 430, 439, 453, ++ 462, 471, 478, 485, 492, 500, 507, 514, 521, 528, ++ 536, 544, 552, 559, 566, 575, 584, 591, 598, 606, ++ 614, 624, 637, 648, 656, 669, 678, 687, 696, 706, ++ 714, 727, 736, 744, 753, 761, 774, 783, 790, 800, ++ 810, 820, 830, 840, 850, 860, 867, 874, 883, 892, ++ 901, 908, 918, 935, 942, 960, 973, 986, 995, 1004, ++ 1013, 1022, 1032, 1042, 1051, 1060, 1067, 1076, 1085, 1094, ++ 1102, 1115, 1123, 1146, 1153, 1168, 1178, 1188, 1195, 1202, ++ 1211, 1221, 1228, 1235, 1244, 1254, 1264, 1271, 1278, 1287, ++ 1292, 1293, 1294, 1294, 1294, 1295, 1295, 1295, 1296, 1296, ++ 1298, 1308, 1317, 1324, 1334, 1341, 1348, 1355, 1362, 1367, ++ 1368, 1369, 1369, 1370, 1370, 1371, 1371, 1372, 1373, 1374, ++ 1375, 1376, 1377, 1379, 1387, 1394, 1402, 1410, 1417, 1424, ++ 1433, 1442, 1451, 1460, 1469, 1478, 1483, 1484, 1485, 1487 + }; + #endif + +@@ -960,17 +852,18 @@ static const char *const yytname[] = + "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", + "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", + "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", +- "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "$accept", "toplevelvars", +- "toplevelvar", "serverstart", "contents_server", "content_server", +- "stubstart", "contents_stub", "content_stub", "forwardstart", +- "contents_forward", "content_forward", "server_num_threads", +- "server_verbosity", "server_statistics_interval", +- "server_statistics_cumulative", "server_extended_statistics", +- "server_port", "server_interface", "server_outgoing_interface", +- "server_outgoing_range", "server_outgoing_port_permit", +- "server_outgoing_port_avoid", "server_outgoing_num_tcp", +- "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4", +- "server_do_ip6", "server_do_udp", "server_do_tcp", "server_tcp_upstream", ++ "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", ++ "VAR_CACHE_MAX_NEGATIVE_TTL", "$accept", "toplevelvars", "toplevelvar", ++ "serverstart", "contents_server", "content_server", "stubstart", ++ "contents_stub", "content_stub", "forwardstart", "contents_forward", ++ "content_forward", "server_num_threads", "server_verbosity", ++ "server_statistics_interval", "server_statistics_cumulative", ++ "server_extended_statistics", "server_port", "server_interface", ++ "server_outgoing_interface", "server_outgoing_range", ++ "server_outgoing_port_permit", "server_outgoing_port_avoid", ++ "server_outgoing_num_tcp", "server_incoming_num_tcp", ++ "server_interface_automatic", "server_do_ip4", "server_do_ip6", ++ "server_do_udp", "server_do_tcp", "server_tcp_upstream", + "server_ssl_upstream", "server_ssl_service_key", + "server_ssl_service_pem", "server_ssl_port", "server_do_daemonize", + "server_use_syslog", "server_log_time_ascii", "server_log_queries", +@@ -999,13 +892,14 @@ static const char *const yytname[] = + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", +- "server_cache_min_ttl", "server_bogus_ttl", +- "server_val_clean_additional", "server_val_permissive_mode", +- "server_ignore_cd_flag", "server_val_log_level", +- "server_val_nsec3_keysize_iterations", "server_add_holddown", +- "server_del_holddown", "server_keep_missing", "server_key_cache_size", +- "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", +- "server_local_data", "server_local_data_ptr", "server_minimal_responses", ++ "server_cache_max_negative_ttl", "server_cache_min_ttl", ++ "server_bogus_ttl", "server_val_clean_additional", ++ "server_val_permissive_mode", "server_ignore_cd_flag", ++ "server_val_log_level", "server_val_nsec3_keysize_iterations", ++ "server_add_holddown", "server_del_holddown", "server_keep_missing", ++ "server_key_cache_size", "server_key_cache_slabs", ++ "server_neg_cache_size", "server_local_zone", "server_local_data", ++ "server_local_data_ptr", "server_minimal_responses", + "server_rrset_roundrobin", "server_max_udp_size", "server_dns64_prefix", + "server_dns64_synthall", "stub_name", "stub_host", "stub_addr", + "stub_first", "stub_prime", "forward_name", "forward_host", +@@ -1022,13 +916,13 @@ static const char *const yytname[] = + "dt_dnstap_log_client_response_messages", + "dt_dnstap_log_forwarder_query_messages", + "dt_dnstap_log_forwarder_response_messages", "pythonstart", +- "contents_py", "content_py", "py_script", YY_NULL ++ "contents_py", "content_py", "py_script", YY_NULLPTR + }; + #endif + + # ifdef YYPRINT +-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to +- token YYLEX-NUM. */ ++/* YYTOKNUM[NUM] -- (External) token number corresponding to the ++ (internal) symbol number NUM (which must be that of a token). */ + static const yytype_uint16 yytoknum[] = + { + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, +@@ -1046,87 +940,77 @@ static const yytype_uint16 yytoknum[] = + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, +- 405 ++ 405, 406 + }; + # endif + +-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +-static const yytype_uint16 yyr1[] = +-{ +- 0, 151, 152, 152, 153, 153, 153, 153, 153, 153, +- 154, 155, 155, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, +- 156, 156, 156, 156, 156, 156, 156, 156, 157, 158, +- 158, 159, 159, 159, 159, 159, 160, 161, 161, 162, +- 162, 162, 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, 278, +- 279, 279, 279, 279, 279, 279, 279, 279, 280, 281, +- 282, 283, 284, 285, 286, 287, 288, 289, 289, 290, +- 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, +- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, +- 300, 301, 302, 303, 304, 304, 305, 306 +-}; ++#define YYPACT_NINF -81 + +-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +-static const yytype_uint8 yyr2[] = ++#define yypact_value_is_default(Yystate) \ ++ (!!((Yystate) == (-81))) ++ ++#define YYTABLE_NINF -1 ++ ++#define yytable_value_is_error(Yytable_value) \ ++ 0 ++ ++ /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing ++ STATE-NUM. */ ++static const yytype_int16 yypact[] = + { +- 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, +- 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +- 1, 1, 1, 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, 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, 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, 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, +- 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, +- 2, 2, 2, 2, 2, 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 ++ -81, 116, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -12, 40, 47, 39, ++ 2, -80, 16, 17, 18, 22, 23, 24, 66, 68, ++ 71, 72, 73, 78, 107, 126, 127, 128, 143, 145, ++ 146, 147, 148, 149, 151, 152, 153, 154, 155, 156, ++ 157, 158, 160, 161, 162, 163, 164, 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, 195, 196, 197, 198, 199, ++ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, ++ 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, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, 239, 240, 241, 242, 243, ++ -81, -81, -81, -81, -81, -81, 245, 246, 247, 248, ++ -81, -81, -81, -81, -81, 249, 250, 251, 252, 253, ++ 254, 255, 256, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, 257, 258, 259, 260, 261, 262, 263, 264, ++ 265, 266, 267, 268, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, 269, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, 270, 271, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81 + }; + +-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. +- Performed when YYTABLE doesn't specify something else to do. Zero +- means the default is an error. */ ++ /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. ++ Performed when YYTABLE does not specify something else to do. Zero ++ means the default is an error. */ + static const yytype_uint16 yydefact[] = + { +- 2, 0, 1, 10, 118, 126, 247, 293, 266, 3, +- 12, 120, 128, 249, 268, 295, 4, 5, 6, 8, ++ 2, 0, 1, 10, 119, 127, 249, 295, 268, 3, ++ 12, 121, 129, 251, 270, 297, 4, 5, 6, 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, 0, 0, 0, +@@ -1137,216 +1021,158 @@ 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, 0, 0, 11, 13, 14, +- 70, 73, 82, 15, 21, 61, 16, 74, 75, 32, +- 54, 69, 17, 18, 19, 20, 104, 105, 106, 107, +- 108, 71, 60, 86, 103, 22, 23, 24, 25, 26, +- 62, 76, 77, 92, 48, 58, 49, 87, 42, 43, +- 44, 45, 96, 100, 112, 97, 55, 27, 28, 29, +- 84, 113, 114, 30, 31, 33, 34, 36, 37, 35, +- 117, 38, 39, 40, 46, 65, 101, 79, 72, 80, +- 81, 98, 99, 85, 41, 63, 66, 47, 50, 88, +- 89, 64, 90, 51, 52, 53, 102, 91, 59, 93, +- 94, 95, 56, 57, 78, 67, 68, 83, 109, 110, +- 111, 115, 116, 0, 0, 0, 0, 0, 119, 121, +- 122, 123, 125, 124, 0, 0, 0, 0, 127, 129, +- 130, 131, 132, 0, 0, 0, 0, 0, 0, 0, +- 0, 248, 250, 252, 251, 257, 253, 254, 255, 256, +- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 267, 269, 270, 271, 272, 273, 274, 275, +- 276, 277, 278, 279, 280, 0, 294, 296, 134, 133, +- 138, 141, 139, 147, 148, 149, 150, 160, 161, 162, +- 163, 164, 182, 183, 184, 188, 189, 144, 190, 191, +- 194, 192, 193, 196, 197, 198, 209, 173, 174, 175, +- 176, 199, 212, 169, 171, 213, 218, 219, 220, 145, +- 181, 227, 228, 170, 223, 157, 140, 165, 210, 216, +- 200, 0, 0, 231, 146, 135, 156, 203, 136, 142, +- 143, 166, 167, 229, 202, 204, 205, 137, 232, 185, +- 208, 158, 172, 214, 215, 217, 222, 168, 226, 224, +- 225, 177, 180, 206, 207, 178, 179, 201, 221, 159, +- 151, 152, 153, 154, 155, 233, 234, 235, 186, 187, +- 195, 236, 237, 238, 239, 240, 242, 241, 243, 244, +- 245, 246, 258, 260, 259, 262, 263, 264, 265, 261, +- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, +- 291, 292, 297, 211, 230 +-}; +- +-/* YYDEFGOTO[NTERM-NUM]. */ +-static const yytype_int16 yydefgoto[] = +-{ +- -1, 1, 9, 10, 16, 127, 11, 17, 238, 12, +- 18, 248, 128, 129, 130, 131, 132, 133, 134, 135, +- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, +- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, +- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, +- 166, 167, 168, 169, 170, 171, 172, 173, 174, 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, 239, 240, 241, +- 242, 243, 249, 250, 251, 252, 13, 19, 261, 262, +- 263, 264, 265, 266, 267, 268, 269, 14, 20, 282, +- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, +- 293, 294, 15, 21, 296, 297 ++ 0, 0, 0, 0, 0, 0, 0, 0, 11, 13, ++ 14, 70, 73, 82, 15, 21, 61, 16, 74, 75, ++ 32, 54, 69, 17, 18, 19, 20, 104, 105, 106, ++ 107, 108, 71, 60, 86, 103, 22, 23, 24, 25, ++ 26, 62, 76, 77, 92, 48, 58, 49, 87, 42, ++ 43, 44, 45, 96, 100, 112, 97, 55, 27, 28, ++ 29, 84, 113, 114, 30, 31, 33, 34, 36, 37, ++ 35, 117, 38, 39, 40, 46, 65, 101, 79, 72, ++ 80, 81, 98, 99, 85, 41, 63, 66, 47, 50, ++ 88, 89, 64, 118, 90, 51, 52, 53, 102, 91, ++ 59, 93, 94, 95, 56, 57, 78, 67, 68, 83, ++ 109, 110, 111, 115, 116, 0, 0, 0, 0, 0, ++ 120, 122, 123, 124, 126, 125, 0, 0, 0, 0, ++ 128, 130, 131, 132, 133, 0, 0, 0, 0, 0, ++ 0, 0, 0, 250, 252, 254, 253, 259, 255, 256, ++ 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 269, 271, 272, 273, 274, 275, ++ 276, 277, 278, 279, 280, 281, 282, 0, 296, 298, ++ 135, 134, 139, 142, 140, 148, 149, 150, 151, 161, ++ 162, 163, 164, 165, 183, 184, 185, 189, 190, 145, ++ 191, 192, 195, 193, 194, 197, 198, 199, 210, 174, ++ 175, 176, 177, 200, 213, 170, 172, 214, 220, 221, ++ 222, 146, 182, 229, 230, 171, 225, 158, 141, 166, ++ 211, 217, 201, 0, 0, 233, 147, 136, 157, 204, ++ 137, 143, 144, 167, 168, 231, 203, 205, 206, 138, ++ 234, 186, 209, 159, 173, 215, 216, 219, 224, 169, ++ 228, 226, 227, 178, 181, 207, 208, 179, 180, 202, ++ 223, 160, 152, 153, 154, 155, 156, 235, 236, 237, ++ 187, 188, 196, 238, 239, 218, 240, 241, 242, 244, ++ 243, 245, 246, 247, 248, 260, 262, 261, 264, 265, ++ 266, 267, 263, 283, 284, 285, 286, 287, 288, 289, ++ 290, 291, 292, 293, 294, 299, 212, 232 + }; + +-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing +- STATE-NUM. */ +-#define YYPACT_NINF -125 +-static const yytype_int16 yypact[] = ++ /* YYPGOTO[NTERM-NUM]. */ ++static const yytype_int8 yypgoto[] = + { +- -125, 0, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, 93, -36, -32, -62, +- -124, -103, -4, -3, -2, -1, 2, 25, 26, 27, +- 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, +- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, +- 50, 51, 52, 53, 55, 56, 57, 58, 59, 60, +- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, +- 71, 72, 73, 74, 75, 76, 77, 79, 80, 81, +- 82, 84, 85, 87, 88, 89, 90, 91, 92, 120, +- 121, 122, 123, 127, 129, 171, 172, 173, 174, 175, +- 176, 177, 178, 179, 183, 187, 188, 211, 212, 221, +- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, +- 232, 233, 234, 235, 236, 237, 238, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, 239, 240, 241, 242, 243, -125, -125, +- -125, -125, -125, -125, 244, 245, 246, 247, -125, -125, +- -125, -125, -125, 248, 249, 250, 251, 252, 253, 254, +- 255, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, +- 266, 267, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, 268, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, 269, 270, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125 ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81, -81, -81, -81, ++ -81, -81, -81, -81, -81, -81, -81 + }; + +-/* YYPGOTO[NTERM-NUM]. */ +-static const yytype_int8 yypgoto[] = ++ /* YYDEFGOTO[NTERM-NUM]. */ ++static const yytype_int16 yydefgoto[] = + { +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125, -125, -125, -125, -125, +- -125, -125, -125, -125, -125, -125 ++ -1, 1, 9, 10, 16, 128, 11, 17, 240, 12, ++ 18, 250, 129, 130, 131, 132, 133, 134, 135, 136, ++ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, ++ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, ++ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, ++ 167, 168, 169, 170, 171, 172, 173, 174, 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, 241, 242, ++ 243, 244, 245, 251, 252, 253, 254, 13, 19, 263, ++ 264, 265, 266, 267, 268, 269, 270, 271, 14, 20, ++ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, ++ 294, 295, 296, 15, 21, 298, 299 + }; + +-/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If +- positive, shift that token. If negative, reduce the rule which +- number is the opposite. If YYTABLE_NINF, syntax error. */ +-#define YYTABLE_NINF -1 ++ /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If ++ positive, shift that token. If negative, reduce the rule whose ++ number is the opposite. If YYTABLE_NINF, syntax error. */ + static const yytype_uint16 yytable[] = + { +- 2, 233, 295, 234, 235, 244, 298, 299, 300, 301, +- 0, 3, 302, 245, 246, 270, 271, 272, 273, 274, +- 275, 276, 277, 278, 279, 280, 281, 253, 254, 255, +- 256, 257, 258, 259, 260, 303, 304, 305, 4, 306, +- 307, 308, 309, 310, 5, 311, 312, 313, 314, 315, +- 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, +- 326, 327, 328, 329, 236, 330, 331, 332, 333, 334, +- 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, +- 345, 346, 347, 348, 349, 350, 351, 352, 6, 353, +- 354, 355, 356, 237, 357, 358, 247, 359, 360, 361, +- 362, 363, 364, 0, 7, 22, 23, 24, 25, 26, +- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, +- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, +- 365, 366, 367, 368, 47, 48, 49, 369, 8, 370, +- 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, 371, 372, 373, 374, 375, 376, 377, 378, 379, +- 91, 92, 93, 380, 94, 95, 96, 381, 382, 97, +- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, +- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, +- 118, 383, 384, 119, 120, 121, 122, 123, 124, 125, +- 126, 385, 386, 387, 388, 389, 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, 415, 416, 417, 418, 419, 420, 421, 422, 423, +- 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, +- 434 ++ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, ++ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, ++ 42, 43, 44, 45, 46, 297, 300, 301, 302, 47, ++ 48, 49, 303, 304, 305, 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, 306, 235, 307, 236, ++ 237, 308, 309, 310, 246, 91, 92, 93, 311, 94, ++ 95, 96, 247, 248, 97, 98, 99, 100, 101, 102, ++ 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, ++ 113, 114, 115, 116, 117, 118, 2, 312, 119, 120, ++ 121, 122, 123, 124, 125, 126, 0, 3, 255, 256, ++ 257, 258, 259, 260, 261, 262, 313, 314, 315, 127, ++ 238, 272, 273, 274, 275, 276, 277, 278, 279, 280, ++ 281, 282, 283, 316, 4, 317, 318, 319, 320, 321, ++ 5, 322, 323, 324, 325, 326, 327, 328, 329, 239, ++ 330, 331, 332, 333, 334, 249, 335, 336, 337, 338, ++ 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, ++ 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, ++ 359, 360, 361, 362, 6, 363, 364, 365, 366, 367, ++ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, ++ 7, 378, 379, 380, 381, 382, 383, 384, 385, 386, ++ 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, ++ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, ++ 407, 408, 409, 410, 8, 411, 412, 413, 414, 415, ++ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, ++ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, ++ 436, 437 + }; + +-#define yypact_value_is_default(Yystate) \ +- (!!((Yystate) == (-125))) +- +-#define yytable_value_is_error(Yytable_value) \ +- YYID (0) +- + static const yytype_int16 yycheck[] = + { +- 0, 37, 105, 39, 40, 37, 10, 10, 10, 10, +- -1, 11, 10, 45, 46, 139, 140, 141, 142, 143, +- 144, 145, 146, 147, 148, 149, 150, 89, 90, 91, +- 92, 93, 94, 95, 96, 10, 10, 10, 38, 10, +- 10, 10, 10, 10, 44, 10, 10, 10, 10, 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, 105, 10, 10, 10, 41, ++ 42, 43, 10, 10, 10, 47, 48, 49, 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, 10, 37, 10, 39, ++ 40, 10, 10, 10, 37, 97, 98, 99, 10, 101, ++ 102, 103, 45, 46, 106, 107, 108, 109, 110, 111, ++ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, ++ 122, 123, 124, 125, 126, 127, 0, 10, 130, 131, ++ 132, 133, 134, 135, 136, 137, -1, 11, 89, 90, ++ 91, 92, 93, 94, 95, 96, 10, 10, 10, 151, ++ 100, 139, 140, 141, 142, 143, 144, 145, 146, 147, ++ 148, 149, 150, 10, 38, 10, 10, 10, 10, 10, ++ 44, 10, 10, 10, 10, 10, 10, 10, 10, 129, ++ 10, 10, 10, 10, 10, 128, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, +- 10, 10, 10, 10, 100, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, +- 10, 10, 10, 10, 10, 10, 10, 10, 88, 10, +- 10, 10, 10, 129, 10, 10, 128, 10, 10, 10, +- 10, 10, 10, -1, 104, 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, +- 10, 10, 10, 10, 41, 42, 43, 10, 138, 10, +- 47, 48, 49, 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, 10, 10, 10, 10, 10, 10, 10, 10, 10, +- 97, 98, 99, 10, 101, 102, 103, 10, 10, 106, +- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, +- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, +- 127, 10, 10, 130, 131, 132, 133, 134, 135, 136, +- 137, 10, 10, 10, 10, 10, 10, 10, 10, 10, ++ 10, 10, 10, 10, 88, 10, 10, 10, 10, 10, ++ 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, ++ 104, 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, 138, 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. */ ++ /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing ++ symbol of state STATE-NUM. */ + static const yytype_uint16 yystos[] = + { +- 0, 152, 0, 11, 38, 44, 88, 104, 138, 153, +- 154, 157, 160, 277, 288, 303, 155, 158, 161, 278, +- 289, 304, 12, 13, 14, 15, 16, 17, 18, 19, ++ 0, 153, 0, 11, 38, 44, 88, 104, 138, 154, ++ 155, 158, 161, 279, 290, 305, 156, 159, 162, 280, ++ 291, 306, 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, 41, 42, 43, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, +@@ -1356,7 +1182,7 @@ static const yytype_uint16 yystos[] = + 87, 97, 98, 99, 101, 102, 103, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 130, +- 131, 132, 133, 134, 135, 136, 137, 156, 163, 164, ++ 131, 132, 133, 134, 135, 136, 137, 151, 157, 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, +@@ -1367,13 +1193,13 @@ static const yytype_uint16 yystos[] = + 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, 37, 39, 40, 100, 129, 159, 268, +- 269, 270, 271, 272, 37, 45, 46, 128, 162, 273, +- 274, 275, 276, 89, 90, 91, 92, 93, 94, 95, +- 96, 279, 280, 281, 282, 283, 284, 285, 286, 287, +- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, +- 149, 150, 290, 291, 292, 293, 294, 295, 296, 297, +- 298, 299, 300, 301, 302, 105, 305, 306, 10, 10, ++ 265, 266, 267, 268, 269, 37, 39, 40, 100, 129, ++ 160, 270, 271, 272, 273, 274, 37, 45, 46, 128, ++ 163, 275, 276, 277, 278, 89, 90, 91, 92, 93, ++ 94, 95, 96, 281, 282, 283, 284, 285, 286, 287, ++ 288, 289, 139, 140, 141, 142, 143, 144, 145, 146, ++ 147, 148, 149, 150, 292, 293, 294, 295, 296, 297, ++ 298, 299, 300, 301, 302, 303, 304, 105, 307, 308, + 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, +@@ -1387,33 +1213,89 @@ 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, 10, 10, 10, 10 + }; + +-#define yyerrok (yyerrstatus = 0) +-#define yyclearin (yychar = YYEMPTY) +-#define YYEMPTY (-2) +-#define YYEOF 0 +- +-#define YYACCEPT goto yyacceptlab +-#define YYABORT goto yyabortlab +-#define YYERROR goto yyerrorlab +- +- +-/* Like YYERROR except do call yyerror. This remains here temporarily +- to ease the transition to the new meaning of YYERROR, for GCC. +- Once GCC version 2 has supplanted version 1, this can go. However, +- YYFAIL appears to be in use. Nevertheless, it is formally deprecated +- in Bison 2.4.2's NEWS entry, where a plan to phase it out is +- discussed. */ +- +-#define YYFAIL goto yyerrlab +-#if defined YYFAIL +- /* This is here to suppress warnings from the GCC cpp's +- -Wunused-macros. Normally we don't worry about that warning, but +- some users do, and we want to make it easy for users to remove +- YYFAIL uses, which will produce warnings from Bison 2.5. */ +-#endif ++ /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ ++static const yytype_uint16 yyr1[] = ++{ ++ 0, 152, 153, 153, 154, 154, 154, 154, 154, 154, ++ 155, 156, 156, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, ++ 157, 157, 157, 157, 157, 157, 157, 157, 157, 158, ++ 159, 159, 160, 160, 160, 160, 160, 161, 162, 162, ++ 163, 163, 163, 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, 280, 281, 281, 281, 281, 281, 281, 281, 281, ++ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, ++ 291, 292, 292, 292, 292, 292, 292, 292, 292, 292, ++ 292, 292, 292, 293, 294, 295, 296, 297, 298, 299, ++ 300, 301, 302, 303, 304, 305, 306, 306, 307, 308 ++}; ++ ++ /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ ++static const yytype_uint8 yyr2[] = ++{ ++ 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, ++ 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ++ 1, 1, 1, 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, 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, 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, ++ 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, 3, 2, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 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 ++}; ++ ++ ++#define yyerrok (yyerrstatus = 0) ++#define yyclearin (yychar = YYEMPTY) ++#define YYEMPTY (-2) ++#define YYEOF 0 ++ ++#define YYACCEPT goto yyacceptlab ++#define YYABORT goto yyabortlab ++#define YYERROR goto yyerrorlab ++ + + #define YYRECOVERING() (!!yyerrstatus) + +@@ -1430,27 +1312,15 @@ do \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ +- YYERROR; \ +- } \ +-while (YYID (0)) ++ YYERROR; \ ++ } \ ++while (0) + + /* Error token number */ +-#define YYTERROR 1 +-#define YYERRCODE 256 +- +- +-/* This macro is provided for backward compatibility. */ +-#ifndef YY_LOCATION_PRINT +-# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +-#endif ++#define YYTERROR 1 ++#define YYERRCODE 256 + + +-/* YYLEX -- calling `yylex' with the right arguments. */ +-#ifdef YYLEX_PARAM +-# define YYLEX yylex (YYLEX_PARAM) +-#else +-# define YYLEX yylex () +-#endif + + /* Enable debugging if requested. */ + #if YYDEBUG +@@ -1460,40 +1330,36 @@ while (YYID (0)) + # define YYFPRINTF fprintf + # endif + +-# define YYDPRINTF(Args) \ +-do { \ +- if (yydebug) \ +- YYFPRINTF Args; \ +-} while (YYID (0)) ++# define YYDPRINTF(Args) \ ++do { \ ++ if (yydebug) \ ++ YYFPRINTF Args; \ ++} while (0) + +-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +-do { \ +- if (yydebug) \ +- { \ +- YYFPRINTF (stderr, "%s ", Title); \ +- yy_symbol_print (stderr, \ +- Type, Value); \ +- YYFPRINTF (stderr, "\n"); \ +- } \ +-} while (YYID (0)) ++/* This macro is provided for backward compatibility. */ ++#ifndef YY_LOCATION_PRINT ++# define YY_LOCATION_PRINT(File, Loc) ((void) 0) ++#endif + + +-/*--------------------------------. +-| Print this symbol on YYOUTPUT. | +-`--------------------------------*/ ++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ ++do { \ ++ if (yydebug) \ ++ { \ ++ YYFPRINTF (stderr, "%s ", Title); \ ++ yy_symbol_print (stderr, \ ++ Type, Value); \ ++ YYFPRINTF (stderr, "\n"); \ ++ } \ ++} while (0) ++ ++ ++/*----------------------------------------. ++| Print this symbol's value on YYOUTPUT. | ++`----------------------------------------*/ + +-/*ARGSUSED*/ +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + static void + yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +-#else +-static void +-yy_symbol_value_print (yyoutput, yytype, yyvaluep) +- FILE *yyoutput; +- int yytype; +- YYSTYPE const * const yyvaluep; +-#endif + { + FILE *yyo = yyoutput; + YYUSE (yyo); +@@ -1502,14 +1368,8 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) + # ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +-# else +- YYUSE (yyoutput); + # endif +- switch (yytype) +- { +- default: +- break; +- } ++ YYUSE (yytype); + } + + +@@ -1517,22 +1377,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep) + | Print this symbol on YYOUTPUT. | + `--------------------------------*/ + +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + static void + yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) +-#else +-static void +-yy_symbol_print (yyoutput, yytype, yyvaluep) +- FILE *yyoutput; +- int yytype; +- YYSTYPE const * const yyvaluep; +-#endif + { +- if (yytype < YYNTOKENS) +- YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); +- else +- YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); ++ YYFPRINTF (yyoutput, "%s %s (", ++ yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); +@@ -1543,16 +1392,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep) + | TOP (included). | + `------------------------------------------------------------------*/ + +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + static void + yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +-#else +-static void +-yy_stack_print (yybottom, yytop) +- yytype_int16 *yybottom; +- yytype_int16 *yytop; +-#endif + { + YYFPRINTF (stderr, "Stack now"); + for (; yybottom <= yytop; yybottom++) +@@ -1563,49 +1404,42 @@ yy_stack_print (yybottom, yytop) + YYFPRINTF (stderr, "\n"); + } + +-# define YY_STACK_PRINT(Bottom, Top) \ +-do { \ +- if (yydebug) \ +- yy_stack_print ((Bottom), (Top)); \ +-} while (YYID (0)) ++# define YY_STACK_PRINT(Bottom, Top) \ ++do { \ ++ if (yydebug) \ ++ yy_stack_print ((Bottom), (Top)); \ ++} while (0) + + + /*------------------------------------------------. + | Report that the YYRULE is going to be reduced. | + `------------------------------------------------*/ + +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) +-static void +-yy_reduce_print (YYSTYPE *yyvsp, int yyrule) +-#else + static void +-yy_reduce_print (yyvsp, yyrule) +- YYSTYPE *yyvsp; +- int yyrule; +-#endif ++yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) + { ++ unsigned long int yylno = yyrline[yyrule]; + int yynrhs = yyr2[yyrule]; + int yyi; +- unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", +- yyrule - 1, yylno); ++ yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + YYFPRINTF (stderr, " $%d = ", yyi + 1); +- yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], +- &(yyvsp[(yyi + 1) - (yynrhs)]) +- ); ++ yy_symbol_print (stderr, ++ yystos[yyssp[yyi + 1 - yynrhs]], ++ &(yyvsp[(yyi + 1) - (yynrhs)]) ++ ); + YYFPRINTF (stderr, "\n"); + } + } + +-# define YY_REDUCE_PRINT(Rule) \ +-do { \ +- if (yydebug) \ +- yy_reduce_print (yyvsp, Rule); \ +-} while (YYID (0)) ++# define YY_REDUCE_PRINT(Rule) \ ++do { \ ++ if (yydebug) \ ++ yy_reduce_print (yyssp, yyvsp, Rule); \ ++} while (0) + + /* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +@@ -1619,7 +1453,7 @@ int yydebug; + + + /* YYINITDEPTH -- initial size of the parser's stacks. */ +-#ifndef YYINITDEPTH ++#ifndef YYINITDEPTH + # define YYINITDEPTH 200 + #endif + +@@ -1642,15 +1476,8 @@ int yydebug; + # define yystrlen strlen + # else + /* Return the length of YYSTR. */ +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + static YYSIZE_T + yystrlen (const char *yystr) +-#else +-static YYSIZE_T +-yystrlen (yystr) +- const char *yystr; +-#endif + { + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) +@@ -1666,16 +1493,8 @@ yystrlen (yystr) + # else + /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + static char * + yystpcpy (char *yydest, const char *yysrc) +-#else +-static char * +-yystpcpy (yydest, yysrc) +- char *yydest; +- const char *yysrc; +-#endif + { + char *yyd = yydest; + const char *yys = yysrc; +@@ -1705,27 +1524,27 @@ yytnamerr (char *yyres, const char *yystr) + char const *yyp = yystr; + + for (;;) +- switch (*++yyp) +- { +- case '\'': +- case ',': +- goto do_not_strip_quotes; +- +- case '\\': +- if (*++yyp != '\\') +- goto do_not_strip_quotes; +- /* Fall through. */ +- default: +- if (yyres) +- yyres[yyn] = *yyp; +- yyn++; +- break; +- +- case '"': +- if (yyres) +- yyres[yyn] = '\0'; +- return yyn; +- } ++ switch (*++yyp) ++ { ++ case '\'': ++ case ',': ++ goto do_not_strip_quotes; ++ ++ case '\\': ++ if (*++yyp != '\\') ++ goto do_not_strip_quotes; ++ /* Fall through. */ ++ default: ++ if (yyres) ++ yyres[yyn] = *yyp; ++ yyn++; ++ break; ++ ++ case '"': ++ if (yyres) ++ yyres[yyn] = '\0'; ++ return yyn; ++ } + do_not_strip_quotes: ; + } + +@@ -1748,11 +1567,11 @@ static int + yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) + { +- YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); ++ YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ +- const char *yyformat = YY_NULL; ++ const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per +@@ -1760,10 +1579,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + int yycount = 0; + + /* There are many possibilities here to consider: +- - Assume YYFAIL is not used. It's too flawed to consider. See +- +- for details. YYERROR is fine as it does not invoke this +- function. + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected +@@ -1813,7 +1628,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + } + yyarg[yycount++] = yytname[yyx]; + { +- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); ++ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) + return 2; +@@ -1880,31 +1695,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + | Release the memory associated to this symbol. | + `-----------------------------------------------*/ + +-/*ARGSUSED*/ +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + static void + yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +-#else +-static void +-yydestruct (yymsg, yytype, yyvaluep) +- const char *yymsg; +- int yytype; +- YYSTYPE *yyvaluep; +-#endif + { + YYUSE (yyvaluep); +- + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + +- switch (yytype) +- { +- +- default: +- break; +- } ++ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN ++ YYUSE (yytype); ++ YY_IGNORE_MAYBE_UNINITIALIZED_END + } + + +@@ -1913,18 +1714,8 @@ yydestruct (yymsg, yytype, yyvaluep) + /* The lookahead symbol. */ + int yychar; + +- +-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +-# define YY_IGNORE_MAYBE_UNINITIALIZED_END +-#endif +-#ifndef YY_INITIAL_VALUE +-# define YY_INITIAL_VALUE(Value) /* Nothing. */ +-#endif +- + /* The semantic value of the lookahead symbol. */ +-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); +- ++YYSTYPE yylval; + /* Number of syntax errors so far. */ + int yynerrs; + +@@ -1933,35 +1724,16 @@ int yynerrs; + | yyparse. | + `----------*/ + +-#ifdef YYPARSE_PARAM +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) +-int +-yyparse (void *YYPARSE_PARAM) +-#else +-int +-yyparse (YYPARSE_PARAM) +- void *YYPARSE_PARAM; +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if (defined __STDC__ || defined __C99__FUNC__ \ +- || defined __cplusplus || defined _MSC_VER) + int + yyparse (void) +-#else +-int +-yyparse () +- +-#endif +-#endif + { + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: +- `yyss': related to states. +- `yyvs': related to semantic values. ++ 'yyss': related to states. ++ 'yyvs': related to semantic values. + + Refer to the stacks through separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ +@@ -2029,23 +1801,23 @@ yyparse () + + #ifdef yyoverflow + { +- /* Give user a chance to reallocate the stack. Use copies of +- these so that the &'s don't force the real ones into +- memory. */ +- YYSTYPE *yyvs1 = yyvs; +- yytype_int16 *yyss1 = yyss; +- +- /* Each stack pointer address is followed by the size of the +- data in use in that stack, in bytes. This used to be a +- conditional around just the two extra args, but that might +- be undefined if yyoverflow is a macro. */ +- yyoverflow (YY_("memory exhausted"), +- &yyss1, yysize * sizeof (*yyssp), +- &yyvs1, yysize * sizeof (*yyvsp), +- &yystacksize); +- +- yyss = yyss1; +- yyvs = yyvs1; ++ /* Give user a chance to reallocate the stack. Use copies of ++ these so that the &'s don't force the real ones into ++ memory. */ ++ YYSTYPE *yyvs1 = yyvs; ++ yytype_int16 *yyss1 = yyss; ++ ++ /* Each stack pointer address is followed by the size of the ++ data in use in that stack, in bytes. This used to be a ++ conditional around just the two extra args, but that might ++ be undefined if yyoverflow is a macro. */ ++ yyoverflow (YY_("memory exhausted"), ++ &yyss1, yysize * sizeof (*yyssp), ++ &yyvs1, yysize * sizeof (*yyvsp), ++ &yystacksize); ++ ++ yyss = yyss1; ++ yyvs = yyvs1; + } + #else /* no yyoverflow */ + # ifndef YYSTACK_RELOCATE +@@ -2053,22 +1825,22 @@ yyparse () + # else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) +- goto yyexhaustedlab; ++ goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) +- yystacksize = YYMAXDEPTH; ++ yystacksize = YYMAXDEPTH; + + { +- yytype_int16 *yyss1 = yyss; +- union yyalloc *yyptr = +- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); +- if (! yyptr) +- goto yyexhaustedlab; +- YYSTACK_RELOCATE (yyss_alloc, yyss); +- YYSTACK_RELOCATE (yyvs_alloc, yyvs); ++ yytype_int16 *yyss1 = yyss; ++ union yyalloc *yyptr = ++ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); ++ if (! yyptr) ++ goto yyexhaustedlab; ++ YYSTACK_RELOCATE (yyss_alloc, yyss); ++ YYSTACK_RELOCATE (yyvs_alloc, yyvs); + # undef YYSTACK_RELOCATE +- if (yyss1 != yyssa) +- YYSTACK_FREE (yyss1); ++ if (yyss1 != yyssa) ++ YYSTACK_FREE (yyss1); + } + # endif + #endif /* no yyoverflow */ +@@ -2077,10 +1849,10 @@ yyparse () + yyvsp = yyvs + yysize - 1; + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", +- (unsigned long int) yystacksize)); ++ (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) +- YYABORT; ++ YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); +@@ -2109,7 +1881,7 @@ yybackup: + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); +- yychar = YYLEX; ++ yychar = yylex (); + } + + if (yychar <= YYEOF) +@@ -2174,7 +1946,7 @@ yyreduce: + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: +- `$$ = $1'. ++ '$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison +@@ -2188,16 +1960,15 @@ yyreduce: + switch (yyn) + { + case 10: +-/* Line 1792 of yacc.c */ +-#line 131 "util/configparser.y" ++#line 132 "util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(server:)\n")); + } ++#line 1968 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 118: +-/* Line 1792 of yacc.c */ +-#line 183 "util/configparser.y" ++ case 119: ++#line 184 "util/configparser.y" /* yacc.c:1646 */ + { + struct config_stub* s; + OUTYY(("\nP(stub_zone:)\n")); +@@ -2208,11 +1979,11 @@ yyreduce: + } else + yyerror("out of memory"); + } ++#line 1983 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 126: +-/* Line 1792 of yacc.c */ +-#line 199 "util/configparser.y" ++ case 127: ++#line 200 "util/configparser.y" /* yacc.c:1646 */ + { + struct config_stub* s; + OUTYY(("\nP(forward_zone:)\n")); +@@ -2223,87 +1994,87 @@ yyreduce: + } else + yyerror("out of memory"); + } ++#line 1998 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 133: +-/* Line 1792 of yacc.c */ +-#line 215 "util/configparser.y" ++ case 134: ++#line 216 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->num_threads = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2010 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 134: +-/* Line 1792 of yacc.c */ +-#line 224 "util/configparser.y" ++ case 135: ++#line 225 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->verbosity = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2022 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 135: +-/* Line 1792 of yacc.c */ +-#line 233 "util/configparser.y" ++ case 136: ++#line 234 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "") == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) ++ OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); ++ if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) + cfg_parser->cfg->stat_interval = 0; +- else if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ else if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); +- else cfg_parser->cfg->stat_interval = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2036 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 136: +-/* Line 1792 of yacc.c */ +-#line 244 "util/configparser.y" ++ case 137: ++#line 245 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_statistics_cumulative:%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->stat_cumulative = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2048 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 137: +-/* Line 1792 of yacc.c */ +-#line 253 "util/configparser.y" ++ case 138: ++#line 254 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_extended_statistics:%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->stat_extended = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2060 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 138: +-/* Line 1792 of yacc.c */ +-#line 262 "util/configparser.y" ++ case 139: ++#line 263 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("port number expected"); +- else cfg_parser->cfg->port = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->port = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2072 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 139: +-/* Line 1792 of yacc.c */ +-#line 271 "util/configparser.y" ++ case 140: ++#line 272 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->num_ifs == 0) + cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); + else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, +@@ -2311,15 +2082,15 @@ yyreduce: + if(!cfg_parser->cfg->ifs) + yyerror("out of memory"); + else +- cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); + } ++#line 2088 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 140: +-/* Line 1792 of yacc.c */ +-#line 284 "util/configparser.y" ++ case 141: ++#line 285 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->num_out_ifs == 0) + cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); + else cfg_parser->cfg->out_ifs = realloc( +@@ -2329,1136 +2100,1148 @@ yyreduce: + yyerror("out of memory"); + else + cfg_parser->cfg->out_ifs[ +- cfg_parser->cfg->num_out_ifs++] = (yyvsp[(2) - (2)].str); +- } +- break; +- +- case 141: +-/* Line 1792 of yacc.c */ +-#line 299 "util/configparser.y" +- { +- OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) +- yyerror("number expected"); +- else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); + } ++#line 2106 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 142: +-/* Line 1792 of yacc.c */ +-#line 308 "util/configparser.y" ++#line 300 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 1, +- cfg_parser->cfg->outgoing_avail_ports, 65536)) +- yyerror("port number or range (\"low-high\") expected"); +- free((yyvsp[(2) - (2)].str)); ++ OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) ++ yyerror("number expected"); ++ else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2118 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 143: +-/* Line 1792 of yacc.c */ +-#line 317 "util/configparser.y" ++#line 309 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_mark_ports((yyvsp[(2) - (2)].str), 0, ++ OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); ++ if(!cfg_mark_ports((yyvsp[0].str), 1, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2130 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 144: +-/* Line 1792 of yacc.c */ +-#line 326 "util/configparser.y" ++#line 318 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) +- yyerror("number expected"); +- else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); ++ if(!cfg_mark_ports((yyvsp[0].str), 0, ++ cfg_parser->cfg->outgoing_avail_ports, 65536)) ++ yyerror("port number or range (\"low-high\") expected"); ++ free((yyvsp[0].str)); + } ++#line 2142 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 145: +-/* Line 1792 of yacc.c */ +-#line 335 "util/configparser.y" ++#line 327 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2154 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 146: +-/* Line 1792 of yacc.c */ +-#line 344 "util/configparser.y" ++#line 336 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +- yyerror("expected yes or no."); +- else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) ++ yyerror("number expected"); ++ else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2166 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 147: +-/* Line 1792 of yacc.c */ +-#line 353 "util/configparser.y" ++#line 345 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_interface_automatic:%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->do_ip4 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2178 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 148: +-/* Line 1792 of yacc.c */ +-#line 362 "util/configparser.y" ++#line 354 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_do_ip4:%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->do_ip6 = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2190 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 149: +-/* Line 1792 of yacc.c */ +-#line 371 "util/configparser.y" ++#line 363 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_do_ip6:%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->do_udp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2202 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 150: +-/* Line 1792 of yacc.c */ +-#line 380 "util/configparser.y" ++#line 372 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_do_udp:%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->do_tcp = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2214 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 151: +-/* Line 1792 of yacc.c */ +-#line 389 "util/configparser.y" ++#line 381 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_do_tcp:%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->tcp_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2226 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 152: +-/* Line 1792 of yacc.c */ +-#line 398 "util/configparser.y" ++#line 390 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_tcp_upstream:%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->ssl_upstream = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2238 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 153: +-/* Line 1792 of yacc.c */ +-#line 407 "util/configparser.y" ++#line 399 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->ssl_service_key); +- cfg_parser->cfg->ssl_service_key = (yyvsp[(2) - (2)].str); ++ OUTYY(("P(server_ssl_upstream:%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->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2250 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 154: +-/* Line 1792 of yacc.c */ +-#line 414 "util/configparser.y" ++#line 408 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->ssl_service_pem); +- cfg_parser->cfg->ssl_service_pem = (yyvsp[(2) - (2)].str); ++ 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 2260 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 155: +-/* Line 1792 of yacc.c */ +-#line 421 "util/configparser.y" ++#line 415 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) +- yyerror("port number expected"); +- else cfg_parser->cfg->ssl_port = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ 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 2270 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 156: +-/* Line 1792 of yacc.c */ +-#line 430 "util/configparser.y" ++#line 422 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +- yyerror("expected yes or no."); +- else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) ++ yyerror("port number expected"); ++ else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2282 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 157: +-/* Line 1792 of yacc.c */ +-#line 439 "util/configparser.y" ++#line 431 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_do_daemonize:%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->use_syslog = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +-#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) +- if(strcmp((yyvsp[(2) - (2)].str), "yes") == 0) +- yyerror("no syslog services are available. " +- "(reconfigure and compile to add)"); +-#endif +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2294 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 158: +-/* Line 1792 of yacc.c */ +-#line 453 "util/configparser.y" ++#line 440 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_use_syslog:%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->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); ++#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) ++ if(strcmp((yyvsp[0].str), "yes") == 0) ++ yyerror("no syslog services are available. " ++ "(reconfigure and compile to add)"); ++#endif ++ free((yyvsp[0].str)); + } ++#line 2311 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 159: +-/* Line 1792 of yacc.c */ +-#line 462 "util/configparser.y" ++#line 454 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_log_queries:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_log_time_ascii:%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->log_queries = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2323 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 160: +-/* Line 1792 of yacc.c */ +-#line 471 "util/configparser.y" ++#line 463 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->chrootdir); +- cfg_parser->cfg->chrootdir = (yyvsp[(2) - (2)].str); ++ OUTYY(("P(server_log_queries:%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->log_queries = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2335 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 161: +-/* Line 1792 of yacc.c */ +-#line 478 "util/configparser.y" ++#line 472 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->username); +- cfg_parser->cfg->username = (yyvsp[(2) - (2)].str); ++ OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); ++ free(cfg_parser->cfg->chrootdir); ++ cfg_parser->cfg->chrootdir = (yyvsp[0].str); + } ++#line 2345 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 162: +-/* Line 1792 of yacc.c */ +-#line 485 "util/configparser.y" ++#line 479 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->directory); +- cfg_parser->cfg->directory = (yyvsp[(2) - (2)].str); ++ OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); ++ free(cfg_parser->cfg->username); ++ cfg_parser->cfg->username = (yyvsp[0].str); + } ++#line 2355 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 163: +-/* Line 1792 of yacc.c */ +-#line 492 "util/configparser.y" ++#line 486 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->logfile); +- cfg_parser->cfg->logfile = (yyvsp[(2) - (2)].str); +- cfg_parser->cfg->use_syslog = 0; ++ OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); ++ free(cfg_parser->cfg->directory); ++ cfg_parser->cfg->directory = (yyvsp[0].str); + } ++#line 2365 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 164: +-/* Line 1792 of yacc.c */ +-#line 500 "util/configparser.y" ++#line 493 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->pidfile); +- cfg_parser->cfg->pidfile = (yyvsp[(2) - (2)].str); ++ 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 2376 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 165: +-/* Line 1792 of yacc.c */ +-#line 507 "util/configparser.y" ++#line 501 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str))) +- yyerror("out of memory"); ++ OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); ++ free(cfg_parser->cfg->pidfile); ++ cfg_parser->cfg->pidfile = (yyvsp[0].str); + } ++#line 2386 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 166: +-/* Line 1792 of yacc.c */ +-#line 514 "util/configparser.y" ++#line 508 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->dlv_anchor_file); +- cfg_parser->cfg->dlv_anchor_file = (yyvsp[(2) - (2)].str); ++ 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 2396 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 167: +-/* Line 1792 of yacc.c */ +-#line 521 "util/configparser.y" ++#line 515 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str))) +- yyerror("out of memory"); ++ 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 2406 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 168: +-/* Line 1792 of yacc.c */ +-#line 528 "util/configparser.y" ++#line 522 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg-> +- auto_trust_anchor_file_list, (yyvsp[(2) - (2)].str))) ++ 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 2416 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 169: +-/* Line 1792 of yacc.c */ +-#line 536 "util/configparser.y" ++#line 529 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg-> +- trust_anchor_file_list, (yyvsp[(2) - (2)].str))) ++ auto_trust_anchor_file_list, (yyvsp[0].str))) + yyerror("out of memory"); + } ++#line 2427 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 170: +-/* Line 1792 of yacc.c */ +-#line 544 "util/configparser.y" ++#line 537 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg-> +- trusted_keys_file_list, (yyvsp[(2) - (2)].str))) ++ trust_anchor_file_list, (yyvsp[0].str))) + yyerror("out of memory"); + } ++#line 2438 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 171: +-/* Line 1792 of yacc.c */ +-#line 552 "util/configparser.y" ++#line 545 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str))) ++ 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 2449 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 172: +-/* Line 1792 of yacc.c */ +-#line 559 "util/configparser.y" ++#line 553 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[(2) - (2)].str))) ++ 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 2459 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 173: +-/* Line 1792 of yacc.c */ +-#line 566 "util/configparser.y" ++#line 560 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) +- yyerror("expected yes or no."); +- else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ 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 2469 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 174: +-/* Line 1792 of yacc.c */ +-#line 575 "util/configparser.y" ++#line 567 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_hide_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->hide_version = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2481 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 175: +-/* Line 1792 of yacc.c */ +-#line 584 "util/configparser.y" ++#line 576 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->identity); +- cfg_parser->cfg->identity = (yyvsp[(2) - (2)].str); ++ OUTYY(("P(server_hide_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->hide_version = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2493 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 176: +-/* Line 1792 of yacc.c */ +-#line 591 "util/configparser.y" ++#line 585 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str))); +- free(cfg_parser->cfg->version); +- cfg_parser->cfg->version = (yyvsp[(2) - (2)].str); ++ OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); ++ free(cfg_parser->cfg->identity); ++ cfg_parser->cfg->identity = (yyvsp[0].str); + } ++#line 2503 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 177: +-/* Line 1792 of yacc.c */ +-#line 598 "util/configparser.y" ++#line 592 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_rcvbuf)) +- yyerror("buffer size expected"); +- free((yyvsp[(2) - (2)].str)); ++ OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); ++ free(cfg_parser->cfg->version); ++ cfg_parser->cfg->version = (yyvsp[0].str); + } ++#line 2513 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 178: +-/* Line 1792 of yacc.c */ +-#line 606 "util/configparser.y" ++#line 599 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->so_sndbuf)) ++ 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[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2524 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 179: +-/* Line 1792 of yacc.c */ +-#line 614 "util/configparser.y" ++#line 607 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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 2535 "util/configparser.c" /* yacc.c:1646 */ ++ break; ++ ++ case 180: ++#line 615 "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) + yyerror("expected yes or no."); + else cfg_parser->cfg->so_reuseport = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2548 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 180: +-/* Line 1792 of yacc.c */ +-#line 624 "util/configparser.y" ++ case 181: ++#line 625 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); +- else if (atoi((yyvsp[(2) - (2)].str)) < 12) ++ else if (atoi((yyvsp[0].str)) < 12) + yyerror("edns buffer size too small"); +- else if (atoi((yyvsp[(2) - (2)].str)) > 65535) ++ else if (atoi((yyvsp[0].str)) > 65535) + cfg_parser->cfg->edns_buffer_size = 65535; +- else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2564 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 181: +-/* Line 1792 of yacc.c */ +-#line 637 "util/configparser.y" ++ case 182: ++#line 638 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); +- else if (atoi((yyvsp[(2) - (2)].str)) < 4096) ++ else if (atoi((yyvsp[0].str)) < 4096) + yyerror("message buffer size too small (use 4096)"); +- else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2578 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 182: +-/* Line 1792 of yacc.c */ +-#line 648 "util/configparser.y" ++ case 183: ++#line 649 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size)) ++ 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[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2589 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 183: +-/* Line 1792 of yacc.c */ +-#line 656 "util/configparser.y" ++ case 184: ++#line 657 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { +- cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) + yyerror("must be a power of 2"); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2605 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 184: +-/* Line 1792 of yacc.c */ +-#line 669 "util/configparser.y" ++ case 185: ++#line 670 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); +- else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2617 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 185: +-/* Line 1792 of yacc.c */ +-#line 678 "util/configparser.y" ++ case 186: ++#line 679 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->jostle_time = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2629 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 186: +-/* Line 1792 of yacc.c */ +-#line 687 "util/configparser.y" ++ case 187: ++#line 688 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_delay_close:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->delay_close = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2641 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 187: +-/* Line 1792 of yacc.c */ +-#line 696 "util/configparser.y" ++ case 188: ++#line 697 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_unblock_lan_zones:%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->unblock_lan_zones = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2654 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 188: +-/* Line 1792 of yacc.c */ +-#line 706 "util/configparser.y" ++ case 189: ++#line 707 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size)) ++ 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[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2665 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 189: +-/* Line 1792 of yacc.c */ +-#line 714 "util/configparser.y" ++ case 190: ++#line 715 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { +- cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) + yyerror("must be a power of 2"); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2681 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 190: +-/* Line 1792 of yacc.c */ +-#line 727 "util/configparser.y" ++ case 191: ++#line 728 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->host_ttl = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2693 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 191: +-/* Line 1792 of yacc.c */ +-#line 736 "util/configparser.y" ++ case 192: ++#line 737 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ "removed, use infra-host-ttl)", (yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2704 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 192: +-/* Line 1792 of yacc.c */ +-#line 744 "util/configparser.y" ++ case 193: ++#line 745 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); +- else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2716 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 193: +-/* Line 1792 of yacc.c */ +-#line 753 "util/configparser.y" ++ case 194: ++#line 754 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2727 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 194: +-/* Line 1792 of yacc.c */ +-#line 761 "util/configparser.y" ++ case 195: ++#line 762 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { +- cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) + yyerror("must be a power of 2"); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2743 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 195: +-/* Line 1792 of yacc.c */ +-#line 774 "util/configparser.y" ++ case 196: ++#line 775 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2755 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 196: +-/* Line 1792 of yacc.c */ +-#line 783 "util/configparser.y" ++ case 197: ++#line 784 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); + } ++#line 2765 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 197: +-/* Line 1792 of yacc.c */ +-#line 790 "util/configparser.y" ++ case 198: ++#line 791 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_harden_short_bufsize:%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->harden_short_bufsize = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2778 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 198: +-/* Line 1792 of yacc.c */ +-#line 800 "util/configparser.y" ++ case 199: ++#line 801 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_harden_large_queries:%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->harden_large_queries = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2791 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 199: +-/* Line 1792 of yacc.c */ +-#line 810 "util/configparser.y" ++ case 200: ++#line 811 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_harden_glue:%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->harden_glue = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2804 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 200: +-/* Line 1792 of yacc.c */ +-#line 820 "util/configparser.y" ++ case 201: ++#line 821 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_harden_dnssec_stripped:%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->harden_dnssec_stripped = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2817 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 201: +-/* Line 1792 of yacc.c */ +-#line 830 "util/configparser.y" ++ case 202: ++#line 831 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_harden_below_nxdomain:%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->harden_below_nxdomain = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2830 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 202: +-/* Line 1792 of yacc.c */ +-#line 840 "util/configparser.y" ++ case 203: ++#line 841 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_harden_referral_path:%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->harden_referral_path = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2843 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 203: +-/* Line 1792 of yacc.c */ +-#line 850 "util/configparser.y" ++ case 204: ++#line 851 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_caps_bits_for_id = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2856 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 204: +-/* Line 1792 of yacc.c */ +-#line 860 "util/configparser.y" ++ case 205: ++#line 861 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str))) ++ 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 2866 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 205: +-/* Line 1792 of yacc.c */ +-#line 867 "util/configparser.y" ++ case 206: ++#line 868 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str))) ++ 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 2876 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 206: +-/* Line 1792 of yacc.c */ +-#line 874 "util/configparser.y" ++ case 207: ++#line 875 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_prefetch:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_prefetch:%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->prefetch = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2888 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 207: +-/* Line 1792 of yacc.c */ +-#line 883 "util/configparser.y" ++ case 208: ++#line 884 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_prefetch_key:%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->prefetch_key = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2900 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 208: +-/* Line 1792 of yacc.c */ +-#line 892 "util/configparser.y" ++ case 209: ++#line 893 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 2912 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 209: +-/* Line 1792 of yacc.c */ +-#line 901 "util/configparser.y" ++ case 210: ++#line 902 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str))) ++ 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 2922 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 210: +-/* Line 1792 of yacc.c */ +-#line 908 "util/configparser.y" ++ case 211: ++#line 909 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->donotquery_localhost = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 2935 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 211: +-/* Line 1792 of yacc.c */ +-#line 918 "util/configparser.y" +- { +- OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); +- if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "deny_non_local")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "refuse_non_local")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "allow")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "allow_snoop")!=0) { ++ case 212: ++#line 919 "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 && ++ strcmp((yyvsp[0].str), "deny_non_local")!=0 && ++ strcmp((yyvsp[0].str), "refuse_non_local")!=0 && ++ strcmp((yyvsp[0].str), "allow")!=0 && ++ strcmp((yyvsp[0].str), "allow_snoop")!=0) { + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, allow or allow_snoop " + "in access control action"); + } else { +- if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) ++ if(!cfg_str2list_insert(&cfg_parser->cfg->acls, (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding acl"); + } + } ++#line 2955 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 212: +-/* Line 1792 of yacc.c */ +-#line 935 "util/configparser.y" ++ case 213: ++#line 936 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->module_conf); +- cfg_parser->cfg->module_conf = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->module_conf = (yyvsp[0].str); + } ++#line 2965 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 213: +-/* Line 1792 of yacc.c */ +-#line 942 "util/configparser.y" ++ case 214: ++#line 943 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { ++ OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); ++ if(strlen((yyvsp[0].str)) == 0 || strcmp((yyvsp[0].str), "0") == 0) { + cfg_parser->cfg->val_date_override = 0; +- } else if(strlen((yyvsp[(2) - (2)].str)) == 14) { ++ } else if(strlen((yyvsp[0].str)) == 14) { + cfg_parser->cfg->val_date_override = +- cfg_convert_timeval((yyvsp[(2) - (2)].str)); ++ cfg_convert_timeval((yyvsp[0].str)); + if(!cfg_parser->cfg->val_date_override) + yyerror("bad date/time specification"); + } else { +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); +- cfg_parser->cfg->val_date_override = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 2986 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 214: +-/* Line 1792 of yacc.c */ +-#line 960 "util/configparser.y" ++ case 215: ++#line 961 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { ++ OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); ++ if(strlen((yyvsp[0].str)) == 0 || strcmp((yyvsp[0].str), "0") == 0) { + cfg_parser->cfg->val_sig_skew_min = 0; + } else { +- cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); + if(!cfg_parser->cfg->val_sig_skew_min) + yyerror("number expected"); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 3002 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 215: +-/* Line 1792 of yacc.c */ +-#line 973 "util/configparser.y" ++ case 216: ++#line 974 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) { ++ OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); ++ if(strlen((yyvsp[0].str)) == 0 || strcmp((yyvsp[0].str), "0") == 0) { + cfg_parser->cfg->val_sig_skew_max = 0; + } else { +- cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); + if(!cfg_parser->cfg->val_sig_skew_max) + yyerror("number expected"); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 3018 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 216: +-/* Line 1792 of yacc.c */ +-#line 986 "util/configparser.y" ++ case 217: ++#line 987 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->max_ttl = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3030 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 217: +-/* Line 1792 of yacc.c */ +-#line 995 "util/configparser.y" ++ case 218: ++#line 996 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->min_ttl = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3042 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 218: +-/* Line 1792 of yacc.c */ +-#line 1004 "util/configparser.y" ++ case 219: ++#line 1005 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3054 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 219: +-/* Line 1792 of yacc.c */ +-#line 1013 "util/configparser.y" ++ case 220: ++#line 1014 "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) ++ yyerror("number expected"); ++ else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); ++ } ++#line 3066 "util/configparser.c" /* yacc.c:1646 */ ++ break; ++ ++ case 221: ++#line 1023 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_val_clean_additional:%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->val_clean_additional = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3079 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 220: +-/* Line 1792 of yacc.c */ +-#line 1023 "util/configparser.y" ++ case 222: ++#line 1033 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_val_permissive_mode:%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->val_permissive_mode = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3092 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 221: +-/* Line 1792 of yacc.c */ +-#line 1033 "util/configparser.y" ++ case 223: ++#line 1043 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_ignore_cd_flag:%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->ignore_cd = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3104 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 222: +-/* Line 1792 of yacc.c */ +-#line 1042 "util/configparser.y" ++ case 224: ++#line 1052 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->val_log_level = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3116 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 223: +-/* Line 1792 of yacc.c */ +-#line 1051 "util/configparser.y" ++ case 225: ++#line 1061 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); + } ++#line 3126 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 224: +-/* Line 1792 of yacc.c */ +-#line 1058 "util/configparser.y" ++ case 226: ++#line 1068 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->add_holddown = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3138 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 225: +-/* Line 1792 of yacc.c */ +-#line 1067 "util/configparser.y" ++ case 227: ++#line 1077 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->del_holddown = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3150 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 226: +-/* Line 1792 of yacc.c */ +-#line 1076 "util/configparser.y" ++ case 228: ++#line 1086 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0) ++ OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); +- else cfg_parser->cfg->keep_missing = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3162 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 227: +-/* Line 1792 of yacc.c */ +-#line 1085 "util/configparser.y" ++ case 229: ++#line 1095 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size)) ++ 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[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 3173 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 228: +-/* Line 1792 of yacc.c */ +-#line 1093 "util/configparser.y" ++ case 230: ++#line 1103 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("number expected"); + else { +- cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[(2) - (2)].str)); ++ cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str)); + if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) + yyerror("must be a power of 2"); + } +- free((yyvsp[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 3189 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 229: +-/* Line 1792 of yacc.c */ +-#line 1106 "util/configparser.y" ++ case 231: ++#line 1116 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size)) ++ 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[(2) - (2)].str)); ++ free((yyvsp[0].str)); + } ++#line 3200 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 230: +-/* Line 1792 of yacc.c */ +-#line 1114 "util/configparser.y" +- { +- OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))); +- if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 && strcmp((yyvsp[(3) - (3)].str), "redirect")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "transparent")!=0 && strcmp((yyvsp[(3) - (3)].str), "nodefault")!=0 +- && strcmp((yyvsp[(3) - (3)].str), "typetransparent")!=0 && +- strcmp((yyvsp[(3) - (3)].str), "inform")!=0) ++ case 232: ++#line 1124 "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 && ++ strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && ++ strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 ++ && strcmp((yyvsp[0].str), "typetransparent")!=0 && ++ strcmp((yyvsp[0].str), "inform")!=0) + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform or nodefault"); +- else if(strcmp((yyvsp[(3) - (3)].str), "nodefault")==0) { ++ else if(strcmp((yyvsp[0].str), "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> +- local_zones_nodefault, (yyvsp[(2) - (3)].str))) ++ local_zones_nodefault, (yyvsp[-1].str))) + fatal_exit("out of memory adding local-zone"); +- free((yyvsp[(3) - (3)].str)); ++ free((yyvsp[0].str)); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, +- (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str))) ++ (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding local-zone"); + } + } ++#line 3226 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 231: +-/* Line 1792 of yacc.c */ +-#line 1137 "util/configparser.y" ++ case 233: ++#line 1147 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str))) ++ 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 3236 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 232: +-/* Line 1792 of yacc.c */ +-#line 1144 "util/configparser.y" ++ case 234: ++#line 1154 "util/configparser.y" /* yacc.c:1646 */ + { + char* ptr; +- OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str))); +- ptr = cfg_ptr_reverse((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ++ ptr = cfg_ptr_reverse((yyvsp[0].str)); ++ free((yyvsp[0].str)); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_data, ptr)) +@@ -3467,429 +3250,429 @@ yyreduce: + yyerror("local-data-ptr could not be reversed"); + } + } ++#line 3254 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 233: +-/* Line 1792 of yacc.c */ +-#line 1159 "util/configparser.y" ++ case 235: ++#line 1169 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_minimal_responses:%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->minimal_responses = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3267 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 234: +-/* Line 1792 of yacc.c */ +-#line 1169 "util/configparser.y" ++ case 236: ++#line 1179 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_rrset_roundrobin:%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->rrset_roundrobin = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3280 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 235: +-/* Line 1792 of yacc.c */ +-#line 1179 "util/configparser.y" ++ case 237: ++#line 1189 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[(2) - (2)].str))); +- cfg_parser->cfg->max_udp_size = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ 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 3290 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 236: +-/* Line 1792 of yacc.c */ +-#line 1186 "util/configparser.y" ++ case 238: ++#line 1196 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->dns64_prefix); +- cfg_parser->cfg->dns64_prefix = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); + } ++#line 3300 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 237: +-/* Line 1792 of yacc.c */ +-#line 1193 "util/configparser.y" ++ case 239: ++#line 1203 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(server_dns64_synthall:%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->dns64_synthall = (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3312 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 238: +-/* Line 1792 of yacc.c */ +-#line 1202 "util/configparser.y" ++ case 240: ++#line 1212 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->stubs->name) + yyerror("stub name override, there must be one name " + "for one stub-zone"); + free(cfg_parser->cfg->stubs->name); +- cfg_parser->cfg->stubs->name = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->stubs->name = (yyvsp[0].str); + } ++#line 3325 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 239: +-/* Line 1792 of yacc.c */ +-#line 1212 "util/configparser.y" ++ case 241: ++#line 1222 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str))) ++ 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 3335 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 240: +-/* Line 1792 of yacc.c */ +-#line 1219 "util/configparser.y" ++ case 242: ++#line 1229 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str))) ++ 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 3345 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 241: +-/* Line 1792 of yacc.c */ +-#line 1226 "util/configparser.y" ++ case 243: ++#line 1236 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(stub-first:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(stub-first:%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->stubs->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3357 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 242: +-/* Line 1792 of yacc.c */ +-#line 1235 "util/configparser.y" ++ case 244: ++#line 1245 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(stub-prime:%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->stubs->isprime = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3370 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 243: +-/* Line 1792 of yacc.c */ +-#line 1245 "util/configparser.y" ++ case 245: ++#line 1255 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(name:%s)\n", (yyvsp[0].str))); + if(cfg_parser->cfg->forwards->name) + yyerror("forward name override, there must be one " + "name for one forward-zone"); + free(cfg_parser->cfg->forwards->name); +- cfg_parser->cfg->forwards->name = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->forwards->name = (yyvsp[0].str); + } ++#line 3383 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 244: +-/* Line 1792 of yacc.c */ +-#line 1255 "util/configparser.y" ++ case 246: ++#line 1265 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str))) ++ 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 3393 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 245: +-/* Line 1792 of yacc.c */ +-#line 1262 "util/configparser.y" ++ case 247: ++#line 1272 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str))) ++ 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 3403 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 246: +-/* Line 1792 of yacc.c */ +-#line 1269 "util/configparser.y" ++ case 248: ++#line 1279 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(forward-first:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(forward-first:%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->forwards->isfirst=(strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3415 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 247: +-/* Line 1792 of yacc.c */ +-#line 1278 "util/configparser.y" ++ case 249: ++#line 1288 "util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(remote-control:)\n")); + } ++#line 3423 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 258: +-/* Line 1792 of yacc.c */ +-#line 1289 "util/configparser.y" ++ case 260: ++#line 1299 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(control_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->remote_control_enable = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3436 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 259: +-/* Line 1792 of yacc.c */ +-#line 1299 "util/configparser.y" ++ case 261: ++#line 1309 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str))); +- if(atoi((yyvsp[(2) - (2)].str)) == 0) ++ OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); ++ if(atoi((yyvsp[0].str)) == 0) + yyerror("control port number expected"); +- else cfg_parser->cfg->control_port = atoi((yyvsp[(2) - (2)].str)); +- free((yyvsp[(2) - (2)].str)); ++ else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); ++ free((yyvsp[0].str)); + } ++#line 3448 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 260: +-/* Line 1792 of yacc.c */ +-#line 1308 "util/configparser.y" ++ case 262: ++#line 1318 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str))); +- if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str))) ++ 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 3458 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 261: +-/* Line 1792 of yacc.c */ +-#line 1315 "util/configparser.y" ++ case 263: ++#line 1325 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(control_use_cert:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ OUTYY(("P(control_use_cert:%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->remote_control_use_cert = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); +- free((yyvsp[(2) - (2)].str)); ++ (strcmp((yyvsp[0].str), "yes")==0); ++ free((yyvsp[0].str)); + } ++#line 3471 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 262: +-/* Line 1792 of yacc.c */ +-#line 1325 "util/configparser.y" ++ case 264: ++#line 1335 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->server_key_file = (yyvsp[0].str); + } ++#line 3481 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 263: +-/* Line 1792 of yacc.c */ +-#line 1332 "util/configparser.y" ++ case 265: ++#line 1342 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->server_cert_file = (yyvsp[0].str); + } ++#line 3491 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 264: +-/* Line 1792 of yacc.c */ +-#line 1339 "util/configparser.y" ++ case 266: ++#line 1349 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->control_key_file = (yyvsp[0].str); + } ++#line 3501 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 265: +-/* Line 1792 of yacc.c */ +-#line 1346 "util/configparser.y" ++ case 267: ++#line 1356 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->control_cert_file = (yyvsp[0].str); + } ++#line 3511 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 266: +-/* Line 1792 of yacc.c */ +-#line 1353 "util/configparser.y" ++ case 268: ++#line 1363 "util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(dnstap:)\n")); + } ++#line 3519 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 281: +-/* Line 1792 of yacc.c */ +-#line 1370 "util/configparser.y" ++ case 283: ++#line 1380 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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[(2) - (2)].str), "yes")==0); ++ else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3530 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 282: +-/* Line 1792 of yacc.c */ +-#line 1378 "util/configparser.y" ++ case 284: ++#line 1388 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[(2) - (2)].str))); ++ 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[(2) - (2)].str); ++ cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); + } ++#line 3540 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 283: +-/* Line 1792 of yacc.c */ +-#line 1385 "util/configparser.y" ++ case 285: ++#line 1395 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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[(2) - (2)].str), "yes")==0); ++ else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3551 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 284: +-/* Line 1792 of yacc.c */ +-#line 1393 "util/configparser.y" ++ case 286: ++#line 1403 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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[(2) - (2)].str), "yes")==0); ++ else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3562 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 285: +-/* Line 1792 of yacc.c */ +-#line 1401 "util/configparser.y" ++ case 287: ++#line 1411 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->dnstap_identity); +- cfg_parser->cfg->dnstap_identity = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); + } ++#line 3572 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 286: +-/* Line 1792 of yacc.c */ +-#line 1408 "util/configparser.y" ++ case 288: ++#line 1418 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->dnstap_version); +- cfg_parser->cfg->dnstap_version = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->dnstap_version = (yyvsp[0].str); + } ++#line 3582 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 287: +-/* Line 1792 of yacc.c */ +-#line 1415 "util/configparser.y" ++ case 289: ++#line 1425 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_query_messages = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); ++ (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3594 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 288: +-/* Line 1792 of yacc.c */ +-#line 1424 "util/configparser.y" ++ case 290: ++#line 1434 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_response_messages = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); ++ (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3606 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 289: +-/* Line 1792 of yacc.c */ +-#line 1433 "util/configparser.y" ++ case 291: ++#line 1443 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_query_messages = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); ++ (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3618 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 290: +-/* Line 1792 of yacc.c */ +-#line 1442 "util/configparser.y" ++ case 292: ++#line 1452 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_response_messages = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); ++ (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3630 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 291: +-/* Line 1792 of yacc.c */ +-#line 1451 "util/configparser.y" ++ case 293: ++#line 1461 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_query_messages = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); ++ (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3642 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 292: +-/* Line 1792 of yacc.c */ +-#line 1460 "util/configparser.y" ++ case 294: ++#line 1470 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[(2) - (2)].str))); +- if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0) ++ 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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_response_messages = +- (strcmp((yyvsp[(2) - (2)].str), "yes")==0); ++ (strcmp((yyvsp[0].str), "yes")==0); + } ++#line 3654 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 293: +-/* Line 1792 of yacc.c */ +-#line 1469 "util/configparser.y" ++ case 295: ++#line 1479 "util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("\nP(python:)\n")); + } ++#line 3662 "util/configparser.c" /* yacc.c:1646 */ + break; + +- case 297: +-/* Line 1792 of yacc.c */ +-#line 1478 "util/configparser.y" ++ case 299: ++#line 1488 "util/configparser.y" /* yacc.c:1646 */ + { +- OUTYY(("P(python-script:%s)\n", (yyvsp[(2) - (2)].str))); ++ OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->python_script); +- cfg_parser->cfg->python_script = (yyvsp[(2) - (2)].str); ++ cfg_parser->cfg->python_script = (yyvsp[0].str); + } ++#line 3672 "util/configparser.c" /* yacc.c:1646 */ + break; + + +-/* Line 1792 of yacc.c */ +-#line 3893 "util/configparser.c" ++#line 3676 "util/configparser.c" /* yacc.c:1646 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires +@@ -3911,7 +3694,7 @@ yyreduce: + + *++yyvsp = yyval; + +- /* Now `shift' the result of the reduction. Determine what state ++ /* Now 'shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + +@@ -3926,9 +3709,9 @@ yyreduce: + goto yynewstate; + + +-/*------------------------------------. +-| yyerrlab -- here on detecting error | +-`------------------------------------*/ ++/*--------------------------------------. ++| yyerrlab -- here on detecting error. | ++`--------------------------------------*/ + yyerrlab: + /* Make sure we have latest lookahead translation. See comments at + user semantic actions for why this is necessary. */ +@@ -3979,20 +3762,20 @@ yyerrlab: + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse lookahead token after an +- error, discard it. */ ++ error, discard it. */ + + if (yychar <= YYEOF) +- { +- /* Return failure if at end of input. */ +- if (yychar == YYEOF) +- YYABORT; +- } ++ { ++ /* Return failure if at end of input. */ ++ if (yychar == YYEOF) ++ YYABORT; ++ } + else +- { +- yydestruct ("Error: discarding", +- yytoken, &yylval); +- yychar = YYEMPTY; +- } ++ { ++ yydestruct ("Error: discarding", ++ yytoken, &yylval); ++ yychar = YYEMPTY; ++ } + } + + /* Else will try to reuse lookahead token after shifting the error +@@ -4011,7 +3794,7 @@ yyerrorlab: + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + +- /* Do not reclaim the symbols of the rule which action triggered ++ /* Do not reclaim the symbols of the rule whose action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; +@@ -4024,29 +3807,29 @@ yyerrorlab: + | yyerrlab1 -- common code for both syntax error and YYERROR. | + `-------------------------------------------------------------*/ + yyerrlab1: +- yyerrstatus = 3; /* Each real token shifted decrements this. */ ++ yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (!yypact_value_is_default (yyn)) +- { +- yyn += YYTERROR; +- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) +- { +- yyn = yytable[yyn]; +- if (0 < yyn) +- break; +- } +- } ++ { ++ yyn += YYTERROR; ++ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) ++ { ++ yyn = yytable[yyn]; ++ if (0 < yyn) ++ break; ++ } ++ } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) +- YYABORT; ++ YYABORT; + + + yydestruct ("Error: popping", +- yystos[yystate], yyvsp); ++ yystos[yystate], yyvsp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); +@@ -4097,14 +3880,14 @@ yyreturn: + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval); + } +- /* Do not reclaim the symbols of the rule which action triggered ++ /* Do not reclaim the symbols of the rule whose action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", +- yystos[*yyssp], yyvsp); ++ yystos[*yyssp], yyvsp); + YYPOPSTACK (1); + } + #ifndef yyoverflow +@@ -4115,13 +3898,9 @@ yyreturn: + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + #endif +- /* Make sure YYID is used. */ +- return YYID (yyresult); ++ return yyresult; + } +- +- +-/* Line 2055 of yacc.c */ +-#line 1483 "util/configparser.y" ++#line 1493 "util/configparser.y" /* yacc.c:1906 */ + + + /* parse helper routines could be here */ +diff --git a/util/configparser.h b/util/configparser.h +index 95b6f64..0cb86ed 100644 +--- a/util/configparser.h ++++ b/util/configparser.h +@@ -1,19 +1,19 @@ +-/* A Bison parser, made by GNU Bison 2.7. */ ++/* A Bison parser, made by GNU Bison 3.0.2. */ + + /* Bison interface for Yacc-like parsers in C +- +- Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. +- ++ ++ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. ++ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. +- ++ + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +- ++ + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +@@ -26,13 +26,13 @@ + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. +- ++ + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + + #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED + # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED +-/* Enabling traces. */ ++/* Debug traces. */ + #ifndef YYDEBUG + # define YYDEBUG 0 + #endif +@@ -40,161 +40,161 @@ + extern int yydebug; + #endif + +-/* Tokens. */ ++/* Token type. */ + #ifndef YYTOKENTYPE + # define YYTOKENTYPE +- /* Put the tokens into the symbol table, so that GDB and other debuggers +- know about them. */ +- enum yytokentype { +- SPACE = 258, +- LETTER = 259, +- NEWLINE = 260, +- COMMENT = 261, +- COLON = 262, +- ANY = 263, +- ZONESTR = 264, +- STRING_ARG = 265, +- VAR_SERVER = 266, +- VAR_VERBOSITY = 267, +- VAR_NUM_THREADS = 268, +- VAR_PORT = 269, +- VAR_OUTGOING_RANGE = 270, +- VAR_INTERFACE = 271, +- VAR_DO_IP4 = 272, +- VAR_DO_IP6 = 273, +- VAR_DO_UDP = 274, +- VAR_DO_TCP = 275, +- VAR_CHROOT = 276, +- VAR_USERNAME = 277, +- VAR_DIRECTORY = 278, +- VAR_LOGFILE = 279, +- VAR_PIDFILE = 280, +- VAR_MSG_CACHE_SIZE = 281, +- VAR_MSG_CACHE_SLABS = 282, +- VAR_NUM_QUERIES_PER_THREAD = 283, +- VAR_RRSET_CACHE_SIZE = 284, +- VAR_RRSET_CACHE_SLABS = 285, +- VAR_OUTGOING_NUM_TCP = 286, +- VAR_INFRA_HOST_TTL = 287, +- VAR_INFRA_LAME_TTL = 288, +- VAR_INFRA_CACHE_SLABS = 289, +- VAR_INFRA_CACHE_NUMHOSTS = 290, +- VAR_INFRA_CACHE_LAME_SIZE = 291, +- VAR_NAME = 292, +- VAR_STUB_ZONE = 293, +- VAR_STUB_HOST = 294, +- VAR_STUB_ADDR = 295, +- VAR_TARGET_FETCH_POLICY = 296, +- VAR_HARDEN_SHORT_BUFSIZE = 297, +- VAR_HARDEN_LARGE_QUERIES = 298, +- VAR_FORWARD_ZONE = 299, +- VAR_FORWARD_HOST = 300, +- VAR_FORWARD_ADDR = 301, +- VAR_DO_NOT_QUERY_ADDRESS = 302, +- VAR_HIDE_IDENTITY = 303, +- VAR_HIDE_VERSION = 304, +- VAR_IDENTITY = 305, +- VAR_VERSION = 306, +- VAR_HARDEN_GLUE = 307, +- VAR_MODULE_CONF = 308, +- VAR_TRUST_ANCHOR_FILE = 309, +- VAR_TRUST_ANCHOR = 310, +- VAR_VAL_OVERRIDE_DATE = 311, +- VAR_BOGUS_TTL = 312, +- VAR_VAL_CLEAN_ADDITIONAL = 313, +- VAR_VAL_PERMISSIVE_MODE = 314, +- VAR_INCOMING_NUM_TCP = 315, +- VAR_MSG_BUFFER_SIZE = 316, +- VAR_KEY_CACHE_SIZE = 317, +- VAR_KEY_CACHE_SLABS = 318, +- VAR_TRUSTED_KEYS_FILE = 319, +- VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320, +- VAR_USE_SYSLOG = 321, +- VAR_OUTGOING_INTERFACE = 322, +- VAR_ROOT_HINTS = 323, +- VAR_DO_NOT_QUERY_LOCALHOST = 324, +- VAR_CACHE_MAX_TTL = 325, +- VAR_HARDEN_DNSSEC_STRIPPED = 326, +- VAR_ACCESS_CONTROL = 327, +- VAR_LOCAL_ZONE = 328, +- VAR_LOCAL_DATA = 329, +- VAR_INTERFACE_AUTOMATIC = 330, +- VAR_STATISTICS_INTERVAL = 331, +- VAR_DO_DAEMONIZE = 332, +- VAR_USE_CAPS_FOR_ID = 333, +- VAR_STATISTICS_CUMULATIVE = 334, +- VAR_OUTGOING_PORT_PERMIT = 335, +- VAR_OUTGOING_PORT_AVOID = 336, +- VAR_DLV_ANCHOR_FILE = 337, +- VAR_DLV_ANCHOR = 338, +- VAR_NEG_CACHE_SIZE = 339, +- VAR_HARDEN_REFERRAL_PATH = 340, +- VAR_PRIVATE_ADDRESS = 341, +- VAR_PRIVATE_DOMAIN = 342, +- VAR_REMOTE_CONTROL = 343, +- VAR_CONTROL_ENABLE = 344, +- VAR_CONTROL_INTERFACE = 345, +- VAR_CONTROL_PORT = 346, +- VAR_SERVER_KEY_FILE = 347, +- VAR_SERVER_CERT_FILE = 348, +- VAR_CONTROL_KEY_FILE = 349, +- VAR_CONTROL_CERT_FILE = 350, +- VAR_CONTROL_USE_CERT = 351, +- VAR_EXTENDED_STATISTICS = 352, +- VAR_LOCAL_DATA_PTR = 353, +- VAR_JOSTLE_TIMEOUT = 354, +- VAR_STUB_PRIME = 355, +- VAR_UNWANTED_REPLY_THRESHOLD = 356, +- VAR_LOG_TIME_ASCII = 357, +- VAR_DOMAIN_INSECURE = 358, +- VAR_PYTHON = 359, +- VAR_PYTHON_SCRIPT = 360, +- VAR_VAL_SIG_SKEW_MIN = 361, +- VAR_VAL_SIG_SKEW_MAX = 362, +- VAR_CACHE_MIN_TTL = 363, +- VAR_VAL_LOG_LEVEL = 364, +- VAR_AUTO_TRUST_ANCHOR_FILE = 365, +- VAR_KEEP_MISSING = 366, +- VAR_ADD_HOLDDOWN = 367, +- VAR_DEL_HOLDDOWN = 368, +- VAR_SO_RCVBUF = 369, +- VAR_EDNS_BUFFER_SIZE = 370, +- VAR_PREFETCH = 371, +- VAR_PREFETCH_KEY = 372, +- VAR_SO_SNDBUF = 373, +- VAR_SO_REUSEPORT = 374, +- VAR_HARDEN_BELOW_NXDOMAIN = 375, +- VAR_IGNORE_CD_FLAG = 376, +- VAR_LOG_QUERIES = 377, +- VAR_TCP_UPSTREAM = 378, +- VAR_SSL_UPSTREAM = 379, +- VAR_SSL_SERVICE_KEY = 380, +- VAR_SSL_SERVICE_PEM = 381, +- VAR_SSL_PORT = 382, +- VAR_FORWARD_FIRST = 383, +- VAR_STUB_FIRST = 384, +- VAR_MINIMAL_RESPONSES = 385, +- VAR_RRSET_ROUNDROBIN = 386, +- VAR_MAX_UDP_SIZE = 387, +- VAR_DELAY_CLOSE = 388, +- VAR_UNBLOCK_LAN_ZONES = 389, +- VAR_INFRA_CACHE_MIN_RTT = 390, +- VAR_DNS64_PREFIX = 391, +- VAR_DNS64_SYNTHALL = 392, +- VAR_DNSTAP = 393, +- VAR_DNSTAP_ENABLE = 394, +- VAR_DNSTAP_SOCKET_PATH = 395, +- VAR_DNSTAP_SEND_IDENTITY = 396, +- VAR_DNSTAP_SEND_VERSION = 397, +- VAR_DNSTAP_IDENTITY = 398, +- VAR_DNSTAP_VERSION = 399, +- VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400, +- VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401, +- VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402, +- VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403, +- VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404, +- VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405 +- }; ++ enum yytokentype ++ { ++ SPACE = 258, ++ LETTER = 259, ++ NEWLINE = 260, ++ COMMENT = 261, ++ COLON = 262, ++ ANY = 263, ++ ZONESTR = 264, ++ STRING_ARG = 265, ++ VAR_SERVER = 266, ++ VAR_VERBOSITY = 267, ++ VAR_NUM_THREADS = 268, ++ VAR_PORT = 269, ++ VAR_OUTGOING_RANGE = 270, ++ VAR_INTERFACE = 271, ++ VAR_DO_IP4 = 272, ++ VAR_DO_IP6 = 273, ++ VAR_DO_UDP = 274, ++ VAR_DO_TCP = 275, ++ VAR_CHROOT = 276, ++ VAR_USERNAME = 277, ++ VAR_DIRECTORY = 278, ++ VAR_LOGFILE = 279, ++ VAR_PIDFILE = 280, ++ VAR_MSG_CACHE_SIZE = 281, ++ VAR_MSG_CACHE_SLABS = 282, ++ VAR_NUM_QUERIES_PER_THREAD = 283, ++ VAR_RRSET_CACHE_SIZE = 284, ++ VAR_RRSET_CACHE_SLABS = 285, ++ VAR_OUTGOING_NUM_TCP = 286, ++ VAR_INFRA_HOST_TTL = 287, ++ VAR_INFRA_LAME_TTL = 288, ++ VAR_INFRA_CACHE_SLABS = 289, ++ VAR_INFRA_CACHE_NUMHOSTS = 290, ++ VAR_INFRA_CACHE_LAME_SIZE = 291, ++ VAR_NAME = 292, ++ VAR_STUB_ZONE = 293, ++ VAR_STUB_HOST = 294, ++ VAR_STUB_ADDR = 295, ++ VAR_TARGET_FETCH_POLICY = 296, ++ VAR_HARDEN_SHORT_BUFSIZE = 297, ++ VAR_HARDEN_LARGE_QUERIES = 298, ++ VAR_FORWARD_ZONE = 299, ++ VAR_FORWARD_HOST = 300, ++ VAR_FORWARD_ADDR = 301, ++ VAR_DO_NOT_QUERY_ADDRESS = 302, ++ VAR_HIDE_IDENTITY = 303, ++ VAR_HIDE_VERSION = 304, ++ VAR_IDENTITY = 305, ++ VAR_VERSION = 306, ++ VAR_HARDEN_GLUE = 307, ++ VAR_MODULE_CONF = 308, ++ VAR_TRUST_ANCHOR_FILE = 309, ++ VAR_TRUST_ANCHOR = 310, ++ VAR_VAL_OVERRIDE_DATE = 311, ++ VAR_BOGUS_TTL = 312, ++ VAR_VAL_CLEAN_ADDITIONAL = 313, ++ VAR_VAL_PERMISSIVE_MODE = 314, ++ VAR_INCOMING_NUM_TCP = 315, ++ VAR_MSG_BUFFER_SIZE = 316, ++ VAR_KEY_CACHE_SIZE = 317, ++ VAR_KEY_CACHE_SLABS = 318, ++ VAR_TRUSTED_KEYS_FILE = 319, ++ VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 320, ++ VAR_USE_SYSLOG = 321, ++ VAR_OUTGOING_INTERFACE = 322, ++ VAR_ROOT_HINTS = 323, ++ VAR_DO_NOT_QUERY_LOCALHOST = 324, ++ VAR_CACHE_MAX_TTL = 325, ++ VAR_HARDEN_DNSSEC_STRIPPED = 326, ++ VAR_ACCESS_CONTROL = 327, ++ VAR_LOCAL_ZONE = 328, ++ VAR_LOCAL_DATA = 329, ++ VAR_INTERFACE_AUTOMATIC = 330, ++ VAR_STATISTICS_INTERVAL = 331, ++ VAR_DO_DAEMONIZE = 332, ++ VAR_USE_CAPS_FOR_ID = 333, ++ VAR_STATISTICS_CUMULATIVE = 334, ++ VAR_OUTGOING_PORT_PERMIT = 335, ++ VAR_OUTGOING_PORT_AVOID = 336, ++ VAR_DLV_ANCHOR_FILE = 337, ++ VAR_DLV_ANCHOR = 338, ++ VAR_NEG_CACHE_SIZE = 339, ++ VAR_HARDEN_REFERRAL_PATH = 340, ++ VAR_PRIVATE_ADDRESS = 341, ++ VAR_PRIVATE_DOMAIN = 342, ++ VAR_REMOTE_CONTROL = 343, ++ VAR_CONTROL_ENABLE = 344, ++ VAR_CONTROL_INTERFACE = 345, ++ VAR_CONTROL_PORT = 346, ++ VAR_SERVER_KEY_FILE = 347, ++ VAR_SERVER_CERT_FILE = 348, ++ VAR_CONTROL_KEY_FILE = 349, ++ VAR_CONTROL_CERT_FILE = 350, ++ VAR_CONTROL_USE_CERT = 351, ++ VAR_EXTENDED_STATISTICS = 352, ++ VAR_LOCAL_DATA_PTR = 353, ++ VAR_JOSTLE_TIMEOUT = 354, ++ VAR_STUB_PRIME = 355, ++ VAR_UNWANTED_REPLY_THRESHOLD = 356, ++ VAR_LOG_TIME_ASCII = 357, ++ VAR_DOMAIN_INSECURE = 358, ++ VAR_PYTHON = 359, ++ VAR_PYTHON_SCRIPT = 360, ++ VAR_VAL_SIG_SKEW_MIN = 361, ++ VAR_VAL_SIG_SKEW_MAX = 362, ++ VAR_CACHE_MIN_TTL = 363, ++ VAR_VAL_LOG_LEVEL = 364, ++ VAR_AUTO_TRUST_ANCHOR_FILE = 365, ++ VAR_KEEP_MISSING = 366, ++ VAR_ADD_HOLDDOWN = 367, ++ VAR_DEL_HOLDDOWN = 368, ++ VAR_SO_RCVBUF = 369, ++ VAR_EDNS_BUFFER_SIZE = 370, ++ VAR_PREFETCH = 371, ++ VAR_PREFETCH_KEY = 372, ++ VAR_SO_SNDBUF = 373, ++ VAR_SO_REUSEPORT = 374, ++ VAR_HARDEN_BELOW_NXDOMAIN = 375, ++ VAR_IGNORE_CD_FLAG = 376, ++ VAR_LOG_QUERIES = 377, ++ VAR_TCP_UPSTREAM = 378, ++ VAR_SSL_UPSTREAM = 379, ++ VAR_SSL_SERVICE_KEY = 380, ++ VAR_SSL_SERVICE_PEM = 381, ++ VAR_SSL_PORT = 382, ++ VAR_FORWARD_FIRST = 383, ++ VAR_STUB_FIRST = 384, ++ VAR_MINIMAL_RESPONSES = 385, ++ VAR_RRSET_ROUNDROBIN = 386, ++ VAR_MAX_UDP_SIZE = 387, ++ VAR_DELAY_CLOSE = 388, ++ VAR_UNBLOCK_LAN_ZONES = 389, ++ VAR_INFRA_CACHE_MIN_RTT = 390, ++ VAR_DNS64_PREFIX = 391, ++ VAR_DNS64_SYNTHALL = 392, ++ VAR_DNSTAP = 393, ++ VAR_DNSTAP_ENABLE = 394, ++ VAR_DNSTAP_SOCKET_PATH = 395, ++ VAR_DNSTAP_SEND_IDENTITY = 396, ++ VAR_DNSTAP_SEND_VERSION = 397, ++ VAR_DNSTAP_IDENTITY = 398, ++ VAR_DNSTAP_VERSION = 399, ++ VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 400, ++ VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 401, ++ VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 402, ++ VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 403, ++ VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 404, ++ VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 405, ++ VAR_CACHE_MAX_NEGATIVE_TTL = 406 ++ }; + #endif + /* Tokens. */ + #define SPACE 258 +@@ -345,40 +345,26 @@ extern int yydebug; + #define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 403 + #define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 404 + #define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 405 ++#define VAR_CACHE_MAX_NEGATIVE_TTL 406 + +- +- ++/* Value type. */ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +-typedef union YYSTYPE ++typedef union YYSTYPE YYSTYPE; ++union YYSTYPE + { +-/* Line 2058 of yacc.c */ +-#line 64 "util/configparser.y" ++#line 64 "util/configparser.y" /* yacc.c:1909 */ + + char* str; + +- +-/* Line 2058 of yacc.c */ +-#line 362 "util/configparser.h" +-} YYSTYPE; ++#line 360 "util/configparser.h" /* yacc.c:1909 */ ++}; + # define YYSTYPE_IS_TRIVIAL 1 +-# define yystype YYSTYPE /* obsolescent; will be withdrawn */ + # define YYSTYPE_IS_DECLARED 1 + #endif + ++ + extern YYSTYPE yylval; + +-#ifdef YYPARSE_PARAM +-#if defined __STDC__ || defined __cplusplus +-int yyparse (void *YYPARSE_PARAM); +-#else +-int yyparse (); +-#endif +-#else /* ! YYPARSE_PARAM */ +-#if defined __STDC__ || defined __cplusplus + int yyparse (void); +-#else +-int yyparse (); +-#endif +-#endif /* ! YYPARSE_PARAM */ + + #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +-- +2.4.3 + diff --git a/unbound.spec b/unbound.spec index 148b607..edb7ae0 100644 --- a/unbound.spec +++ b/unbound.spec @@ -21,7 +21,7 @@ Summary: Validating, recursive, and caching DNS(SEC) resolver Name: unbound Version: 1.5.3 -Release: 6%{?extra_version:.%{extra_version}}%{?dist} +Release: 7%{?extra_version:.%{extra_version}}%{?dist} License: BSD Url: http://www.nlnetlabs.nl/unbound/ Source: http://www.unbound.net/downloads/%{name}-%{version}%{?extra_version}.tar.gz @@ -49,6 +49,10 @@ Patch0: 0001-Use-print_function-also-for-Python2.patch Patch1: 0002-libunbound-examples-produce-sorted-output.patch Patch2: 0003-libunbound-Python-libldns-is-not-used-anymore.patch Patch3: 0004-Resolve-Python-3-incompatibilities-in-libunbound-and.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1229599 +# https://www.nlnetlabs.nl/bugs-script/show_bug.cgi?id=675 +Patch4: 0001-SOA-negative-TTL-is-capped-at-minimumttl-in-its-rdat.patch +Patch5: 0002-Maximum-negative-TTL-patch-configparser-regeneration.patch Group: System Environment/Daemons BuildRequires: flex, openssl-devel @@ -152,6 +156,8 @@ pushd %{pkgname}_python2 %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 autoreconf -iv @@ -436,6 +442,9 @@ popd %changelog +* Mon Jun 15 2015 Tomas Hozza - 1.5.3-7 +- Add option for maximum negative cache TTL (#1229599) + * Tue May 26 2015 Tomas Hozza - 1.5.3-6 - Removed usage of DLV from the default configuration (#1223363)